Wordpress admin-ajax和用户个人资料本地化

时间:2017-07-25 23:28:44

标签: ajax wordpress localization internationalization admin-ajax

所以我有一个英语主题,我本地化为西班牙语。它用西班牙语完美地运作。

但是,如果我将用户个人资料语言更改为英语 - 以便我可以在仪表板上看到英语 - 网站上AJAX生成的内容将成为未翻译的英语。

如果我退出,AJAX生成的内容将再次成为西班牙语。

我的猜测是,如果设置了用户个人资料语言,admin-ajax正在加载USER个人资料语言而不是主题语言。

所以我的问题是:如何更正此问题,以便admin-ajax始终使用主题语言?

编辑:这是AJAX调用。我没有发送任何要翻译的文本。

{{1}}

1 个答案:

答案 0 :(得分:1)

你说的理由是正确的。如其名称所示,“admin-ajax”端点是管理区域的一部分,因此将使用“仪表板”语言。

我假设您将Ajax端点用于非管理目的,但问题是您通过Ajax加载了哪些内容?

最简单的情况是您只加载主题翻译。这种情况可以很容易地覆盖你所说的“主题语言”。

尝试将此添加到主题的functions.php文件中:

if( defined('DOING_AJAX') && DOING_AJAX && is_user_logged_in() ){
  add_filter('theme_locale', function(){
    return get_locale();
  } );
}

但是,您要问如何使admin-ajax 始终使用网站语言。 这真的是你想要的吗?这意味着仪表板中任何位置使用的任何ajax函数都不会与它们运行的​​页面使用相同的语言。

有办法做到这一点,但它变得更加复杂。如果你在这方面更新你的问题,我会更新我的答案。