Ein WordPress-Theme lokalisieren – was bedeutet das eigentlich? Im Grunde nichts anderes, als das man seinen Blog in verschiedenen Sprachen anbietet. Das bedeutet nicht, dass die Inhalte mehrsprachig zur Verfügung gestellt werden, sondern die “statischen” Texte, auf die man sonst keinen Einfluss hat.
Ein Beispiel; In vielen Themen ist die Zeile zu finden: “posted by Admin”. Daraus wollen wir gerne “geschrieben von Admin” machen… Wie das geht ohne die Texte “starr” im Theme zu ändern, möchte ich in diesem Tutorial erklären.
Warum ein Theme lokalisieren und nicht “starr” übersetzen?
Die Vorteile eines lokalisiertem Themes liegen in der Flexibilität, die diese Option mit sich bringt. Mein aktuelles Theme habe ich beispielsweise zur Übersetzung vorbereitet, und wurde kurz nach Veröffentlichung in französisch übersetzt. Somit wurde es für den französisch sprechenden Teil dieser Welt etwas interessanter.
Auch wenn dies natürlich mit etwas Aufwand verbunden ist, hätte sich wahrscheinlich niemand die Arbeit gemacht, die Texte im Quellcode des Themes zu übersetzen.
Vorbereitung
Nach welchen Kriterien wird ein Text übersetzt?
Um dem Theme zu sagen, dass hier ein Text steht, der später flexibel übersetzt werden soll / kann, muss dieser entsprechend gekennzeichnet werden. Dazu wird der Text in eine einfache PHP-Anweisung geschrieben und für die Übersetzung “freigegeben”. Zur Verfügung stehen uns hierfür zwei einfache Parameter.
1 2 | _e() //für einen einfachen String - also in unserem Fall einfacher Text und __() //für ein Verkettung von Strings und die Übersetzung innerhalb von Funktionen. |
Das _e() steht übrigens nicht für “englisch” oder “einfach”, sondern sagt WordPress, dass hier eine Gettext-Datei angesprochen – also übersetzt – werden soll.
Den Quellcode im Theme für die Übersetzung vorbereiten
Nachdem wir nun wissen, wie die zu übersetzenden Texte gekennzeichnet werden sollen, müssen wir nun die entsprechenden Passagen im Quellcode des Themes finden und ergänzen.
So wird aus
diese Zeile
1 | <h2> <?php echo _e('Sorry, no posts found...', 'ThemeName'); ?> </h2> |
Wichtig! Im obigen Beispiel ist zu sehen, dass in der PHP-Zeile der Parameter ‘ThemeName’ mit aufgerufen wird. Dieser muss auch dort stehen, da die Übersetzung sonst nicht einwandfrei funktionieren wird. Dazu aber später mehr…
Für die Übersetzung einer Funktion sieht das Ganze dann so aus:
Beispiel einer Archiv-Überschrift
1 | <h2> <?php printf(__('Archive for the ‘ %s ’ Category', 'ThemeName'), single_cat_title('', false)); ?> </h2> |
Auch hier muss der Parameter ‘ThemeName’ mit angegeben werden.
Diese Prozedur muss in allen Theme-Dateien fortgesetzt werden, um auch keine Passage zu vergessen. Bei einem vorhandenen Theme ist dies wahrscheinlich etwas mühseliger als bei einem, das gerade erstellt wird.