qTranslate не определяет должным образом при вызове из плагина через ajax

У меня две проблемы.

Проблема 1:

  1. Я перевел pot-файл mailchimp на два языка. .mo был проверен на работоспособность.
  2. Но 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, чтобы вручную сопоставлять и заменять общие строки (и я ненавижу это!).


person Lenin    schedule 17.12.2012    source источник
comment
Нашел подсказку здесь, но еще не уверен, нужно ли мне просто 'ajax_url' => trailingslashit(home_url().'/'. qtrans_getLanguage()), в строке 96 из mailchimp.php   -  person Lenin    schedule 18.12.2012


Ответы (1)


Решил это, следуя этому и это

Но поскольку в mailchip.js есть этот ajax_url, я искал в плагине mailchimp, откуда генерируется этот URL. Он генерируется в строке номер 96 в mailchimp.php.

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

Я только что добавил часть '/'. qtrans_getLanguage().

person Lenin    schedule 17.12.2012
comment
С указанным выше изменением я просто удалил другие изменения, внесенные в mailchimp.php. - person Lenin; 20.12.2012