对于冗长的解释感到抱歉,但是自从我升级以来,我有一段时间试图让客户的WordPress网站从英语切换到韩语,反之亦然(从前端公共方面) WordPress 3.8到WordPress 4.1。
我理解WordPress 4.0现在使用"语言选择器"在仪表板设置中,确定站点在全局中显示的语言,但客户端需要站点根据访问者首选项切换语言,而不是在仪表板中设置的语言。客户只希望管理员级用户访问仪表板,这意味着所有其他(常规)用户将 保留自己的仪表板。
我已经实现了一个简单的公共语言切换,它与WordPress 3.8和一个名为qTranslate的插件一起使用效果非常好(它们只是可以点击以更改语言的链接):
英文| 한국어
自升级到WP 4.0以来,我不得不停止使用qTranslate(与WP 4.0不兼容)并开始使用qTranslate Plus(https://wordpress.org/plugins/qtranslate-xp/)。
但是现在WP 4.0忽略了qTranslate Plus正在尝试做的事情,特别是对于像BBPress这样的大插件。
我在网站上多次使用一个方便的功能,可以让我确定用户当前选择的语言。 URL也相应更改。例如:
英文版 - example.com /
韩语版 - example.com/KO / (如果用户点击上述韩语链接,则在域名后添加一个简单的&#34; KO /&#34; < / p>
我用来确定用户当前启用的语言的函数如下所示:
$current_lang = ppqtrans_getLanguage(); // function is from qTranslate Plus
if ($current_lang == "KO") {
// do what I need to do here in Korean
} else if ($current_lang == "en") {
// do what I need to do here in English
}
以上在自定义页面上效果很好,但我也使用BBPress和Event Espresso(事件注册软件和支付网关),升级到WordPress 4.1后不再切换到韩语,这让我的客户端肆虐现在。
我尝试在主题的functions.php文件中使用这样的函数,但它似乎没有工作:
add_filter('locale', 'change_lang');
function change_lang( $locale ) {
$current_lang = ppqtrans_getLanguage();
if ($current_lang == "KO") {
$locale = "ko_KR";
} else if ($current_lang == "en") {
$locale = "en_US";
}
return $locale;
}
对不起,如果上面看起来完全错了。我仍然试图抓住钩子和过滤器。
无论如何,如果有人对如何获得像BBPress和Event Espresso这样的插件有任何见解来注意动态改变的语言环境,那将是惊人的!甚至Event Espresso的工作人员也不知道如何使这项工作得以实现。我只是不明白为什么看起来如此简单的事情很难实现!
非常感谢您的时间!
TL; DR:我试图动态更改WordPress 4.0语言区域设置,具体取决于URL的外观。 example.com/应将网站设置为英文。 example.com/KO/应将网站设置为韩文 - 不使用仪表板中语言选择器中的设置。