首页 文章

当通过ajax从插件内部调用时,qTranslate无法正确检测到

提问于
浏览
1

我有两个问题 .

Problem 1:

  • 我已将mailchimp的pot文件翻译成两种语言 . .mo已经过测试,可以正常运行 .

  • 但是WP无法显示其他语言的ajax返回,以及mailchimp list subscribe form的mailchimp表单和/或小部件 .

我通过修改 mailchimp.php 来解决这个问题,如下所示:

$textdomain = 'mailchimp_i18n'; #line 57 to start
    if (defined('WPLANG'))
        $lang=WPLANG;
    $locale = apply_filters( 'plugin_locale', $lang, $textdomain);

How did I figure out? 代替 $lang 变量,默认 mailchimp.phpl10n.php wp-includes 中定义 get_locale() .

当我在修改之前放置 print_r($locale) 如上所述 . 它显示了在wp-config的WPLANG中设置的正确语言 . 但是当提交mailchimp表单时,它只是默认的en_US!

  • Where does it get the en_US, when I haven't set it?* 我发现它非常奇怪, line 48-49l10n.php 定义 get_locale() 包含:
if ( empty( $locale ) )
    $locale = 'en_US';

其中,我认为$ locale为空,而在我的情况下是从表单调用 . 这是不太可能的!但它发生在我测试的四个实例中 .

What my modification at mailchimp.php gets me to? 我现在可以将其他语言(即阿拉伯语)字符串添加到我的mailchimp表单回复中 . 但是从WPLANG检测到,我无法在网站的英文模式下切换到英文 .

Problem 2: 即时切换语言 . 我在mailchimp.php的代码部分使用 qtrans_getLanguage() 代替 get_locale() . 因此,它变成:

$locale = apply_filters( 'plugin_locale', qtrans_getLanguage(), $textdomain);

如果我在此行之后print_r($ locale) . 它显示了当前的语言 . 但不是在提交表单时 . 表单的响应始终显示为(en)! .

现在, problem1 不太可能发生并且不寻常 . 但是对于 problem2 我绝对认为有一个聪明的工作 . 从该表单的Ajax调用时,为什么qTranslate报告错误?

另外,我不想修改核心插件文件 . 目前,我不得不修改mailchimp.js来手动匹配和替换常见的字符串(我讨厌它!) .

1 回答

  • 1

    通过以下thisthis解决了这个问题

    但是由于mailchip.js有这个'ajax_url',我在mailchimp插件中搜索了这个URL的生成位置 . 它在mailchimp.php中的第96行生成

    'ajax_url' => trailingslashit(home_url().'/'.  qtrans_getLanguage()),
    

    我刚刚添加了 '/'. qtrans_getLanguage() 部分 .

相关问题