- Werbung -

In diesem zweiteiligen Artikel werden Schritt für Schritt die nötigen Arbeiten beschrieben, um eine mehrsprachige Website mit Drupal 6 aufzubauen. Teil 1 beschrieb die Vorbereitung sowie die mehrsprachige Umsetzung von Taxonomien und lesbare URLs.

Menüs

Bei der Übersetzung von Menüs gibt es zwei verschiedene Möglichkeiten. Sofern die Menüstruktur und die mit den einzelnen Menüpunkten verknüpften Inhalte in allen Sprachen identisch sind, genügt es, die Menütexte mit Hilfe der Funktion "Oberflächenübersetzung"  (zu finden unter "Verwalten -> Strukturierung -> Oberfläche Übersetzen") in die gewünschten Sprachen zu übersetzen. Dort findet man nicht nur statistische Angaben über den aktuellen Status der Übersetzungen, sondern kann mit Hilfe einer komfortablen Suchfunktion zu übersetzende Begriffe suchen und anschließend bearbeiten.

Übersichtsseite Oberflächenübersetzung

Übersichtsseite Oberflächenübersetzung

Hier die Ergebnisse einer Suche nach dem Begriff "Projekte". Gefunden wurden zwei Menüs, die diesen Begriff enthalten:

Suchergebnisseite Oberflächenübersetzung

Suchergebnisseite Oberflächenübersetzung

Schwieriger wird es, wenn die verschiedenen Sprachen unterschiedliche Menüs besitzen sollen. Sofern Menüs in Form von Blöcken eingebunden sind (dies ist z.B. bei den Menüs in der linken Spalte von auge.de der Fall), ist die Sache einfach. Es genügt, die von i18n unterstützten mehrsprachigen Blöcke zu verwenden. Mit den sogenannten "Primary" und "Secondary Links" wird es aber komplizierter, wenn diese nicht in Blockform eingebunden sind, sondern direkt im Template erscheinen. Dies ist bei den horizontal angeordneten Tabs "Startseite", "Forum" etc. auf auge.de der Fall. Hier versagt die Übersetzungsfunktion von Drupal. Auch wenn man die einzelnen Menüpunkte korrekt auf die jeweilige Sprache einstellt, erscheinen auf der Website doch alle Menüpunkte aller Sprachen - was natürlich völlig unsinnig ist.

Um dieses Problem zu lösen, gibt es zwei Möglichkeiten. Die erste: man patcht die Template-Dateien, in denen die Menüs ausgegeben werden. Der Nachteil liegt auf der Hand: Bei einem Update des Templates geht diese Änderung verloren und muss erneut eingespielt werden. Eleganter ist da die zweite Möglichkeit, die auf den Funktionen des Drupal Core und i18n aufbaut: die Verwendung von mehrsprachigen Variablen. Drupal bietet nämlich die Möglichkeit, auch für seine Systemvariablen Übersetzungen einzugeben. Damit lassen sich dann die letzten Winkel einer Drupal-Installation übersetzen. Um hiermit mehrsprachige Menüs zu erzeugen, sind folgende Schritte erforderlich:

Schritt 1: Um die verschiedenen Sprachen einfach zu testen, aktiviert man als erstes den Block für die Sprachumschaltung (unter "Verwalten -> Strukturierung -> Blöcke").

Schritt 2: In der Konfigurationsdatei von Drupal (settings.php) müssen die Variablen eingetragen werden, die später übersetzbar sein sollen - in diesem Fall sind es nur die Variablen für die primary und secondary links. Dies geschieht durch das Einfügen des folgenden Codes:

/**
* Multilingual settings
*
* Die folgenden Variablen können in jeder Sprache eine Übersetzung erhalten wenn i18n aktiviert ist.
*/
$conf['i18n_variables'] = array(
// Primary and secondary links
'menu_primary_links_source',
'menu_secondary_links_source',
);

Schritt 3: Bei allen Menüpunkten des deutschen Menüs stellt man das Feld "Sprache" von "Alle Sprachen" auf "Deutsch" um - falls die Menüs nicht von vornherein als "Deutsch" gekennzeichnet waren.

Menüpunkt deutschsprachige Website

Menüpunkt für die deutschsprachige Website

Schritt 4: Nun wählt man im Sprachumschalter-Block die nächste Sprache - in diesem Beispiel Englisch. Dies ändert nicht nur die Sprache der Seite - was ja erwünscht ist - zusätzlich hat sich in der URL der Seite auch das Sprach-Präfix geändert. Statt /de/ für Deutsch steht dort nun /en/ für Englisch.

Schritt 5: Jetzt wird für jede Sprache ein neues Menü erstellt. Damit man dieses später leichter wiederfindet, sollte man in seinem Titel das Sprachkürzel verwenden. Beispiel: "Hauptmenü DE" für das deutsche Menü, "Hauptmenü EN" für das englischsprachige - der Titel des Menüs muss nicht übersetzt werden, da er nur für interne Zwecke verwendet wird. Danach legt man alle Menüpunkte an, die in der jeweiligen Sprache erscheinen sollen, verknüpft sie mit dem gewünschten Content (z.B. Node, View oder Panel) und stellt die Sprache entsprechend ein - in diesem Falle auf "Englisch".

Schritt 6: Hat man alle Menüs in allen Sprachen angelegt, müssen diese jetzt nur noch in jeder Sprache den Primary bzw. Secondary Links zugeordnet werden. Dazu stellt man zunächst mit Hilfe des Sprachumschalter-Blocks die gewünschte Sprache ein, also bspw. Deutsch. Dann ruft man "Verwalten -> Strukturierung -> Menüs -> Einstellungen" auf und ordnet dort unter "Die Quelle der Hauptlinks" das deutschsprachige Menü für die Primary Links, sowie unter "Die Quelle der Sekundärlinks" das Menü für die Secondary Links zu. Der Text in dem rechten roten Kasten ist übrigens der Hinweis, dass es sich hierbei um eine mehrsprachige Variable handelt, die übersetzt werden kann. Daran erkennt man, dass der Eintrag in der settings.php korrekt erfolgt ist.

Zuordnung der deutschen Menüs zu Primary und Secondary Links

Zuordnung der deutschen Menüs bei Spracheinstellung Deutsch

Nun wählt man im Sprachumschalter-Block die nächste Sprache und ordnet entsprechend die Menüs für diese Sprache auf die gleiche Weise zu. So verfährt man für jede Sprache. Als Ergebnis wird beim Umschalten in eine andere Sprache für die Primary und Secondary Links das zu dieser Sprache gehörende Menü angezeigt.

Blöcke

Während die Sprachunterstützung bei Menüs noch etwas umständlich ist, ist sie bei den Blöcken kinderleicht zu bedienen. Beispiele für Blöcke sind übrigens auf auge.de die Navigation in der linken Spalte, sowie alle Inhalte in der rechten Spalte (Werbung, neue UM-Artikel, Neueste Kommentare, Top Events und "Wer ist online"). Klickt man auf den "Konfigurieren"-Links eines Blockes so findet man die Spracheinstellung. Jeden Block kann man hier entweder einer Sprache zuordnen oder ihn sprachunabhängig auf allen Seiten anzeigen lassen.

Spracheinstellung bei Blöcken

Spracheinstellung bei Blöcken: dieser Block wird nur auf der deutschen Seite ausgegeben

Inhalt

Zum Abschluss kommt nun die in aller Regel aufwändigste Arbeit. Die Übersetzung von Inhalten. Diese ist in Drupal sehr einfach. Bearbeitet man einen Inhalt, so findet man über dem Editorfenster verschiedene Tabs, darunter einen mit der Bezeichnung "Übersetzen".

Übersetzen-Tab bei Anzeige eines Beitrags

Übersetzen-Tab bei Anzeige eines Beitrags

Klickt man diesen an, so bekommt man eine Liste, in der alle installierten Sprachen aufgeführt sind und bei jeder Sprache angezeigt wird, ob hierfür bereits eine Übersetzung vorliegt. Falls nicht klickt man einfach bei der gewünschten Sprache auf "Übersetzung hinzufügen" und kann auf der folgenden Seite die Übersetzung eingeben. Die Sprache wird dabei bereits von Drupal eingestellt. Und selbstverständlich können auch die Keywords übersetzt werden und ein übersetzter URL-Alias wird ebenfalls erzeugt.

Übersicht Übersetzungen
Übersicht vorhandener bzw. fehlender Übersetzungen

Eingabe der Übersetzung

Eingabe der Übersetzung

Anstelle des Sprachumschalter-Blocks kann man noch eine zweite Methode verwenden, um zwischen den Sprachen umzuschalten. Dies erfordert, dass unter "Verwalten -> Einstellungen -> Sprachen -> Mehrsprachiges System" kein Häkchen bei "Hide content translation links" gesetzt ist (siehe oben Bild "Einstellungen für Sprachwahl bei Ausgabe der Inhalte"). In diesem Falle findet man in jedem Teaser bzw. Textkörper einen Link zur Umschaltung der Sprache.

Fazit

Mehrsprachige Webseiten mit Drupal zu pflegen erfordert zunächst eine sorgfältige Planung und Konfiguration des Systems. Hat man alles richtig gemacht, wird man mit einem einfach zu bedienenden System belohnt, das eine gute Verwaltung der Inhalte und ihrer Übersetzungen bietet. Hier noch einige Beispiele von mehrsprachigen Websites, die mit Drupal realisiert wurden - von ganz klein bis ganz groß, mit 2 bis 20 Sprachen:

Cocoate (deutsch, englisch, französisch): http:// drupal.cocoate.com/de
materra - Stiftung Frau und Gesundheit e.V. (deutsch, englisch): http://www.materra.org/
Pink - Sony Music Entertainment (20 Sprachen!): http://www.pinkspage.com/de/home
bb22 - Bürogemeinschaft (deutsch, englisch): http://bb22.net/