Lokalisierung und Mehrsprachigkeit – Unterschiede zwischen Dateistrings mit gettext und Inhaltsübersetzungen

chain 2232278 1920
Quelle: Pixabay, Tama66

Meine Inhalte sind ausnahmslos in deutscher Sprache verfasst, und in den allgemeinen Einstellungen von WordPress ist als Sprache Deutsch eingestellt. Trotzdem sind Buttontexte auf der Website Englisch, zum Beispiel »Read more«. Wie kann das sein?

Kurze Antwort: Das Theme wurde nicht übersetzt, respektive es fehlt die deutsche Sprachdatei.

gettext

  • betrifft in Funktionen eingefasste Strings in Dateien
  • Übersetzungen ausgelagert in Sprachdateien (.po, .mo)
  • Kein Switchen zwischen den Sprachversionen
  • Sprachanzeige orientiert sich an der für WordPress eingestellten Sprache (Lokalisierung)
  • nach Änderung am Original ist bei gettext keine Übersetzung mehr verfügbar

Inhaltsübersetzungen

  • betrifft auch redaktionelle Inhalte (Content)
  • Übersetzungen gibt es auch für Textinhalte
  • Switchen zwischen den Sprachversionen
  • Zugänglichkeit einer Sprachversion ist unabhängig von der in WordPress eingestellten Systemsprache
  • Änderung am Original von Inhalten hat keinen Einfluss auf die Übersetzung

Lokalisierung ist üblicher Bestandteil mehrsprachiger Applikationen, aber nicht alle lokalisierbaren Applikationen sind automatisch auch mehrsprachenfähig. WordPress beispielsweise kann nur mit entsprechenden Erweiterungen als mehrsprachige Website geführt werden.

Lokalisierung mit gettext

WordPress kann in vielen verschiedenen Sprachen installiert werden. Der Begriff für die Verfügbarmachung einer Anwendung in einer bestimmten Sprache ist Lokalisierung. Im Dashboard macht sich die Lokalisierung mit Administrationsmenüs und Hilfen in der vom Anwender in den allgemeinen Einstellungen gewählten Sprache bemerkbar. Nach der erstmaligen Umstellung auf eine neue Sprache holt sich WordPress automatisch die entsprechenden Sprachdateien.

Was für WordPress funktioniert, muss nicht für jedes Plugin oder Theme gelten. Sind Sprachdateien verfügbar, holt WordPress auch die, das ist aber nicht immer der Fall. Die meisten Themes oder Plugins sind zwar mit der Fähigkeit Übersetzungsdateien zu verwenden ausgestattet, erkennbar am Hinweis »translation ready«. Doch fehlt die den eigenen Spracheinstellungen entsprechende Sprachdatei, werden die englischen Originalbegriffe dargestellt.

Daran ändert sich zunächst auch dann nichts, wenn man ein Plugin für eine mehrsprachige WordPress-Website (wie WPML, Polylang oder Multisite Language Switcher) verwendet, und Seiten für deutsche, englische und sonstsprachige Inhalte anbietet. Inhalte und gettext-Strings sind zwei völlig unterschiedliche Dinge, die unterschiedlich zu handhaben sind.

Wer WPML gekauft hat, bekommt unter anderem auch ein Plugin zur Handhabung von Stringübersetzungen (gettext). Laut dem, was ich darüber bisher las, wird der Umgang damit eher als kompliziert empfunden, vor allem dann, wenn sich die Unterschiede zwischen Textstrings aus Dateien und Inhaltsübersetzungen noch nicht so klar offenbarten.

Die wesentliche Voraussetzung dafür, ein Theme oder Plugin überhaupt übersetzen zu können, ist die Verwendung von gettext. »Translation ready« bedeutet zwar nicht, dass bereits Übersetzungen vorliegen. Allerdings sind bei populären Plugins oder Themes in vielen Fällen bereits deutsche Sprachdateien zu bekommen (für Deutsch, was technisch gesehen nicht dasselbe ist als Deutsch (Schweiz) oder Deutsch (Sie)). Zudem werden Übersetzungen mittlerweile immer mehr kommunisiert, so dass einmal erbrachte Übersetzungen auch anderen zur Verfügung stehen.

Textstrings findet man in PHP-Dateien von WordPress, Themes und Plugins, und man erkennt sie daran, dass sie in Funktionen ausgegeben werden, in einer Form wie dieser __('What I want to say', 'name-der-textdomain').

Übersetzungstools wie die Desktop-Anwedung poedit oder das WordPress-Plugin Loco Translate durchsuchen Dateien einzelner Komponenten nach solchen Strings und stellen sie in einer po-Datei der definieren Sprache zur Übersetzung bereit. Nachdem die Übersetzungen gemacht und gespeichert sind (zur maschinellen Verarbeitung wird das .mo-Format herangezogen, das muss es neben .po immer auch geben), und keine Bedingungen vorliegen die dem entgegen stehen, sollte die neue Sprache sofort verfügbar sein.

Damit die Übersetzungen funktionieren muss jedes Theme und jedes Plugin seine eigene, individuelle textomain haben, und diese darf hinter keinem Textstring fehlen. Ändert sich ein Originalstring, müssen alle Übersetzungen davon neu gemacht werden, selbst wenn nur ein Leerzeichen dazu kommt oder wegfällt. Wird ein String hingegen mehrfach verwendet (der eine muss die exakte Kopie des anderen sein, inklusive Groß- oder Kleinschreibung und Leerzeichen), muss er nur einmal übersetzt werden.

Bei mehreren verfügbaren Sprachen bestimmen die Spracheinstellungen des Browsers eines Besuchers, ob er die Originalstrings oder eine Übersetzung davon erhält. Andere Sprachversionen sind ihm nicht zugänglich (ohne seine Einstellungen zu ändern).

Mehrsprachige Inhalte

Auch ohne ein spezielles Plugin könnte ein Websitebetreiber Beiträge in unterschiedlichen Sprachen anbieten, allerdings wären diese bei einer deutschen Installation mit dem falschen Sprachcode deklariert. Außerdem wüsste man nicht, ob und welcher Artikel die Übersetzung eines anderen ist. Hinzu kommt, dass es neben Artikeln und Seiten ja auch noch Menüeinträge, Kategorien und vieles andere zu übersetzen gibt, woran man auf den ersten Blick gar nicht denkt.

Plugins für den mehrsprachigen Betrieb von WordPress sorgen dafür, dass Inhalte die Übersetzungen von anderen sind, als solche kenntlich gemacht werden, dass die Deklaration der Sprache in den Metadaten einer Seite korrekt angegeben werden, Kategorien und Menüeinträge übersetzbar werden und vieles mehr. Dabei helfen unter anderem der Klassiker unter diesen Plugins WPML, ein Premium-Plugin mit einer allerdings recht günstigen Lifetime-Lizenz, das offenbar derzeit an Beleibtheit gewinnende freie Plugin Polylang, und die Lösung für Multisites Multisite Language Switcher.

In den Einstellungen der Plugins kann die automatische Weiterleitung zur auf dem System des Besuchers eingestellten Sprache festgelegt werden. Nichtsdestotrotz sind ihm auch andere Sprachversionen zugänglich (sofern über Links erreichbar). Dabei berücksichtigen die Plugins üblicherweise auch gettext-Strings (sofern eine entsprechende Übersetzung davon verfügbar ist).

Alles, was innerhalb des CMS an Text verfasst wird, fällt in das Ressort der Inhaltsübersetzung und hat eine mehrsprachige Website zur Folge. Dazu gehören zum Beispiel Beiträge, Seiten, Menüeinträge, Kategorien, Schlagworte, Begriffe von benutzerdefinierten Taxonomien. Ändert sich der Name einer Kategorie oder der Inhalt einer Seite, bleibt die Übersetzung dennoch erhalten.

Weiterführende Informationen zum Thema Multilingual-WordPress bietet die darauf spezialisierte Site wplang.org an.

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable