我遇到了兩個問題。qTranslate在通過ajax從插件中調用時未正確檢測到
問題1:
- 我有翻譯mailchimp的鍋文件轉換成兩種語言。 .mo已經過測試,可以正常工作。
- 但是WP無法顯示其他語言的ajax對於mailchimp list subscribe form的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
已在wp-includes
l10n.php
定義get_locale()
。
當我在上面修改之前放置print_r($locale)
。它顯示了在wp-config的WPLANG中設置的正確語言。但是,當提交mailchimp表單時,它只是默認的en_US!
* 它從哪裏獲得的EN_US,當我沒有把它設置* 我就覺得很奇怪,的l10n.php
爲get_locale()
定義line 48-49
包含:
if (empty($locale))
$locale = 'en_US';
我想其中,獲取$ locale爲空,而在我的情況下,從窗體中調用。這是不可能的!但它發生在我測試的四個實例中。
我在mailchimp.php上的修改讓我知道了什麼? 我現在可以將其他語言(即阿拉伯語)字符串獲取到我的mailchimp表單響應中。但是從WPLANG中發現,我無法在網站的英文模式中切換到英文。
問題2: 要動態切換語言。我使用qtrans_getLanguage()
代替了mailchimp.php的代碼部分中的get_locale()
。因此,它變成:
$locale = apply_filters('plugin_locale', qtrans_getLanguage(), $textdomain);
如果我在這一行後面print_r($ locale)。它顯示當前的語言。但是,當表單提交時沒有。表單的迴應總是顯示爲(en)!.
現在,問題1是不太可能發生,是不尋常的。但對於問題2我絕對認爲有一個聰明的工作。爲什麼在從表單的Ajax中調用qTranslate時報錯?
此外,我不想修改核心插件文件。目前,我不得不修改mailchimp.js手動匹配和替換常見的字符串(我恨它!)。
發現了一些暗示[這裏](http://stackoverflow.com/questions/7800630/ajax-qtranslate),但尚未肯定,如果我只是需要 \t \t \t \t' 'ajax_url'=> trailingslashit(HOME_URL ()。'/'。qtrans_getLanguage()),'在'mailchimp.php'的第96行' – Lenin