Blog-Trainer

WordPress-Seminare seit 2006

child-theme-2013

WordPress Child-Theme mit Sprachdatei – einfach erklärt

| 43.973 mal gelesen |

Wenn Sie für Ihr WordPress-Theme Änderungen am Stylesheet oder an den PHP-Dateien planen, sollten Sie dies immer an einem „Child-Theme“ und nicht am vorhandenen „Parent-Theme“ vornehmen. Bei einem „internationalisierten“ Theme müssen Sie oft auch Änderungen an der deutschen Sprachdatei vornehmen, die zusammen mit dem „Parent-Theme“ installiert wurde. Auch diese Änderungen sollten Sie nicht am Original, sondern am Ableger (dem „Child“) erledigen.

Der Hauptgrund für diese Vorsichtsmaßnahme liegt auf der Hand: Auch die Theme-Designer produzieren hin und wieder Updates für ihr Theme. Und so könnten bei einem Update alle Ihre Änderungen mit einem einzigen Klick versehentlich überschrieben werden. Das gilt auch für die geänderten Sprachdateien. Besonders „gefährlich“ ist das bei Verwendung eines der Standardthemes (Twenty Ten, Twenty Eleven, Twenty Twelve oder Twenty Thirteen), denn deren deutsche Sprachdateien liegen nicht einmal im jeweiligen Themeordner, sondern im Ordner wp-content/languages/themes. Kein guter Ort, denn dort werden sie garantiert beim nächsten WordPress-Update „übergebügelt“.

4 Schritte zum Child-Theme mit eigener Sprachdatei

In diesem Artikel zeige ich Ihnen, wie Sie für jedes beliebige Theme ein Child-Theme anlegen und mit einer eigenen, „überschreibungssicheren“ Sprachdatei versehen. Ich zeige das hier am Standard-Theme Twenty Thirteen.

Das Verfahren funktioniert aber für jedes Theme. Mein Child-Theme soll den Namen Zwanzigdreizehn tragen, wobei der Name frei wählbar ist.

child-theme-2013

Datei screenshot.png, 600 x 450 Pixel.

Unser künftiges Child-Theme mit Sprachdatei benötigt folgende Dateien:

  • screenshot.png
    Diese PNG-Datei sollte 600 Pixel breit und 450 Pixel hoch sein. Sie können sie mit jedem beliebigen Grafikprogramm erstellen.

Der Zweck dieser Datei ist es, dass sie im Auswahlmenü Design → Themes angezeigt wird. Deshalb muss der Name screenshot.png exakt stimmen. Es muss aber natürlich kein wirklicher Screenshot unseres Themes sein.

  • de_DE.po und de_DE.mo
    Dieses Pärchen aus PO-Datei und MO-Datei sind die Sprachdateien unseres Themes. Sie dürfen nicht mit den gleichnamigen Sprachdateien von WordPress verwechselt werden! Bei allen ins Deutsche übersetzten Themes sind beide Dateien in der ZIP-Datei enthalten, die Sie beim Download oder Kauf des Themes erhalten haben.
Wenn Sie jedoch ein Standard-Theme wie Twenty Thirteen als Parent-Theme verwenden wollen, downloaden Sie zunächst eine Variante der aktuellen deutschen Sprachdateien und entpacken Sie diese lokal. Die Sprachdateien der Standard-Themes finden Sie im Ordner themes. Entnehmen Sie dort die beiden gewünschten Dateien und benennen Sie diese wie folgt um:
twentythirteen-de_DE.po → de_DE.po
twentythirteen-de_DE.mo → de_DE.mo

Falls Sie an den Sprachdateien Änderungen machen möchten, so ist jetzt ein guter Zeitpunkt dafür. Ändern Sie mit einem PO-Editor alle unschönen und falschen Übersetzungen in der PO-Datei. Ich korrigiere z.B. immer das deppenhafte „Hinterlasse einen Kommentar“ (eine wörtliche und somit falsche Übersetzung von „Leave a comment“) zu „Schreibe einen Kommentar“. Beim Speichern der PO-Datei wird automatisch auch die MO-Datei gespeichert.

  • style.css
    Das Stylesheet eines Child-Themes besteht in der einfachsten Form aus nur fünf Zeilen. Kopieren Sie also diese fünf Zeilen in eine leere Datei und speichern Sie sie mit einem Texteditor (nicht Word!) unter dem Namen style.css ab.

/* Theme Name: zwanzigdreizehn Template: twentythirteen */ @import url("../twentythirteen/style.css");

Natürlich ersetzen Sie den Theme-Namen zwanzigdreizehn durch den Wunschnamen Ihres Child-Themes und das Template twentythirteen an beiden(!) Stellen durch den Namen Ihres Parent-Themes. Achten Sie dabei auf Kleinschreibung!

Das Importieren (Zeile 5) des Style-Sheets des Parent-Themes in das Style-Sheet des Child-Themes hat gegenüber dem kompletten Kopieren den Vorteil, dass Sie im Child-Theme nur solche Schriftarten, Farben, Abstände usw. definieren müssen, die vom Style des Parent Themes abweichen. Solche Änderungen und Ergänzungen folgen dann ab Zeile 6 nach der Import-Anweisung.

  • functions.php
    Legen Sie nun eine weitere leere Datei an, kopieren Sie dort die folgenden Zeilen hinein und speichern Sie diese mit einem Texteditor (nicht Word!) unter dem Namen functions.php ab:

<?php function my_child_theme_setup() { load_child_theme_textdomain( 'twentythirteen', get_stylesheet_directory() ); } add_action( 'after_setup_theme', 'my_child_theme_setup' ); ?>

Hier tauschen Sie nur den Namen des Parent-Themes twentythirteen gegen den Namen Ihres verwendeten Parent-Themes aus.

Durch die Funktion load_child_theme_textdomain() erreichen Sie, dass WordPress die Sprachdatei de_DE.mo im Ordner unseres Child Themes sucht, und nicht im Parent-Theme.

So, nun sind Sie fast fertig. Falls Sie es noch nicht getan haben, installieren Sie jetzt das Parent-Theme (in meinem Beispiel twentythirteen) auf dem Server. Das Child-Theme zwanzigdreizehn wird nicht ohne das Parent-Theme laufen, da es alle im Child-Theme nicht angelegten Dateien immer aus dem Parent-Theme laden will.

Legen Sie nun lokal einen Ordner für Ihr Child-Theme an, z.B. mit den Namen zwanzigdreizehn. Legen Sie die vier erstellten Dateien screenshot.png, de_DE.mo, style.css und functions.php hinein. Die PO-Datei de_DE.po ist später auf dem Server nicht erforderlich, würde aber auch nicht stören.

Kopieren Sie nun den Child-Theme-Ordner per FTP auf Ihren Server in das Verzeichnis wp-content/themes, direkt neben den Ordner Ihres Parent-Themes. Falls Sie die FTP-Daten Ihres Servers nicht zur Hand haben, können Sie den Child-Theme-Ordner zwanzigdreizehn natürlich auch zippen und die ZIP-Datei zwanzigdreizehn.zip über Design → Themes → Themes installieren → Hochladen auf den Server bringen.

Ist das Child-Theme hochgeladen, müssen Sie es nur noch unter Design → Themes aktivieren.

design-themes

Künftige Änderungen Ihres Style-Sheets fügen Sie wie oben beschrieben ab Zeile 6 ein. Wollen Sie andere PHP-Dateien Ihres Themes ändern (z.B. die header.php), so kopieren Sie diese von Ihrem Parent-Theme in den Child-Theme-Ordner und nehmen die Änderungen nur im Child-Theme-Ordner vor.

Tipp: Besuchen Sie unseren Workshop “Professionelle Websites mit WordPress” jeden Monat in Berlin, Hamburg, Hannover, Düsseldorf, Köln, Frankfurt, Stuttgart, München, Nürnberg und Leipzig!

WordPress Child-Theme mit Sprachdatei - einfach erklärt auf Facebook teilen
WordPress Child-Theme mit Sprachdatei - einfach erklärt auf Twitter teilen
WordPress Child-Theme mit Sprachdatei - einfach erklärt auf Google Plus teilen
WordPress Child-Theme mit Sprachdatei - einfach erklärt auf Xing teilen
WordPress Child-Theme mit Sprachdatei - einfach erklärt auf LinkedIn teilen

Das könnte Sie auch interessieren:

38 Kommentare

  1. Hallo,

    eine sehr gute Anleitung, zumal auch die Sprachdateien berücksichtigt werden. An dem „Hinterlasse einen …“ verzweifeln ja einige Nutzer im Netz. Ich habe das bisher über php korrigiert, ab jetzt gleich in der Sprachdatei!

    Viele Grüße

    Stephan

  2. Hallo Hr. Wenzlaff,

    vielen Dank für die Anleitung – habe ich gleich probiert, funktioniert.
    Ich habe außerdem zahlreiche Plugin-Dateien, die ich sprachlich ebenfalls sehr gerne „updatesicher“ angepasst hätte – gibt es da ebenfalls eine Möglichkeit?
    Sehr neugierig!

    Thomas Stracke

  3. Pingback: WordPress-Kommentare entfernen (auf allen Seiten)

  4. Danke für die super verständliche Anleitung, bloss: Bei mir funktioniert das nicht. Habe es (für das Theme twentythirteen) mit den verschiedenen Versionen von 3.6 bis 3.8.1 ausprobiert, aber die Sprache bleibt Englisch. Vorschläge herzlich willkommen…

  5. Nein, das ist Englisch. Der Laie staunt und fragt: Wie zum Teufel stellt man das auf Deutsch um?

    • Du brauchst einen Ordner wo-content/languages der die deutschen Sprachdateien beheebergt und einen Eintrag in Zeile 61 der wp-config.php Leider kann ich das nachts um elf am Smartphone nicht auswendig. 😉

  6. *Grins*

    Ich kann warten…

    • So, jetzt noch mal von vorne: Ein deutsches WordPress lädst du dir entweder unter http://de.wordpress.org/ oder unter http://wpde.org/download/ herunter, aber niemals (!) unter http://wordpress.org/download/ ,weil dort keine Sprachdateien enthalten sind.

      Falls Du doch das englische ohne Sprachdateien heruntergeladen und installiert hast, so ist das kein Beinbruch. Du entpackst lokal ein deutsches WordPress und kopierst den Sprachordner wp-content/languages per FTP an die gleiche Stelle auf deinen Server.

      Jetzt mußt Du nur noch eine Zeile in deine wp-config.php einfügen, und zwar die Zeile

      define(‚WPLANG‘, ‚de_DE‘);

      Danach spricht dein WordPress im Backend und im Frontend deutsch.

      Soweit die Basics.

      Wie gesagt, die Kommentare passen hier alle nicht zum obigen Artikel. Der ist eher für fortgeschrittene Nutzer gedacht.

  7. Super Anleitung, danke!!! Ein Problem hab ich aber mit einem englischen Plugin. Da fehlen einige Texte und somit auch die Uebersetzung. Muss ich die ‚*.pot‘ Datei aendern? Ich kann bei der ‚*.po‘ Datei ja nichts anfuegen oder mach ich da was falsch?

    • Du kannst mit Poedit die alte .pot bzw. .po Datei bearbeiten und speichern. Dann musst Du noch die geänderte Datei hochladen. Der Name der neuen Datei muss auf dem Server natürlich dem alten Namen entsprechen.

      • @thomas: Genauso lernen und üben es die Teilnehmer in unseren Seminaren.

        Noch eine Bitte an alle Leser: Bitte kommentieren Sie hier nur mit Ihrem bürgerlichen Namen („Klarnamen“). Kommentare mit Pseudonym oder mit gefakter E-Mail-Adresse a la freddy.mercury@hotmail.com lösche ich normalerweise sofort!

  8. Pingback: WP Child-Themes und Sprachdateien | Cowboy of Bottrop

  9. Hallo,
    danke für die Anleitung, soweit passt das auch. Allerdings bedient sich Twentythirteen bei mir aus zwei Sprachdateien. Einmal aus „twentythirteen-de_DE.mo“ unter wp-content>languages>themes und einmal aus „de_DE.mo“ direkt aus wp-content>languages.

    Nach Ihrer Anleitung habe ich alles aus twentythirteen-de_DE.mo ändern und einbinden können. Aber was mache ich mit den anderen Sachen?
    (Das „Hinterlasse einen Kommentar“ über dem Kommentarfeld kommt bei mir aus der de_DE-Datei, wohingegen derselbe Text auf der Startseite unter den einzelnen Posts ohne Kommentar aus der anderen Datei kommt…)

    Danke & Grüße,
    Jens

  10. Pingback: WordPress: Hatch Theme mit deutscher Sprachdatei | Markus Zollinger

  11. Hallo, danke für die tolle Anleitung! Ich bin gerade dabei ein Child-Theme zu erstellen und habe folgende Frage dazu: ich nutze twenty-twelve, die Sprachdateien im Link zu den Paketen beginnen aber bei twenty-thirteen. Wo finde ich die .po und .mo Dateien für twenty-twelve?

    Liebe Grüße,
    Monika

    • Hallo Monika,

      Stimmt. Ich kann Ihnen aber gern die deutschen Sprachdateien von twentytwelve, die mit WordPress 4.0 ausgeliefert wurden, per E-Mail schicken. Die sollten immer noch problemlos funktionieren.

      Viele Grüße zurück,
      Karl-Heinz

      • Das wäre ganz toll, wenn Sie mir die deutschen Sprachdateien zukommen lassen könnten!

        • Hallo Monika,
          die Sprachdateien kannst Du hier herunterladen:

          Dort gibt es sogar beide Varianten: mit „Du“ und mit „Sie“.
          Viel Erfolg!
          Catharina

        • Hallo Catharina, der Download-Bereich auf wpde.org enthält seit WordPress 4.1 nicht mehr die Sprachdateien für das 2012-Theme. Ich denke, dass das Monikas Problem ist.

          Hallo Monika, ich schicke die 2012er Sprachdatei morgen (Montag), wenn ich wieder im Büro bin, perMail.

  12. Ah… ich stelle gerade fest, dass es bei mir das gleiche Problem ist, wie bei Jens Jacobsen (Kommentar weiter oben). Dieses blöde „Hinterlasse eine Antwort“ kommt auch bei mir nicht aus der Theme-Übersetzungsdatei von TwentyTwelve, sondern aus der Sprachdatei de_DE direkt im Verzeichnis languages in wp-content.

    Also stelle ich mal die gleiche Frage wie Jens: Wie kann ich diese Texte ändern mit meiner individuellen Sprachdatei?

    Danke im Voraus für die Hilfe 🙂

  13. Hallo Karl-Heinz, danke, aber ich habe mich wohl blöd ausgedrückt 😉
    Wie ich die Dateien ändern kann, ist mir klar. Ich benutze den gleichen Editor. Nur wenn ich die Dateien direkt dort ändere, dann werden sie ja bei dem nächsten Update wieder überschrieben. Mir ging es darum, wie ich sie z.B. in meinem Theme-Ordner anpassen kann und das dann Vorrang hat vor den Dateien im languages-Ordner. Liebe Grüße, Catharina

    • Sprachdateien in einem Child-Theme überschreibt WordPress nicht, auch nicht bei einem Update eines Standard-Themes. Deshalb ist die im obigen Artikel beschriebene Vorgehensweise immer noch korrekt.

      • Ja. Schon klar. Stimmt. Aber das gilt nur für die folgende Konstruktion (oder bin ich jetzt total auf dem Holzweg?):

        Sprachdatei im Child-Theme ersetzt die Datei im Ordner /wp-content/languages/themes/.
        Alles was dort übersetzt ist funktioniert mit der beschriebenen Vorgehensweise.

        Es gibt aber ein paar Übersetzungen, die WP nicht aus dem Theme-Sprachpaket zieht, sondern direkt aus der Datei de_DE im Ordner /wp-content/languages. Und das gilt weiterhin und wird durch die Sprachdatei im Child-Theme-Ordner nicht überschrieben.

        Ich hoffe, ich habe jetzt verständlich erklärt, was das Problem ist… ?

        • @Catharina: Es ist richtig, dass sich die meisten Themes sowohl aus der zentralen Sprachdatei wp-content/languages/de_DE.mo als auch aus der eigenen Sprachdatei des Themes bedienen. Und es ist auch richtig, dass WordPress im Moment sehr „ruppig“ mit der „zentralen“ Sprachdatei umgeht, was ich nicht begrüße.

          Im Moment wird selbst bei kleinsten Updates von WordPress und (besonders schlimm) beim Installieren neuer Plugins geprüft, ob die zentrale Sprachdatei den gleichen Stand wie die „offizielle“ auf wordpress.org hat. Wenn nicht, dann wird die „zentrale“ Sprachdatei brutal überschrieben und alle individuellen Änderungen gehen verloren. Das betrifft übrigens auch die auf wpde.org bereitgestellte „Sie“-Version der zentralen Sprachdatei, was besonders ärgerlich ist, weil damit Business-Websites plötzlich wieder duzen.

          Bei WordPress 4.0 gab es noch einen Workaround, indem man vor Updates und Plugin-Installationen die Website kurz auf Englisch stellte und nach dem Update wieder auf Deutsch. Leider funktioniert das seit WordPress 4.1 auch nicht mehr, weshalb bei obigem Artikel gerade die Leserzahlen explodieren.

          Was kann man also machen?

          1. Schritt: Automatische Updates komplett deaktivieren.

          2. Schritt: Nach jedem manuellen Update UND nach jeder Plugin-Installation die individuell angepasste Sprachdatei wieder per FTP auf den Server kopieren.

          Einen anderen Weg sehe ich leider im Moment nicht, da in der Gemeinde der WP-Core-Entwickler offenbar die „brutalen Automatisierer“ die Oberhand haben.

  14. Hallo Karl-Heinz,

    danke für Deine Antworten. Schade, aber dann muss ich das wohl auf dem von Dir beschriebenen Wege machen. Das mit dem „Kommentar hinterlassen“ war übrigens genau mein Thema, weshalb ich mich auf die Suche nach einer Lösung gemacht hatte. Komischer Weise ist das teilweise in der Theme-Sprachdatei, teilweise in der zentralen Datei. Ich habe jetzt in einem Fall direkt übereinander stehen „Schreibe einen Kommentar“ und darunter dann „Hinterlasse eine Antwort“. Großartig 😉

    Da wir ohnehin alle WP-Seiten mit GIT überwachen und versionieren, fällt das zum Glück sofort auf, wenn die zentrale Datei durch ein Update verändert wird, und ich kann ganz einfach einen revert auf die entsprechende Datei durchführen.

    Sonnige Grüße aus dem Norden
    Catharina

  15. Sehr geehrter Hr. Wenzlaff,

    Vielen Dank für Ihre sehr gute Anleitung. Ich habe Ihre Ratschläge befolgt und meine Installation arbeitet wie gewünscht.

    Danke auch besonders für die „Sie“-Form, die Sie gewählt haben. Ich bin „sick and tired“, überall mit Du angeredet zu werden. Nach 20-jährigem Auslandaufenthalt bin wieder in Deutschland und muss dieses rüpelhafte „Immigrantendeutsch“ oder Kinderdeutsch über mich ergehen lassen.
    Auf meiner Webseite werden die Besucher höflich angesprochen.

    Am liebsten wäre es mir, wenn ich die Administratorseite mit Dashboard in Englisch lassen könnte und die öffentlichen Seiten in deutsch, doch ich das ist wohl zu viel verlangt.

    Mit freundlichen Grüßen
    Klaus Bärtges

  16. Hi,

    vielen Dank für die ausführliche Anleitung! Leider klappt es bei mir einfach nicht. Ausgangssituation: Theme und Child-Theme schon länger vorhanden, jetzt soll eine Übersetzung her. *.po und *.mo aus dem Parent-Theme geklaut, geändert und ins Child-Theme hochgeladen (sowie functions.php im Child geändert) > keine Änderungen im Frontend sichtbar! Ich habe keine Idee, woran das liegen könne, Sie vielleicht? Vielen Dank!

    Selket Bendereit

    • Hi,
      ich habe genau das gleiche Problem?
      Kann es daran liegen, dass jetzt im parent-theme keine Übersetzungsdatei mehr vorhanden ist? Außer der .pot-Datei?
      Ich wäre für eine Antwort auch sehr dankbar! 🙂
      Daniel

      • @Daniel: Verwendest du eines der älteren Standard-Themes 2010, 2011 oder 2012? Da ist es in der Tat schwierig, die deutschen Sprachdateien noch im Internet zu finden, da bei den Downloads auf wordpress.org keine dabei sind. Schreib mal, um welches Theme es geht, vielleicht kann ich Dir helfen.

  17. Hallo Harl-Heinz,

    danke für das schöne Tutorial 🙂

    Nur leider funktioniert es bei mir nicht so wie es soll.
    Wenn ich eine de_DE.mo im Parent-Theme Verzeichnis /languages bereitstelle, klappt es mit den Übersetzungen (z.B. bei der Breadcrumb-Navigation) wird aus „You are here“ –> „Sie sind hier“.

    Wenn ich aber die gleiche de_DE.mo ins Child-Theme auslagere (und den entsprechenden Code-Abschnitt in die functions.php eintrage), läuft’s nicht.

    Weil ich eine kleine Individual-Anpassung habe, ist die functions.php im Child-Theme nicht leer, was aber nicht stören sollte.

    Den Namen des Parent-Themes (astrum) habe ich in dem Code-Abschnitt richtig angegeben.

    Nun bin ich etwas ratlos, weil ich Deine Anleitung Schritt für Schritt durchgearbeitet habe.