多亏了J.D.,我最终得到了以下代码:
function __2($string, $textdomain, $locale){
global $l10n;
if(isset($l10n[$textdomain])) $backup = $l10n[$textdomain];
load_textdomain($textdomain, get_template_directory() . \'/languages/\'. $locale . \'.mo\');
$translation = __($string,$textdomain);
if(isset($bkup)) $l10n[$textdomain] = $backup;
return $translation;
}
function _e2($string, $textdomain, $locale){
echo __2($string, $textdomain, $locale);
}
根据这篇著名的文章,我知道不应该这样:
http://ottopress.com/2012/internationalization-youre-probably-doing-it-wrong/
但是,我不知道,它是有效的。。。还有一个好处:假设您想在admin中使用它,因为admin语言是x,但您想在lang y中获取/保存数据,并且您正在使用polylang。也就是说,你的管理员是英语的,但你正在处理一篇文章的西班牙语翻译,你需要从你的主题地区获取西班牙语数据:
global $polylang;
$p_locale = $polylang->curlang->locale; // will be es_ES
_e2(\'your string\', \'yourtextdomain\', $p_locale)