2009-05-28 13 views
1

In unseren JS-Dateien verwenden wir das folgende Format für Gettext Übersetzung:
Poedit Regex basierte Parser?

var str1 = '!t[The text that should be translated]'; 
var str2 = '!t[Some more text]'; 

Dieser JS-Dateien über Zend Framework Zend_Translate analysiert werden erhalten übersetzt PHP und die analysierte Zeichenfolge verwenden. Der erzeugte JS sieht wie folgt aus:

var str1 = 'The text that should be translated'; 
var str2 = 'Some more text'; 

Für die Saiten Extrahieren übersetzt werden und unsere PHP-Dateien zum Übersetzen wir Poedit verwenden, es funktioniert sehr gut.
Gibt es eine Möglichkeit, die zu übersetzenden Strings mit Hilfe von Poedit aus '!t[...]' zu analysieren?

Was würde das Problem lösen, ist eine Art von Poedit-Parser, der Regex basiert. Gibt es einen solchen Parser?

Alternativ könnten wir einen Quellcode-Parser basierend auf xgettext mit der Sprache PHP als Parameter definieren (Sie müssen dies tun, weil xgettext nichts über .js-Dateien weiß und sie mit C-Dateien behandelt). Dann benutzen wir das folgende Format in unseren JS-Dateien:

var str1 = '<?=_t("The text that should be translated")?>'; 
var str2 = '<?=_t("Some more text")?>'; 

Unnötig zu sagen, es ist wirklich uncool Code zu verwenden, die alle über den Ort wie PHP sieht nur in der Lage sein, die Saiten mit Poedit zu analysieren.

Antwort

0

Ein regulärer Ausdruck, die Saiten

Spiele
$translated = preg_replace('/[\'"]\!t\[(.+)\][\'"]/e', 'translate_function('\\2')', $str); 

Ich weiß nicht, ob die \ 2 sollte durch \ 1 oder \ 3, Sie Lösung ist durch die PCRE Regex-Engine die „e“ Modifikator bereitgestellt ersetzt werden .

+1

Sorry Fabien, ich bezweifle, dass du verstanden hast, wonach ich suche. Wie der Titel sagt, geht es darum, mit Poedit die zu übersetzenden Strings zu analysieren. Wir benötigen dies, um die zu übersetzenden Zeichenfolgen automatisch aus unseren JS-Dateien zu extrahieren. Poedit macht das für die Sprachen, die es leicht unterstützt. Es funktioniert perfekt mit PHP-Dateien, aber es unterstützt keine JS. Selbst wenn dies der Fall ist, wird das von uns verwendete Format nicht automatisch unterstützt. Was wir wirklich brauchen, ist eine Art Regex-basierter Quellcode-Parser für Poedit. PS: Ich verstehe nicht wirklich, was Ihre Lösung löst. –

+0

Okay, ich dachte, du benutzt PHP, um die Javascript-Dateien zu analysieren und die Token mit php-gettext zu übersetzen. Ich denke, diese Seite könnte Ihnen helfen, was Sie wollen: http://www.tine20.org/wiki/index.php/Developers/Concepts/Translation_Howto –

0

Poedit und xgettext unterstützen JavaScript jetzt (ich weiß ehrlich gesagt nicht, ob es 2009 der Fall war, aber ich denke, dass es nicht der Fall war), aber sie unterstützen keine Zeichenkettenliterale mit benutzerdefiniertem Markup. So können Sie immer noch nicht extrahieren aus

var str1 = '!t[The text that should be translated]'; 

aber Sie können leicht eine Hilfsfunktion extrahieren mit:

var str1 = t('The text that should be translated'); 

wenn Sie nur t als Schlüsselwort in Poedit hinzuzufügen.