Как получить транслированную строку с другого языка, кроме текущего?

Я блуждал ... Все функции перевода (__(), _e(), _x() и т. д.) используют текущий /активный язык. Есть ли способ получить перевод с другого языка, чем на текущий? Например, я на французской странице, и я хочу и английский перевод: как?

8 голосов | спросил Stratboy 7 J000000Thursday16 2016, 12:00:26

1 ответ


3

Чтобы найти ответ на этот вопрос, вам просто нужно посмотреть, как WordPress извлекает переводы. В конечном итоге это load_textdomain() , которая делает это. Когда мы посмотрим на его источник, мы обнаруживаем, что он создает объект MO и загружает переводы из .mo. Затем он сохраняет этот объект в глобальной переменной, называемой $l10n, которая представляет собой массив с ключом textdomain.

Чтобы загрузить другую локаль для определенного домена, нам просто нужно вызвать load_textdomain() с указанием пути к .mo для этой локали:

$textdomain = 'your-textdomain';

// First, back up the default locale, so that we don't have to reload it.
global $l10n;

$backup = $l10n[ $textdomain ];

// Now load the .mo file for the locale that we want.
$locale  = 'en_US';
$mo_file = $textdomain . '-' . $locale . '.mo';

load_textdomain( $mo_file, $textdomain );

// Translate to our heart's content!
_e( 'Hello World!', $textdomain );

// When we are done, restore the translations for the default locale.
$l10n[ $textdomain ] = $backup;

Чтобы узнать, какую логику использует WordPress, чтобы определить, где искать файл .mo для плагина (например, как получить текущий locale), посмотрите источник load_plugin_textdomain()

ответил J.D. 10 J000000Sunday16 2016, 15:31:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132