So wechseln Sie die Sprache in WordPress „on-the-fly“

Lesezeit: 3 Minuten

Benutzer-Avatar
Xaver

Gibt es einen Weg wie switch_to_blog() zum Umschalten der Sprache in WordPress.

Etwas wie

global $locale
$currentLanguage = $locale;
switch_to_language('de_DE');

//do some action with german localisation

switch_to_language($currentLanguage);

Geht das generell mit WordPress?

Benutzer-Avatar
Xaver

Also habe ich endlich die Lösung gefunden. Die Funktion wird aufgerufen load_textdomain()

So wird es auf meiner Seite gemacht. Denken Sie daran, zu definieren LANGUAGE_PATH und die Sprache, in die Sie wechseln möchten $new_language. $your_domain ist die Textdomäne Ihres Plugins/Themas

//will output "Good Morning"
_e('Good Morning', $your_domain);

global $locale;
//save the current language for later
$current_language = $locale;
$new_language="DE_de";

//load the new text domain
load_textdomain( $your_language_domain, LANGUAGE_PATH."https://stackoverflow.com/".$your_domain.'-'.$new_language.'.mo' );

//do some action with the new localisation
//will output "Guten Morgen"
_e('Good Morning', $your_domain);

//go back to the previous language
load_textdomain( $your_language_domain , LANGUAGE_PATH."https://stackoverflow.com/".$your_domain.'-'.$current_language.'.mo' );

Es hat eine Weile gedauert, diese Methode im Kern zu finden. Lesen Sie mehr über diese Funktion auf die Codex-Site

  • Wisst ihr ob das noch geht? Ich selbst bekomme es nicht zum Laufen. Ich habe eine Seite auf Schwedisch, wo jede Textzeichenfolge durch _e() oder __() auf Englisch läuft. Auf bestimmten Beiträgen/Seiten möchte ich den gesamten Text auf Englisch und nicht auf Schwedisch rendern, also versuche ich nur, das zu tun, was Sie oben tun, aber die Ausgabe wird nicht geändert. Ich verwende ein untergeordnetes Thema, wenn sich dadurch etwas ändert?

    – Powerboje

    12. September 2017 um 10:52 Uhr

  • Sieht so aus, als ob es nicht funktioniert, wenn Sie zurück zu wechseln en_US. Du könntest dich ändern $your_domain in eine zufällige Zeichenfolge, sodass die Übersetzung nicht registriert wird und das Fallback – Englisch verwendet

    – Xaver

    13. September 2017 um 12:13 Uhr

  • So habe ich es letztendlich gelöst 😛 Es ist nicht perfekt – und funktioniert offensichtlich nur für Englisch – aber zumindest funktioniert es vorerst.

    – Powerboje

    13. September 2017 um 14:40 Uhr

Ich fürchte, dafür brauchst du ein Plugin. WordPress macht das nicht out of the box. WPML ist normalerweise das beliebteste mehrsprachige Plugin für WordPress, Sie sollten es sich ansehen 🙂

  • Aber wie macht ein Plugin das? Ich brauche die eigentlich nicht switch_to_language() Funktion. Wenn ich nur das globale $local ändere, funktioniert es nicht

    – Xaver

    21. Juni 2013 um 8:52 Uhr

  • Sie können eine definierte Konstante nicht ändern; das wird nicht funktionieren. Sie können die Locale-Variable danach mit dem ‘locale’-Filter ändern. Siehe hier: wordpress.stackexchange.com/questions/52419/…

    – LucP

    24. Juni 2013 um 21:20 Uhr


  • Überprüfen Sie meine letzte Antwort. So habe ich es gemacht und so funktioniert es. Ich muss die Sprache nur vorübergehend umstellen und nicht für die gesamte Anfrage

    – Xaver

    27. Juni 2013 um 13:59 Uhr

  • Sie können add_filter verwenden, um die Sprache zu ändern, und dann remove_filter, um zur Standardeinstellung zurückzukehren …

    – LucP

    27. Juni 2013 um 20:18 Uhr

  • nicht, wenn der Filter bereits angewendet wurde – was in meinem Fall der Fall ist

    – Xaver

    28. Juni 2013 um 8:20 Uhr

1383500cookie-checkSo wechseln Sie die Sprache in WordPress „on-the-fly“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy