WordPress mehrsprachig? Kein Problem!

Mit dem Plugin WPML Multilingual CMS soll sich jede WordPress-Website kinderleicht mehrsprachig betreiben lassen. Die Features klingen viel versprechend, jetzt sollte ich nur noch die Zeit finden, es zu testen ;-)

Update 26.12.2009: wie der Zufall es will, brauche ich genau diese Funktionalität für ein aktuelles Projekt, da sich die Kundin dazu entschlossen hat, ihre Website mehrsprachig anzubieten. Das Plugin arbeitet bisher stabil unter WordPress 2.9 und integriert sich nahtlos in die Admin-Oberfläche. Man erhält bei jeder Seite und bei jedem Post die Auswahlmöglichkeit der Übersetzung hinzu. Die übersetzten Daten werden zwar als neue Seiten bzw. Posts mit eigener ID gespeichert, aber in der Übersichtsliste im Admin-Bereich nicht als eigene Punkte, sondern nur als Übersetzung angezeigt. Dadurch bleibt die Liste aufgeräumt und man sieht auf einen Blick, für welche Seitenbereiche bereits Übersetzungen existieren.

Das Verhalten mancher Template-Tags ist allerdings gewöhnungsbedürftig, aber im Prinzip logisch. Ich habe etwa eine Navigation eingebaut, die auf der Funktion wp_list_pages basiert. Beim Anzeigen einer übersetzten Seite war plötzlich die Navigation verschwunden. Die Lösung ist einfach – wenn mans weiß!

Zur Anzeige der Hauptnavigation verwende ich

wp_list_pages('depth=0&child_of=14&sort_column=menu_order&title_li=');

Dadurch werden alle Subseiten der Seite 14 als Listenelemente einer unsortierten Liste angezeigt, die ich mit CSS weiter formatieren kann. Diese Seite mit der ID 14 ist eine völlig leere Seite, die “Hauptnavigation” heisst und nur zur Gliederung der Seitenhierarchie verwendet und niemals angezeigt wird.  Sobald man allerdings auf eine der übersetzten Seiten umschaltet (was einfach durch einen URL-Parameter namens “lang” funktioniert, also etwa ein an die URL angehängtes “lang=en” für die Umschaltung auf Englisch), ist die Navigation verschwunden!

Die Lösung ist einfach (wenn man erstmal drauf gekommen ist): zuerst muss man der oben erwähnten Gliederungsseite namens Hauptnavigation die gewünschten Übersetzungen hinzufügen. Also einfach in der Übersichtsliste auf “Übersetzung hinzufügen” klicken und für jede der Sprachen eine “Übersetzung” anlegen (die natürlich ebenfalls einfach eine leere Seite sein wird, aber sie muss existieren!).
Diese Übersetzungen erhalten eigene Seiten-IDs, die man herausfinden kann, wenn man in der Übersichtsliste der Seiten im Admin-Bereich mit dem Cursor über die “Editieren”-Schaltfläche der jeweiligen Sprache fährt und in der Statuszeile des Browsers die ID der übersetzten Seite abliest:

translate_cursor

Wenn man die IDs für jede Sprache herausgefunden hat, kann man die Navigation entsprechend ändern. Im konkreten Beispiel wäre die ID für Englisch 29 und für Italienisch 30:

if(!isset($_GET["lang"]) || $_GET["lang"] == "de") { 
      wp_list_pages('depth=0&child_of=14&sort_column=menu_order&title_li='); 
      }
else if($_GET["lang"] == "en") {
      wp_list_pages('depth=0&child_of=29&sort_column=menu_order&title_li='); 
      }
else if($_GET["lang"] == "it") {
      wp_list_pages('depth=0&child_of=30&sort_column=menu_order&title_li='); 
      }

So fragt man ab, welche Sprache laut URL angezeigt werden soll und lässt entsprechend die Subseiten der “übersetzten” Hauptnavigation anzeigen! Voilá – plötzlich ist auch auf englischen und italienischen Seiten die Navigation vorhanden. Netterweise gleich nur mit bereits in die jeweilige Sprache übersetzten Listenpunkten.

Diesen Beitrag teilen (bereits 0 Mal geteilt)

Ernst Michalek
Folgen:
1 Kommentar

Trackbacks & Pingbacks

  1. Tweets that mention EGM Weblog -- Topsy.com sagt:

    […] This post was mentioned on Twitter by Chris D, Ernst Michalek. Ernst Michalek said: Neuer Blogeintrag: WordPress mehrsprachig? Kein Problem! http://bit.ly/8ZmAxu […]

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert