Mehrsprachigkeit - verwende jedes Locale in TYPO3 v12

|Benni Mack

Sprachen haben unendlich viele Möglichkeiten - das sollte auch deine mehrsprachige Website haben

TYPO3 verwendet standardmäßig Englisch als Basissprache und verfügt über einen Mechanismus zur Übersetzung von Textstrings in andere Sprachen. Strings umfassen alle Texte in der Backend-Benutzeroberfläche (UI) sowie im Frontend oder der Ausgabe deiner Website. Übliche Textstrings sind beispielsweise die Wörter auf einer Schaltfläche wie "Anmelden" - diese Wörter werden nicht als Inhalt behandelt, sondern in externen Übersetzungsdateien gespeichert. Eine der Stärken von TYPO3 ist die dauerhafte Migration von Vorgängerversionen, so dass alle Änderungen an der Handhabung von Übersetzungsdateien unter Berücksichtigung einer maximalen Rückwärtskompatibilität vorgenommen werden.

Dieser Artikel erklärt die Grundidee von Sprache und Locales im Zusammenhang mit Übersetzungsdateien in einem CMS-Kontext - von der Auswahl der Sprache, ihrer Variationen und ihres Formats - und wie TYPO3 langsam zum Konzept der Verwendung von Locales als bessere Kennzeichnung der verwendeten Sprache und ihrer Variation übergegangen ist.

Die starre Vergangenheit - TYPO3 und sprachliche Herausforderungen

Die Verwaltungsoberfläche und alle TYPO3-Plugins sind standardmäßig in englischer Sprache, und alle Labels befinden sich in Dateien des XLIFF-Standards. Aber vor v12 hatte TYPO3 einige Macken, was die Sprache anging. Die "unterstützten Sprachen" von TYPO3 sind eine feste Liste von "Sprachcodes" (z.B. "de" für Deutsch), die Kasper Skarhooj ursprünglich vor über 20 Jahren eingeführt hat. Im Laufe der Zeit hat sich die Liste auf über 57 unterstützte Sprachen erweitert. Das TYPO3 Localization Team arbeitet hart daran, die englischen Strings und Labels in diese Sprachen zu übersetzen. Mitte 2023 wurde die Übersetzung von TYPO3 ins Arabische abgeschlossen. Dies ist eine großartige Gemeinschaftsleistung und ein erstaunliches System, das gut funktioniert. Jede TYPO3-Installation kann zusätzliche "Sprachpakete" für ihre Erweiterungen - auch für Erweiterungen von Drittanbietern - in jeder der 57 unterstützten Sprachen herunterladen.

Bei der Verwendung von Deutsch als Site-Sprache oder eines Editors im TYPO3-Backend prüft das Lokalisierungssystem automatisch, ob im lokalen Setup Sprachpakete verfügbar sind. Es referenziert eine "de.mylabels.xlf"-Datei, sucht nach dem Label und gibt es zurück. Wenn die Bezeichnung in der XLF-Datei nicht vorhanden ist, wird auf die englische Version zurückgegriffen.

Problematisch wird es jedoch, wenn ein Projekt eine andere "Sprache" für eine andere Version einer Sprache verwenden muss, z. B. Deutsch für die Schweiz. An dieser Stelle kommen die "Locales" ins Spiel. Das Format ist in der Regel an ein Locale-System gebunden, bei dem "de" der ISO 639-Sprachcode (2 Buchstaben in Kleinbuchstaben) und ein optionaler 2-Buchstaben-Ländercode (ISO 3166-1 Alpha 2) ist, der durch einen Unterstrich getrennt ist - was zu "de_CH" führt. Früher konnte man eine zusätzliche Sprache mit einem beliebigen Format wie "de_CH" (oder auf andere Weise) "hinzufügen", aber man musste auch festlegen, dass das System auf "de" und dann auf Englisch zurückgreift, um alle notwendigen Wörter oder Sätze zu überschreiben.

Nach der manuellen Registrierung und Definition als "Abhängigkeit" in TYPO3 (bis v11), prüfte das Sprachsystem auf "de_CH.mylabels.xlf" - dann auf "de.mylabels.xlf" und dann auf "mylabels.xlf", wenn darauf verwiesen wurde.

Für die Ausgabe der Website wird die Sprache in der Website-Konfiguration eingestellt. Ein Beispiel für eine Einstellung wäre die Festlegung, ob eine Sprache oder ein Gebietsschema für Ihre Website "von rechts nach links" oder "von links nach rechts" wiedergegeben werden soll. Für Redakteure gibt es in Site Config viele verschiedene Spracheinstellungen, die die Verwendung kompliziert machen.

BCP 47 — Ein standardisiertes Format fürs Web

Obwohl TYPO3 die Möglichkeit bietet, ein Format zur Angabe zusätzlicher Sprachen zu erstellen, gibt es ein Standardformat für das Internet. Der HTML-Standard für Locales basiert auf einem standardisierten Code namens IETF BCP 47 language tag. Anstelle eines Unterstrichs besteht jedes Sprach-Tag aus einem oder mehreren "Subtags", die durch Bindestriche (-) getrennt sind. Zum Beispiel sieht Schweizerdeutsch aus wie "de-CH", aber das Format kann auch zusätzliche Regionen enthalten wie "nan-Hant-TW" (das ist Min-Nan-Chinesisch mit traditionellen Han-Zeichen, wie es in Taiwan gesprochen wird).

TYPO3 v12 Verbesserungen

TYPO3 v12 wird mit einer Liste aller ISO 639 Sprachcodes ausgeliefert, die buchstäblich mit jedem anderen Länder- oder Regionencode kombiniert werden kann und den Fallback automatisch handhabt. Die feste Liste der ISO 639-Buchstabencodes, wie sie in TYPO3 Core definiert ist, ist immer noch gültig - aber die in Version 12 eingeführten Änderungen sollten dazu führen, dass die direkte Verwendung des zweistelligen "Sprach"-Formats reduziert wird.

Darüber hinaus wurde eine Locale-Klasse eingeführt, die sowohl BCP 47-ähnliche Formate als auch die bisherigen Syntaxformate verarbeiten kann. Wenn eine Übersetzungsdatei referenziert wird, wird das Locale verwendet und die Fallback-Logik für mehrere Sprachen wird automatisch angewendet.

$languageService = $languageServiceFactory->create(new Locale('de-CH));
$myTranslatedString = $languageService->sL('LLL:EXT:my_extension/Resources/Private/Language/myfile.xlf:my-label');

Darüber hinaus wurden die notwendigen Optionen für die Einrichtung einer neuen Sprache in TYPO3 v12 drastisch reduziert, so dass es jetzt einfacher denn je ist, eine neue Sprache zu konfigurieren:

Die meisten Werte, wie z.B. die Rechts-nach-links-Behandlung und sogar die hreflang-Tags, werden jetzt vom Gebietsschema abgeleitet.

Für alle Autoren von Erweiterungen enthält TYPO3 jetzt eine Liste aller ISO 639-1- und ISO 639-2-Codes (zwei- und dreibuchstabige Sprachcodes), einschließlich der offiziellen Sprachnamen, in einer allgemein verfügbaren PHP-Klasse `TYPO3\CMS\Core\Localization\OfficialLanguages` - in allen verfügbaren Übersetzungen für von TYPO3 unterstützte Sprachen.

Locales all the way

TYPO3 v12 kann das Leben einfacher machen, wenn deine Anforderungen es mit Sprachen und Locales erfordern. Vom Einrichten neuer Sprachen über die Reduzierung des Konfigurationsaufwands bis hin zum Hinzufügen von benutzerdefinierten Sprach-Länder-Regionen-Kombinationen ist mit TYPO3 v12 alles möglich.

Wir freuen uns sehr, dass TYPO3 als führendes Open-Source Content Management System alle Anforderungen unserer Kunden erfüllen kann, und wir haben noch kein vergleichbares System mit ähnlichen Möglichkeiten gesehen.

Hast du einen speziellen Fall bezüglich Sprachen oder Übersetzungen für deine Website? Sprich uns an!

Kontakt aufnehmen.