WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

_x()WP 2.8.0

Получает перевод указанной строки с учетом указанного контекста.

Функция нужна, чтобы не было путаницы, когда одинаковый текст может переводиться по разному, исходя из того в каком месте (в каком контексте) он используется. Для этого кроме строки перевода указывается еще и контекст (дополнительная строка), которая дополнением строки перевода, так одинаковые строки перевода будут отличаться между собой и при непосредственном переводе строки будет видна указанная строка контекста, это позволит переводчику понять как нужно перевести указанную строку.

_x() работает точно также как и __(), только нужно указать второй параметр $context, строку.

Чтобы сразу вывести результат на экран, используйте _ex() это аналог _e() только с контекстом.

Как добавить контекст в poedit?

Строка контекста должна быть указана в .pot или .po файле, чтобы во время перевода было понятно в каком контексте нужно переводить текст.

Чтобы добавить контекст в программе poedit. При добавлении _x как ключа для поиска строк, добавьте его так:

_x:1,2c

Это указатель для poedit, искать _x и получать первый аргумент, как строку для перевода: msgid, а второй, как строку контекста: msgctxt.

Внутренняя функция — эта функция рассчитана на использование самим ядром. Не рекомендуется использовать эту функцию в своем коде.

Работает на основе: translate_with_gettext_context()
Основа для: _ex()

Хуков нет.

Возвращает

Строку. Переведенную строку или оригинальный текст, если не удалось перевести строку.

Использование

_x( $text, $context, $domain );
$text(строка) (обязательный)
Текст, который нужно перевести.
$context(строка) (обязательный)
Дополнительная строка (контекст) по которой будет искаться перевод в файле перевода.
$domain(строка)
ID файла перевода, указывается при регистрации и подключении файла перевода.
По умолчанию: 'default'

Примеры

0

#1 Перевод строки с контекстом

$translated = _x( 'Read', 'past participle: books I have read', 'text_domain' );

Так как просто слово Read может иметь разные значения, вторая строка поясняет что имеется ввиду под словом read в данном случае. Т.е. в каком контексте используется это слово.

0

#2 Как должен выглядеть .po файл

Для вывода перевода с контекстом, нужно указать второй параметр в _x(). Но нужно понимать, что вторая строка указывается и в .po файле. Там одна строка переводится по-разному. Вот так выглядит код .po файла, где msgctxt содержит контекст:

msgctxt "examination"
msgid "testing"
msgstr "Тестирование"

msgctxt "experiment"
msgid "testing"
msgstr "Испытания"

Выводим в PHP этот перевод так:

echo '"testing" как "examination": ' . _x('testing', 'examination', 'myl10n');
echo '"testing" как "experiment": ' . _x('testing', 'experiment', 'myl10n');

// Получим:
// "testing" как "examination": Тестирование
// "testing" как "experiment": Испытания

В этом коде подразумевается, что .mo файл подключен под ID "myl10n" с помощью функции load_textdomain().

Список изменений

С версии 2.8.0 Введена.

Код _x() WP 6.5.2

function _x( $text, $context, $domain = 'default' ) {
	return translate_with_gettext_context( $text, $context, $domain );
}
5 комментариев
    Войти