2つの問題がありました。
問題1:
- mailchimpのポットファイルを2つの言語に翻訳しました。.moは機能することがテストされています。
- しかし、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.php
wp-includes
print_r($locale)
上記のように変更する前に配置したとき。これは、wp-configのWPLANGで設定された正しい言語を示しています。しかし、mailchimpフォームが送信されると、デフォルトのen_USが取得されます。
*設定していない場合、en_USはどこで取得されますか?*次のcontainsの定義では、非常に奇妙でline 48-49
ある
ことがわかりました。l10n.php
get_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を変更して、一般的な文字列を手動で照合して置き換える必要がありました(そして私はそれが嫌いです!)。