In einem der Blogs, die ich betreue wird Thematic eingesetzt. Vor kurzem wollte ich das Thematic Theme selbst aktualisieren, da es bereits einige Versionen alt war. Wir hatten aber damals den „Core“ von Thematic verändert, genauer gesagt die deutsche Überstetzungsdatei. Das war natürlich nicht sehr elegant und es rächt sich, weil man dann nicht gefahrlos ein Update installieren kann. Zuerst sah ich aber keine andere Lösung, als die Übersetzung zu sichern und nach einem Update auf die neue Thematic-Version die geänderte Übersetzungsdatei wieder in die neue Version zu kopieren.
Aber ich war mit dieser Lösung überhaupt nicht zufrieden. Bei meiner Arbeit mit WordPress arbeite ich NIE im Core. Sollte es zu einem Problem mal wirklich keinen HOOK geben, dann versuche ich nach Möglichkeit die Funktionalität aus dem Core zu kopieren um bei einem Update ohne Gefahr dieses einspielen zu können. Bei der Anpassung von Übersetzungen eines Themes ist das aber wieder eine andere Sache. Das geht leider nicht ohne weiteres. Verwendet man allerdings ein Theme-Framework wie Thematic, für das man ein Child-Theme erstellen kann, dann gibt es dazu eine recht einfache Lösung.
Die Problemstellung
Für den Blog wollten wir den String „Tag Archives:“ in „Schlagwort:“ übersetzen. Die normale Übersetzung hierfür in Thematic ist „Tag-Archiv:“. Der erste Anstz war wie schon erwähnt das Bearbeiten der originalen Übersetzungsdatei, was aber zu dem beschriebenen Update Problem führt.
Die Lösung
Seit der Einführung von Child-Themes gibt es die Möglichkeit auch eine Übersetzungsdatei für ein Child-Theme zu laden. Dazu wird die Funktion load_child_theme_textdomain() verwendet, die allerdings noch nicht in Codex dokumentiert ist. Als ersten Parameter erwartet die Funktion eine Domain, also einen String, der auch in den Übersetzungsfunktionen verwendet wird. Sehen wir uns dazu folgendes Beispiel an:
$content = __('Tag Archives:', 'thematic');
In diesem Beispiel ist der zu übersetzende String „Tag Archives:“ und die Domain ist „thematic“. Normalerweise verwendet man für sein Child-Theme eine eigene Domain, aber man kann auch die Domain „thematic“ verwenden. Genau das ist auch der Trick, um eine Übersetzung von Thematic zu überschreiben. Wir verwenden einfach eine eigene Child-Theme Übersetzungsdatei zum überschreiben bestehender Strings.
Der zweite Parameter der Funktion load_child_theme_textdomain()
ist optional und gibt den Pfad zur Übersetzungsdatei an. Wenn sich diese direkt in eurem Child-Theme-Ordner befindet, dann müsst ihr ihn nicht angeben. In unserem Blog haben wir aber einen Ordner „languages“ erzeugt, in dem die Übersetzungen liegen. Wir müssen daher den absoluten Dateipfad zu diesem Ordner angeben. Den absoluten Pfad zum Child-Theme Ordner liefert uns die Funktion get_stylesheet_directory(). Das einbinden unserer Übersetzungsdatei sieht also wie folgt aus:
load_child_theme_textdomain('thematic', get_stylesheet_directory().'/languages');
Das ist auch schon alles. Mit dieser einem Zeile in der Datei „functions.php“ eures Child-Themes könnt ihr eure eigene Übersetzungsdatei einbinden. Wie ihr seht verwende ich hier die Domain „thematic“ um auch die Übersetzungen von Thematic überschreiben zu können. Ihr müsst dazu auch nicht den gesamten Inhalt der Übersetzungsdatei aus Thematic in eure kopieren. Es reicht aus, wenn ihr nur die zu ändernden Strings einfügt. Ihr könnt selbstverständlich auch eigene Strings einfügen, die ihr eventuell in eurem Child-Theme verwendet. Dabei müsst ihr dann nur in der Übersetzungsfunktion ebenfalls „thematic“ als Domain angeben.
Ich hoffe, der Tipp konnte euch zeigen, was man mit Child-Themes alles machen kann und wieso die Verwendung eines Theme-Frameworks die Individualisierung eures Themes nicht unbedingt einschränkt. Mein Blog wird eventuell im Laufe des Jahres auch ein neues Design bekommen und mit den bisher gesammelten Erfahrungen zu Thematic, werde ich wohl auch hierfür auf ein Child-Theme setzen und nicht auf ein komplett eigenes Theme. Über Kritik und Kommentare würde ich mich wie immer sehr freuen.
[…] heruntergeladen werden. Mehr über das Einbinden eigener Sprachdateien gibt es in dem Artikel Lokalisierung von Child-Themes am Beispiel von Thematic auf seinem Blog zu […]