Inhalt

Mehrsprachige Webseiten mit Typo3

Szenario

Um mehrsprachige Seiten mit Typo3 aufzubauen, gibt es zwei Möglichkeiten. Die einfachere ist für jede Sprache einen eigenen Seitenbaum aufzustellen. Das hat zum Vorteil das es einfach aufzubauen und recht flexibel ist. Nachteilig ist allerdings das die Wartung schwierig und umständlich ist.

Die andere Möglichkeit ist die sog. one tree fits all Lösung, bei der ein einziger Seitenbaum alle Sprachversionen enthält. Dies ist schwieriger aufzusetzen, belohnt aber durch einfache Wartung und so nette Eigenschaften wie direkte Sprachumschaltung einer Seite.

 

Abbildung 1: Multitree Lösung - Jede Sprachversion der Seite bekommt seinen eigenen Seitenbaum
Abbildung 1: Multitree Lösung - Jede Sprachversion der Seite bekommt seinen eigenen Seitenbaum
Abbildung 2: One Tree Fits All - Es existiert nur ein Seitenbaum der aber dafür für jede Seite eine eigene Sprachversion vorhält
Abbildung 2: One Tree Fits All - Es existiert nur ein Seitenbaum der aber dafür für jede Seite eine eigene Sprachversion vorhält

Sprachen

Die anzubietenden Sprachen lassen sich in Typo3 zwei Kategorien einteilen. Die Default Sprache und die zusätzlichen Sprachen.

Default Sprache

Die Default Sprache ist die Sprache in der alle Inhaltselemente standardmäßig erstellt werden. Die Default Sprache ist eher eine Organisatorische Sache, hierzu muss im Typo3 nichts eingestellt werden.

Das folgende Listing zeigt wie man der Default Sprache einen Namen und ein Flaggensymbol (unter /media/) zuweisen kann. Diesen Schnippsel muss man im Page TSConfig der Rootseite eintragen:

mod.SHARED {
    defaultLanguageLabel = English
    defaultLanguageFlag = gb.gif
}

Zusätzliche Sprachversionen

Für die zusätzlichen Sprachen muss man in der Wurzel des Seitenbaums sog. Website Languages anlegen (siehe Abbildung 3). Eine Website Language hat wie jedes Inhaltselement in Typo3 eine ID über die die Sprache später angesprochen wird. Die Default Sprache hat immer die ID 0.  Abbildung 4 zeigt die Auflistung der vorhandenen Sprachen. Man beachte das die Default Sprache nicht Bestandteil der Liste ist. Lediglich die zusätzlichen Sprachen werden aufgelistet. 

Abbildung 5 zeigt den Dialog um eine Sprache zu erstellen. Einer Sprache kann man auch noch eine Flagge zuordnen, die aber nur im Backend von Belang ist.

Abbildung 3: Zusätzliche Website Languages werden im Root Element des Seitenbaums angelegt.
Abbildung 3: Zusätzliche Website Languages werden im Root Element des Seitenbaums angelegt.
Abbildung 4: Liste der zusätzlichen Sprachen, in dem Fall Englisch.
Abbildung 4: Liste der zusätzlichen Sprachen, in dem Fall Englisch.
Abbildung 5: Editieren einer Sprache
Abbildung 5: Editieren einer Sprache

TypoScript

TypoScript Optionen

Damit die zusätzlichen Sprachen überhaupt ausgewertet werden, benötigt man noch Einträge im Template.

config.linkVars = L

Mit linkVars weißen wir Typo3 an, den L-Parameter zu akzeptieren und an alle Links die von Typo3 generiert werden, wieder anzuhängen. Ohne diesen Parameter "vergisst" Typo3 sonst die ausgewählte Sprache.

config.locale_all = de_DE

Der Parameter locale_all gibt an, das die Locale auf de_DE umgestellt werden soll.  Dies ist wichtig, da z. B. Datumsformatierungen  meist anhand der Locale durchgeführt werden. Ist die Locale z.B. auf de_DE eingestellt, wird ein Datum nach dem Format dd.mm.yyyy formatiert, ist sie auf en_US, so wird ein datum nach yyyy/dd/mm formatiert.

config.sys_language_uid = 0

Mit der wichtigste Parameter ist sys_language_uid, da er Typo3 anweist, in welcher Sprache die Seiteninhalte zu rendern sind. Die hier anzugebende ID ist natürlich die ID der Sprache.

config.sys_language_mode = content_fallback

Der Parameter sys_language_mode gibt an wie Typo3 mit fehlenden Sprachversionen einer Seite umgehen soll. Die Default-Einstellung ist die, dass wenn keine Alternative Page Language zu einer Seite gefunden wurde, einfach komplett auf die Default Sprache umgestellt wird. D.h. das bei einer fehlenden Sprachversion einer Seite auch die Navigation und alle anderen Elemente in der Default Sprache dargestellt werden. Dies ist nicht immer erwünscht, denn oft soll der Rest der Seite weiterhin in der entsprechenden Sprache dargestellt werden, auch wenn keine Sprachversion vorhanden ist. Dies erreicht man mit dem Wert content_fallback. Darüber hinaus gibt es noch die Möglichkeiten strict und ignore. Bei der Einstellung strict wird ein Fehler erzeugt, wenn eine Sprachversion fehlt und bei ignore wird einfach nichts dargestellt, falls eine Sprachversion fehlt.

config.sys_language_overlay = 1

Hiermit lässt sich bestimmen wie Typo3 mit fehlenden Übersetzungen von Inhaltselementen umgehen soll. Mögliche Werte sind einfach 1 oder hideNonTranslated. Letzerer blendet Inhaltselemente ohne Übersetzung für die ausgewählte Sprache einfach aus.

Auswerten der gewählten Sprache

Nachdem der Benutzer sich für eine Sprache entschieden hat, wird Typo3 üblicherweise über den L Parameter darüber informiert. Der Wert des L Parameters  ist dann die ID der gewählten Sprache. Anhand dieses Parameters müssen dann die oben genannten Einstellungen config.sys_language_uid, config.locale_all und config.language gesetzt werden.

Vollständiges Codebeispiel

Alles in allem könnte das TypoScript für eine Seite mit zwei Sprachen (deutsch standardsprache mit uid 0 und englisch als Zusatzsprache mit uid 1) so aussehen:

# Allgemeine Einstellungen:
config.linkVars = L
config.sys_language_mode = content_fallback

# Default Sprache:
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE

# Zusatzsprache Englisch:
[globalVar=GP:L = 1]
config.sys_language_uid = 0
config.language = en
config.locale_all = en_US
[END]

Valid XHTML 1.0 Strict Valid CSS! Typo3 Logo