我正在为我的客户开发一个多语言的门户网站-英语和孟加拉文。我没有使用multisite,而是安装了Polylang插件。通过该网站,它运行良好。
对于不同的CSS样式和不同的字体大小,我将加载一个单独的样式表,其中包含:
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\' );
它工作得很好,当我切换到孟加拉语时,会加载不同的CSS。
我正在尝试用同样的方法对孟加拉数字和字符串等应用过滤器these functions and filters. 所以我在我的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\' );
}
但它不起作用。我想知道为什么?
$my_locale = get_locale();
var_dump( $my_locale );
“它回来了”;
en_US
"E;两种语言。您可以查看以下图片进行验证:
为什么相同的代码中有相同的位functions.php
文件在不同情况下表现奇怪?然后,我就在排队部分之后更改了代码的位置,但它仍然不起作用(
更新我从Polylang文档中找到了一个函数,它说:<?php pll_current_language($value); ?>
(Source^) 将检索当前语言。
我试过了var_dump(pll_current_language());
它不返回任何内容。
然后我设法找到了以下代码:
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
它工作得很好,它在响应电流
$locale
.
但如果我尝试返回,它将返回,而不是重复这一点boolean false
.
我试过了global $polylang; var_dump($polylang);
没有任何函数或挂钩,这表明它无法找到curlang
在内部但如果我在我的风格/脚本排队功能中也这么做,那就是得到当前的语言。
所以我怀疑这和合适的钩子有关。注意,挂钩init
无法回音,但是wp
正在回响。我想我们应该找一个合适的钩子让它工作。
但我不知道怎么做。