我有两个问题。
问题1:
- 我已经将mailchimp 的pot 文件翻译成两种语言。.mo 已经过测试可以正常工作。
- 但是 WP 无法为 mailchimp 表单和/或mailchimp list subscribe form的小部件显示其他语言的 ajax 返回。
我通过修改mailchimp.php
以下内容解决了这个问题:
$textdomain = 'mailchimp_i18n'; #line 57 to start
if (defined('WPLANG'))
$lang=WPLANG;
$locale = apply_filters( 'plugin_locale', $lang, $textdomain);
我是怎么想出来的?
代替此$lang
变量,默认值mailchimp.php
已ofget_locale()
定义。l10n.php
wp-includes
当我在上面修改之前放置一个print_r($locale)
。它显示了 wp-config 的 WPLANG 中设置的正确语言。但是当 mailchimp 表单被提交时,它只会得到默认的 en_US!
*它在哪里得到 en_US,当我没有设置它时?*
我发现它很奇怪,line 48-49
对于包含l10n.php
的定义get_locale()
:
if ( empty( $locale ) )
$locale = 'en_US';
其中,我认为 $locale 是空的,而在我的情况下是从表单中调用的。这是非常不可能的!但它发生在我测试的四个实例中。
我在 mailchimp.php 上的修改让我做什么? 我现在可以将其他语言(即阿拉伯语)字符串添加到我的 mailchimp 表单响应中。但是从 WPLANG 中检测到,我无法在站点的英语模式下切换到英语。
问题 2:
即时切换语言。我qtrans_getLanguage()
在get_locale()
mailchimp.php 的代码部分中使用了它。因此,它变成:
$locale = apply_filters( 'plugin_locale', qtrans_getLanguage(), $textdomain);
如果我在这一行之后 print_r($locale) 。它显示当前语言。但不是在提交表单时。表单的响应始终显示为 (en)!。
现在,问题 1不太可能发生并且不寻常。但是对于问题2 ,我绝对认为有一个聪明的解决方法。为什么从该表单的 Ajax 调用时 qTranslate 会报告错误?
另外,我不想修改核心插件文件。目前,我不得不修改 mailchimp.js 来手动匹配和替换常见的字符串(我讨厌它!)。