Mehrsprachigkeit in TYPO3

Letzte Änderung:

TYPO3 bringt die Mehrsprachigkeit sowohl für das Backend als auch für das Frontend schon im Kernsystem mit. 

Die Übersetzungen beschränken sich nicht nur auf die Textinhalte sondern umfassen auch Meta-Angaben wie Seitentitel und -beschreibung, Alternativtexte für Bilder oder spezielle Keywords für PDF-Dokumente. Es können auch unterschiedliche Ressourcen wie Bilder und Videos in Abhängigkeit der Sprache hinterlegt werden. TYPO3 verlinkt die Seiten immer automatisch so, dass Webseitenbesucher über ein Sprachsymbol (oder Navigationstext) auf die jeweils korrespondierende Seite der Alternativsprache kommt.

Aufgrund des ausgereiften TYPO3 Berechtigungssystems ist es möglich, Redakteuren - wie z.B. einem Übersetzungsbüro - nur Änderungsrechte auf die Inhalte einer bestimmten Sprache zu geben. 

Die Installation zusätzlicher Extensions ist nicht erforderlich. Die Einrichtung ist generell recht einfach. Die Benutzung für Redakteure ebenfalls.

So werden Webseiten-Inhalte in TYPO3 übersetzt

Im Folgenden erhalten Sie eine Anleitung dafür, wie man Inhalte von TYPO3 Wesbites in eine andere Sprache übersetzt. Die Sprache muss dafür im Backend unter Sites angelegt werden (s.u.). Für die Darstellung im Frontend (Sprachauswahl) muss in diesem Fall diese Sprache ggf. im Template berücksichtigt werden. Davon unabhängig können Sie aber auf jeden Fall schon Übersetzungen im Backend anlegen.

TYPO3 füllt bei einer Übersetzung jedes Feld mit den Werten der Defaultsprache und setzt ein "[Translate-to-XY]:" davor. So erkennt man als Redakteur schnell, was noch überstezt werden muss.

Unter dem Feld wird immer der Inhalt in der Defaultsprache angezeigt und bei Änderungen entsprechend markiert (nur im connected mode), damit der Übersetzer sofort erkennt, was zu ändern ist.

Schritt 1: Seite übersetzen

Legen Sie eine Übersetzung für die Seite an, in dem Sie die Seite im Seitenbaum auswählen, in der Ansicht "Languages" auswählen und dann unter "Create a new translation of this page" die gewünschte Sprache anklicken.

Schritt 2: Seiteneigenschaften übersetzen

Als erstes müssen die Seiteneigenschaften (Titel, Beschriebung, URL-Seitenname usw.).

Denken Sie daran, das URL Segemnt zu aktualisieren (Doppelpfeil-Button), damit die URL einen vernünftigen Titel (ohne "translate-to-english") enthält.

Schritt 3: Inhaltselemente übersetzen

Im Backend wird für die Seite nun eine eigen Spalte angezeigt. Klicken Sie hier nun auf  "Translate" um den Übersetzungsvorgang zu starten.

HINWEIS: Auf diesen Button klicken Sie auch immer dann, wenn Sie in der Defaultsprache ein neues Inhaltselement angelegt haben und im "connected-mode" arbeiten. Für dieses Element wird dann eine Überstezung angelegt.

Schritt 4: Übersetzungsmethode auswählen

Es gibt zwei Arten, in TYPO3 Inhalte zu übersetzen:

  1. im connected mode werden die Datensätze der Sprachen logisch miteinander verknüpft. Wenn man später Änderungen an einem Inhaltselement der Defaultsprache macht, kann TYPO3 dies in der anderen Sprache als Änderungs-TODO optisch hervorheben. Löschungen von Datensätzen in der Defaultsprache führen auch zu einer Löschung in der überstezen Sprache. Diese Methode empfiehlt sich bei Übersetzungen, die ungefähr im gleichen Umfang der Defaultsprache sein sollen
  2. im copy mode findet nur ein Kopieren statt, um dem Redakteur die Artbeit zu erleichtern. Die einzelnen Contentelemente haben dann nichts mehr miteinander zu tun.

Schritt 5: Zu übersetzende Contentelemente auswählen

Jetzt können Sie auswählen, welche Elemente übersetzt werden sollen. In der Regel sind dies alle.

Schritt 6:

Beginnen Sie nun, mit der Übersetzung der einzelnen Contentelemente, die standardmäßig deaktiviert sind.

Nicht übersetzte Seiten suchen

Wenn Sie wissen wollen, welche Seiten auf Ihrer Website noch nicht in einer bestimmten Sprache übersetzt wurden, gehen Sie auf das Info-Modul, wählen im Seitenbaum einen Startpunkt, gehen dann auf Localization Overview, wählen "Infinite" und dann die gewünschte Sprache:

Übersetzung ohne Defaultseite

In eher seltenen Fällen möchte man eine Seite nicht in der Default- sondern nur in einer anderen Sprache veröffentlichen. In dem Fall muss trotzdem eine Default-Seite angelegt und diese dann in den Seiteneigenschaften versteckt werden:


Mehrsprachigkeit im Backend

TYPO3 bietet für das Backend eine Reihe von Sprachen, die über Maintenance -> Manage Language Packs aktiviert und dann in den User Settings unter Language ausgewählt werden können.

Wem die Auswahl von weit über 40 Sprachen nicht ausreicht, der kann eigene Sprachdateien installieren. Dies kann auch als Ableitung einer Haupsprache geschehen. So kann man z.B. Schwyzerdütsch als eine von Deutsch abgeleitete Sprache verwenden und muss dann nur die anderslautenden Wörter übersetzen. Alle anderen Wörter werden aus der deutschen Übersetzung geholt. Gibt es auch hier keine Übersetzung für eine bestimmte ID wird - wie bei allen Sprachen - auf die Defaultsprache englisch zurückgegriffen.

Für die Übersetzung in die jeweiligen Sprachen nutzt der TYPO3 Core das cloudbasierte Übersetzungplattform "Crowdin". Diese kann auch von Extensionentwickler verwendet werden, was u.a. den Vorteil hat, dass für TYPO3 verwendete Spezial-Begriffe bereits Übersetzungen vorliegen ("Translation memory").

Videoanleitung: Backendsprache einstellen

Im folgenden Video erfahren Sie, wie Sie die Sprache Ihres TYPO3-Backends ändern können:

Ich bin die Beschreibung

Frontendsprachen definieren

Die Frontsend-Sprachen (also für Webseitenbesucher) werden im Backend über das Site-Modul von TYPO3 definiert.

Dabei werden folgende Parameter festgelegt:

  • der Titel für die Anzeige im Backend
  • ein Aktivierungsschalter für das Frontend (falls die Sprache zunächst noch nicht angezeigt werden soll)
  • serverseitige Sprachinformationen (sog. Locales, Language-Key für TYPO3-Sprachdateien)
  • der Website-Titel 
  • der Sprachauswahltext im Frontend (falls von der Programmierung berücksichtigt, oftmals werden auch Flaggen verwendet, die aber im TYPOSCRIPT definiert werden müssen)
  • Angaben für das hreflang-Tag (siehe auch Optimierung der Meta-Daten)
  • die Schreibrichtung
  • die anzuzeigende Flagge im Backend
  • mögliche Fallbacksprachen

Das hört sich alles kompliziert an. In den meisten Fällen sind diese Felder intuitiv ausfüllbar bzw. durch Auswahl-Optionen einfach einstellbar.


Fallback-Strategie

Eine Fallbackstrategie definiert das Verhalten bei nicht übersetzten Seiten UND Contentelementen. Dabei gibt es drei mögliche Einstellungen:

strict

Es werden nur die übersetzten Inhalte angezeigt. Ist eine Seite gar nicht übersetzt, wird ein 404-Fehler ausgegeben. Nicht übersetzte Contentelemente werden ignoriert. Eine übersetzte Seite OHNE übersetzte Inhaltselemente führt zu einer leeren Seite.

fallback

Die Inhalte einer definierten Fallback- bzw. der Default-Sprache werden ausgegeben. Existiert die Sprachseite nicht, wird der komplette Inhalt dieser Seite ausgegeben. Im "connected mode" werden außerdem alle nicht übersetzten Inhaltselemente in der Fallback-Sprache ausgegeben. So kann man z.B. Sprachseiten für die Schweiz oder Österreich anlegen und nur bestimmte, regional abhängige Inhalte auf das Land zugeschnitten anbieten. Alle anderen Inhalte beliben gleich und müssen nicht extra "übersetzt" werden.

free

In diesem Modus werden nur die übersetzten Contentelemente angezeigt. Nur wenn eine Seite gar nícht existiert oder keine Inhalte hat, werden die Inhalte der Fallbacksprache angezeigt. In der Praxis wird meistens englisch als Fallbacksprache verwendet. Wenn man dann für andere Seiten (noch) keine übersetzten Inhalte hat, bekommt der User zumindest Inhalte auf englisch zu sehen. Da man für den Fall der "connexted mode"-Übersetzung kein Sprachwirrwarr (unterschiedliche Sprachen, wenn nicht alle Contentelemente übersetzt) haben möchte, kommt die Option "fallback" hier nicht infrage.

Das XLIFF-Format

Die Standardsprache in TYPO3 ist englisch. Nur in dieser Sprache wird das Core-System standardmäßig ausgeliefert. Weitere Sprachen lassen sich dann relativ einfach installieren.

Technisch wird die Mehrsprachigkeit in Form von Konfigurationsdateien im XLIFF-Format(XML Localisation Interchange File Format) umgesetzt. Hierfür stellt jede Extension in seinem Unterverzeichnis Resources/Private/Language entsprechende Dateien für jede Sprache zur Verfügung.

Besipielsweise beinhaltet die Datei locallang.xlf unserer WCM-Extension u.a. folgende Einträge:

 

<trans-unit id="cookiefreigabe.intro">
<source>We are using cookies on this web page. Some of them are required to run this page, some are useful to provide you the best web experience.</source>
</trans-unit>
<trans-unit id="cookiefreigabe.header2">
<source>Privacy settings</source>
</trans-unit>
<trans-unit id="cookiefreigabe.intro2">
<source>Here is an overview of all cookies use</source>
</trans-unit>

 

Der korrespondierende Code-Ausschnitt für die deutsche Version in der Datei de_locallang.xlf sieht so aus:

 

<trans-unit id="cookiefreigabe.header">
<source>We are using cookies.</source>
<target>Wir verwenden Cookies</target>
</trans-unit>
<trans-unit id="cookiefreigabe.intro">
<source>We are using cookies on this web page. Some of them are required to run this page, some are useful to provide you the best web experience.</source>
<target>Wir nutzen Cookies auf unserer Website. Einige sind notwendig, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.</target>
</trans-unit>
<trans-unit id="cookiefreigabe.header2">
<source>Privacy settings</source>
<target>Datenschutzeinstellungen</target>
</trans-unit>

 

Über das Tag <trans-unit id ="..."> wird eine eindeutige Zuordnung zu dem zu übersetzenden Element hergestellt.

Das in der deutschen Datei verwendete Tag <source> ist redundant und technisch nicht erforderlich. Es wird aber trotzdem meistens mitkopiert, damit die Übersetzung einfacher ist.

Datenbankstruktur

Die übersetzen Seiten werden als eigene Datensätze in der Tabelle pages gespeichert.

Mit Hilfe der Tabellenfelder sys_language_uid (Sprache), l10n_parent (Page-ID), l10n_source, l10n_state wird ein Bezug zur Defaultsprache hergestellt.

Analog gibt es für Content Elemente (Tabelle tt_content) die Felder sys_language_uid, l18n_parent (Content-ID des zugehörigen Default-Elementes, die "18" ist hier kein Fehler), l10n_source, l10n_state.