升级到 WordPress 4.7 后,我将个人资料中的语言字段更改为英语,而网站的语言设置为希腊语。
我编写了一个显示小部件的插件。此小部件通过 ajax 调用刷新其内容。如前所述here (请参阅关于 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();?>'>
或者
{
lang: '<?php echo get_locale()?>',
}
然后,就在您的
load_*_textdomain()
之前函数调用,这样写:if (isset($_GET["lang"])) {
$locale = $_GET["lang"];
add_filter('determine_locale', function()use($locale){ return $locale; });
}
它会将语言环境切换到所需的语言环境。请注意,语言环境类似于
en_US
或 el
相对于您的 .mo
文件名。
关于ajax - 在 WordPress 插件管理 ajax 调用中,使用站点语言环境的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731657/