CakePHP: Fehlende Strings bei i18n extract (Übersetzung)

CakePHP bietet die Möglichkeit Anwendungen mit überschaubarem Aufwand zu übersetzen, indem man sich .pot-Dateien generieren lässt. Diese lassen sich dann mit Standardwerkzeugen wie PoEdit verwenden, um die .po-Dateien mit den jeweiligen Übersetzungen zu erzeugen.

Um alle verwendeten Zeichenketten innerhalb eines Projektes in die entsprechenden .pot-Dateien zu bringen, bietet CakePHP eine eigene Shell an, die sich wie folgt aus dem app-Verzeichnis heraus aufrufen lässt:

./Console/cake i18n extract

Dieser Aufruf erfasst leider gelegentlich nicht alle Strings, die man innerhalb der Übersetzungsfunktion __() benutzt hat.

Eine Ursache hierfür kann die Art sein, wie die PHP-Codestücke in den Views eingebunden sind. Es ist hier nicht möglich die Kurzform <? ?> zu verwenden, sondern für diejenigen Abschnitte, die übersetzungspflichtige Texte enthalten, muss die ausführliche Form (<?php ?>) der PHP-Tags gewählt werden. Diese Einschränkung gilt auch, wenn die kurzen Tags bei der Codeausführung (auch über CakePHP) problemlos verarbeitet werden.

Die Lösung ist also, den Code wie folgt anzupassen. Aus:

<? echo __('Überschrift'); ?>

wird:

<?php echo __('Überschrift'); ?>

Abschnitte, die keine Übersetzung benötigen, können nach wie vor mit der PHP-Kurzform definiert werden, wenn PHP grundsätzlich entsprechend konfiguriert ist.

Leave a Reply

Your email address will not be published. Required fields are marked *