Mehrsprachigkeit und TemplaVoila

TYPO3 ermöglicht eine komfortable Verwaltung des Inhalts für mehrsprachige Seiten. Im Laufe der Entwicklung von TYPO3 wurde das Konzept für die Mehrsprachigkeit erweitert und um neue Funktionen ergänzt.

So kommt es das man eine Reihe von verschiedenen Konfigurationsmöglichkeiten und verschiedene Paradigmen für mehrsprachige Inhalte hat. In diesem Artikel möchte ich einen Überblick darüber geben und im speziellem auf mehrsprachige Seiten mit TemplaVoila eingehen und typische Konfigurationen aufzeigen.

Man hat zahlreiche Konfigurationsmöglichkeiten im TYPO3 um das sprachspezifische Verhalten im Front- und Backend anzupassen. Hinzu kommt, dass bei Verwendung von TemplaVoila und anderer Extensions weitere Möglichkeiten hinzukommen. Nicht jede Kombination macht Sinn und es lohnt sich einen tieferen Blick in die verschiedenen Konzepte zu wagen.

Prinzipiell sollte man schon über die Mehrsprachigkeit von TYPO3 informiert sein. Einen schönen Überblick geben die folgenden Seiten:
typo3.org/documentation/tips-tricks/multi-language-sites-in-typo3/
typo3.org/documentation/document-library/core-documentation/doc_l10nguide/current/

generelle Paradigmen und Konzepte:

einfache Übersetzung: Bedeutet die simple Übersetzung von Inhalten für eine Sprache, am Beispiel einer Webseite bedeutet das die einfache Übersetzung von Inhaltselementen in andere Sprachen. Die Struktur der Seite bleibt dabei gleich.

Übersetzung mit Anpassungen (auch als "Lokalisierung" bezeichnet): Bedeutet das man die Struktur einer Seite für die andere Sprache verändert. (Beispielsweise verwenden anderer Inhaltselemente oder anpassen der Überschriftenanzahl)

Seperate Verwaltung: Die Inhalte für die Sprachen werden seperat verwaltet. D.h. beispielsweise durch seperates anlegen von Seiten und Inhalten für die betreffende Sprache.

 

Konzepte in TYPO3

Generell kann man im TYPO3 vier verschiedene Elemente unterscheiden, in denen Mehrsprachigkeit unterstützt wird:

1 - auf Seitenebene:

Den Seitenbaum in TYPO3 übersetzt man durch Anlegen eines sogannten "overlay-records". Redaktionell gesehen legt man also eine Seite in der default-Sprache an und definiert darin alle relevanten Seiteneigenschaften. Für eine Sprache legt man lediglich eine Übersetzung mit den zu übersetzenden Feldern (wie Titel, Beschreibung etc...) an. 

Außerdem hat man die Möglichkeit das Verhalten der Seite (Sichtbarkeit in Menüs etc) über Checkboxen zu definieren. (Das Defaultverhalten kann man im übrigen in der TYPO3 Konfiguratiin anpassen: $TYPO3_CONF_VARS['FE']['hidePagesIfNotTranslatedByDefault'] = '1'; )

Das Verhalten der Webseite passt man hauptsächlich durch die Einstellung config.sys_language_mode=[<leer>|strict|content_fallback|ignore] im Template an.

config.sys_language_mode=strict
Fehlermeldung falls nicht übersetzte Seiten angezeigt werden sollen

config.sys_language_mode=content_fallback
Auch wenn eine Seite nicht übersetzt ist, bleibt man auf der Webseite in der gewählten Sprache (Menüs sind übersetzt etc..) und es wird stattdessen der Inhalt der Defaultsprache angezeigt.

 

2 - normale Inhaltselemente:

Für normale Inhaltselemente kann der Redakteur die Sprache festlegen. Bei der Sprachauswahl gibt es auch den Eintrag "all". Für die einzelnen Sprachen hat ein Redakteur die Möglichkeit Inhaltselemente zu übersetzen. Man sollte wissen, dass flexible Inhaltselemente trotzdem auch normale Seitenelemente vom Typ "flexibler Inhalt" sind.

Wie TYPO3 mehrsprachige Inhaltselemente behandelt, hängt ganz von der Konfiguration ab. Das Verhalten wird neben der oben erläuterten Eigenschaft config.sys_langage_mode maßgeblich durch die TypoScript-Eigenschaft: config.sys_language_overlay =<wert> im Template bestimmt:

 

config.sys_language_overlay =0 
Alle Elemente werden angezeigt (egal welche Language einstellung) falls eine Übersetzung existiert, wird diese nicht angezeigt.
(Demnach werden auch FCE angezeigt wenn Sie languageeinstellung "default" haben. Allerding werden hier lokalisierungen je nach FCE Konfiguration angezeigt)

config.sys_language_overlay=hideNonTranslated

Nur übersetzte Elemente oder welche mit Ländereinstellung "all" werden angezeigt.

config.sys_language_overlay =1

Alle Elemente werden angezeigt (egal welche Spracheinstellung), falls eine Übersetzung existiert, wird diese angezeigt.

Technisch gesehen wird im übrigen beim Übersetzen eines Inhalselement ein neuer Datensatz angelegt, welcher eine Referenz auf den Datensatz in der Standardsprache besitzt. Im TCA kann für jedes Feld ein sogenannter l10n_mode definiert werden, welcher das Vererbungsverhalten des Feldes definiert. Dieses Konzept steht auch für alle anderen Records zur Verfügung und kann beim erzeugen neuer Extensions einfach im Kickstarter aktiviert werden.

3 - Records:

Damit meine ich Elemente, welche von Erweiterungen bereitgestellt werden, wie News etc. Die Unterstützung für Mehrsprachigkeit ist hier stark von der Erweiterung abhängig und im Idealfall sollte die Erweiterung die gleichen Konzepte, die für normale Inhaltselemente zutreffen, unterstützen. In diesem Fall empfehle ich die Verwaltung der Elemente in einem Sysfolder unter Verwendung der Lokalisierungsansicht zum Übersetzen (bitte beachten, dass der Sysfolder ansich auch übersetzt werden muß, um diese Eingabemöglichkeit verwenden zu können):

Leider ist dies bei vielen Extensions nicht der Fall, oder die Konfiguration der Extension erschwert die Verwendung dieses Features. In diesem Fall kann man sich beispielsweise damit helfen die Einträge in seperaten Sysfoldern zu verwalten.

4 - TemplaVoila:

TemplaVoila bringt seine eigene Sprachkonfiguration mit, um das Verhalten für Mehrsprachigkeit zu definieren. Dies trifft sowohl für TemplaVoila Seitenvorlagen als auch flexible Inhaltselemente zu.

Generell wird das Sprachverhalten in der Datenstruktur festgelegt, kann somit seperat für jede Datenstruktur definiert werden. Mit TemplaVoila hat man eine flexiblerer Definition des Sprachverhaltens und kann mehrsprachige Seiten effizient verwalten.

In diesem Zusammenhang tauchen die zwei Begriffe "free" und "bound" auf, beides bezeichnet das Paradigma für die Übersetzung von Containerelementen in TemplaVolia. Dabei ist "bound" das voreingestellte und empfohlene Verhalten, möchte man für Containerelemente seperate Strukturen für jede Sprache anlegen, so unterstützt einem das TemplaVoila Page Modul im Modus "free" damit.

Die zuständige XML Deklaration lautet:
    <meta type="array">
        <langChildren type="integer">[0|1]</langChildren>
        <langDisable type="integer">[0|1]</langDisable>
    </meta>

Damit ergeben sich 3 verschiedene Möglichkeiten, die im folgenden näher beschrieben werden:

Vererbung 1 -0

Kombinierte Verwaltung der flexiblen Inhalte. In der Backendeingabe hat man dabei die einzelnen Felder direkt untereinander.

FE-Verhalten:
Wenn eine Übersetzung existiert, wird das Element in der Sprachversion angezeigt, ansonsten werden die Werte der Standardsprache verwendet.

Empfohlen ist dies für FCE mit Inhalten und auch für die Datenstruktur der Seite

Ohne  x-1 (languagedisabled)

    <meta type="array">
        <langDisable type="integer">1</langDisable>
    </meta>

Flexible Inhalte werden nur einmal angezeigt. (Keine Übersetzungsmöglichkeit=> Separat für jede Sprache anzulegen)

Dies wird empfohlen für flexible Inhaltselemente, welche als Containerlemente fungieren. (Also beispielsweise für ein FCE welches Elemente 2-spaltig anordnet.)

Seperat 0-0

    <meta type="array">
        <langChildren type="integer">0</langChildren>
        <langDisable type="integer">0</langDisable>
    </meta>

 
Einzelne Verwaltung der flexiblen Bereiche: in der Eingabemaske im Backend sieht man die Eingabefelder deshalb seperat untereinander.

FE-Verhalten:
Nur wenn die Spracheinstellung "all" ist und auch nur wenn eine Übersetzung existiert, wird ein Element in der Sprachversion angezeigt.

Technisch werden Übersetzungen und Lokalisierungen bei TemplaVoila Elementen direkt im XML FlexForm Format in dem Datensatz gespeichert, je nach konfiguriertem Modus in verschiedener Art und Weise.

Beispielkonfiguration für eine TemplaVoila Seite:

Dieser Artikel kann nur einen Überblick geben, für eine ausführliche Aufstellung der verschiedenen Einstelungen empfehle ich das Dokument "Frontend Localisation Guide" von Kasper höchstpersönlich. Dennoch soll hier eine übliche Beispielkonfiguration erläutert werden.

TypoScript:

config {
linkVars = L
sys_language_mode = content_fallback
sys_language_overlay = hideNonTranslated
}

TemplaVoila DS's:

  • Seitenvorlage: Vererbung (oder Language Disable falls nicht gewünscht)
  • FCE Containerelemente: Language Disable
  • FCE Inhaltselemente: Vererbung

TS-Config:

//setzen der Defaultsprache fürs BE:
mod.SHARED {
 defaultLanguageFlag=gb.gif
 defaultLanguageLabel=English
}

Redakteurwissen:

In den Berechtigungen zu einem BE-Nutzer kann man auch die Rechte für die Sprachen festlegen: So ist es möglich, einem Redakteur nur Zugriff zu einer bestimmten Sprache zu geben. Sobald dies der Fall ist, wird solch ein Redakteur als sogenannter "Übersetzer" im Backend gehandhabt.

Nur Backendnutzer mit Berechtigungen für die Defaultsprache sind berechtigt neue Inhalte anzulegen. Sogenannte Übersetzer, welche nur Rechte für bestimmte Sprachen besitzen, dürfen dies im Page-Modul von TemplaVoila nicht.

Ein "Übersetzer" hat im TemplaVoila Page-Modul also nur eingeschränkte Rechte: Er darf nur seine Sprache bearbeiten. Er darf also keine neuen Contentelemente anlegen, sondern nur vorhandene Elemente übersetzen. Dabei brauch ein solcher Übersetzer nur zu wissen, dass er auf die entsprechende Flagge klicken muß:

Anhand der oben aufgeführten theoretischen Einführung werden einem Übersetzer im TemplaVoila Page-Modul nur in folgenden Fällen "Flaggen" angeboten:

  1. Ein "normales" Contentelement hat die Spracheinstellung "Default". Es ist also in der Defaultsprache angelegt worden, und kann übersetzt werden.
  2. Ein flexibles Inhaltselement (FCE) hat die Spracheinstellung "all". Dies ist eventuell auf den ersten Blick verwirrend, wird aber klar wenn man sich verdeutlicht das TemplaVoila (und damit auch FCE) Ihr eigenes Sprachkonzept besitzen.

 

Ein Redakteur mit Berechtigungen für die Defaultsprache muß also auch wissen in welchen Spracheinstellungen er ein Inhaltselement einfügen muß, um dem Übersetzer die arebit zu ermöglichen.

Durch die Konfiguration der Seitenvorlage im Modus "Vererbung" ist es bei speziellen Anforderungen auch möglich den Inhalt für eine Sprache komplett verschieden zur Standardsprache einzubinden, dazu kann man im TemplaVoila Page-Modul unter den Spracheinstellungen auf die Ansicht zu einer Sprache wechseln und dort individuell Inhalte einpflegen. In diesem Fall wird auf der Webseite der Inhalt für diese Sprache angezeigt statt der übersetzten Inhaltselemente der Standardsprache.

 

typische Ansicht im TemplaVoila Page Modul, mit den verfügbaren Flaggen zum Übersetzen.

blog comments powered by Disqus
  1. Martin Kiesewetter http://aletheia-onlinezeitung.de/ 19.04.11 12:16

    Top Artikel... hat mir sehr geholfen... typo3 ist echt "etwas" kompliziert

  2. Seko 3D http://www.ilexius.de 13.04.11 18:36

    Bei mir wollte die Flagge der Default-Sprache nicht funktionieren. Habe dann geunden, dass die Angabe geändert wurde. Es wird nun kein Dateiname mehr erwartet, sondern nur der Code der Sprache:

    TS-Config:

    //setzen der Defaultsprache fürs BE:
    mod.SHARED {
    defaultLanguageFlag=de
    defaultLanguageLabel=Deutsch
    }

  3. igniti GmbH - Softwareent http://www.igniti.de/portfolio 11.01.11 10:25

    Hui, kompliziertes und umfangreiches Thema mit der Mehrsprachigkeit. Dein Artikel hilft mir schon ein Stück weiter. So richtig zufrieden bin ich mit den Möglichkeiten Typo3s in Bezug auf Mehrsprachigkeit aber nicht, muss ich sagen. :(

  4. webkonzept http://www.software-webblog.de 24.10.10 21:57

    Interessante Artikel für den Umgang mit Mehrsprachigkeit in Typo3 jedoch bleibt nicht natürlich die umstellung auf utf8, da jede Sprache hat ihr eigne Zeichensatz trozdem sehr hilfreich danke!

  5. pheus 20.10.10 23:35

    Super Informationen. Besten Dank. Hat mir sehr geholfen...

  6. beer http://www.jungerbeer.at 19.10.10 15:04

    genau das brauche ich für den umbau unserer webseite danke!

  7. Matze http://www.metric-fasteners.com 18.04.10 20:19

    Danke für die Anleitung. Ich muss Mehsprachigkeit für meine Seite implementieren und stehe gerade am Anfang. Das Ganze scheint mir doch relativ kompliziert zu sein: was passiert den mit meinen URLs, wenn Mehrsprachigkeit implementiere? Habe ich dann nicht zwei Inhalte für den gleichen URL? Das hört sich irgendwie ziemlich suchmaschinenfeindlich an. Was spricht dagegen, das Ganze mit zwei Seitenbäumen zu machen?
    Beste Grüße, Mathias

  8. Ralf http://www.outdoorkidz.de 23.03.10 10:17

    Tausend Dank für die geniale Anleitung!
    Hat mir sehr weitergeholfen.

  9. Jon http://www.piguetweb.ch 05.03.10 13:46

    Hallo, erstmal danke für den interessanten Artikel.
    Ich habe ein seltsames Problem mit einer mehrsprachigen Webseite mit Templavoila. Wenn ich ein Inhaltselement kopiere und dann woanders einfüge gehen die Übersetzungen verloren. Kann mir da eventuell jemand weiterhelfen?

  10. Roland http://www.doorout.com 09.01.10 12:09

    Vielen Dank, stehe gerade vor dem mehrsprachigen Problem bei Typo3. Artikel hat mir sehr geholfen.

  11. Michael http://www.incore.at 30.10.09 17:22

    Super Artikel, vielen Dank!

  12. Hendrik http://imwill.com 12.08.09 11:49

    schöner Artikel!

    Ich würde allerdings dazu raten linkVars zu begrenzen z.B. linkVars = L(1-2) um URL-Spam vorzubeugen

  13. wolfgang http://www.rockit.at 14.04.09 11:28

    Danke, sehr feine Anleitung!

  14. Björn Hahnefeld http://www.hahnefeld.de 05.01.09 22:34

    Die Anleitung hat auch mir weitergeholfen. Ich habe nun mehrere Webseiten schon mit TemplaVoila mehrsprachig eingerichtet. Aber mit einer ToDo-Liste ist es nicht so wild und es geht schneller!

  15. Markus http://www.just4freaks.de 21.10.08 18:12

    danke für diesen ausführlichen artikel. werde ich demnächst bei mir verlinken

    gruss

  16. Jörg 19.06.08 00:34

    Ich hab jetzt mal einen Feature-Request aufgemacht:
    http://bugs.typo3.org/view.php?id=8759

  17. Daniel http://www.typo3-media.com 18.06.08 19:13

    Servus. Da hast du recht - leider gibt es außer diesem Hack (noch) keine Möglichkeit.

  18. Jörg 18.06.08 18:17

    Container-FCEs müssen in aller Regel auf Sprache "all" eingestellt werden, haben beim Anlegen aber immer die Spracheinstellung "Default". Ich suche mich schimmlig nach einer Möglichkeit, direkt beim Erzeugen einer Instanz eines FCEs automatisch die Sprache auf "all" setzen zu lassen. Bisher habe ich außer einem Hack der Extension (siehe news://news.netfielders.de:119/mailman.1.1179850919.26121.typo3-project-templavoila@lists.netfielder[..] keine Lösung gefunden.
    Gibt es eine?!?

  19. Markus 26.05.08 18:46

    Oops, dummer Fehler: war eine Berechtigungsache bei der Redakteurs-Gruppe:
    Da war "Alternative Seitensprache" bei "Tabellen (anzeigen):" und bei "Tabellen (ändern):" nicht aktiviert.

    Jetzt geht's! Danke für die guten Tipps auf dieser Seite!

  20. Markus 26.05.08 18:28

    ich habe auf einer mehrsprachigen seite (yaml+templavoila) das problem, dass ein übersetzer nicht selbständig seiten ins englische übersetzen kann. es gibt zwar die möglichkeit mit "Create new page translation:" auf Englisch umzuschalten, allerdings komme ich dann auf eine leere Seite. Muss die Seite zuvor von einem Admin zur Übersetzung freigegeben werden? Das sollte doch auch der Übersetzer können, oder?

blogroll