Sprachumschalter mit Flaggen

(vor allem für Markus, dem besten besten Freund, den man sich vorstellen kann)

Zunächst braucht man die Extension sr_language_menu, die schon die meiste Arbeit, wie das Abfragen, ob eine Seite existiert, ob eine Übersetzung vorhanden ist und das Markieren der aktuellen Sprache übernimmt. Dann kann man die Extension über den Constant Editor konfigurieren, da ist das meiste selbsterklärend.
Es gibt ein kleines Problem damit, dass Typo3 als internationale Anwendung davon ausgeht, dass Englisch die Default Sprache ist. Aber da kann man tricksen.

Das ist ein Auszug aus dem Templates (Constants), in dem Deutsch und Englisch als Sprache definiert werden. Wenn die Language ID 1 angegeben ist, dann wird die englische Version der Seite angezeigt.

config {
sys_language_uid = 0
language = de
locale_all = de_DE.UTF-8
}
[globalVar = GP:L = 1]
config {
sys_language_uid = 1
locale_all = en_EN.UTF-8
language = en
}
[global]

Hier wird eine Liste der Sprachen neben der Default angegeben.

# list of configured languages for lang selector
languageUids = 1

Und in diesem Teil wird im Setup das Wrap um die Menüpunkte angegeben.

// setup
plugin.tx_srlanguagemenu_pi1 {
flag.NO.stdWrap.wrap = |
flag.INACT.stdWrap.wrap =
flag.CUR.stdWrap.wrap =
}

Dann muss nur noch ein Menü zum Umschalten von Sprachen generiert werden. Dieser Schnipsel erzeugt ein kleines Menü mit „Sprache“ als Label. Je nachdem was vorher in Constants definiert worden ist, werden Flaggen oder eine Liste dargestellt. Nach dem Kopieren des Plugin-Inhaltes in lib.lang.10 wird noch angegeben, dass Deutsch die Default-Sprache ist, und falls man Flaggen benutzt, muss hier der Pfad zu einer deutschen Flagge angegeben werden, die aber auch im Extension-Verzeichnis liegend kann (dann fängt der Pfad mit EXT an). Weiter darunter ist definiert, wenn die aktuelle Sprache englisch ist, soll da dementsprechend Language stehen.

lib.lang = COA
lib.lang.5 = TEXT
lib.lang.5.value = Sprache:
lib.lang.5.wrap =

|

lib.lang.10 < plugin.tx_srlanguagemenu_pi1 lib.lang.10 { defaultLanguageISOCode = DE languagesUidsList = {$languageUids} defaultLayout = 0 englishFlagFile = fileadmin/gfx/flags/de.gif } [globalVar = GP:L = 1] lib.lang.5.value = Language: [global]
Wenn alles so weit vorbereitet ist, kann man das Objekt einem Marker im Template zuweisen.

3 Kommentare

  1. Hallo!
    Ich habe einen Sprachumschalter mit reinem Typoscript geschrieben und bin seit dem auf der Suche nach jemandem der mir erklärt warum man dafür eine Extension braucht. Vielleicht hast du ja eine Idee?

  2. Ich würde sagen, dass die Extension den Vorteil hat, zu prüfen, ob eine Übersetzung der Seite existiert und falls nicht dann die entsprechende Flagge als inaktiv darstellt. Und es ist für Laien einfacher zu erstellen.
    Natürlich kann man den Sprachenschalter auch mit TypoScript (wenn du möchtest, kannst du den Schnipsel gerne posten) machen. Aber da muss man mit Conditions arbeiten.