Template Name in WordPress übersetzen

Um den Namen eines Templates in WordPress anzupassen, muss man sich eines Tricks bedienen. Angenommen mein Template heißt „Frontpage“, ich möchte jedoch, dass bei deutschen Installationen stattdessen „Startseite“ angezeigt wird.

Zunächst muss ich mein Template vorbereiten. Im Template-Header der Datei page_frontpage.php daher folgendes einfügen:

<?php
/*
* Template Name: Frontpage
*/
__( 'Frontpage', 'sewid_example' );

Das sewid_example ist in diesem Fall die Text Domain und sollte entsprechend angepasst werden.

Der Grund, weshalb man das tun muss, ist einfach. Im Prinzip handelt es sich bei dem __()-Aufruf um den Aufruf der WordPress-eigenen Übersetzungsfunktion, dessen Ergebnis jedoch nicht ausgegeben wird. Dieser Aufruf wird jedoch von Parsern entdeckt, die die zu übersetzenden Strings zurückliefern sollen.

Ohne diesen Aufruf würde das „Fronpage“ hinter „Template Name:“ nicht in die Übersetzungsdatei (*.po) aufgenommen werden und würde daher nicht mit übersetzt werden.

Im nächsten Schritt muss die Text Domain in der Stylesheet-Datei des Plugins definiert werden:

[...]
Text Domain: sewid_example
[...]

Als letzter Schritt muss in die functions.php-Datei folgender Code aufgenommen werden:

//* Set Localization (do not remove)
load_child_theme_textdomain( 'sewid_akr', apply_filters('child_theme_textdomain', get_stylesheet_directory() . '/languages', 'mpp' ) );

’sewid_akr‘ muss dabei natürlich durch den Namen des entsprechenden Themes ersetzt werden. Wenn man nun mit Hilfe von PoEdit oder beispielsweise Loco Translate das Theme übersetzt, wird der „Frontpage“-String als zu übersetzender String entdeckt. Nachdem man die entsprechende *.po und *.mo-Datei erzeugt hat, wird bei der Auswahl des Template-Namens nun „Startseite“ statt „Frontpage“ angezeigt.

Schreibe einen Kommentar