Wie ändert man die Sprachdatei, die von _e function benutzt wird

Ich versuche, meine eigene Sprachumschaltung für meine WordPress-Website zu machen. Ich _e alle Labels mit den _e und ähnlichen functionen. Ich vermute also, dass ich nur das von WordPress verwendete Gebietsschema ändern muss. Wie kann ich das programmatisch machen?

Im Idealfall, wenn ein Benutzer auf die gewünschte Sprache klickt, wird “dieser Code” ausgeführt und WordPress verwendet die entsprechende .mo Datei für die Übersetzung.

Solutions Collecting From Web of "Wie ändert man die Sprachdatei, die von _e function benutzt wird"

Eigentlich müssen Sie den ‘locale’ Filter einbinden, um die gewünschte Sprache einzustellen:

 add_filter('locale', function($locale) { return esc_attr($_GET['language']); }); 

Dann müssen Sie in den Links Ihres Switches die Sprachvariable übergeben:

 XX 

Wobei xx_XX der Gebietsschemacode für Sprache XX ist

Zusätzlich zu @maximes Antwort fand ich, dass die folgende Methode auch funktioniert. Ändern Sie einfach die globale Variable $locale . Dies wird die meisten Übersetzungen beheben. Wenn Sie das Gebietsschema für bestimmte load_textdomain() angeben möchten, rufen load_textdomain() einfach die function load_textdomain() auf, die auf die entsprechende .mo Datei verweist.

 $locale = 'en_US'; if ( file_exists( WP_LANG_DIR . '/' . $locale . '.mo' ) ) { load_textdomain( 'my_domain', WP_LANG_DIR . '/' . $locale . '.mo' ); } 

Nun, im obigen Beispiel, wenn Ihr languages Ordner die Datei en_US.mo enthält, können Sie en_US.mo .

Also, wenn du so etwas nennst,

 echo _e('Hello', 'my_domain'); 

Die entsprechenden Übersetzungen in Ihrer zugeordneten .po Datei werden wiedergegeben.

Eine ausführliche Erklärung finden Sie unter https://codex.buddypress.org/getting-started/customizing/customizing-labels-messages-and-urls/ .

Dies ist für BuddyPress gedacht, aber die Idee gilt allgemein.