Vom: 11.01.2013

Pimcore translations im Layout

Pimcore bietet mit seinem internen Übersetzer die Möglichkeit, "feststehende" Begriffe auf Webseiten zu komfortabel zu übersetzen. Der Aufruf hierfür ist, zum Beispiel in einer View:
print $this->translate("Der zu übersetzende Begriff");
Wir die Webseite einmal aufgerufen nimmt Pimcore den Satz „Der zu übersetzende Begriff“ in die Liste mit auf. Dort kann man dann die Angaben in den gewünschten Sprachen machen, und abhängig von der im Frontend eingestellten Sprache wird dann die betreffende Übersetzung ausgegeben. Die Sprache stellt man im Frontend ein über den Zend_Registry Eintrag "Locale":
Zend_Registry::set("language", $language);
$locale = new Zend_Locale($language);
Zend_Registry::set("Zend_Locale", $locale);
Dies funktioniert wunderbar - mit einer Ausnahme: im Layout, bzw. Im Actioncontroller Website_Controller_Action Alle Angaben, die hier gemacht werden, werden nicht übersetzt, weil der Translator noch nicht initialisiert ist. Will man also beispielsweise Übersetzungen für ein Javascript bereits inline und global mitgeben:
$this->view->headScript()->captureStart(); ?>
var livesuche = "view->translate("Livesuche") ?>";
view->headScript()->captureEnd();
wird der String „Livesuche“ nicht übersetzt. Um auch hier schon Übersetzungen zu erreichen, muss der Translator händisch initialisiert werden bevor das erste Mal die translate() Methode aufgerufen wird. Dies erreicht man mit:
      $this->initTranslation();