Adventskalender Tag 20 – Wie bringe ich einem WordPress-Theme Sprachen bei?

In diesem Beitrag möchte ich aufzeigen, wie ein WordPress Theme auch international genutzt werden kann. Besonders im Hinblick auf mehrsprachige Webseiten, macht es Sinn das eigene Theme in mehreren Sprachen zu übersetzen.

In meinen Schulungen kommt häufig die Frage auf, wie man bestehende Themes oder auch wie man selbsterstellte WordPress Themes für die Lokalisierung vorbereitet. WordPress bietet uns optimale Bedingungen Themes zu übersetzen, ohne das man für jede weitere Sprache noch mal an den Quellcode ran muss.

Überblick der Schritte

  • Laden der Textdomain
  • Textbausteine in WordPress-Funktionen
  • Sprachdateien erstellen
  • Übersetzen
  • Testen

Laden der Textdomain

Zuerst müssen wir WordPress mitteilen, dass unser Theme übersetzbar ist.

Wir fügen folgendes in die functions.php ein:
load_theme_textdomain('mp_theme_textdomain', get_template_directory() . '/languages');

„mp_theme_textdomain“ ist hier unsere Textdomain, die einzigartig sein sollte. Am besten eignet sich hier der Theme-Name als Identifikator. Das zweite Argument in der Funktion definiert den Ordner, wo die Sprachdateien abgelegt werden. Damit die Textdomain auch für das Theme geladen wird, müssen wir diese in der Setup-Funktion aufrufen.

„marketpress_theme_setup“ ist hier exemplarisch für die Setup-Funktion. Bei einem bestehenden Theme, kann die Bezeichnung abweichen.

Textbausteine in WordPress-Funktionen

Als nächsten Schritt definieren wir die Textbausteine, die WordPress dann später laden soll. Außerhalb von PHP Funktionen nutzen wir _e($text_message); und innerhalb von PHP Funktionen __(&text_message);. Findet WordPress keine Übersetzung für $text_message wird der Original Textbaustein ausgegeben.

wird zu

Die zweite Variante findet Verwendung innerhalb von Funktionen.

wird zu

Manchmal enthalten Textbausteine dynamische Daten wie bspw. eine Ziffer oder Begriffe. In diesem Fall bedienen wir uns der sprintf PHP Funktion um die endgültige Ausgabe des Textbausteins zu steuern.

Singular und Plural

WordPress ermöglicht uns auch Textbausteine in Einzahl oder Mehrzahl auszugeben. Dies ist häufig erforderlich, wenn Ergebnisse ausgegeben werden wie beispielsweise bei Suchergebnissen.

Sprachdateien erstellen

Damit WordPress weiß, welcher Textbaustein wie übersetzt dargestellt werden soll, müssen wir eine Liste erstellen. Es gibt drei Dateiformen.

  • Die .POT Datei enthält alle übersetzbare Textbausteine
  • Die .PO Datei enthält alle übersetzbare und übersetzte Textbausteine
  • Die .MO Datei ist eine binäre Datei mit gleichem Inhalt wie die .po, die nur von WordPress gelesen werden kann

Als ersten Schritt erstellen wir die Katalog-Datei .POT mit dem Programm Poedit.

1. Öffne Poedit und erstelle einen neuen Katalog

2. Fülle die Informationen zum Übersetzungsprojekt aus
Katalogeigenschaften


3. Im Tab „Pfade“ wird dem Programm aufgezeigt, wo gesucht werden soll. Diese Ordner verhalten sich relativ zum Ordner /languages/ innerhalb des Theme-Ordners
Quellpfade


4. Im Tab „Schlüsselworte“ geben wir die Funktionsaufrufe __ und _e ohne Klammern ein.
schluesselwoerter


5. lassen wir Poedit nach den definierten Textbausteinen suchen und erhalten eine Liste, die wir dann übersetzen können.
katalogliste


6. Die .pot Datei wird dem Theme-Namen entsprechend im Ordner /mytheme/languages/ gespeichert.

Diese Datei wird zwar nicht von WordPress benötigt, dient aber als Katalog für weitere Übersetzungen.

Übersetzen

Jetzt geht es ans fröhliche Übersetzen. Sobald alle Textbausteine übersetzt sind, müssen wir das als de_DE.po im Ordner /languages/ im Theme-Ordner abspeichern. Poedit generiert automatisch eine .mo Datei, die von WordPress benötigt wird.

Testen

Sobald die Sprachdateien im Theme-Ordner abgelegt wurden, können wir das im Frontend testen. Sofern in der wp-config.php auch die Sprache mit de_DE definiert wurde.

Zusammenfassung

Wir haben nun mit einfachen Schritten unser Theme für die Lokalisierung vorbereitet. Dies bringt einen deutlichen Mehrwert für das eigene Projekt, sowie für andere WordPress Nutzer, die dein Theme gerne nutzen möchten.

Nachtrag
Torsten hat in seinem Kommentar noch die Slides von Samuel „Otto“ Wood als weitere Referenzquelle empfohlen. Für alle, die sich ausführlich mit der Thematik beschäftigen möchten.

Beitrag teilen

Author Avatar

WordPress ist meine Leidenschaft. Als Coach & Trainerin ist es mir wichtig, dass das vermittelte Wissen nachhaltig auch in der Praxis angewendet werden kann. Individuelle Anwenderschulungen für WordPress & Social Media sind meine Spezialität. Sprechen Sie mich an, wenn Sie wissen möchten, wie man das Beste aus WordPress für Ihre Projekte holen kann.

Auch interessant:

Anleitung: Rechnungsnummern in WooCommerce anpassen und automatisch zurücksetzen

von Michael Firnkes

Unser Plugin German Market sorgt nicht nur für fortlaufende Rechnungsnummern in deinem WooCommerce-Shop, du kannst zudem die Zusammensetzung beeinflussen ...

Weiterlesen

WooCommerce 3.0: Neue Galerie für Produktbilder, mehr Geschwindigkeit und Update-Hinweise

von Michael Firnkes

Das Team von WooCommerce hat die Version 3.0 seines extrem erfolgreichen Onlineshop-Systems veröffentlicht. Das Release läuft unter dem Namen "Bionic But ...

Weiterlesen

Anleitung: Dateien an WooCommerce-E-Mails anhängen

von Michael Firnkes

Mit German Market kannst du den E-Mails von WooCommerce PDF-Anhänge und sonstige Dateien hinzufügen. Zum Beispiel AGBs, ein Rücknahmeformular oder belie ...

Weiterlesen

Anleitung: Kauf auf Rechnung mit WooCommerce und German Market

von Michael Firnkes

Kauf auf Rechnung ist nach wie vor eine beliebte Zahlungsart. Mit unserem Plugin German Market für WooCommerce kannst du steuern, welchen Kunden du diese ...

Weiterlesen

Kommentare

6 Kommentare

  1. #1

    Sehr schöne Einführung, Birgit!

    Wer danach noch mehr wissen möchte, dem empfehle ich die Slides von Sam ‚Otto‘ Wood vom WordCamp Europe zum Weiterlesen:
    http://wceu2013.ottopress.com

  2. #2

    Danke dir Torsten 🙂

    Ja, die Slides von Samuel sind wirklich eine gute Ergänzung.

  3. #3

    Danke Birgit, das versteht selbst der größte DAU! 🙂

    PS: Da ist ein kleiner Verwechsel im Text. Der Satz muss so lauten:
    „Außerhalb von PHP Funktionen nutzen wir _e($text_message); und innerhalb von PHP Funktionen __(&text_message);.“

  4. #4

    Singular und Plural

    Hierfür bietet der Core noch weitere nützliche Funktionen an: _n( $single, $plural, $number, $domain )

    Auf das Beispiel angewendet:

  5. #5

    @Heiko: danke für den Hinweis. Ist geändert.

    @Dominik: genau für solche Abkürzungen liebe ich WordPress. 🙂

  6. #6

    Hallo! Ich habe ein benutzerfreundliche, webbasierte Lokalisierungstool um WordPress Themen zu übersetzen gefunden – https://poeditor.com/ Es gibt sogar ein Plugin, das integriert die POEditor API in Ihre WordPress – http://wordpress.org/extend/plugins/poeditor/ Ich empfehle es.

Schreibe einen Kommentar

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

Du kannst folgende HTML Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Abonniere unseren Newsletter

Trage hier deine E-Mail Adresse ein, damit du unseren Newsletter abonnieren kannst.