Contao: Mehrsprachigkeit

Contao unterstützt bereits nativ die Erstellung mehrsprachiger Websites. Und weil genau das wirklich problemlos funktioniert, habe ich mich guten Gewissens mit Contao an die Erstellung einer mehrsprachigen Website gewagt, für die Inhalte nicht nur englisch sondern auch in 15 weiteren Sprachen vorliegen. Bereut habe ich es keine Sekunde. Nur anstrengend war es dann doch, irgendwie.

Allgemeines, Praktisches … und über ein paar graue Haare.

Vorab: Die Sprache ist eine Eigenschaft der Seite

Die Sprache ist eine Eigenschaft der Seite und so ist es nur konsequent, die Seiten der Seitenstruktur mit dem jeweiligen Sprachkürzel auszustatten. Leider ist dies nur teilweise ausreichend: Contao erwartet für jede Sprache eine eigene Seitenstruktur - in meinem Fall also 15 Seitenstrukturen, auch wenn nicht jede der Seiten wirklich übersetzt wird, sich also die vom Englisch abweichenden Strukturen deutlich vom “Original” unterscheiden. Man benötigt auch dann die verschiedenen Seitenstrukturen, wenn die Website nur über eine Domain bedient wird.
Die Hauptsprache bekommt dabei den Sprachen Fallback mitgeliefert und wird den Besuchern angezeigt, die Client-seitig eine Sprache eingestellt haben, für die keine Übersetzung verfügbar ist.

Tipp 1: Wer sich Zeit sparen möchte und Wert auf effizientes Arbeiten legt, sollte zwingend zunächt die Website in einer Sprache, nämlich der Hauptsprache fertig stellen.
Das ist leider deshalb nicht besonders schön, weil man gerade die Funktion “Sprachenswitch” wie auch Elemente wie “Change Language” im Design natürlich gerne auch vorführen möchte, sollte aber mit dem Kunden kommuniziert werden (und der hat dafür ja auch ausreichend Zeit, sich um die übersetzten Inhalte zu kümmern…)

Nicht alles wird übersetzt, aber alles soll immer verfügbar sein

Das Szenario “Eine Domain, mehrere Sprachen” ist eines, in dem vielleicht nur ein Teil der Inhalte übersetzt werden, die restlichen “Originalseiten” aber jederzeit verfügbar sein sollen.

Werden nur Teile des Inhalts übersetzt, so kopiert man die entsprechenden Äste der Seitenstruktur 1:1, passt dort die Sprache an und übersetzt die Artikel. Alle weiteren Seiten, die lediglich im Original vorliegen, kann man über den Seitentyp “Interne Weiterleitung” verlinken.
Also: alle übersetzten Seitenstrukturen enthalten die Übersetzungen als eigene Seiten mit eigener Sprache sowie alle weiteren verlinkten Seiten als Typ “Interne Weiterleitung”.

Vorteile:

  • über Weiterleitung verlinkte Seiten stehen damit  automatisch für Navigationsmenüs zur Verfügung
  • solange keine Übersetzung vorliegt, muss lediglich die Originalseite gepflegt werden

Hinweis: Kopiert man die Seitenstrukturen einfach und passt dann den Seitentyp an, sollte man sich wirklich Zeit nehmen, aufzuräumen und beispielsweise die überflüssigen Artikel der auf “Redirect” eingestellten Seiten löschen. Gerade bei vielen Sprachen kann es schnell unübersichtlich werden, zusätzlich sammelt sich recht viel Müll in der Datenbank. Ich habe zusätzlich jede Seitenstruktur mit dem Namen der Sprache ausgestattet und finde mich so recht schnell zurecht.

Es ist bestimmt eine Frage der passenden Umgebung, trotzdem glaube ich, einen weiteren Tipp wert:
Während des Arbeitens an den Seitenstrukturen habe ich eines Tages versehentlich auf den “alle aufklappen” Button geklickt. Contao versuchte daraufhin, 16 Seitenbäume mit ca 40 Seiten zu öffnen, was zu einem PHP Timeout und einem Speicherproblem führte und teilweise zu einem Error 500 des Servers.
Passiert einem Ähnliches im Artikelbaum kann es ebenso zu Problemen kommen.

Eine Frage des Themes

Theme und Seitenstruktur sind in Contao eng miteinander verbunden. Ob man sich mit einem oder mehreren Themes herumschlagen möchte, ist durchaus eine Frage, die man eingehend aus verschiedenen Perspektiven beleuchten sollte. Ich habe mich bei 16 Sprachen gegen 16 Themes entschieden, was gut klappt.

Navigationsmenüs organisieren sich von selbst…

Navigationsmenüs organisieren sich von selbst - man braucht sich daher hinsichtlich des Themes keine Gedanken machen. Sie schalten einfach zwischen den Sprachen um und sind damit die “Rundrum sorglos” Variante der Navigation. Individuelle Navigationsmenüs hingegen müssen sprachlich angepasst werden.

Hierfür hilft ein kleiner “Trick”:

  1. Man legt die entsprechenden individuellen Navigationsmenüs in jeder Sprache an
  2. In einem weiteren Modul vom Typ “Eigener HTML-Code” definiert man die Logik zur Einbindung des Moduls mit Hilfe des Insert Tags iflng.
  3. Man bindet nun statt dem eigentlichen Modul vom Typ “Indviduelle Navigation” das neue Modul vom Typ “Eigener HTML Code” ins Seitenlayout ein - Voilá!

Wie der Sprachen Switch zur Modul-Einbindung funktioniert, zeigt folgende Grafik:

Dieses Vorgehen kann man (und muss man ggf auch) für einige andere Modultypen wiederholen. Was sich wirklich ganz von allein handeln lässt, sind die Contao Module wie Login/Logout und so weiter: sie passen sich einfach der Sprache der Seite an.

Überschriften für Module und andere kleine Inhaltsschnipsel

Manchmal haben Module Überschriften oder innerhalb der Website gibt es kleine, Theme-gekoppelte Inhalte, die es aber nicht wert sind, dafür ein eigenes Theme aufzumachen. Auch hier hilft das Insert-Tag iflng.

Tipp: Ein bisschen Ordnung kann die Drittanbieter Erweiterung schaffen. Man kann dort ein eigenes Insert-Tags definieren, über das man auch die Übersetzungen steuert und hält in diesem Fall Seitenlayout, Theme und Module schlanker. Der definierter Platzhalter kann an beliebiger Stelle, beispielsweise auch in Modul Überschriften über die Anweisung {{custom::meinPlatzhalter}} eingesetzt werden.

Folgende Grafik zeigt die Übersetzung von “Country” in verschiedenen Sprachen, - ich kann die Übersetzung an beliebiger Stelle über {{custom::country}} einfügen - übrigens auch in Formularen!

Ich nutze diese Kombination übrigens auch zur Übersetzung von Feldbezeichnern im Catalog (und damit automatisch in Catalog Filter Modulen) - in diesem Fall eine echte Alternative, denn es käme rein organisatorisch nicht in Frage, jeden meiner Kataloge in 16 Sprachen anzulegen.

Resumee: zum Umgang mit einem Theme bei mehrsprachigen Websites

  • Navigationsmenüs organisieren sich von selbst
  • Individuelle Navigationsmenüs können wie beschrieben über das iflng Insert Tag organisiert werden
  • Viele der Contao Module “gehen” mit der Sprache
  • Überschriften können ebenfalls über das iflng Insert Tags dynamisch angepasst werden

Man sollte also kurz abklären, ob diese Punkte im Wesentlichen die Anforderungen erfüllen - es spart eine Menge Arbeit.

Sonstige Hilfsmittel

Übersetzungen: Überblick behalten

Mehr Überblick über bereits fertige und noch zu erledigende Übersetzungen behält man durch die Erweiterung - Pflichtprogramm für alle mehrsprachigen Websites, um zu wissen, wo es noch etwas zu tun gibt und wo nicht. Die Erweiterung zeigt zu allen Seiten und Artikel an, in welchen Sprachen das Element verfügbar ist und ob die Übersetzung als aktuell deklariert wurde. Die Übersetzungsverwaltung ist außerdem separat im Backend verfügbar.

Achtung und eine Bitte: seit einer gewissen Datenmenge macht auch hier mein Server einfach schlapp (und Provider hin oder her, tut er das nur sehr selten) und quittiert mit einem Error 500. Ich würde mich an dieser Stelle, genauso wie in Punkto Seitenstruktur Timeouts, über Erfahrungsberichte freuen - die Site zieht nämlich demnächst auf ihren Zielserver und ich wüsste gerne sicher, dass mich das dort nicht auch ereilt, sonst muss ich mir noch eine technische Alternative überlegen. Dies übrigens sind mindestens zwei der angesprochenen grauen Haare ;-)

Change Language

Gerade wenn die Mehrsprachigkeit nicht über verschiedene Domains organisiert ist (.com/.de etc. pro Seitenbaum), empfiehlt es sich eventuell, den Sprachen-Switch zu integrieren. Das erledigt das Modul , der Sprachenwechsler, der sich vielfältig Konfigurieren lässt, beispielsweise Sprachauswahl über Flaggen oder über eigene Bezeichner - wie hier:

Alles ganz easy?

Machen wir uns nichts vor. Auch wenn mit Contao alles ganz einfach scheint (und auch ist), birgt die mehrsprachige Website, zumindest unter gleicher Domain, doch eine Reihe an Problemen und Stolpersteinen und erfordert so eine Menge Konzeptionsarbeit im Vorfeld.

Folgende Überlegungen sollten nicht fehlen:

  • Durch das Konzept Weiterleitungsseite ist es mit von Contao automatisch vorgenommenen Übersetzung der Module Login/Logout nicht getan. Wohin wird der Besucher nach erfolgtem Login weitergeleitet? Was passiert beim Absenden von Formularen?
  • Kann man ggf. auf individuelle Navigationsmenüs verzichten, um den vollen Automatismus hinter den Contao-Menüs nutzen zu können?
  • Benötigt die Website eine Suche? Wenn ja, stellt sich auch hier die Frage nach der Weiterleitungsseite und vor allem auch der Sprache, die das einzige oder das jeweilige Suchformular bedient.  Auch solche Formulare und Module müssen gegebenenfalls mehrfach angelegt und nach dem obigen Prinzip “Insert Tag” gesteuert werden.
  • Welche Erweiterungen nutzt die Website? Nicht alle Erweiterungen sind voll Multi-Language fähig - oft gibt es nur wenige Übersetzungen.

und und und…

Insgesamt gilt für ein mehrsprachiges Projekt vor allem eines: alle Beteiligten müssen wissen, dass ein solches Projekt einfach Zeit braucht. Die Übersetzungen sind das eine. Die Technik ist das andere - selbst wenn Contao sich hier als gelungene Lösung erweist, braucht manches einfach Zeit und auch Nerven…Also nur nicht entmutigen lassen: es geht alles, man darf nur nicht verzweifeln und nicht vor einer ganzen Menge Arbeit zurückschrecken.

In den kommenden Tagen (so mich Weihnachten denn lässt) möchte ich noch auf den mehrsprachigen Katalog eingehen, - ein umfangreiches Thema, für das sich verschiedene Ansätze finden.

 

5 Antworten zum Beitrag “Contao: Mehrsprachigkeit”

  1. am 27 Dez 10 um 13:10 meint

    Vielen Dank für diesen Ausführlichen Beitrag der wirklich Hilfreich ist. Im Ganzen gibt es viele Wege bei Contao die nach Rom führen. Von Vorteil ist es natürlich wie du schon sagst, sich vorweg Gedanken zu machen, welcher Lösungsweg der optimalste ist. Deine Tipps mit Weiterleitungsseiten, Formularen etc. sind sehr gut, diese Punkte hätte ich glatt selbst übersehen. Meiner Meinung nach hat Typo3 bei Mehrsprachigen Internetseiten zur Zeit die Nase vorne. Sobald das erste Projekt in Contao Multilingual aufgebaut wird, werde ich gerne drüber berichten und ebenfalls diesen von dir verfassten Artikel verlinken, denn zur Zeit findet man noch wenige Themen über die Mehrsprachigkeit bei Contao. MfG, Marcin

  2. am 18 Mai 11 um 16:40 meint

    pixelbrain Karin Lutz

    Danke für die tolle Zusammenfassung - hat mir die Erstellung meines ersten Contao-Sprachprojekts sehr leicht gemacht! Danke! In meinem Fall sind gottseidank nur drei Sprachen beteiligt - und es scheint auf Anhieb alles zu funktionieren :-)

  3. am 25 Nov 11 um 12:00 meint

    Danke Anne-Kathrin, für diesen sehr guten Beitrag! Ich frage mich, wie die Lösung auf den Shop transportiert wird. Das Prinzip sollte ja dasselbe sein, oder?
    LG Christian

  4. am 27 Jan 12 um 17:33 meint

    Also ersteinmal, toller Artikel. Bin auch gerade beim ersten Mehrsprachengehversuch, denke der Beitrag wird mir eine große Hilfe sein. Dazu mal eine Frage:
    > Alle weiteren Seiten, die lediglich im Original vorliegen, kann man über den Seitentyp “Interne Weiterleitung” verlinken. <

    Macht das Sinn? Dann wird jede in der Orginalsprache vorhandene, aber nicht übersetzte Seite (Artikel) ausgegeben und einfach per Weiterleitung an die default-Sprache verwiesen? Was bringt es mir denn als Franzose den deutschen Artikel zu lesen, damit ich überhaupt was lese? Oder habe ich das Missverstanden?

  5. am 08 Mrz 12 um 16:34 meint

    Gute Beschreibung und guter Tipp mit dem Modul changelanguage für Contao!

Auch was dazu sagen?