WordPress-Theme Übersetzung mit dem Codestyling Localization Plugin

Manchmal ist es not­wendig, spe­zi­elle Wörter oder Wortlaute eines ver­wen­deten Themes oder eines Themes, dass du selbst erstellt hast zu über­setzen. Vor allem wenn du ein eng­lisch­spra­chiges Theme nutzt, kannst du so die noch nicht über­setzten Wörter leicht ins Deutsche über­tragen. Normalerweise ist die Theme-Übersetzung recht umständ­lich und du benö­tigst ein Extra-Programm (z.B. PoEdit), um die Über­set­zungen anzu­fer­tigen. Das prak­ti­sche WordPress-Plugin »Codestyling Localization« schafft da Abhilfe. Mit Codestyling Localization kannst du all deine Über­set­zungen 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 übri­gens auch andere Plugins und WordPress selbst über­setzen). Zum einen kannst du eine Über­set­zung für ein Theme anlegen, das bisher noch nicht für die Über­set­zung vor­be­reitet wurde. Oder du kannst mit Hilfe des Plugins bei einer bereits vor­han­denen Theme-Übersetzung ein­zelne Wörter oder Sätze an deine Wünsche anpassen.

Ich möchte hier erklären, wie du für ein noch nicht über­setztes Theme eine eigene Über­set­zung anlegst. Als Beispiel habe ich mir das Free-Theme »Sight« her­un­ter­ge­laden. Das Theme ist bisher nur in einer eng­li­schen Version vor­handen und auch noch nicht zur Über­set­zung vorbereitet.

1. Alle Theme-Dateien auf gettext-Komponenten prüfen

Damit Texte des WordPress Theme-Codes über­setzt werden können, müssen die Texte inner­halb der PHP-Funktion __() oder _e() stehen.

__() wird genutzt, wenn der Text sich bereits inner­halb von PHP-Code befindet, z.B.:

<?php the_content( __( 'Continue Reading &rarr;', 'deinthemename' ) ); ?>

_e() wird ver­wendet, wenn der Text ohne Über­set­zung 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 Über­set­zung mit Hilfe des Plugins mög­lich zu machen, musst du als erstes in deinem Theme-Ordner einen neuen Ordner mit dem Namen »lan­guages« anlegen. Hier werden dann später die für die deut­sche Über­set­zung 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 fol­genden 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 akti­viert hast fin­dest 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 über­setzt werden können. Unter den Punkt Themes fin­dest du deine instal­lierten und für eine Über­set­zung vor­be­rei­teten Themes.

Um für ein Theme eine neue Über­set­zung anzu­legen, klickst du jetzt in der Theme-Ansicht auf Neue Sprache hin­zu­fügen.

WordPress Theme Uebersetzung

Im Menü fin­dest du eine ganze Reihe mög­li­cher Sprachen zur Auswahl. Hier kannst du auch de_DE für die deutsch­spra­chige Über­set­zung wählen.

WordPress Theme Uebersetzung

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

WordPress Theme Uebersetzung

Ein weißes Symbol bedeutet, dass die .mo Datei noch nicht vor­handen ist. Diese erstellst du erst im nächsten Schritt.

Jetzt klickst du auf Einlesen. Das Plugin durch­sucht alle PHP-Dateien deines Themes nach zu über­set­zenden Elementen ab. Nachdem der Vorgang abge­schlossen ist kannst du auf Bearbeiten gehen, um mit deiner Über­set­zung zu beginnen.

Im Bearbeitungs-Modus fin­dest du eine Liste mit allen Elementen deines Themes, die über­setzt werden können.

WordPress Theme Uebersetzung

Du kannst in der oberen Leiste auch nach bestimmten Wörtern suchen, indem du sie ins Suchfeld ein­gibst. Die Auswahl wird dann auf Strings mit diesem Wort eingeschränkt.

Indem du rechts auf Bearbeiten klickst, kannst du jetzt jedes ein­zelne Element deines Themes nach deinen Wünschen übersetzten.

Zur Über­set­zung öffnet sich ein prak­ti­sches Eingabefeld, in dass du deine Über­set­zung ein­tippst. Bist du dir bei einer Über­set­zung nicht ganz sicher, kannst du auch die Google Translate API zur Hilfe nehmen, um deine Über­set­zung noch einmal zu über­prüfen. Die Google-Übersetzung soll­test du aber immer nur als Anhaltspunkt nutzen (Vorsichtig soll­test du bei der Google API-Nutzung auch sein, wenn der Text Code-Elemente ent­hält. Über­prüfe noch einmal genau, dass nicht aus ver­sehen fal­sche Leerzeichen ein­ge­fügt wurden.).

WordPress Theme Uebersetzung

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

WordPress Theme Uebersetzung

Nachdem du alle Elemente deines Themes über­setzt 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 ein­ge­tra­genen Über­set­zungen ange­zeigt, und du kannst deine Theme-Übersetzungen im Browser überprüfen.

Falls du später noch einmal eine Ände­rung in den Über­set­zungen vor­nimmst, darfst du nicht ver­gessen auch die .mo Datei immer neu zu überschreiben.

Tipps zum Weiterlesen
  • Auf der Plugin-Homepage gibt es eine aus­führ­liche und hilf­reiche Dokumentation des Plugins (auch in deut­scher Sprache). Bei Fragen können auch Kommentare an den Autor geschrieben werden.
  • Eine aus­führ­liche Erklärung zum Thema Über­set­zung in WordPress kannst du außerdem im WordPress Codex nach­lesen. Hier fin­dest du auch Erklärungen zur gettext-Übersetzung, sowie zu den PHP-Funktionen __() und _e().

Wie du siehst, ist das Plugin wirk­lich sehr hilf­reich, um schnell Über­set­zungen deines Themes anzu­legen oder vor­han­dene Über­set­zungen nach deinen eigenen Wünschen zu ändern.

Über deine Fragen oder wei­tere Tipps zum Codestyling Localization-Plugin und zum Thema WordPress-Theme Über­set­zung all­ge­mein freue ich mich sehr!

31 Kommentare

  1. Nico

    Oh Mann Ellen, mit deinen hell­se­he­ri­schen Fähigkeiten hast du mir wieder einen Riesengefallen getan.

    Ich habe näm­lich das eng­li­sche Headway-Theme und musste immer direkt in den Core Files herumwerkeln. ;-)

    Jetzt funk­tio­niert 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

    • Ellen

      Hallo Nico,

      vielen Dank für dein nettes Feedback. Es freut mich sehr, dass dir der Plugin-Tipps bei deiner Theme-Optimierung wei­ter­helfen konnte :-) Ja, ich finde das Plugin auch klasse, so wird das Theme-Anpassen in die eigene Sprache echt viel einfacher.

      Ja, eigent­lich sollte es aus­rei­chen, wenn du deinen language-Ordner nach der Über­set­zung in dein Theme ein­fügst. Falls es nicht klappt, schaue dir noch einmal den Punkt 3 an :-)

      Viele Grüße und eben­falls ein frohes Weihnachtsfest an dich,
      Ellen

  2. Viktor

    Vielen Herzlichen Dank!!!!!!!!!!!!!!!!!

    Dieser Beitrag hat mir sehr geholfen!!!
    Dank Ihm erstrahlt jetzt mein Blog end­lich in deutsch :)

  3. Ellen

    @Dario, @Viktor,

    vielen Dank für eure Kommentare. Das ihr die .mo Datei mit Hilfe des Plugins nicht erstellen könnt, liegt höchst­wahr­schein­lich daran, dass das ver­wen­dete Theme zwar die PHP-Funktionen __() oder _e() nutzt, diese aber nicht zum Theme zuge­hörig mit , ›Themename‹ (siehe Codebeispiel im Artikel) gekenn­zeichnet sind.

    Leider müss­test ihr diese Zuordnung noch im Theme nach­tragen, damit die Über­set­zungen auch wirk­lich zum Theme zuge­ordnet werden können und in den language-Ordner abge­spei­chert werden.

    Der Button erscheint dann auto­ma­tisch, sobald der Themename in den PHP-Funktionen inte­griert ist.

    Ich hoffe diese Antwort kann euch wei­ter­helfen.
    Viele Grüße,
    Ellen

    • Nils

      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 aller­dings genauso gemacht.
      Du meinst ich muss die Zuordnung im Theme nach­tragen, den Theme-Namen in die php-Themedateien ein­fügen?
      Kannst du mir das genauer erklären, was muss ich genau in welche Dateien ein­fügen, damit mein Theme auch in dem kleinen Auswahlfeld erscheint und ich end­lich die .mo Datei erstellen kann?
      Vielen Dank für deine Hilfe!
      Grüße
      Nils

    • Ellen

      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 über­setzen« 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 aus­wählst, sollte der Button zum Erstellen der .mo Datei auftauchen :-)

      Viel Erfolg und viele Grüße,
      Ellen

  4. Ellen

    @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 mar­kiert. Auf der Plugin-Homepage unter »Die Plugin-Hauptseite - der Einstieg« wird das auch noch einmal mit einem Beispiel erklärt.

    Viele Grüße,
    Ellen

  5. Jan

    Das Plugin ist wirk­lich genial. Ich habe es bei meinem ersten loka­li­sierten WordPress-Theme auch benutzt und dabei bei Punkt 4 nach­fol­gende Vorgehensweise benutzt:

    A. Neue Sprache hin­zu­fügen und Deutsch aus­wählen
    B. Aktion Einlesen und mit ana­ly­sieren bestä­tigen
    C. Aktion Bearbeiten
    D. Über­set­zungen hin­ter­legen und Speichern
    E. Am Seitenanfang sollte nach dem Hinweis im Select Textdomain ›dein­the­me­name‹ aus­ge­wählt sein (ansonsten fehlt ver­mut­lich 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.

    • Ellen

      Hallo Jan,

      vielen Dank für deinen Kommentar und deine hilf­reiche Ergänzung zur Beschreibung des Plugins, klasse, dass es bei dir mit der Über­set­zung so gut geklappt hat :-)

      Viele Grüße und einen guten Rutsch,
      Ellen

  6. Seelendieb

    Hallo,
    ich wollte über die Feiertage auch mal mein Theme über­setzen und dieses nette Plugin aus­pro­bieren, doch bei mir schei­tert es schon ganz am Anfang… wo muss ich denn den Codeschnipsel aus Punkt 3 ein­fügen? Am Anfang, am Ende oder ist es egal, wo in der func­tions ich das ein­füge? Als ich es ganz als erstes ein­ge­fügt habe, gab es Probleme.

    • Ellen

      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 eigent­lich klappen. Auf alle Fälle unter­halb aber vor <?php

      Viel Erfolg und viele Grüße,
      Ellen

  7. Dario

    Das Problem hat sich gelöst, mit dem Button. Jedoch bekomme ich nach der fer­tigen Über­set­zung des Themes nur sehr komi­sche Zeichen ange­zeigt, obwohl die Schreibrechte vor­handen sind und die Mo Datei kor­rekt erstellt ist und die Codes alle ein­ge­bunden sind.

    Lg
    Dario

    • Ellen

      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 ange­zeigt, 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

  8. Dieter

    Hallo Ellen,

    wün­sche Dir ein gesundes und erfolg­rei­ches Neues Jahr.

    Herzlichen Dank für diese sehr anschau­liche Tutorial. Ich bin ein großer Fan von Heiko´s Plugin Codestyling Localization. Bei nor­malen Themes muss ich nicht ein­setzen, weil ich da auf die bereits über­setzten Themes YAML Green, YAML Coffee und das WordPress Framework Xtreme One setze. Allerdings ver­suche ich mich gerade daran das Mobile Theme WPtouch, das als Plugin rea­li­siert ist, mit Codestyling Localization zu über­setzen. Da ist mir Dein Tutorial auch eine Hilfe.

    Beste Grüße
    Dieter

  9. Olaf

    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 ein­baue bekomme ich leider immer diese mel­dung angezeigt:

    /* Make theme avail­able for trans­la­tion */ load_theme_textdomain( ›WordPress Theme 1091′, TEMPLATEPATH . ›/languages‹ );
    Warning: Cannot modify header infor­ma­tion - hea­ders 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

  10. Axel

    Hallo Ellen,

    wirk­lich eine sehr hilf­reiche Erklärung. Ich erstelle gerade mein eigenes Theme und komme auch mit der Über­set­zung 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

    • Ellen

      Hallo Axel,

      da müss­test du noch einmal in deinen Theme-Dateien schauen, wahr­schein­lich fehlen bei den Text-Strings noch die Zuordnungen zu deinem Themenamen. Ich weiss nicht, wel­ches Theme du nutzt, aber schau einmal in der comments.php und in der functions.php nach, ob du dort die Texte fin­dest. Dann kannst du deinen Theme-Namen (wie im Artikel beschrieben) nach­tragen und dein Theme noch einmal vom Plugin ein­lesen lassen. Jetzt müssten deine Text-Strings auftauchen :-)

      Ich hoffe dieser Tipp hilft dir weiter,
      viele Grüße,
      Ellen

  11. Markus Schall

    Hallo Ellen! Erstmal toller Beitrag, den werde ich wei­ter­emp­fehlen! Leider hat er aller­dings 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ß ein­fach 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 über­setzt. Allerdings wun­dert mich hier, daß die eng­li­sche Version »Read more« und nicht »Continue Reading« heißt.

    Suche ich nun mit Spotlight nach »Continue Reading« im Theme-Ordner, wird über­haupt keine Datei gefunden, die das über­haupt enthält.

    Kann es sein, daß dieses »Continue Reading« noch irgendwo anders her­kommen kann?

    Viele Grüße aus Oldenburg,
    Markus

  12. Regina

    Hi Ellen,

    Super Artikel und Super Plugin.
    Mein Theme wollte damit zwar nicht ganz koope­rieren aber dank Dir hab ich mich so lange mit den Dateien beschäf­tigt das ich am Ende alles manuell ein­stellen konnte ;-)

    Mit dem Plugin muss ich mich dann noch mal näher befassen , es wollte die ein­zelnen Wörter nicht richtig aus­lesen, da muss ich irgendwo was über­sehen haben.

    werd ich schon noch finden :o)

    LG

    Regina

  13. Christian

    Hallo zusammen, eine Frage: Ich kann zwar mit dem Plugin die mo-Datei erstellen, aller­dings tut sich danach nichts auf der Webseite. Im Ordner »lan­guages« des zu über­ar­bei­tenden 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, ent­hält ja die »Phrase« »lan­guages« (in blau). Muss ich den Ausruck ersetzen? UNd wenn ja, womit?

    Besten Dank!

  14. mac

    Hallo Ellen und zu allerst mal vielen Dank für den wirk­lich 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 deut­sche Über­set­zung zu ersetzen.

    Und ich nehme an, wenn ich es richtig machen möchte, komme ich an dem hier von dir beschrie­benen Weg nicht vorbei, oder?

    Gruß und schönen Abend
    Matthias

  15. Frank

    Bei mir Zeigt WP 3.3.1 nach einiger Zeit »CodeStyling Localization - Zugriffsfehler»
    Kann mir jemand helfen, was kann ich tun???

  16. Pingback: Lest über Cyberspace-Hippies | Der Miraimist

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.

*


Top