1

2つの問題がありました。

問題1:

  1. mailchimpのポットファイルを2つの言語に翻訳しました。.moは機能することがテストされています。
  2. しかし、WPは、mailchimpフォームおよび/またはmailchimpリストサブスクライブフォームのウィジェットの他の言語の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てい。get_locale()l10n.phpwp-includes

print_r($locale)上記のように変更する前に配置したとき。これは、wp-configのWPLANGで設定された正しい言語を示しています。しかし、mailchimpフォームが送信されると、デフォルトのen_USが取得されます。

*設定していない場合、en_USはどこで取得されますか?*次のcontainsの定義では、非常に奇妙でline 48-49ある ことがわかりました。l10n.phpget_locale()

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

これは、私の場合はフォームから呼び出されている間、$localeが空になると思います。これは非常にありそうもないです!しかし、それは私のテストの4つのインスタンスで発生します。

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を変更して、一般的な文字列を手動で照合して置き換える必要がありました(そして私はそれが嫌いです!)。

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 に答える