String translation not working when do wordpress Ajax with WPML

  1. 正常的配置 WPML
  2. 使用 PO/MO 文件
  3. 使用 Codestyling Localisation 创建 PO/MO 文件

问题是在时候 Ajax 的时候,函数 __() 失效, 因为,首先你需要加载所有关于当前语言的翻译。很奇怪的 WPML 不能正确的使用翻译文件,这可能是 WORDPRESS 和 WPML 的一些限制。暂时的,下面的方法可能对大家有些帮助。

如果你做一个搜索的功能,首先,添加一个隐藏域到表单里:

if(defined('ICL_SITEPRESS_VERSION') && defined('ICL_LANGUAGE_CODE')){
    echo '<input type="hidden" id="lang" name="lang" value="'.ICL_LANGUAGE_CODE.'" />';
}

在 Ajax call:

if(!empty($_REQUEST['lang']))
{
    global $sitepress;
    $sitepress->switch_lang($_REQUEST['lang'], true);

    $lang = get_template_directory()  . '/language';
    $unload = unload_textdomain('textdomain');
    $load = load_textdomain('textdomain', $lang . '/'. get_locale() . '.mo');
}

参考:http://www.kriesi.at/support/topic/ajax-search-translation-handling-probs/