qTranslate не определяет должным образом при вызове изнутри плагина через ajax
У меня две проблемы.
Проблема 1:
- Я перевел файл банка 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);
Если я print_r($locale) после этой строки. Это показывает текущий язык. Но не тогда, когда форма отправлена. Ответ формы всегда показывает его как (en)!.
Теперь, проблема1 очень маловероятна и необычна. Но для проблемы 2 я определенно думаю, что есть умная работа вокруг. Почему qTranslate сообщает неверно при вызове из Ajax этой формы?
Кроме того, я не хочу изменять основные файлы плагинов. В настоящее время мне пришлось изменить mailchimp.js, чтобы вручную сопоставлять и заменять общие строки (и я ненавижу это!).
1 ответ
Решил это, следуя этому и этому
Но так как mailchip.js имеет этот "ajax_url", я искал в плагине mailchimp, откуда генерируется этот URL. Генерируется в строке 96 в mailchimp.php
'ajax_url' => trailingslashit(home_url().'/'. qtrans_getLanguage()),
Я просто добавил '/'. qtrans_getLanguage()
часть.