WordPress: Eigene Übersetzungen in Thematic-Child-Themes

Ich habe einige deutschsprachige Textbausteine in meinem Thematic-Child-Theme „linuxfoo“ angepasst. Dazu benutze ich eine Datei mit eigenen Übersetzungen auf Basis der „de_DE.po“ in „Thematic“ selbst und übersetze diese mit dem Gettext-Werkzeug „msgfmt“. Das Verfahren wird nachfolgend im Einzelnen beschrieben.

Gettext-PO-Datei

Um die Übersetzungen, die ich anpassen will, zu definieren, erstelle ich eine Datei im gettext([1])-Fomat „.po“ und speichere sie in:

wp-content/themes/thematic-linuxfoo/languages/de_DE.po

In diese Datei trage ich solche Übersetzungen ein, die mir an der bei „Thematic“ mitgelieferten deutschen Übersetzung nicht gefallen oder die ich aus gestalterischen oder technischen Gründen ändern muss (zum Beispiel weil sie nicht in das generelle Wording des Auftritts passen, oder um sie kompakter darstellen zu können).

Original-Übersetzungen in „Thematic“

Die deutsche Originalübersetzung von Thematic befindet sich in

wp-content/themes/thematic/library/languages/de_DE.po

Dort findet sich zum Beispiel

#: library/extensions/content-extensions.php:339
#: library/extensions/header-extensions.php:103
msgid "Category Archives:"
msgstr "Kategorien-Archiv:"

Das ändere ich in meiner eigenen „de_DE.po“ zu

#: library/extensions/content-extensions.php:339
#: library/extensions/header-extensions.php:103
msgid "Category Archives:"
msgstr "Thema: "

Diese Übersetzungen müssen nun in das (schnell verarbeitbare, binäre) Maschinenformat „.mo“ übersetzt werden. Dazu wird das Shell-Werkzeug „msgfmt“ benötigt, das Teil der Software „gettext“ ist (erhältlich z.B. als Debian-Paket gleichen Namens):

languages$ msgfmt -o de_DE.mo de_DE.po

Nun muss ich mein Thematic-Child-Theme dazu bringen, diese Übersetzunegn zu verwenden. Dazu wird ein Eintrag wie folgt in der Datei „thematic-linuxfoo/functions.php“ benötigt:

function linuxfoo_setup() {
    load_child_theme_textdomain('thematic', get_stylesheet_directory().'/languages' );
}
add_action('after_setup_theme', 'linuxfoo_setup' );

Und das war’s. Viel Spass beim Um-Übersetzen! 🙂

Weitere Infos: