У меня две проблемы.
Проблема 1:
- Я перевел pot-файл mailchimp на два языка. .mo был проверен на работоспособность.
- Но WP не показывает возвраты ajax для других языков для формы mailchimp и/или виджета для формы подписки на список mailchimp. а>.
Я обошел это, изменив 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)
перед изменением, как указано выше. Он показывает правильный язык, установленный в WPLANG wp-config. Но когда форма 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);
Если я напечатаю_r($locale) после этой строки. Он показывает текущий язык. Но не при отправке формы. Ответ формы всегда отображается как (en)!.
Возникновение проблемы1 маловероятно и является необычным. Но для проблемы2 я определенно думаю, что есть умный обходной путь. Почему qTranslate сообщает неправильно при вызове из Ajax такой формы?
Кроме того, я не хочу изменять основные файлы плагинов. В настоящее время мне пришлось изменить mailchimp.js, чтобы вручную сопоставлять и заменять общие строки (и я ненавижу это!).
'ajax_url' => trailingslashit(home_url().'/'. qtrans_getLanguage()),
в строке 96 изmailchimp.php
- person Lenin   schedule 18.12.2012