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. Jan-Claas Glindemann http://www.exinit.de 02.11.09 10:12

    Danke für den Artikel.

blogroll