Vom: 06.02.2012

Zend Forms mit dem eingebauten Übersetzer in Pimcore verwenden

Die mit dem Zend Forms gebauten Formulare lassen sich bekanntlich mit Validatoren ausstatten, die bei einer Regelverletzung eine entsprechende Fehlermeldung ausgeben. Diese lässt sich, mit einigem Aufwand, internationalisieren. Pimcore liefert einen komfortablen Übersetzungs-Manager mit, den man für seine eigenen Zwecke verwenden kann - dieser lässt sich auch mit Zend Forms verbinden! Dies geschieht mit ein paar einfachen Schritten, hier exemplarisch in Verbindung mit einem durch Alexandre Delattres Form Builder Plugin erzeugten Form:

$formbuilder = new Formbuilder_Frontend();
$form = $formbuilder->getForm("kontakt");
		
$locale = Zend_Registry::get("Zend_Locale");
$translate = new Pimcore_Translate($locale);
$form->setTranslator($translate);
$form->setDefaultTranslator($translate);

Mit diesem Code-Konstrukt landen nun alle Strings, die das Form ausgibt, im Übersetzer und können bearbeitet werden. Praktischerweise wird die noch nicht Variablen-bereinigte Version in die Liste eingestellt, so dass eine kontextbezogene Anpassung der Übersetzungen möglich ist. Gegebenenfalls muss in der Zend-Registry noch die benötigte Locale hinterlegt werden. Dies kann zum Beispiel in website/lib/Website/Controller/Action.php erfolgen:

try {
  $locale = Zend_Registry::get("Zend_Locale");
} catch (Exception $e) {
  $locale = new Zend_Locale("de");
  Zend_Registry::set("Zend_Locale", $locale);
}

Dies nur beispielhaft für Deutsch, bei einer Verwendung mit mehreren Sprachen muss hier natürlich flexibler Code verwendet werden.