TYPO3: Sprachumschaltung mit Language Selection (sr_language_menu)

Wir erklären Euch, wie Ihr Eure TYPO3-Seite mehrsparig bekommt mit TYPO3-Core und der Extension sr_language_menu.

Nach 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

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 hinzufuegenWichtig 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


Kommentare

@datenkind:

Ich verstehe Dein Problem, das Du mit den Flaggen hast. Wir hatten diese Diskussion schon mal bei einem Projekt, bei dem Brasilien eine Zielgruppe war.

Aber man muss ja als Deutscher schon nicht weit blicken, um auf das Problem "Was ist die Flagge für Deutsch" zu stoßen.

Ich würde dennoch wetten, dass bei einem UI-Test in vielen Fällen die GB-Flaggen+"English" besser verstanden und schneller gefunden wird als nur mit Text (selbst wenn man die Sinnhaftigkeit in Frage stellen kann). Doch die User haben die falsche (rückläufige) Praxis auch gelernt.

Doch Dank für den Input. Beim nächsten Mal denke ich sicher noch kritischer über die Flaggen nach, versprochen ;)

Das ist ein Trugschluss. Englisch ist in 42 Ländern dieser Welt Amtssprache. So, welche Flagge nimmst du dann bitte? Wie willst du bitte sicherstellen, dass jeder bspw. den Union Jack kennt? Wie gehst du mit Niederländisch um? Oder Spanisch? Oder Arabisch? Das sind weltumspannende Sprachen, die kann man nicht mit Flaggen repräsentieren. Wer das macht, hat ein paar Unterrichtsstunden in Sachen Usability nachzuholen.

http://www.worldaccent.com/blog/2012/09/flags-multilingual-website-navigation.html

http://www.alog.be/taalkeuze/

@datenkind: Da wir inzwischen unsere Sprachmenüs auch nicht mehr mit sr_language_menu gestalten, sondern eine eigene Lösung gebaut haben (via HMENU, special = language) hab ich vorher auch ein bisschen genau zu diesem Thema gelesen: Wie sieht ein gutes Language-Menü aus.

Ich bin der Meinung, der Name der Sprache sollte unbedingt (in der Zielsprache, also z.B: "English") ausgegeben werden. Die Flaggen sind aber für viele User noch immer eine Hilfe, weil die Symbole eben doch schneller erfasst und auch verstanden werden.

Deswegen hat unsere neue Lösung die Flaggen-Option auch noch drin. Es wird auch immer Kunden geben, die darauf bestehen. Additiv (Flagge+Sprache) finde ich es auf jeden Fall nicht verkehrt. Die Flaggen kannst Du bei sr_language_menu aber auch deaktivieren.

LG / thomas

Wieder so eine dümmliche TYPO3-Extension, die der Meinung ist, dass Sprachen per Flaggen-Symbol ausgewählt sein wollen. Wann kapiert die Webentwicklerwelt endlich, dass Flaggen keine Sprachen, sondern Länder repräsentieren? Das schreibt sogar das W3C vor!

Hi,

ich habe im Moment das Problem, dass er mir immer noch im bodytext einen span dazu baut in welchem font-family: calibri steht.. Keine Ahnung an welcher Stelle er das generiert, aber dadurch sieht natürlich die englische Seite anders aus....

Einer ne Idee??

Danke

Hallo zusammen! Ich habe schon einige Seiten erfolgreich mit der Sprachumschaltung erweitert. Nun tritt aber ein sonderbarer Fall auf: In Südamerika gibt es mehrer Länder, deren Landessprache Spanisch ist und in der Installation der Sprachauswahl werden auch die Flaggen angezeigt. ABER die Sprachauswahl ist immer spanisch und trotz richtiger Auswahl hat die Webseite dann die spanische Flagge und nicht wie gewünscht dann die VENEzolanische. Beispiel zu sehen auf der Baustelle

http://carroparaboda.caribbean-live.de/

alle experimente enden bisher an der Erkenntnis, dass man vieles nicht weis

Hallo,

danke für die schnelle Antwort. Das hat mir auf jeden Fall weiter geholfen. Zu den Systemdatensätzen: Die sind mit der aktuellen Typo3 Version nicht mehr so zu finden wie IHr weiter oben beschrieben habt. Jedenfalls bei mir und vielen anderen Usern auch nicht. Da gibts 100e Beiträge im Netz weil alle die Einstellungen suchen.

Aber egal. Ich danke Dir/Euch auf jeden Fall und hoffe IHr teilt euer Wissen weiterhin mit uns.

Wünsche einen schönen Tag/Woche/Monat/Leben :)

@Bap

Sorry, aber wir schaffen es einfach nicht neben unserem Alltagsgeschäft auch noch alle Tutorials, die wir mal geschrieben haben, auf dem aktuellen Stand zu halten. Die grundsätzlichen Schritte haben sich m. W. aber nicht gravierend verändert.

Ein paar grundlegende TYPO3-Kenntnisse sind allerdings meist Voraussetzung. In Verzeichnis pi1 der Extension liegt eine .tmpl-Datei. Wenn nicht anderes über Typoscript definiert ist, wird diese verwendet. Wenn man sie jedoch modifizieren will, empfiehlt es sich, die Datei vorher in den fileadmin zu kopieren, da sie andernfalls bei einem Update der Extension überschrieben wird und alles wieder auf Anfang steht. Die Pfadangabe dazu ist die oben beschriebene Typoscript-Zeile. Die Flaggenpositionierung kannst Du sicherlich per CSS lösen, einfach die entsprechende Anweisung in Deine CSS schreiben (z.B. unter Zuhilfename von Firebug o,ä.).

Was Du mit der stundenlangen Suche nach Systemdatensätzen meinst, verstehe ich allerdings nichts.

Hallo,

erstmal Dake für das Tutorial. Ich weiß dass es immer Aufwand ist eins zu erstellen und dann auch noch mit anderen zu teilen. Allerdings funktioniert das so nicht mit den aktuellen Versionen. Ich bin mit eurem Tutorial bis "Die Extension mit TypoScript konfigurieren" klargekommen aber dann ist es für einen absoluten Typo3 Neueinsteiger wie mich sehr sehr unverständlich. Ich versuche mittlerweile seit Tagen die Sprachauswahl hinzubekommen aber schaff es leider nicht. Ich bekomm zwar die Flagge angezeigt, wenn ich darauf klicke ändert sich aber der Link nicht und die erstellte Seite in englisch wird auch nicht aufgerufen. Wenn ich den Link manuell eingebe, springt zwar der Pfeil um, die Seite wird aber immer noch nicht aufgerufen. Außerdem sind die Flaggen untereinander und nicht nebeneinander. Das ist vermutlich ein css Problem aber wo das geändert gehört geht nicht hervor. Genauso ist es für mich unverständlich wo diese Datei herkommen soll "# Hier liegt das selbst angepasste Template-File

file.templateFile = fileadmin/templates/language_menu/sprachwahl.tmpl" - es steht doch nirgens was davon??? Fragen über Fragen ich weiß aber vielleicht könntet Ihr bei Gelegenheit das Tutorial überarbeiten so dass es auch ein Newbie versteht. Das wär echt super. Danke euch.

PS: Ich habe schon Stunden gebraucht um die Systemdatensätze zu finden da die nicht mehr an der angegebenen Stelle sind. Ich habe sie gefunden unter Liste -&gt; Dann auf die Seite (oberste Ebene)--&gt;dann rechts oben (die kleinen Button) --&gt; Datensatz hinzufügen

sorry, Website ist luzia.eu

Hallo, der Link 'Kaspars uralt-Doku zu TYPO3' bringt eine 404 Meldung. Das gibt es auf typo3.org nicht mehr:

http://typo3.org/documentation/tips-tricks/multi-language-sites-in-typo3/

Was sollte man sich statt dessen einmal durchlesen? Gibt es dazu auch etwas auf typo3.org?

Danke für das Tutorial!

troopa

Nachtrag: In Typo3 4.5.11 mit sr_language_menu 1.5.2

nimmt er das Label der Default-Sprache nicht mehr - kA warum.

Vor dem Update gings. Im Backend wird das Default-Sprachlabel nebst Flagge richtig angezeigt.

Hab mir jetzt geholfen, indem ich mir selbst schnell einen Sprachumschalter im TS gebaut habe.

hehe falsche Zeile kopiert...

useSysLanguageTitle=1

muss es heißen!

Grüße

Tobi

ich habs so gelöst:

defaultLanguageLabel=1

und dann den Label des entsprechenden Language-Records geändert.

Vielen Dank für diese tolle Hilfe.

Bei mir hat alles super geklappt, was hier beschrieben ist.

Ich habe die Linkliste als Darstellung genommen...Weiß jemand, wie ich anstatt von "Deutsch Englisch" lediglich die Kürzel "De En" angezeigt bekomme?

Recht hast Du! Danke für den Hinweis, ist korrigiert.

Danke erst mal für die tolle Anleitung!

Kleine Korrektur: Die letzte Klammer im Konfig-Script ist eine } und keine )

Viele Grüße vom Bodensee, Uwe

funktioniert super... ABER auf den IE8 (auf WindowsXP) werden japanische und chinesische zeichen im dropdown nicht dargestellt... kann man das fixen?

VIELEN DANK für den entscheidenden Hinweis, den [BE][forceCharset] auf utf-8 zu zwingen. Habe nun Wochen rumgemacht weil der Language-Switcher nicht funktioniert hatte - er hat zwar geswitched, aber der übersetzte Inhhalt wurde nie angezeigt. Jetzt läufts. Hammer! Danke.

ich nochmal.

habe es hinbekommen.

NEWBY FOR NEWBIES

falls noch jemand (wie ich) nicht weiss, wo das:

## SPRACHWAHL

# **********************

config (....

hin soll. ich habe es so gem8:

- das ganze in eine textdatei datei gepastet und als "sprachwahl_setup.txt " in fileadmin/templates/templatename/typposcript gespeichert.

im backend:

- auf "Template".

- root seite waählen.

- oben im dropdown menü "Info/Modify" wählen.

- setup öffnen.

- folgendes am ende rein kopieren:

FERTIG!

wenn man jetzt eine neue seite erstellt kann man "Language Selection" als plugin wählen.

gruss,

andreas

@typobuff:

Baue in Deine HTML-Vorlage einen Marker namens ###SPRACHE### ein, trage in Dein Template (Setup:) der Seite direkt unter der Globus-Seite die o.a. Zeilen ein, und Stelle des Markers wird dann der Sprachschalter erscheinen.

ich bekomme es nicht hin. habe static_info_tables, sr_static_info und sr_language_menu installiert. sprachen habe ich angelegt. "lanuage selection" kann man im backend auch auswählen. allerdings ist in der spalten ansicht ein thumbnail mit "?" zu sehen.

ich nehme an, ich habe die scripte an die falschen stellen kopiert. das erste:

## SPRACHWAHL

# **********************

config (

sys_languag....

habe ich in templates/templatename/typposcript/setup.txt gepastet. ganz unten nach dem letzten zeichen. die erstellten links haben sich aber nicht geändert.

die konfuguration der extension habe ich im constant editor vorgenommen.

den part des tutorials: "Den Inhalt des Plugin ausgeben" habe ich nicht verstanden. kann mir jemand erklären, wo die dort erwähnten zeilen hin müssen?

für tips dankbar,

andreas

Danke für dieses Tutorial.

Korrektur: Die Config für das "angepasste Template-File" lautet nur "templateFile", nicht "file.templateFile".

Vielen Dank sehr hilfreich euer Tut!

Gruß aus KS

[...] bequem ein Sprachumschaltungsmenü erstellen (ein bisschen Typo Script gehört natürlich dazu) ... dazu ein guter Link 2. Per hand musst du erst im Typo Script die mehrsprachigkeit definieren. Dann haben deine Seiten [...]

Vielen Dank für das sehr gute Tutorial-Bestes im Net zu diesem Thema!!!

@ANNETT:

Vielleicht versteckt Dir die folgende Zeile Deine Navigationspunkte, falls sie mit einer anderen Sprach_ID versehen sind:

config.sys_language_mode = strict; 0

config.sys_language_overlay = hideNonTranslated

Kommentier mal aus. Ansonsten, sind die Angaben ein bisschen knapp, um Dir zu sagen, warum Deine Seite jetzt nicht läuft.

// tom

Hallo,

habe das Script kopiert &amp; Extens. installiert.

Aber dann funktioniert Typo3 nicht mehr. Kann nicht speichern. Und die linke Nav fehlt in Typo3 ganz.

Was ist falsch gelaufen?

Gruß Annett

[...] » TYPO3: Sprachumschaltung mit Language Selection (sr_language_menu) [...]

Hallo,

ich nutze das Scipt und es funktioniert soweit. Ich würde als Anfänger nur gerne wissen, was in dem Template sprachwahl.tmpl zu stehen hat und ob die Seiten automatisch von Typo3 übersetzt werden.

Gruß und Danke im vorraus

[...] permalink Sie Dir diese Seite mal an: undkonsorten : TYPO3: Sprachumschaltung mit Language Selection (sr_language_menu) :: [...]

Die UID wird ja beim Anlegen des Datensatzes in der Datenbank erzeugt. Probier doch einfach mal über dem phpMyAdmin die UID zu ändern.

Aber deine Seite hat wirklich noch ein kleines Sprachwahl-Problemchen. Viel Glück noch!

tom

Erstmal danke für die schnelle Antwort. Lag an den nicht installierten extensions. Dachte da die laut tut erst nach dem anlegen der zusaetzlichen sprachen und damit der wahl des Iso codes relevant werden muesse ich das zuerst hinbekommen.

*Wunderbar*, eine ganz andere sache an der stelle, da ich mit der Sprachwahl seit wochen schon rummache bin ich fuer meine Englishe Übersetzung mittlerweilen bei UID 6 angekommen. es ist aber nur default und eben eine zusaetzliche Sprache vorhanden.. wie bekomm ich das wieder wieder so hin das english UID 2 und Deutsch UID 1 hat. Ansich ists ja kein Problem .. gefaellt mir aber eben nicht so wirklich.

Gruss

mood

Hast Du die Extensions static_info_tables und sr_static_info installiert?

Tach, schoener Loesungsweg, allerdings hab ich das Problem, dass mir das Auswahlfeld fuer den ISO code fehlt .. komm aber nicht dahinter wie ich den reinbekomme. Installtool "Dump Static" hab ich schon probiert.

Fuer schnelle Hilfe oder nen Tipp waere ich sehr dankbar

Ver: Typo3 4.1.2

Mood


Kommentar schreiben

* Diese Felder sind erforderlich