Contao-News

Wir informieren Dich hier regelmäßig zu Updates, stellen Best-Practice-Arbeiten vor und berichten über Aktuelles aus dem Contaoversum.

Mehrsprachige Webseiten

von

Sah man früher mehrsprachigen Webseiten meist nur bei international ausgerichteten Unternehmen, so scheint es, dass mittlerweile regionale Unternehmen Ihr Angebot auch als englische Version anbieten. Multikulti verändert das Business und die Ausrichtung. So stellt sich natürlich die Frage: Kann mein CMS die unterschiedlichen Anforderungen an regionale oder globale Mehrsprachigkeit erfüllen?

GASTBEITRAG: Oliver Reif hat sich dieser Frage gestellt und das CMS Contao analysiert.

Mehrsprachig Regional & Global

Ist Contao das ideale Tool für mehrsprachige Webseiten?

Das kommt darauf an.

Mir sind zwei prinzipiell unterschiedliche Wege bekannt, in Content-Management Systemen mehrsprachige Webseiten zu pflegen:

In Version 1 werden alle Felder multilingual verwaltet, d.h. habe ich ein Feld für „Titel der Seite“ so bezieht sich das z.B. auf meine englische Version der Seite. „In der Nähe“ (wie auch immer das im jeweiligen CMS organisiert ist) finde ich die Eingabemöglichkeit für die „Titel der Seite“ in anderen Sprachen.

Version 2 verfolgt den Ansatz, mehrsprachige Webseiten im Prinzip wie getrennte Domains zu behandeln. Ich bin also völlig frei, jede Sprachvariante eigenständig mit Inhalten zu versorgen.

In Version 1 bedeutet das letztendlich, dass die Struktur alle Einzelseiten weitgehend gleich ist und der Redakteur alle Sprachversionen auf einen Blick sieht. Ob das die richtige Variante ist, hängt von vielen Faktoren ab: Will ich wirklich in jeder Sprachversion die gleiche Struktur haben? Wie viele Sprachen möchte ich unterstützen, denn bei vielen Sprachversionen kann dieser Weg schnell unübersichtlich werden.

Auch Variante 2 birgt Risiken: Wenn ich die Seitenstruktur in allen Sprachversionen konsistent halten möchte, muss sich der Redakteur bei jeder Änderung selbst darum kümmern, bzw. seinen fremdsprachigen Kollegen Bescheid geben, dass diese die Änderungen nachziehen.

Erstes Fazit: Alle Felder multilingual verwalten kann dann sinnvoll sein, wenn ich wenige Sprachen habe und eine konsistente Seitenstruktur wünsche. Aus meiner Sicht ist sonst Version 2 vorzuziehen.

Welchen Weg geht nun Contao?

Natürlich die Variante 2, werden die meisten sagen: Ich lege für jede Sprachvariante einen eigenen Seitenbaum an. Diese können sich eine Domain teilen, eine Sprache wird als Sprachen-Fallback festgelegt, denn Contao leitet den Nutzer automatisch auf die Version mit der in seinem Browser eingestellten Sprache, bzw. auf das Sprachen-Fallback, wenn für diese Sprache keine eigene Version vorgesehen ist. Da Contao Multi-Domain fähig ist, ist das eine sehr komfortable Lösung.

Contao bietet auch an, die Sprachversionen gleich zu präfixen, d.h. es gibt z.B. keine index.html, sondern eine de/index.html und en/index.html, sodass ich auf einer Domain auch mehrere Sprachvarianten unabhängig voneinander pflegen kann. Das ist der Variante ohne Sprachpräfix vorzuziehen, weil der Redakteur sonst darauf achten muss, keine doppelten Aliasse zu erzeugen, bzw. immer die Sprache mit in den Seitenalias aufzunehmen, also de-index.html und en-index.html.

Aber hält sich Contao zu 100% an dieses Prinzip? Nein, und das ist auch völlig in Ordnung so. Wer in der Dateiverwaltung schon mal mit Metadaten von z.B. Bildern gearbeitet hat, weiß, dass diese in unterschiedlichen Sprachversionen direkt bei der Datei eingegeben werden können. Was wäre die Alternative? Jedes Bild in einer eigenen Sprachvariante hochladen? Das wäre nur sinnvoll, wenn Bilder viele Texte enthalten, sonst wäre es viel zu viel Aufwand. Dennoch wünsche ich mir manchmal, Contao hätte die Option, zu einem Bild auch anderssprachige Alternativen anzugeben. Ausgespielt wird das, was zur Sprachversion passt – oder eben die Defaultversion.

Übersetzen von Webseiten

Das sollte mit unserem Wissen über Seitenbäume jetzt ganz einfach sein: Seitenbaum auswählen, komplett duplizieren, richtige Sprache eintragen, alle Elemente sichtbar schalten und dann einfach alle Texte in Seiteneigenschaften und Inhaltselementen übersetzen. Ok, vorher sollten wir – je nach Sprache – noch Vorkehrungen dafür treffen, dass die Sprache auch richtig angezeigt wird, z.B. wird arabisch von rechts nach links geschrieben (dafür ist die Darstellung der Zahlen wieder einfach :-)). Diese Übersetzungsarbeit kann dann ein Redakteur in Contao vornehmen oder über Erweiterungen wie contao2xliff exportieren, sodass professionelle Übersetzer die Texte mit ihren gewohnten Werkzeugen übersetzen können, um sie danach wieder zu importieren.

Doch Vorsicht ist in jedem Fall geboten. Text ist nicht gleich Text. Da gibt es vieles, was wie reiner Text aussieht, aber eine tiefere Semantik hat. Mein Lieblingsbeispiel: InsertTags. Unproblematisch sind Tags wie {{user::firstname}}, die den Vornamen des Besuchers der Webseite anzeigen. Dieser ist ja sprachunabhängig. Das sieht man den InsertTags aber von außen nicht direkt an, da der Inhalt von der Programmierung abhängt. Auch darauf sollte die Präsenz vorher programmiertechnisch vorbereitet werden.

Warum übersetzen nicht gleich lokalisieren ist

Darüber hinaus gibt es viele Textstellen, die sprach- oder gar länderabhängig sind: so sind 0°C im Englischen – je nach Land, z.B. in USA – dann 32°F, das lässt sich mit einer einfachen Formel umrechnen. Ebenso km/h in mph. Aber was sind denn 1.000 € gerade in US-Dollar?

Oder folgender Fall:

So könnte im deutschen Impressum stehen: „trilobit GmbH, Standort Karlsruhe, Geschäftsführer Oliver Reiff“ und stattdessen dann auf der englischen Seite: „trilobit Ltd, Location Edinburgh, CEO UK Peter Adelmann“. Und auch die Adresse lautete nicht nur anders, sie wäre auch in anderer Weise formatiert. In Großbritannien steht nämlich die Hausnummer vor der Straße, dafür die Postleitzahl hinter dem Ort.

Wer kann sich das alles merken und aktuell halten? Damit will sich keiner rumärgern!

Keiner? Doch einer und das reicht für uns alle aus, denn Robert Kern stellt das PHP-Package address-formatter-php zur Verfügung, das sich leicht in Contao einbinden lässt und dank Verwaltung über Composer auch immer aktuell bleibt. Dem Modul bekommt strukturierte Adressdaten und liefert eine korrekt formatierte Adresse zurück. Ganz abgesehen davon, dass sich Peter bedanken würde, wenn mein Portrait neben seinen Daten prangen würde… Und damit sind wir beim nächsten Thema.

Was ist mit Inhaltselementen, die nicht nur aus Text bestehen?

Beispiele dafür gibt es viele: Bilder mit Schrift „im Bild“, was sowieso ein Antipattern ist, wenn der Text von Suchmaschinen erfasst werden soll. Auch Links sind natürlich von Sprache zu Sprache verschieden und manchmal gibt es keine adäquaten Links in einer Sprache, wenn diese Seite im Seitenbaum der Übersetzung gar nicht existiert. Das betrifft natürlich auch Links innerhalb des eigenen Seitenbaums, wie z.B. Download-Links.

In Contao haben wir darüber hinaus viele weitere Elemente zur Verfügung, die uns das Leben normalerweise erleichtern, bei Übersetzungen aber gesondert behandelt werden müssen. Bestes Beispiel sind die Include-Elemente, mit denen der Redakteur z.B. andere Artikel oder besser Nodes referenzieren kann. Diese sorgen dafür, dass meine Inhalte innerhalb der Seitenblöcke konsistent bleiben. Bei einer Übersetzung muss ich aber alle finden und ändern.

Das können aber auch Inhaltselemente sein, bei denen der Text eine untergeordnete Rolle spielt, wie bei Google Maps, das ja erstmal dazu dient, die Lage eines beliebigen Ortes auf der Welt zu lokalisieren. Dabei gibt der Redakteur aber natürlich auch Texte an, wie den Namen des Ortes. Und schon die Städtenamen können abweichen. So heißt die Stadt Rom auf englisch Rome, auf italienisch Roma und so weiter. Es muss also gar nicht mal um die Beschreibung des Ortes gehen wie „Contaoptic – Fachinstitut für Contactlinsen“.

Hier stellt sich grundsätzlich die Frage: Objekte duplizieren oder mehrsprachig auslegen?

Objekte duplizieren ist einfach, erfordert aber viel Arbeit dabei, die Objekte konsistent zu halten. Mehrsprachig auslegen kann es der Entwickler eines Inhaltselementes oder der Redakteur behilft sich mit Insert Tags, z.B. {{city::rom}} wird im Deutschen zu Rom und im Italienischen zu „Roma“. In Contao hat der Redakteur ebenfalls die Möglichkeit mit iflng zu arbeiten, was auch nichts anderes ist als ein InsertTag, den Contao aber von Haus aus mitbringt. Das geht dann z.B. so {{iflng::de}}Rom{{iflng::it}}Roma{{iflng}}.

Für strukturierte Daten empfehle ich sowieso, ein Katalog-Tool zu nutzen wie MetaModels oder den Catalog Manager, den wir bei trilobit einsetzen, wie man auch an den dort gezeigten Referenzen sehen kann. Diese unterstützen Mehrsprachigkeit und selbst wenn nicht, kann der Entwickler diese durch die Struktur der Daten ermöglichen. Gleiches gilt natürlich für Shop-Systeme wie Isotope.

Pech hat der Redakteur allerdings, wenn das eingesetzte Bundle von sich aus Text ausgibt, der gar nicht zur Übersetzung vorgesehen ist. Das ist schlechter Stil! Contao ermöglicht von Haus aus eine einfache Verwaltung der Übersetzungen. Dann hilft es nur, sich an den Entwickler zu wenden und zu bitten, die mehrsprachige Version anzubieten, oder man macht die Arbeit selbst und stellt sie dem Entwickler als Pull Request zur Verfügung.

Die oben schon erwähnte Erweiterung contao2xliff unterstützt übrigens schon Erweiterungen wie RockSolid Custom Elements und Notification Center, das von Hause aus in einer Notification mehrere Sprachen unterstützt. Danke dafür! Auch bei contao2xliff können begeisterte Benutzer beitragen, dass in Zukunft noch mehr Erweiterungen unterstützt werden.

Klingt also alles machbar?

Dann noch ein „Klopper“ zum Schluss: Die lieben Formulare. Auch hier können Redakteure und Entwickler mit InsertTags arbeiten, um sich so das Duplizieren zu ersparen. Doch leider unterstützt jedes Formular nur genau eine Weiterleitungsseite. Und da wird es knifflig. Man könnte jetzt eine Weiterleitungsseite für alle Sprachen eintragen und die Verzweigung dann dort erledigen. Wir haben uns für den Weg einer Erweiterung entschieden, in der man mehrere Weiterleitungsseiten und deren Sprachen angeben kann, sodass die Weiterleitungsseite direkt aufgerufen wird.

Was mit Contao Übersetzungen übrigens auch geht

Wusstest Du, dass Du in Contao auch eigene Sprachen erfinden kannst? Neben den bekannten Sprachkürzeln wie de-DE, fr-CH und Co kannst Du auch eigene erfinden, z.B. de-DU und de-SI, wenn Du eine Webseite in der Du- und Sie-Form anbieten möchtest. Oder Deutsch in der vereinfachten Sprache, was - nicht nur - für Webseiten der öffentlichen Hand interessant ist. Natürlich erkennt der Browser nicht automatisch, welche Sprache der Webseiten-Besucher möchte, denn diese Sprachversionen hast Du ja gerade erfunden, ansonsten unterstützt Contao diese aber komplett.

Wir betreuen eine Seite mit zwei unterschiedlichen Content-Ausprägungen, aber gleicher Übersetzung. Dafür habe ich die Sprache fr-FR erfunden. Und dazu noch den Ordner in languages auf dem fr-Ordner gesymlinkt, so dass Contao auch die eigenen Sprachfiles berücksichtigt. Diese Lösung hat mir auch geholfen, dass ich Formulare, die ich in beiden französischen Seitenbäumen einsetze unterschiedliche Weiterleitungsseiten bekommen können.

FAZIT

Contao bietet eine großartige Unterstützung bei der Erstellung mehrsprachiger Webseiten an. Im Detail könnte es noch besser sein, aber das sind eben nur Details. Auch die Übersetzung von Texten in Erweiterungen ist normalerweise kein Problem. Manchmal ist der Redakteur aber gezwungen, Elemente zu duplizieren, was die Pflege erschwert. Es gibt aber auch tolle Erweiterungen, die Dir dabei helfen.

Voraussetzung ist allerdings, dass alle Beteiligten das Modell mit den verschiedenen Seitenbäumen verstanden haben und es zum Projekt passt. Für die meisten Projekte aus meiner Praxis trifft dies aber zu. Daher kann ich meine eingangs gestellte Frage „Ist Contao das ideale Tool für mehrsprachige Webseiten?“ für mich nur mit „Ja!“ beantworten. Welche Erfahrungen hast Du gemacht?

Kleiner Exkurs: Zeitzonen

Und wer gar nicht genug von solchen Problemen bekommen kann, dem sei empfohlen, sich mit Zeitzonen zu beschäftigen: Wenn beispielsweise Nutzer auf der ganzen Welt Termine in ihrer lokalen Zeitzone anzeigen oder eingeben sollen.

Ich dachte zunächst mit GMT+1, GMT+2 usw. kommt man weiter und es kann ja nicht so schlimm sein. Nun habe ich ein halbes Jahr in Adelaide, Süd-Australien, gelebt und weiß, dass es dort halbstündige Zeitzonen gibt. Ach ja und die Sommerzeit haben wir ja auch noch!

Überraschung: Es gibt über 400 Zeitzonen auf der Erde, denn eine Zeitzone ist als Gebiet definiert, in dem seit 1.1.1970 die gleiche Zeit herrscht, darunter Kuriositäten wie Germany/Busingen.

Kurzum: Ohne eine Zeitzone ist ein Unix-Timestamp nicht tauglich für die Ein- oder Ausgabe. Das vergessen wir meist, da die Zeitzonen von uns, unserem Server und unserer Zielgruppe identisch sind.

Der Autor

Oliver Reif
"Vor über 20 Jahren habe ich die Firma trilobit gegründet, vor 10 Jahren voll auf Contao ausgerichtet. Contao ist für mich DAS CMS und DAS Anwendungsframework für Webseiten und -anwendungen."

Agentur: www.trilobit.de

Zurück zur News-Übersicht.

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 9 und 1?