_x() — перевод фразы с учетом её использования в контексте

Функция возвращает перевод строки, выглядит она следующим образом:

_x( $text, $context, $domain = 'default' )
$text
Строка для перевода.
$context
Контекст, значение.
$domain
Идентификатор перевода, подробнее здесь.

Пошаговое руководство по работе с функцией _x()

Шаг 1. Использование в теме и для чего собственно она нужна

В своём руководстве по переводу плагинов и тем WP я писал, что есть такие функции, как __() и _e(), куда в качестве параметра передается строка, которую WordPress должен будет перевести, выглядит это так:

_e('bank', 'misha_test');

Окей… А вы знаете, как переводится слово bank? Ведь это не только «банк», а ещё и «берег»! По сути это слова-омонимы (одинаковые по написанию и разные по значению). И как это обозначить в переводе?

Благодаря функции _x() никаких хитрых манипуляций делать не придется.

_x('bank', 'bank of the river', 'misha_test'); // берег реки
_x('bank', 'bank of England', 'misha_test'); // банк Англии

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

Шаг 2. Настройка PoEdit

В Poedit функция добавляется в виде строки _x:1,2c, вот так:

Настройка функции _x() в poedit

Шаг 3. Переводим

После того, как мы добавили необходимые настройки в файл перевода в Poedit, можно нажать кнопку синхронизации «Обновить каталог».

Перевод омонимов в WordPress в программе Poedit

Повторюсь, если вам что-то непонятно, пожалуйста, прочтите сначала моё руководство по переводу плагинов и тем WordPress.

Также вы можете использовать функцию _ex(), если хотите не возвратить результат, а сразу вывести его на экран. Можно и echo _x() конечно же.

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Да, точно)

  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.