Navigation überspringen

WordPress: »Januar« auf »Jänner« ändern

28.2.2022·Kommentare:  0Retweets:  1 1

Reden wir mal über echte WordPress-Probleme: »Januar«!? Das geht im österreichischen Sprachgebrauch gar nicht! Mir ist dieses Problem, dass WordPress den Monat für unsere Breitengrade immer untypisch übersetzt, über die Jahre immer wieder aufgefallen, konnte mich aber nie dazu aufraffen, es in Angriff zu nehmen – bis vor Kurzem.

Eine kurze Google-Suche brachte einen Lösungsansatz, der das Problem aber nur halb löst (dazu gleich mehr):

function replace_text( $translated ) {
$text = array(
'Januar' => 'Jänner',
);
$translated = str_ireplace( array_keys($text), $text, $translated );
return $translated;
}
add_filter( 'gettext', 'replace_text' );

Mit dieser Funktion, die man z.B. einfach in der functions.php des Themes unterbingen kann, kann man in einem Array beliebige Wörter eintragen, die durch ein anderes ersetzt werden sollen. Im konkreten Beispiel also »Januar« durch »Jänner«.

Das Problem

Das Problem dabei? Man muss für diese Funktion die korrekten Hooks nutzen. Im Thread auf Stackexchange wird gettext verwendet. Das hilft einem aber nicht, wenn man konkret Monatsnamen in Datumsangaben ersetzen will.

Die Lösung

Um z.B. auf meinen Archivseiten in der Überschrift »Jänner« statt »Januar« auszugeben sind weitere Hooks (in dem Fall the_time) notwendig. Das vollständige Code-Beispiel (inkl. weiterer »Datumshooks«) sieht dann so aus:

function replace_text( $translated ) {
$text = array(
'Januar' => 'Jänner',
);
$translated = str_ireplace( array_keys($text), $text, $translated );
return $translated;
}
add_filter( 'get_the_date', 'replace_text' );
add_filter( 'the_date', 'replace_text' );
add_filter( 'the_time', 'replace_text' );

Wenn auch das nicht reicht: str_replace

Selbst diese Hooks haben bei mir das Problem nicht überall behoben. Wer, wie ich, selbst viel im Template herumdoktert, muss bei manuell generierten Buttons (wie z.B. meine Blätter-Buttons im Archiv, die den Monatsnamen als Titel haben) evtl. mit klassischem PHP (z.B. mit str_replace) nachhelfen, um wirkliche alle Stellen zu erwischen.

Eure Meinung

Was meint ihr? Nervt euch die Standardausgabe »Januar« auch? Habt ihr Verbesserungsvorschläge oder einen besseren Fix? Über Feedback dazu freue ich mich wie immer in den Kommentaren!


Neueste Artikel

Schlagwörter

· · ·


Kommentieren

Am liebsten hier, gerne aber auch auf Twitter und Facebook.
Ich freue mich über jeden Kommentar und antworte gern innerhalb von 24 Stunden.