我有两个问题 .
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.php
在 l10n.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-49
的l10n.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 回答
通过以下this和this解决了这个问题
但是由于mailchip.js有这个'ajax_url',我在mailchimp插件中搜索了这个URL的生成位置 . 它在mailchimp.php中的第96行生成
我刚刚添加了
'/'. qtrans_getLanguage()
部分 .