TYPO3: Sprachumschaltung mit Language Selection (sr_language_menu)

4. Januar 2011 | 35 Kommentare

TYPO3 Tutorials by undkonsorten BerlinNach langem Austesten verschiedener Möglichkeiten, halten wir die TYPO3-Extension Language Selection (sr_language_menu) von Stanislas Rolland für die beste Möglichkeit, um eine mehrsprachige TYPO3-Webseite mit einem One-Tree-Konzept (nur eine Seitenbaum für alle Sprachen) umzusetzen. Die Anforderung war dabei, dass auf jeder Seite in einer Sprachnavigation die alternativen, Sprachen als Link ausgegeben werden.

Auch wenn sich die Extension Language Selection relativ problemlos implementieren ließ, so soll hier doch kurz dargestellt werden, welche Schritte dafür notwendig sind, um TYPO3 auf andere Sprachen in UTF-8 umzustellen und die Extension einzubinden.

Neue Sprachen in TYPO3 anlegen

TYPO3: Neue Webseiten-Sprache hinzufuegen

Um neue Sprachen in TYPO3 anzulegen muss man auf die Weltkugel der Root-Seite klicken und im Kontextmenü auf “Neu” klicken.

TYPO3: Neue Webseiten-Sprache hinzufuegen

Wichtig ist, im nachfolgenden Menü auch den ISO-Code der Sprache auszuwählen, da unsere Extension später den Namen des ISO-Codes braucht. Hier alle notwendigen Sprachen, auch die Default-Sprache (bei uns Deutsch) hinzufügen. Wenn man anschließend auf die erweiterte Listenansicht der Root-Seite geht, bekommt man eine Liste der angelegten Sprachen (bei uns Deutsch, Englisch, Türkisch) angegben. Die UIDs der Sprachen findet man heraus, indem man mit der Maus über das Sprachsymbol geht. Diese UIDs brauchen wir später noch!

TYPO3 auf UTF-8 umstellen

Noch bevor wir jetzt Seiten in verschiedenen Sprachen anlegen, sollten wir im TYPO3-Install-Tool unter “All Configuration” im Feld “[BE][forceCharset] = utf-8″ den Wert “UTF-8” eintragen. Es kann sein, dass es jetzt bereits angelegte Seiten mit einem anderen Charset ein bisschen zerschießt. Deswegen sollte man diese Umstellung immer so früh wie möglich machen.

Installation

Zuerst muss die Extension Static Info Tabeles (static_info_tables) installiert werden. Danach die Extension Language Selection von der TYPO3-Webseite herunterladen
und über den Extension-Manager installieren. Jetzt läßt sich im Prinzip schon ein neues Inhaltselement namens “Plugins > Sprachauswahl” einfügen, was allein aber gar nichts nützt, da wir unserem TYPO3 erst noch die neuen Sprachen über das TypoScript beibringen müssen.

URL mit Linkvariablen erzeugen

Die Sprachumschaltung bzw. die Weitergabe der Information, welche Sprache angezeigt werden soll, läuft über die URL. Während eine Seite in der Standardsprache eine URL wie www.meineseite.de/index.php?id=6 besitzt, erhält die englische Version der Seite einen URL mit der Erweiterung &L=1 [www.meineseite.de/index.php?id=6&L=1] wobei die 1 der UID unserer Sprache (s.o.: Neue Sprachen in TYPO3 anlegen).

Diese URLs für die jeweiligen Sprachvarianten erzeugen wir mit folgendem TypoScrip im Template > Setup der Root-Seite außerhalb des page-Objekt (also z.B. ganz am Ende des Setups):

# SPRACHWAHL
# **********************
config (
  sys_language_mode = strict; 0
  config.sys_language_overlay = hideNonTranslated
  sys_language_uid = 0
  linkVars = L
  language = de
  locale_all = de_DE.UTF-8
)
page.config (
  language = de
  locale_all = de_DE.UTF-8
)
# English language, sys_language.uid = 1
  [globalVar = GP:L = 1]
config.sys_language_uid = 1
page.config.language = en
page.config.locale_all = en_EN.UTF-8
[global]
# Tuerkisch
[globalVar = GP:L = 2]
  config.sys_language_uid = 2
  page.config.language = tr
  page.config.locale_all = tr_TR.UTF-8
[global]

Die Extension mit TypoScript konfigurieren

Die Konfiguration der Extension lässt sich entweder über den Constant-Editor oder aber direkt im Template > Setup (TypoScript) der Root-Seite vornehmen. Die notwendigen Variablen sind gut im in der Dokumentation von Language Selection beschrieben. Unsere Seite lief mit folgendem TS zufriedenstellend:

## language menu konfigurieren
plugin.tx_srlanguagemenu_pi1 {
useSysLanguageTitle = 0
defaultLanguageISOCode = DE
LanguageISOCode = DE
#
#Hiermit kann die wraps um die Links aendern/leeren
#link.CUR.stdWrap.wrap = <li class='CUR'>|</li>
#link.NO.stdWrap.wrap = <li class='NO'>|</li>
link.NO.stdWrap = |
#
hideIfNoAltLanguages = 1
#
#Hiermit kann die aktuelle Sprache ausgeblendet werden
#don't show current language if showCurrent=0
#showCurrent = 0
#
# Hier liegt das selbst angepasste Template-File
file.templateFile = fileadmin/templates/language_menu/sprachwahl.tmpl
#
#GIBT EINE LISTENANSICHT AUS (2: Liste, 1: Auswahlliste, 0:Flagge)
defaultLayout = 2
links.stdWrap.split.wrap >
_CSS_DEFAULT_STYLE >
#
#Hiermit koennte man festlegen, dass nur die Spachen 1+2 in der Liste ausgegeben werden
#languagesUidsList = 1,2
}

Den Inhalt des Plugin ausgeben

So, jetzt müssen wir nur noch die Sprachwahl an einer entsprechenden Stelle ausgeben. Hiermit definieren wir das Objekt im TypoScript, dass wir später ausgeben:

sprachwahl.languageMenu < plugin.tx_srlanguagemenu_pi1

Dieses Objekt müssen wir jetzt noch an einen Inhaltscontainer für die Ausgabe auf der Seite binden. Z.B. so:

# PLATZHALTER SPRACHE ansprechen
# *********************************************
page.10.marks.SPRACHE =< sprachwahl.languageMenu

Seiten in neuen Sprachen anlegen

Jetzt sind wir soweit und können anfangen und können unsere Seiten mit neuen Sprachen füllen. Eine Anleitung wie das geht findet man in Kaspars uralt-Doku zu TYPO3 Version3. Doch im Prinzip hat sich nicht viel geändert.

Noch ein kleiner Tipp: Um Seiten aus den Menüs auszublenden bzw. zu verstecken, wenn keine Übersetzung in der aktuellen Sprache für sie vorliegt, muss man einfach bei der auszublendenen Seite in Seiteneigenschaften das Häckchen bei “Verstecke Seite wenn keine Übersetzung für die aktuelle Sprache existiert” anklicken.

Weiterführende Links:

» Sprachumschaltung mit Links [Diese Variante hat das Problem, dass nicht vorhandene die Sprachen nicht ausgeblendet werden und ist damit relativ unflexibel]
» Mehrsprachige Webseiten mit Typo3

Ähnliche Artikel:

Meta-Daten



35 Kommentare

Auch mal Kommentieren:

Kommentar