Zend_Translate - Zend_Navigation und Routing Kombinationsproblem!

9

Ich habe einige Schwierigkeiten mit der Kombination von Zend_Navigation, Zend_Translate und dem benötigten Routing.

Meine Websitenavigation erfolgt durch Zend_Navigation basierend auf und XML-Datei. Ich habe jetzt die Übersetzung auf der Website basierend auf Zend_Translate hinzugefügt und zu folgendem Wechsel des Routing zum Bootstrap hinzugefügt:

%Vor%

Ich habe dann einen View_Helper mit einer preDispac-Methode erstellt:

%Vor%

Wenn ich jetzt gehe zu: "site / en / module / controller / action" funktioniert es gut.

Wenn ich gehe zu: "site / da / module / controller / action" funktioniert die Übersetzung gut, aber meine Links von Zend_Navigation zeigen auf den Standard 'en' Sprachlink "site / < stark> de / module2 / controller2 / "

Ich kann nicht herausfinden, dass das Ihre at / da / Sprache ist. Jede Hilfe würde geschätzt werden.

Mit freundlichen Grüßen

Morten

    
Morten 27.02.2010, 08:22
quelle

2 Antworten

1

Dies beantwortet Ihre Frage nicht direkt. Zend_View_Helper_Navigation, der View-Helper für die Navigation, hat eine setTranslator () -Methode, die eine implizite Übersetzung der Navigationsseiten liefert, die Sie dem Zend_Navigation-Container hinzugefügt haben.

%Vor%

Dies erspart Ihnen den manuellen Aufruf der Übersetzung für jedes Element

%Vor%

wird automatisch ausgeführt, weil setTranslator () ausgeführt wurde.

    
Kurt Krueckeberg 20.05.2011 19:18
quelle
1

Da Zend_Navigation_Page_Mvc nur nach Modul, Controller und Aktion sucht, sieht es so aus, als würde es nie zu einem zusätzlichen Routing Element gehen.

Eine Lösung könnte sein, eine neue Klasse wie Zend_Navigation_Page_Mvcl zu verwenden, die mit Sprache umgehen kann.

Aber es scheint ein bisschen komplex zu sein, also habe ich eine Lösung gefunden, indem ich eine größere Navigation verwendet habe, die alle Seiten in allen Sprachen enthält.

Dies ist meine XML-Konfiguration für die Navigation für zwei Seiten "home", "test" auf Französisch und Englisch:

%Vor%

Wie Sie sehen können, ist es nur für zwei Seiten ziemlich lang. Tatsächlich haben Sie (Seiten + 1) x Sprachen Elemente in der Navigation

Ich habe einen 'Trick' benutzt: Die Homepage ist zweimal vorhanden.

  • einmal als Hauptmenüpunkt
  • einmal als ersten Untermenüpunkt

Die Idee besteht darin, zu definieren, welches Untermenü basierend auf der ausgewählten Sprache angezeigt wird. Dies geschieht automatisch über den Router. Sie müssen also nur Ihrer Anwendung mitteilen, dass sie das Untermenü anstelle des Menüs zeichnen soll. Also hier ist die Zeile, die ich dafür in meiner Layout-Datei verwende:

%Vor%

Ich habe nicht gesehen, wie du die Zend_Navigation hinzugefügt hast, also hier ist meine von Bootstrap.php :

%Vor%

Übrigens, in derselben Bootstrap.php kann ich die Standardsprache auf 'en' belassen, hier ist meine _initRoutes () :

%Vor%

Und für die Übersetzung ist es automatisch erledigt, wenn du Zend_Translate registriert hast. In meinem Beispiel: menu.home gibt Folgendes:

  • Startseite auf Englisch
  • Accueil auf Französisch

Ich hoffe, das hilft.

Ich würde eine andere subtilere Lösung bevorzugen, aber ich habe sie noch nicht gefunden.

    
Sébastien Barbieri 15.09.2011 23:44
quelle