Symfony – Admin-Generator Lokalisierung

Auch im Thema i18n hat sich mit Symfony 1.2 etwas geändert, so führt der alte Weg der Lokalisierung des Admin-Generators nicht mehr zum Ziel. Wenn man sich die Dokumentation der Generatoren und zur Lokalisierung genauer zu Gemüte führt, wird klar, was anders gemacht werden muss und das dieser neue Ansatz auch durchaus seine Vorteile hat. Im Folgenden geht es nicht um eine detaillierte Beschreibung der Lokalisierung generell, sondern um den aus meiner Sicht besten Weg die Model-Felder und Filter im Admin-Generator zu übersetzen.Zur Lokalisierung des kompletten generierten Interfaces müssen an mehren Stellen Änderungen vorgenommen werden.  In der generator.yml Datei des generierten Moduls kann angegeben werden, welcher Übersetzungskatalog genutzt werden soll:

generator:
  class: sfPropelGenerator
  param:
    i18n_catalogue:        my_translation

Diese Angabe führt dazu, dass symfony in application/i18n/my_translation.xx.xml nach den Übersetzungen für die generierten Dateien sucht. Bei xx handelt es sich dabei um den Ländercode, also z.B. my_translation.de.xml. Der Aufbau dieser Dateien wird hier beschrieben. Durch diese Änderungen kann jetzt der Titel der Listen und Formulare angepasst werden.

Übersetzungen der im Model definierten und vom Generator ausgegebene Felder greift in dieser Datei jedoch nicht. Hierzu muss der jeweiligen Form-Klasse erst mitgeteilt werden, auf welchen Katalog sie zurückgreifen soll:

$this->widgetSchema->getFormFormatter()
  ->setTranslationCatalogue('my_translation');

Damit können auch die Felder in der Datei angepasst werden, womit die Tabellenübersicht und das Formular übersetzt werden können. Noch nicht greifen tut die Übersetzung für die generierten Filter. Daher muss auch der Katalog für die jeweilige Filter Klasse unter lib/filter angepasst werden. Hierzu einfach die schon bekannte Zeile zur Konfiguration nutzen:

$this->widgetSchema->getFormFormatter()
  ->setTranslationCatalogue('my_translation');

Nach der Anpassung an diesen drei Stellen ist die Übersetzung des Moduls zentral in der Datei my_translation.de.xml möglich.