Данная функция переводит строку не только с учётом её единственного или множественного числа, но также и с учётом контекста, в котором она используется. Возвращает переведённое значение.
Так что можно сказать, что эта функция – это две функции _n() и _x() в одной.
_nx( $single, $plural, $number, $context, $domain = 'default' )
Параметры
- $single
- (строка) Значение строки в единственном числе (для английского языка).
- $plural
- (строка) Значение строки во множественном числе (для английского языка).
- $number
- (целое число) Число, которое будет определять использование формы единственного или множественного числа.
- $context
- (строка) Контекст, в рамках которого используется функция.
- $domain
- (строка) Идентификатор перевода. Задаётся в виде строки, не передавайте в этот параметр переменных.
Примеры
Лучше всего попробовать понять принцип действия этой функции на лёгком примере.
Предположим, что у нас есть слово «group» («группа»). Мы например знаем, что «группа человек» можно перевести как «компания», а «группа волков» – как «стая». Кроме того, мы ещё и учитываем единственное/множественное число: «стая», «стаи».
printf( _nx( '1 group', '%d groups', // %d будет заменено на значение $people уже после перевода $people, 'group of people', // название контекста, которое отобразится в PoEdit 'true-domain' ), $people // числовое значение ); printf( _nx( '%s group', '%s groups', $animals, 'group of wolves', 'true-domain' ), $animals );
В рамках функции printf()
%d
– это паттерн замены на целое число, %s
– паттерн замены строки. В нашей ситуации мы можем использовать и то, и другое, но правильнее, я думаю, всё-таки %d
.
Только не забудьте в ключевых словах в PoEdit указать значение: _nx:4c,1,2
Тогда у вас получится: