get_locale () verhält sich merkwürdig in der gleichen functions.php Datei

Ich entwickle für meinen Kunden ein mehrsprachiges Webportal – in Englisch und Bengali. Anstatt Multisite zu verwenden, habe ich das Polylang Plugin installiert. Es funktioniert gut über die Website.

Für verschiedene CSS-Stile und verschiedene Schriftgrößen lade ich ein separates Stylesheet mit:

function styles_and_scripts(){ wp_register_style( 'main-style-bangla', get_template_directory_uri() . '/style-bangla.css', '', '', 'screen' ); // load seperate stylesheet for Bangla if( get_locale() == 'bn_BD' ) { wp_enqueue_style( 'main-style-bangla'); } } add_action( 'wp_enqueue_scripts', 'styles_and_scripts' ); 

Es funktioniert gut und lädt verschiedene CSS wenn ich nach Bengali umschalte.

Ich versuche die gleiche Methode, um Filter für bengalische Ziffern und Strings usw. mit diesen functionen und Filtern anzuwenden. Also mache ich so etwas in meiner functions.php :

 if( get_locale() == 'bn_BD' && !is_admin() ) { add_filter( 'get_the_time', 'make_bangla_number' ); add_filter( 'the_date', 'make_bangla_number' ); add_filter( 'the_time', 'make_bangla_number' ); add_filter( 'get_the_date', 'make_bangla_number' ); add_filter( 'get_the_time', 'make_bangla_months' ); add_filter( 'the_date', 'make_bangla_months' ); add_filter( 'the_time', 'make_bangla_months' ); add_filter( 'get_the_date', 'make_bangla_months' ); } 

Aber es funktioniert nicht. Ich habe versucht herauszufinden, warum?

 $my_locale = get_locale(); var_dump( $my_locale ); 

Es gibt ” en_US ” in beiden Sprachen zurück. Sie können das Bild unten zum Beweis sehen: Bildbeschreibung hier eingeben

Warum verhält sich dasselbe Bit in der gleichen functions.php Datei in verschiedenen Fällen seltsam? Ich habe dann die Platzierung des Codes direkt nach dem Enqueue-Teil geändert, aber es funktioniert immer noch nicht. 🙁

AKTUALISIEREN

Ich habe eine function aus der Polylang-Dokumentation gefunden: ( Quelle ^ ) ruft die aktuelle Sprache ab.

Ich habe versucht var_dump(pll_current_language()); es gibt nichts zurück.

Dann habe ich den folgenden Code gefunden:

 function site_current_language() { global $polylang; echo $currentLang = pll_current_language('locale'); return $currentLang; } //add_action( 'init', 'site_current_language' ); // it does not print add_action( 'wp', 'site_current_language' ); // it prints 

Es funktioniert gut, es gibt das aktuelle $locale .

Aber anstatt dies zu wiederholen, wenn ich versuche, zurückzukommen, wird boolean false .

Ich habe global $polylang; var_dump($polylang); versucht global $polylang; var_dump($polylang); global $polylang; var_dump($polylang); ohne irgendeine function oder einen Haken zeigt es, dass es die curlang nicht findet. Aber wenn ich dasselbe in meiner Stil / Skript-Enqueue-function mache, erhält es die aktuelle Sprache.

Ich vermute also, dass etwas mit dem richtigen Haken zu tun hat. Beachten Sie, dass die Hook- init nicht echo, aber wp echo ist. Ich denke, wir sollten einen richtigen Haken finden, damit es funktioniert.

Aber wie, ich weiß es nicht.

Solutions Collecting From Web of "get_locale () verhält sich merkwürdig in der gleichen functions.php Datei"

Sie versuchen dieses Beispiel

 < ?php // outputs a list of languages names ?> 
    < ?php pll_the_languages(); ?>
< ?php // outputs a flags list (without languages names) ?>
    < ?php pll_the_languages(array('show_flags'=>1,'show_names'=>0)); ?>
< ?php // outputs a dropdown list of languages names ?> < ?php pll_the_languages(array('dropdown'=>1)); ?>