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

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

Проблема 1:

  1. Я перевел файл банка 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);

Если я 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() часть.

Другие вопросы по тегам