Manchmal ist es notwendig, spezielle Wörter oder Wortlaute eines verwendeten Themes oder eines Themes, dass du selbst erstellt hast zu übersetzen. Vor allem wenn du ein englischsprachiges Theme nutzt, kannst du so die noch nicht übersetzten Wörter leicht ins Deutsche übertragen. Normalerweise ist die Theme-Übersetzung recht umständlich und du benötigst ein Extra-Programm (z.B. PoEdit), um die Übersetzungen anzufertigen. Das praktische WordPress-Plugin »Codestyling Localization« schafft da Abhilfe. Mit Codestyling Localization kannst du all deine Übersetzungen im WP-Admin anlegen und anschließend gleich im Browser testen.
Und so funktioniert’s
Es gibt zwei Varianten das Plugin für die Theme-Übersetzung zu nutzen (mit Hilfe des Plugins kannst du neben Themes übrigens auch andere Plugins und WordPress selbst übersetzen). Zum einen kannst du eine Übersetzung für ein Theme anlegen, das bisher noch nicht für die Übersetzung vorbereitet wurde. Oder du kannst mit Hilfe des Plugins bei einer bereits vorhandenen Theme-Übersetzung einzelne Wörter oder Sätze an deine Wünsche anpassen.
Ich möchte hier erklären, wie du für ein noch nicht übersetztes Theme eine eigene Übersetzung anlegst. Als Beispiel habe ich mir das Free-Theme »Sight« heruntergeladen. Das Theme ist bisher nur in einer englischen Version vorhanden und auch noch nicht zur Übersetzung vorbereitet.
1. Alle Theme-Dateien auf gettext-Komponenten prüfen
Damit Texte des WordPress Theme-Codes übersetzt werden können, müssen die Texte innerhalb der PHP-Funktion __() oder _e() stehen.
__() wird genutzt, wenn der Text sich bereits innerhalb von PHP-Code befindet, z.B.:
<?php the_content( __( 'Continue Reading →', 'deinthemename' ) ); ?>
_e() wird verwendet, wenn der Text ohne Übersetzung nur in HTML stehen würde, z.B.:
<?php _e( 'Not Found', 'deinthemename' ); ?>
Die meisten Themes erfüllen diese Voraussetzung bereits. Falls dein Theme die gettext-Komponenten nicht nutzt, musst du diese noch manuell in alle Theme-Dateien einfügen.
2. Den Languages-Ordner erstellen
Um die Übersetzung mit Hilfe des Plugins möglich zu machen, musst du als erstes in deinem Theme-Ordner einen neuen Ordner mit dem Namen »languages« anlegen. Hier werden dann später die für die deutsche Übersetzung benötigten de_DE.po und de_DE.mo Dateien gespeichert.
3. Die Textdomain laden
Jetzt öffnest du die functions.php Datei deines Themes und fügst folgenden Code hinzu, um die Textdomain mit der Funktion load_theme_textdomain zu laden. Nur mit Hilfe des Codes kann das Plugin die Theme-Texte übernehmen.
/* Make theme available for translation */ load_theme_textdomain( 'deinthemename', TEMPLATEPATH . '/languages' );
4. Eine neue Theme-Übersetzung mit Codestyling Localization anlegen
Nachdem du das Codestyling Localization Plugin aktiviert hast findest du unter Werkzeuge / Lokalisierung den Link zu den Plugin-Funktionen. Hier siehst du eine Liste aller WordPress-Kompontenen (WordPress selbst, Plugins und Themes), die mit Hilfe des Plugins übersetzt werden können. Unter den Punkt Themes findest du deine installierten und für eine Übersetzung vorbereiteten Themes.
Um für ein Theme eine neue Übersetzung anzulegen, klickst du jetzt in der Theme-Ansicht auf Neue Sprache hinzufügen.

Im Menü findest du eine ganze Reihe möglicher Sprachen zur Auswahl. Hier kannst du auch de_DE für die deutschsprachige Übersetzung wählen.

Nachdem du die neue Sprache hinzugefügt hast, siehst du kleine Symbole für die benötigten .po und .mo Dateien.

Ein weißes Symbol bedeutet, dass die .mo Datei noch nicht vorhanden ist. Diese erstellst du erst im nächsten Schritt.
Jetzt klickst du auf Einlesen. Das Plugin durchsucht alle PHP-Dateien deines Themes nach zu übersetzenden Elementen ab. Nachdem der Vorgang abgeschlossen ist kannst du auf Bearbeiten gehen, um mit deiner Übersetzung zu beginnen.
Im Bearbeitungs-Modus findest du eine Liste mit allen Elementen deines Themes, die übersetzt werden können.

Du kannst in der oberen Leiste auch nach bestimmten Wörtern suchen, indem du sie ins Suchfeld eingibst. Die Auswahl wird dann auf Strings mit diesem Wort eingeschränkt.
Indem du rechts auf Bearbeiten klickst, kannst du jetzt jedes einzelne Element deines Themes nach deinen Wünschen übersetzten.
Zur Übersetzung öffnet sich ein praktisches Eingabefeld, in dass du deine Übersetzung eintippst. Bist du dir bei einer Übersetzung nicht ganz sicher, kannst du auch die Google Translate API zur Hilfe nehmen, um deine Übersetzung noch einmal zu überprüfen. Die Google-Übersetzung solltest du aber immer nur als Anhaltspunkt nutzen (Vorsichtig solltest du bei der Google API-Nutzung auch sein, wenn der Text Code-Elemente enthält. Überprüfe noch einmal genau, dass nicht aus versehen falsche Leerzeichen eingefügt wurden.).

Bei Elementen mit Plural-Wörtern hast du in Codestyling Localization sogar die Option, den Plural-Wert genau zu definieren.

Nachdem du alle Elemente deines Themes übersetzt hast, musst du jetzt noch die .mo Datei für deine Textdomain schreiben, indem du den Button erstelle .mo Datei anwählst. Erst dann werden deine eingetragenen Übersetzungen angezeigt, und du kannst deine Theme-Übersetzungen im Browser überprüfen.
Falls du später noch einmal eine Änderung in den Übersetzungen vornimmst, darfst du nicht vergessen auch die .mo Datei immer neu zu überschreiben.
Tipps zum Weiterlesen
- Auf der Plugin-Homepage gibt es eine ausführliche und hilfreiche Dokumentation des Plugins (auch in deutscher Sprache). Bei Fragen können auch Kommentare an den Autor geschrieben werden.
- Eine ausführliche Erklärung zum Thema Übersetzung in WordPress kannst du außerdem im WordPress Codex nachlesen. Hier findest du auch Erklärungen zur gettext-Übersetzung, sowie zu den PHP-Funktionen __() und _e().
Wie du siehst, ist das Plugin wirklich sehr hilfreich, um schnell Übersetzungen deines Themes anzulegen oder vorhandene Übersetzungen nach deinen eigenen Wünschen zu ändern.
Über deine Fragen oder weitere Tipps zum Codestyling Localization-Plugin und zum Thema WordPress-Theme Übersetzung allgemein freue ich mich sehr!
Oh Mann Ellen, mit deinen hellseherischen Fähigkeiten hast du mir wieder einen Riesengefallen getan.
Ich habe nämlich das englische Headway-Theme und musste immer direkt in den Core Files herumwerkeln. ;-)
Jetzt funktioniert alles bestens.
Eine Frage habe ich: Reicht es nach der Aktualisierung meines Themes wenn ich den languages-Ordner in meinen neuen Theme-Order kopiere?
Nochmals vielen vielen Dank für den Artikel.
Alles Gute und Frohe Weihnachten
Nico
Hallo Nico,
vielen Dank für dein nettes Feedback. Es freut mich sehr, dass dir der Plugin-Tipps bei deiner Theme-Optimierung weiterhelfen konnte :-) Ja, ich finde das Plugin auch klasse, so wird das Theme-Anpassen in die eigene Sprache echt viel einfacher.
Ja, eigentlich sollte es ausreichen, wenn du deinen language-Ordner nach der Übersetzung in dein Theme einfügst. Falls es nicht klappt, schaue dir noch einmal den Punkt 3 an :-)
Viele Grüße und ebenfalls ein frohes Weihnachtsfest an dich,
Ellen
Vielen Herzlichen Dank!!!!!!!!!!!!!!!!!
Dieser Beitrag hat mir sehr geholfen!!!
Dank Ihm erstrahlt jetzt mein Blog endlich in deutsch :)
Bei mir klappt es leider nicht. Es fehlt der Button um die mo Datei zu erstellen. Weiß jemand Abhilfe???
lg
Dario
ich finde den auch nicht, aber ich habe die po Datei mit den poedit dann in eine mo Datei umgewandelt.
@Dario, @Viktor,
vielen Dank für eure Kommentare. Das ihr die .mo Datei mit Hilfe des Plugins nicht erstellen könnt, liegt höchstwahrscheinlich daran, dass das verwendete Theme zwar die PHP-Funktionen __() oder _e() nutzt, diese aber nicht zum Theme zugehörig mit , ›Themename‹ (siehe Codebeispiel im Artikel) gekennzeichnet sind.
Leider müsstest ihr diese Zuordnung noch im Theme nachtragen, damit die Übersetzungen auch wirklich zum Theme zugeordnet werden können und in den language-Ordner abgespeichert werden.
Der Button erscheint dann automatisch, sobald der Themename in den PHP-Funktionen integriert ist.
Ich hoffe diese Antwort kann euch weiterhelfen.
Viele Grüße,
Ellen
Hallo Ellen,
vielen Dank erstmal für das tolle Tutorial, hat auch alles geplappt soweit, bis zu dem Erstellen der .mo Datei…
Der Button erscheint bei mir auch nicht, außerdem erscheint in dem Auswahlfeld für die Textdomain bei mir nur »default«, und nicht der Name meines Themes.
Den Punkt 3 habe ich allerdings genauso gemacht.
Du meinst ich muss die Zuordnung im Theme nachtragen, den Theme-Namen in die php-Themedateien einfügen?
Kannst du mir das genauer erklären, was muss ich genau in welche Dateien einfügen, damit mein Theme auch in dem kleinen Auswahlfeld erscheint und ich endlich die .mo Datei erstellen kann?
Vielen Dank für deine Hilfe!
Grüße
Nils
hmmm, ich seh trotzdem keinen Button :(
Hallo Viktor,
nach dem Einfügen deines Theme-Namens (in den php-Themedateien und in der functions.php bei load_theme_textdomain) musst du dein Theme in den Codestyling Localization Plugin-Optionen noch einmal neu einlesen.
Danach sollte in »Sprachdatei übersetzen« ganz oben neben Textdomain: ein kleines Auswahl-Menü sein, dass einmal »default« und einmal dein Theme-Name als Option hat. Wenn du dein Theme-Name auswählst, sollte der Button zum Erstellen der .mo Datei auftauchen :-)
Viel Erfolg und viele Grüße,
Ellen
eventuell mal die Schreibrechte prüfen, das Plugin kann nur eine mo erstellen, wenn im Ordner Schreibrechte gesetzt sind.
@Viktor, @Frank:
Ja, stimmt, die Schreibrechte könnten auch das Problem sein. Vielen Dank für deinen Tipp, Frank :-)
In diesem Fall wäre das kleine .mo Symbol in den Plugin-Einstellungen glaube ich rot markiert. Auf der Plugin-Homepage unter »Die Plugin-Hauptseite - der Einstieg« wird das auch noch einmal mit einem Beispiel erklärt.
Viele Grüße,
Ellen
Das Plugin ist wirklich genial. Ich habe es bei meinem ersten lokalisierten WordPress-Theme auch benutzt und dabei bei Punkt 4 nachfolgende Vorgehensweise benutzt:
A. Neue Sprache hinzufügen und Deutsch auswählen
B. Aktion Einlesen und mit analysieren bestätigen
C. Aktion Bearbeiten
D. Übersetzungen hinterlegen und Speichern
E. Am Seitenanfang sollte nach dem Hinweis im Select Textdomain ›deinthemename‹ ausgewählt sein (ansonsten fehlt vermutlich Punkt 3).
F. Rechts neben dem Select ist der Button zur Erstellung der mo-Datei, diesen abschließend benutzen.
Hinweis: Zumindest bei mir benötigte der languages-Ordner den CHMOD 777.
Hallo Jan,
vielen Dank für deinen Kommentar und deine hilfreiche Ergänzung zur Beschreibung des Plugins, klasse, dass es bei dir mit der Übersetzung so gut geklappt hat :-)
Viele Grüße und einen guten Rutsch,
Ellen
Hallo,
ich wollte über die Feiertage auch mal mein Theme übersetzen und dieses nette Plugin ausprobieren, doch bei mir scheitert es schon ganz am Anfang… wo muss ich denn den Codeschnipsel aus Punkt 3 einfügen? Am Anfang, am Ende oder ist es egal, wo in der functions ich das einfüge? Als ich es ganz als erstes eingefügt habe, gab es Probleme.
Hallo Seelendieb,
vielen Dank für deinen Kommentar :-) Am besten du fügst den Code-Schnipsel ganz am Ende deiner functions.php Datei ein, dann sollte es eigentlich klappen. Auf alle Fälle unterhalb aber vor
<?phpViel Erfolg und viele Grüße,
Ellen
Das Problem hat sich gelöst, mit dem Button. Jedoch bekomme ich nach der fertigen Übersetzung des Themes nur sehr komische Zeichen angezeigt, obwohl die Schreibrechte vorhanden sind und die Mo Datei korrekt erstellt ist und die Codes alle eingebunden sind.
Lg
Dario
Hallo Dario,
vielen Dank für dein Feedback, klasse erst einmal, dass das mit dem mo-Button geklappt hat. Wo bekommst du denn die Zeichen angezeigt, bei der Ansicht des Themes oder im Admin-Bereich in den Plugin-Einstellungen von Codestyling Localization?
Viele Grüße und vorab schon einmal einen guten Rutsch :-)
Ellen
Hallo Ellen,
wünsche Dir ein gesundes und erfolgreiches Neues Jahr.
Herzlichen Dank für diese sehr anschauliche Tutorial. Ich bin ein großer Fan von Heiko´s Plugin Codestyling Localization. Bei normalen Themes muss ich nicht einsetzen, weil ich da auf die bereits übersetzten Themes YAML Green, YAML Coffee und das WordPress Framework Xtreme One setze. Allerdings versuche ich mich gerade daran das Mobile Theme WPtouch, das als Plugin realisiert ist, mit Codestyling Localization zu übersetzen. Da ist mir Dein Tutorial auch eine Hilfe.
Beste Grüße
Dieter
Hallo Ellen,
nun nach sowas habe ich schon lange gesucht, aber leider klappt es bei mir nicht, wenn ich diesen text von dir in meine funktion.php einbaue bekomme ich leider immer diese meldung angezeigt:
/* Make theme available for translation */ load_theme_textdomain( ›WordPress Theme 1091′, TEMPLATEPATH . ›/languages‹ );
Warning: Cannot modify header information - headers already sent by (output started at /home1/superpow/public_html/tauchen/wp-content/themes/theme1091/functions.php:4) in /home1/superpow/public_html/tauchen/wp-admin/theme-editor.php on line 89
schade das es nicht klappt, es wäre echt gut gewessen,
schönen gruss
Olaf
Hallo Ellen,
hast du wohl noch eine Hilfestellung für mich parat?
Würde mich freuen!
Grüße
Hallo Ellen,
wirklich eine sehr hilfreiche Erklärung. Ich erstelle gerade mein eigenes Theme und komme auch mit der Übersetzung ganz gut zurecht. Allerdings kann ich die Felder für das Kommentarformular nicht finden. D.h. solche Sachen wie ›Leave a reply‹ oder die Beschriftung des Submit-Buttons finde ich in der Liste zur Erstellung der .mo-Datei nicht. Wo muss ich suchen, oder mache ich etwas falsch?
Danke schon mal für Deine Hilfe und viele Grüße,
Axel
Hat nicht doch jemand eine kurze Hilfestellung für mich?
Danke und Grüße,
Axel
Hallo Axel,
da müsstest du noch einmal in deinen Theme-Dateien schauen, wahrscheinlich fehlen bei den Text-Strings noch die Zuordnungen zu deinem Themenamen. Ich weiss nicht, welches Theme du nutzt, aber schau einmal in der comments.php und in der functions.php nach, ob du dort die Texte findest. Dann kannst du deinen Theme-Namen (wie im Artikel beschrieben) nachtragen und dein Theme noch einmal vom Plugin einlesen lassen. Jetzt müssten deine Text-Strings auftauchen :-)
Ich hoffe dieser Tipp hilft dir weiter,
viele Grüße,
Ellen
Der Beitrag ist einfach nur weiter zu empfehlen..
Danke
Hallo Ellen! Erstmal toller Beitrag, den werde ich weiterempfehlen! Leider hat er allerdings eine meiner Probleme nicht lösen können. Wenn es in einem Artikel einen -Tag gibt, steht auf der Index-Seite immer noch »Continue Reading blabla«, und ich weiß einfach nicht, wo dieses »Continue Reading« her kommt. In der index.php steht an dieser Stelle:
Schaue ich nun in das Codestyling Localization Plugin, dann ist »Read more« auch übersetzt. Allerdings wundert mich hier, daß die englische Version »Read more« und nicht »Continue Reading« heißt.
Suche ich nun mit Spotlight nach »Continue Reading« im Theme-Ordner, wird überhaupt keine Datei gefunden, die das überhaupt enthält.
Kann es sein, daß dieses »Continue Reading« noch irgendwo anders herkommen kann?
Viele Grüße aus Oldenburg,
Markus
Hi Ellen,
Super Artikel und Super Plugin.
Mein Theme wollte damit zwar nicht ganz kooperieren aber dank Dir hab ich mich so lange mit den Dateien beschäftigt das ich am Ende alles manuell einstellen konnte ;-)
Mit dem Plugin muss ich mich dann noch mal näher befassen , es wollte die einzelnen Wörter nicht richtig auslesen, da muss ich irgendwo was übersehen haben.
werd ich schon noch finden :o)
LG
Regina
Funktioniert bei mir bestens die Lösung.
Hallo zusammen, eine Frage: Ich kann zwar mit dem Plugin die mo-Datei erstellen, allerdings tut sich danach nichts auf der Webseite. Im Ordner »languages« des zu überarbeitenden Themes findet sich die Datei (genau wie die po-Datei) nicht. Woran könnte es liegen? Und eine ganz dumme Frage: Die Code-Zeile, die in functions.php ergänzt werden soll, enthält ja die »Phrase« »languages« (in blau). Muss ich den Ausruck ersetzen? UNd wenn ja, womit?
Besten Dank!
Hallo Ellen und zu allerst mal vielen Dank für den wirklich tollen Artikel!
Ich bin hier gelandet, weil ich nach einer Möglichkeit suche in deinem Piha Theme nach einer Möglichkeit suche, das Tag, Continue Reading, durch eine deutsche Übersetzung zu ersetzen.
Und ich nehme an, wenn ich es richtig machen möchte, komme ich an dem hier von dir beschriebenen Weg nicht vorbei, oder?
Gruß und schönen Abend
Matthias
Bei mir Zeigt WP 3.3.1 nach einiger Zeit »CodeStyling Localization - Zugriffsfehler»
Kann mir jemand helfen, was kann ich tun???
Pingback: Lest über Cyberspace-Hippies | Der Miraimist