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

时间:2012-12-17 22:16:39

标签: wordpress mailchimp qtranslate mo

我有两个问题。

问题1:

  1. 我已将mailchimp的pot文件翻译成两种语言。 .mo已经过测试,可以正常运行。
  2. 但WP无法显示mailchimp list subscribe form的mailchimp表单和/或小部件的其他语言的ajax返回。
  3. 我通过修改mailchimp.php如下所示解决了这个问题:

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

    我是怎么知道的? 代替此$lang变量,默认mailchimp.phpget_locale()的{​​{1}}中定义了l10n.php

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

    * 当我没有设置en_US时,它在哪里?* 我发现print_r($locale) line 48-49 l10n.php的定义get_locale()非常奇怪:

        if ( empty( $locale ) )
        $locale = 'en_US';
    

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

    我对mailchimp.php的修改是什么让我的? 我现在可以将其他语言(即阿拉伯语)字符串添加到我的mailchimp表单响应中。但是从WPLANG检测到,我无法在网站的英文模式下切换到英文。

    问题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 个答案:

答案 0 :(得分:1)

按照thisthis

解决问题

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

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

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