1

我有两个问题。

问题1:

  1. 我已经将mailchimp 的pot 文件翻译成两种语言。.mo 已经过测试可以正常工作。
  2. 但是 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.phpwp-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 来手动匹配和替换常见的字符串(我讨厌它!)。

4

1 回答 1

1

通过遵循这个这个解决了它

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

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

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

于 2012-12-17T23:31:02.103 回答