con*_*cti 5 ajax wordpress plugins locale
升级到 WordPress 4.7 后,我将个人资料中的语言字段更改为英语,而网站的语言设置为希腊语。
我编写了一个显示小部件的插件。该小部件通过 ajax 调用刷新其内容。正如此处提到的(请参阅有关 admin-ajax.php 的注释),字符串通常以我的个人资料语言(英语)返回,但我更希望将它们放在站点的区域设置(希腊语)中。
switch_to_locale( get_locale() )在ajax 调用操作处理程序的第一行添加该语句后,使用默认文本域的表达式__( 'Sunday' )确实被翻译为希腊语。然而,诸如此类的表达方式__( 'Sunday', 'my-plugin-textdomain' )从未被翻译。
我的问题是如何在 ajax 调用期间在我的网站(而不是我的个人资料)区域设置中显示来自插件文本域的字符串?
注意:
这是一个迟到的答案,但我今天发现了如何在 AJAX 调用工作之前加载相关文本域,需要在这里分享:
将隐藏的输入字段添加到您的表单或附加到您的数据:
<input type='hidden' name='lang' value='<?php echo get_locale();?>'>
Run Code Online (Sandbox Code Playgroud)
或者
{
lang: '<?php echo get_locale()?>',
}
Run Code Online (Sandbox Code Playgroud)
然后,在函数调用之前load_*_textdomain(),写下以下内容:
if (isset($_GET["lang"])) {
$locale = $_GET["lang"];
add_filter('determine_locale', function()use($locale){ return $locale; });
}
Run Code Online (Sandbox Code Playgroud)
它将把区域设置切换到所需的区域设置。请注意,区域设置类似于en_US或el相对于您的.mo文件名。