_n()

Функция переводит и возвращает строку, в которой содержится число, и в зависимости от значения числа строка будет переведена в соответствующей форме единственного или множественно числа. Например 1 зомби, 2 зомби, 5 зомби… Шутка! Например 1 остров, 2 острова, 5 островов.

Также рекомендую вам видеоурок про перевод тем и видеоурок про перевод плагинов.

_n( $single, $plural, $number, $domain = 'default' )

Параметры

$single
(строка) Значение строки в единственном числе (для английского языка).
$plural
(строка) Значение строки во множественном числе (для английского языка).
$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', '%d products', $amount, 'truemisha' ), $amount );
 
echo $products; // выведет "4 товара"

Ничего сложного, главное запомните одну вещь — никаких вычислений внутри sprintf()!

Кстати, если не указывать последний параметр функции, $domain, то для перевода будут использоваться стандартные языковые файлы WordPress (которые задействованы в переводе движка). Понятное дело, что перевода ваших строк там может и не быть. К примеру:

echo sprintf( _n( '1 comment approved', '%d comments approved', $approved ), $approved );

И да, важный момент – в качестве ключевого слова в PoEdit указываем _n:1,2

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код меньше одной строчки, то можно и в <code></code>.

Нажав на кнопку, вы соглашаетесь с тем, как обрабатываются персональные данные.