Vì vậy, nhờ có JD, cuối cùng tôi đã kết thúc với mã này:
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);
}
Bây giờ, tôi biết nó không nên, theo bài viết nổi tiếng này:
http://ottopress.com/2012/i quốc tế hóa-youre-probossible-doing-it-wrong/
Nhưng, tôi không biết, nó hoạt động ... Và phần thưởng: giả sử bạn muốn sử dụng nó trong quản trị viên, vì ngôn ngữ quản trị viên là x, nhưng bạn muốn nhận / lưu dữ liệu trong lang y và bạn đang sử dụng polylang . Vì vậy, tức là quản trị viên của bạn là người Anh, nhưng bạn đang dịch bài tiếng Tây Ban Nha và bạn cần lấy dữ liệu tiếng Tây Ban Nha từ địa phương chủ đề của mình:
global $polylang;
$p_locale = $polylang->curlang->locale; // will be es_ES
_e2('your string', 'yourtextdomain', $p_locale)