我有两个问题。
问题1:
我通过修改mailchimp.php
如下所示解决了这个问题:
$textdomain = 'mailchimp_i18n'; #line 57 to start
if (defined('WPLANG'))
$lang=WPLANG;
$locale = apply_filters( 'plugin_locale', $lang, $textdomain);
我是怎么知道的?
代替此$lang
变量,默认mailchimp.php
在get_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来手动匹配和替换常见字符串(我讨厌它!)。