Позволяет получить перевод единственной или множественной формы слова, в зависимости от стоящего перед ним числа.
При возникновении проблем с чтением языковых файлов, сравнение будет происходить между заданными значениями параметров $single и $plural.
_n( $single, $plural, $number, $domain = 'default' ) |
- $single
- (строка) Строка, которая будет использоваться, если $number равно 1.
- $plural
- (строка) Строка, которая будет использоваться, если $number — не 1. Возможно тут вы скажете — «Но ведь в русском языке 3 формы множественного числа!». Да, верно, три, например «1 сайт, 2 сайта, 5 сайтов» — всё это тоже будет хорошо работать, тут главное правильно настроить программу Poedit.
- $number
- (целое число) Число, которое будет определять использование формы единственного или множественного числа.
- $domain
- (строка) Уникальный идентификатор языковых файлов, подробнее тут.
Примеры
Простой пример, чтобы понять, как вообще работает функция:
$amount = '4'; echo _n( 'One', 'Many', $amount, 'truemisha' ); // если $amount не равен 1 (0 кстати тоже прокатит), то выведет перевод для 'Many' (много) // если $amount равен 1, то выведет перевод слова 'One' (один) |
Подобные примеры вы нечасто найдете в темах и плагинах WordPress, обычно в таких случаях всегда используется php-функция sprintf()
.
$amount = '4'; $products = sprintf( _n( '1 product', '%s products', $amount, 'truemisha' ), $amount ); // "4 товара" echo $products; |
Ничего сложного, главное запомните одну вещь — никаких вычислений внутри sprintf()
!
Кстати, если не указывать последний параметр функции, $domain, то для перевода будут использоваться стандртные языковые файлы WordPress (которые задействованы в переводе движка). Понятное дело, что перевода ваших строк там может и не быть.
echo sprintf( _n( '%s comment approved', '%s comments approved', $approved ), $approved ); |
Источник: misha.blog