当前位置: 首页 > 面试题库 >

在WordPress插件admin ajax调用中,使用网站区域设置的方法是什么?

鲍钊
2023-03-14
问题内容

升级到WordPress 4.7后,我将语言字段从个人资料更改为英语,而网站的语言设置为希腊语。

我写了一个显示小部件的插件。该小部件正在通过ajax调用刷新其内容。正如这里提到的(请参阅 有关admin-ajax.php的注释
),通常以我个人资料的语言(英语)返回字符串,但我希望将其放在网站的语言环境(希腊语)中。

switch_to_locale( get_locale() )ajax调用操作处理程序的第一行添加语句之后,使用默认文本域(例如)的表达式__( 'Sunday' )确实会转换为希腊语。但是,像这样__( 'Sunday', 'my-plugin-textdomain' )的表达式永远不会被翻译。

我的问题是, 在ajax调用期间,如何在网站(而非个人资料)的语言环境中显示来自插件文本域的字符串?

注意:

  • 在将我的个人资料的语言环境切换为英语之前,一切工作正常(也就是说,所有字符串都被翻译成了希腊语)。
  • 我正在通过操作 plugins_loaded 触发的函数加载插件的textdomain 。
  • 搜索互联网并没有带来有用的结果,因为设置用户语言环境的功能最近以最新版本发布。

问题答案:

这是一个较晚的答案,但我发现了如何在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_USel相对.mo



 类似资料:
  • 我试图理解JVM中的调用站点是什么。引用https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.4.3.6 调用站点说明符解析的结果是一个元组,包括: •对, •对, 对、、和实例的引用。 我们还有所谓的调用站点对象https://docs.oracle.com/javase/specs/jvms/se8/html

  • 我正在尝试添加自定义endpoint(自定义endpoint”是指一个不被WP识别为标准URL的任意URL,如permalink等。)我用的是WordPress插件样板“https://github . com/DevinVinson/WordPress-Plugin-Boilerplate”。 我想在自定义endpoint上发送一个API请求。我创建了一个新的类文件来注册endpoint,并将这

  • 本文向大家介绍在WordPress中使用wp-cron插件来设置定时任务,包括了在WordPress中使用wp-cron插件来设置定时任务的使用技巧和注意事项,需要的朋友参考一下 PHP 本身是无法创建定时任务的,但是 WordPress 自带了一个伪定时任务(Cron) API,非常的方便好用,包括 WordPress 本身的定时发布文章都依赖于这个 API WP Cron 是什么? 是 Wor

  • 越来越多的插件开始使用AJAX 技术。我个人并没有在大多数的插件中看到过AJAX,但是使用AJAX 来完成某个任务对你的插件来说可能是必要的。这篇文章将像你展示怎样在你的插件中使用AJAX。 这篇文章将在上一篇文章《在插件中添加js 和css》的基础上继续。 建立新的PHP文件 Devlounge Plugin Series 插件已经有了如下的目录结构了: devloung-plugin-seri

  • 我想强制我的Symfony 2.5应用程序的区域设置为。我希望这个区域设置用于strftime()函数。 我的: 我正在我的一个控制器中使用以下代码来调试: 当这样执行时,它显示:。 但是,当第一行未注释时,它会显示:,因此区域设置已安装在系统中并正常工作。 我如何使Symfony始终使用配置中指定的语言环境? $locale-a: