Rubrik: Mehrsprachigkeit, Frontend
04.11.2007 | Alter: 4 Jahre

Sprachmenü erstellen

Von: Melanie Meyer

There are more than many ways to do it... So beginnt die ausführliche Dokumentation zur Mehrsprachigkeit von Kasper Skårhøj (doc_l10nguide). Lernen Sie hier, wie TYPO3 Sie unterstützt und wie Sie TYPO3 dabei unterstützen können...

Es gibt prinzipiell zwei Arten, mehrsprachige Seiten anzulegen, die sich grundlegend voneinander unterscheiden. Bei der einen Variante legen Sie für jede Sprache einen eigenen Ast bzw. Baum an. Damit werden die Sprachen wie unterschiedliche Bereiche der Webseite behandelt. Bei der anderen Variante verwalten Sie alle Sprachen im gleichen Baum. Jeder Seite im Backend wird die Übersetzung in andere Sprachen direkt zugeordnet. Dies bewirkt, dass der Besucher beim Link zur Sprachumschaltung auf der gleichen Seite verbleibt und nicht erst wieder auf der Startseite der jeweils neuen Sprache anfangen muss.

Beide Varianten haben ihre Berechtigung und werden für unterschiedliche Bedürfnisse eingesetzt.

Erstellung eines Sprachmenüs für die Variante "Alle Sprachen in einem Baum"

Zuallererst müssen wir über TypoScript Konfiguration die Sprachen einrichten. Das Toplevel-Objekt CONFIG stellt einige Eigenschaften zur Verfügung, die die sprachspezifische Ausgabe erzeugen.

Die Konfiguration für eine Webseite mit Deutsch als Standardsprache sieht wie folgt aus:

config {
   language = de
   locale_all = de_DE
   htmlTag_langKey = de
 }

Diese Einstellungen sollten – unabhängig davon, wie viele Sprachen Sie auf der Webseite darstellen wollen, gesetzt werden – also auch für einsprachige Webseiten. Die folgenden zusätzlichen Zeilen sind nur notwendig, da wir mehrere Sprachen verwalten und konfigurieren.

config {
   linkVars = L
   uniqueLinkVars = 1
   sys_language_uid = 0
 }

Detaillierte Informationen zu den einzelnen Einstellungen können Sie in der TSRef nachlesen.

Anschliessend fügen wir im Backend all unsere benötigten Sprachen im obersten Element im Seitenbaum hinzu.
Die UID wird später für die Konfiguration der Sprachen und das Sprachmenü (per TypoScript) benötigt. 

Nun können wir redaktionell im Modul Web, Page zu jeder Seite eine alternative Seitensprache anlegen und die Seite mitsamt Inhalten durch die TYPO3-Lokalisierungsfunktionen übersetzen lassen

Ist die Standardsprache definiert, können wir nun per TypoScript alle weiteren Sprachen konfigurieren, hierbei ist darauf zu achten, daß sys_language_uid die ID der jeweiligen Sprache ist und die Abfrage globalVar = GP:L = 1 genau auf diese ID prüft

# languages #
# english
[globalVar = GP:L = 1]
config {
   language = en
   locale_all = en_US
   htmlTag_langKey = en
   sys_language_uid = 1
}
[global]
 
# franzoesisch
[globalVar = GP:L = 2]
config {
   language = fr
   locale_all = fr_FR
   htmlTag_langKey = fr
   sys_language_uid = 2
}
[global]

Menü für die Sprachumschaltung

Nun können wir das Menü erstellen. In diesem Beispiel verwenden wir ein Textmenü, es können genauso grafische Menüs mit Flaggen erzeugt werden. Dies ist jedoch Stoff für einen weiteren Artikel.

temp.menu_lang = COA
temp.menu_lang {
   10 = HMENU
   10 {
         # deutsch und englisch
      special = language
      special.value = 0,1
   
      1 = TMENU
      1 {
         NO = 1
         NO.stdWrap.cObject = TEXT
         NO.stdWrap.cObject {
            value   = Deutsch || Englisch
            lang.en = German || English
         }
         ACT < .NO
         ACT.stdWrap.cObject {
            value = DEUTSCH || Englisch
            lang.en = German || ENGLISH
         }
      }
   }
}

Es gibt ausser den beiden Zuständen NO und ACT noch die beiden speziell für das Sprachmenü nützlichen Zustände USERDEF1 und USERDEF2, die bei der Darstellung der Menüpunkte nicht übersetzter Seiten greifen.

Mit diesen vier Grundtypen und einer geschickten Konfiguration des Fallback Verhaltens kann man die Sprachnavigationsleiste sehr gut an den aktuellen Bedarf anpassen. Genauere Erläuterung der einzelnen Einstellungen und weitere Beispiele folgen in den nächsten Artikeln und sind im Buch nachlesbar.

Themensammlung: Ideen für weitere Artikel:

  • Datenhaltung: wo werden meine mehrsprachigen Inhalte vorgehalten und wie kann ich dies beim Erstellen einer neuen Extension nutzen?
  • Fallback: wie verhält sich TYPO3, wenn Inhalte nicht übersetzt sind - und vorallem, wie kann ich darauf Einfluss nehmen?
  • Mehrsprachigkeit und Zeichensatzprobleme bei Sprachen mit arabischen, asiatischen und kyrillischen Zeichen
  • Hilfen für Redakteure mehrsprachiger Seiten
  • Automatische Spracherkennung

Wenn Sie Interesse an einem der Artikel oder einen neuen Artikelvorschlag haben, können Sie uns gerne Ihr Feedback senden, wir nehmen interessante Themen gerne in unsere Liste auf bzw. setzen oft angefragte Artikel in unserer Prioritäetenliste nach vorne.