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.
Die anzubietenden Sprachen lassen sich in Typo3 zwei Kategorien einteilen. Die Default Sprache und die zusätzlichen Sprachen.
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
}
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.
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.
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.
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]