_x() WP 2.8.0

Отримує переклад зазначеного рядка з урахуванням зазначеного контексту.

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

_x() працює так само як і __() , тільки потрібно вказати другий параметр $context , рядок.

Щоб одразу вивести результат на екран, використовуйте _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 "тестування"
msgstr "Тестування"

msgctxt "experiment"
msgid "тестування"
msgstr "Випробування"

Виводимо в PHP цей переклад так:

echo '"тестування" як "examination": ' . _x('testing', 'examination', 'myl10n');
echo '"тестування" як "experiment": ' . _x('testing', 'experiment', 'myl10n');

// Отримаємо:
// "Testing" як "examination": Тестування
// "Testing" як "experiment": Випробування

У цьому коді мається на увазі, що .moфайл підключений під ID “myl10n” за допомогою функції load_textdomain() .

список змін

З версії 2.8.0Введено.

Код _x() WP 6.0.2

function _x( $text, $context, $domain = 'default' ) {
	return translate_with_gettext_context( $text, $context, $domain );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *