i18n & mehrsprachiges Menü
am 01.04.2008 - 14:33 Uhr in
Hi!
Ich nutze das i18n Modul mit der neuesten Drupal 5.x Version und habe ein Problem damit, meine Menüs mehrsprachig zu gestalten.
Von dem i18n Modul habe ich die Funktionen Internationalization, Translation, i18n – blocks und i18n – menu aktiviert. Als Sprachauswahl nutze ich den Block Translation. Auf dem System gibt es 2 Sprachen: Deutsch und Englisch. Die i18n Einstellungen sind
- Browser language detection: Deaktiviert
- Content selection mode: Only current language and no language
- Language Management: Interface language is independent
Mehrsprachige Nodes mit Translation erstellt funktionieren mit i18n perfekt. Ich kann die übersetzen Nodes also durch Wahl der Sprachoptionen im Translation – Block zur richtigen Sprache wechseln.
Jetzt zu meinem Problemfall: den Menüs:
Ich habe mehrere Menüpunkte angelegt. Als Beispiel nehme ich mal Impressum und Imprint.
Der Menüpunkt Impressum hat die Sprachoption Deutsch und zeigt auf die Seite impressum, der Menüpunkt Imprint hat die Sprachoption Englisch und zeigt auf die Seite imprint.
Wenn ich das Menü aktivieren läuft alles eine Zeit lang wie gewünscht: Klicke ich auf die deutsche Flagge im Translation Block, sehe ich im Menü nur Impressum und nicht Imprint.
Aktiviere ich die Englisch Seite sehe ich nur Imprint und nicht Impressum im Menü.
Jetzt verlasse ich die Seite und besuche sie einige Minuten später erneut. Die englische Sprachoption funktioniert immer noch perfekt. Mit Englisch als aktivierter Sprache sehe ich als nur Imprint und nicht Impressum im Menü. Wenn ich nun aber Deutsch als Sprache markiere, sehe ich sowohl Impressum als auch Imprint gleichzeitig im Menü.
Wichtig: Diesen Effekt kann man nur als unangemeldeter Gast sehen. Ist man angemeldet, funktioniert alles weiterhin perfekt.
Ich habe das jetzt mehrmals mit verschiedenen Browsern und auch zwischendurch geleerten Browsercache / Browsercookie-Verzeichnis getestet:
Die deutsche Sprachauswahl im Menü funktioniert für Gäste nur ganz am Anfang nachdem i18n (oder die entsprechenden Menüpunkte) aktiviert wurden. Wenn die Seite länger läuft, sieht man unter der deutschen Sprachauswahl als Gast alle Menüpunkte, egal ob sie nun deutsch oder englisch sind.
Wie schon gesagt, die englische Sprachauswahl bei den Menüs funktioniert immer korrekt. Ebenso arbeitet die Sprachauswahl für die Nodes permanent korrekt. Das Problem zeigt sich also nur als Gast bei deutscher Sprachauswahl und nur bei den Menüpunkten.
Hat jemand eine Idee, wo hier das Problem liegen könnte?
- Anmelden oder Registrieren um Kommentare zu schreiben
jede Sprache eine Kategorie
am 01.04.2008 - 15:19 Uhr
Wenn du die Readme.txt liest steht da glaube ich zu mehsprachigen Menus Folgendes:
Lege fuer jede Sprache eine Kategorie an. Aus den zweisprachigen Kategorien ergeben sich dann auch die zweisprachigen Menues.
Also lies noch mal die Readme.txt von i18n.
Das mit den Kategorien und zweisprachigen Menues funktioniert aber so nicht bei den Primary- und Secondary-Links. Da ist eine andere Vorgehensweise erforderlich!!! Diese ist auf drupal.org dokumentiert.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Mir fallen ad hoc zwei
am 01.04.2008 - 20:47 Uhr
Mir fallen ad hoc zwei mögliche Ursachen ein:
Wenn es nur anonymen Benutzern passiert, dann kann es mit dem Caching zusammen hängen. Bei authetifizierten Benutzern wird m.E. Caching nicht/sehr wenig genutzt, da die Inhalte einer Seite vorwiegend personalisiert werden müssen. Ich wrde also mal die Cache-Settings prüfen und den Cache ggf. leeren.
Durch die Lokalisierung erreichen die SQL Queries eine erhöhte Komplexität, da die Klausel "nimm nur die Beiträge in einer bestimmten Sprache" durch Joins zu den bisherigen Queries hinzugefügt wird. Ich hatte schon projekte, wo die DB zu "alt" war, um diese Queries sauber zu verarbeiten. Dagegen spricht jedoch, dass es nur bei anonymen benutzern passiert.
Ich selbst habe mich strikt daran gehalten, die URL-Pfade zu den deutschen und englischen Beiträgen bis auf den präfix "de/" bzw "en/" identisch zu halten, also "de/imprint" und "en/imprint". Im Menü habe ich genau einen Eintrag mit dem Pfad "imprint" eingefügt. Den Sprach-prefix hat Drupal (i18n) selbst hinzugefügt. ich vermute, dass das durch irgendwelche "Base URL-Schwarze Magie" passiert, weiß es aber nicht sicher.
Schau mal hier: https://niebegeg.net/blog/zweisprachige-website-on-the-fly
Viele Grüße, Dirk
---
niebegeg.net - my adventures in "coding country".
Viele Grüße, Dirk
---
niebegeg.net - my adventures in "coding country".
Danke euch beiden. Ich bin
am 02.04.2008 - 16:41 Uhr
Danke euch beiden. Ich bin zwar noch zu keiner perfekt arbeitenden Lösung gekommen, aber gehe noch ein paar Spuren nach.
Wenn es nur anonymen Benutzern passiert, dann kann es mit dem Caching zusammen hängen.
Caching ist bei meinem Drupal Portal komplett deaktiviert.
Das einzige was bei mir serverseitig läuft ist ein größerer Query Cache von MySQL, was hier aber wohl keine Rolle spielen sollte.
Durch die Lokalisierung erreichen die SQL Queries eine erhöhte Komplexität, da die Klausel "nimm nur die Beiträge in einer bestimmten Sprache" durch Joins zu den bisherigen Queries hinzugefügt wird. Ich hatte schon projekte, wo die DB zu "alt" war, um diese Queries sauber zu verarbeiten.
Ich nutze die aktuelle MySQL stable Version (5.0.32) von Debian Linux 4. Das System hat 4GB Ram und eine aktuelle Dual Core CPU, so daß ich eher nicht an irgendwelche MySQL-/Kapazitätsprobleme glaube.
Ich selbst habe mich strikt daran gehalten, die URL-Pfade zu den deutschen und englischen Beiträgen bis auf den präfix "de/" bzw "en/" identisch zu halten, also "de/imprint" und "en/imprint". Im Menü habe ich genau einen Eintrag mit dem Pfad "imprint" eingefügt. Den Sprach-prefix hat Drupal (i18n) selbst hinzugefügt. ich vermute, dass das durch irgendwelche "Base URL-Schwarze Magie" passiert, weiß es aber nicht sicher.
Das habe ich gerade mal für das Impressum probiert, und zumindest bis jetzt scheint es so zu funktionieren. Mal schauen ob es auch so bleibt ;)