Get_Locale()在同一函数.php文件中行为异常

时间:2014-04-06 作者:Mayeenul Islam

我正在为我的客户开发一个多语言的门户网站-英语和孟加拉文。我没有使用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;两种语言。您可以查看以下图片进行验证:enter image description here

为什么相同的代码中有相同的位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 正在回响。我想我们应该找一个合适的钩子让它工作。

但我不知道怎么做。

1 个回复
SO网友:jim.duck

你试试这个例子

<?php // outputs a list of languages names ?>
<ul><?php pll_the_languages(); ?></ul>

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

<?php // outputs a dropdown list of languages names ?>
<?php pll_the_languages(array(\'dropdown\'=>1));  ?>

结束

相关推荐

Plugin Localization

我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette