Функция _NX() в WordPress: работа с переводом в зависимости от числа и контекста

## Функция _NX() в WordPress

Функция _NX() в WordPress позволяет получить переведённый текст в зависимости от числа и контекста. Она сочетает в себе возможности функций _n() и _x(). Это означает, что с её помощью можно использовать правильную форму слова в зависимости от того, является ли число единственным (естественное число) или множественным (больше единицы).

### Возвращаемое значение

Функция возвращает строку, которая представляет собой переведённую форму слова (единственное или множественное число).

### Применение

Функция имеет следующий синтаксис:

```plaintext
_nx( $single, $plural, $number, $context, $domain );

Параметры:

  • $single (строка) (обязательный): Текст, который будет использоваться, если число единственное.
  • $plural (строка) (обязательный): Текст, который будет использоваться, если число множественное.
  • $number (целое) (обязательный): Число, с которым будет сравниваться, чтобы использовать одну из форм — единственную или множественную.
  • $context (строка) (обязательный): Контекст, который поможет переводчикам понять, что именно переводить.
  • $domain (строка): Уникальный идентификатор для извлечения переведённых строк.
    • По умолчанию: 'default'

Пример использования

Предположим, у вас есть две переменные: одна для учёта людей, а другая — для учёта животных. Вы можете использовать функцию _NX() так:

$people  = 5;
$animals = 7;

printf( _nx( '%s группа', '%s группы', $people, 'группа людей', 'text-domain' ), $people );
printf( _nx( '%s группа', '%s группы', $animals, 'группа животных', 'text-domain' ), $animals );

В этом примере функция правильно выведет: "5 групп людей" и "7 групп животных".

Изменения в функции

Функция была введена в версии 2.8.0. А с версии 5.5.0 был добавлен фильтр ngettext_with_context-{$domain}, который позволяет модифицировать возвращаемое значение.

Код функции

Вот как выглядит код самой функции:


function _nx( $single, $plural, $number, $context, $domain = 'default' ) {
$translations = get_translations_for_domain( $domain );
$translation = $translations->translate_plural( $single, $plural, $number, $context );

$translation = apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, $domain );
$translation = apply_filters( "ngettext_with_context_{$domain}", $translation, $single, $plural, $number, $context, $domain );

return $translation;

}

Связанные функции

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

  • __(): Простой перевод строки.
  • _e(): Перевод и немедленный вывод.
  • _n(): Перевод с учётом чисел.
  • _x(): Перевод с учётом контекста.
  • date_i18n(): Форматирование даты с учётом локализации.

Используя эти функции, вы сможете создавать многоязычные сайты на WordPress более эффективно и качественно.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *