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

MarketPress Adventskalender 20

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:

youtube

Neu: Video-Tutorials für German Market

von Michael Firnkes

Du willst wissen, wie sich die einzelnen Module in unserer Rechtssicherheits-Suite German Market für WooCommerce bedienen lassen? Dann helfen wir dir jetz ...

Weiterlesen
woonews19

WooCommerce Wochenrückblick #19: Google Analytics, kostenlose Themes und neue Kennzeichnungspflicht

von Michael Firnkes

Die Shop-Analyse ist wichtig, muss aber rechtlich abgesichert werden. Für WooCommerce gibt es neue Theme-Inspirationen und ein neues German Market. Dies u ...

Weiterlesen
slack-blog

Neues Plugin: Slack Connector - Verbinde WordPress, WooCommerce und Slack

von Michael Firnkes

Anfangs wollten wir lediglich unsere eigenen Slack-Prozesse optimieren. Mit automatisierten Benachrichtigungen aus dem MarketPress-Shop, dem Blog und unser ...

Weiterlesen
woo26

WooCommerce 2.6: Deutlich mehr Versandoptionen, bessere Bestellübersicht

von Michael Firnkes

WooCommerce 2.6 "Zipping Zebra" steht kurz vor der Veröffentlichung, das Release ist für kommenden Dienstag geplant. Wir zeigen dir, was sich für dich ...

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 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="">