Ich verwende die gettext-Funktionen von PHP zur Lokalisierung. Ich benutze Poedit, um die eigentliche Übersetzung vorzunehmen, und mit seiner Funktion "Update from sources" ist es wirklich einfach, alle Strings zu extrahieren, die übersetzt werden müssen - außerhalb der heredoc-Syntax.
Poedit verwendet das xgettext-Programm, um die .po-Dateien aus den PHP-Quellcodedateien zu generieren. Und es funktioniert wunderbar, wenn der PHP-Code so aussieht:
echo "". _("test") ."";
Aber das Folgende wird nicht extrahiert (Beachten Sie, dass ein Pseudo-t-Objekt verwendet werden muss):
echo <<{$->_('test')}
EOD;
In PHP-Code könnten Sie das Problem auf folgende Weise umgehen:
$t
EOD
?>
Aber ich würde wirklich bevorzugen, dass das xgettext-Programm den String aus dem heredoc-Block extrahieren könnte.
Ein Workaround wurde in den Kommentaren der PHP-Dokumentation vorgeschlagen. Der Workaround besteht darin, dem xgettext-Programm mitzuteilen, dass es die PHP-Quelldateien als Python-Code behandeln soll. Aber bei der Verwendung dieses Ansatzes in Poedit erhalte ich viele Syntaxfehler vom xgettext-Parser.
Weiß jemand einen Workaround, um xgettext dazu zu bringen, die Übersetzungen aus der PHP-heredoc-Syntax zu extrahieren?
Ein etwas verwandter Ticket wurde im Ticket-System des gettext-Projekts eröffnet: http://savannah.gnu.org/bugs/?27740 Dies deutet darauf hin, dass die Unterstützung für die heredoc-Syntax verbessert werden könnte?
0 Stimmen
Ich habe speziell für dies ein Ticket erstellt: savannah.gnu.org/bugs/index.php?35944 Ich hoffe, es kommen keine weiteren Puristen, die Workarounds geben möchten. Es ist einfach ärgerlich, dass dies nicht unterstützt wird.