_n_noop()
Подготавливает строку перевода с учётом множественного числа, но без немедленного перевода.
Это нужно, когда перевод выполняется не сразу а позже, например в админке. Когда вы хотите сохранить структуры строки перевода, где есть множественное число и использовать её позже, когда число будет известно.
Пример:
$message = _n_noop( '%s post', '%s posts', 'text-domain' ); // $message содержит массив данных о строке перевода // делаем перевод позже $message = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) );
Эта функция всегда испльзуется в связке с translate_nooped_plural().
Используйте _nx_noop(), когда нужно добавить еще и контекст перевода.
Хуков нет.
Возвращает
Массив. Массив информации о переводе строки.
Использование
_n_noop( $singular, $plural, $domain );
- $singular(строка) (обязательный)
- Форма единственного числа для локализации.
- $plural(строка) (обязательный)
- Форма множественного числа для локализации.
- $domain(строка)
- Текстовый домен. Уникальный идентификатор для получения переведенных строк.
По умолчанию: null
Примеры
#1 Вывод интервала времени с учётом склонения
Короткий пример демонстрирует, как с помощью _n_noop() + translate_nooped_plural() выбирать правильную форму слова и возвращать строку-интервал («N minutes», «N hours» и т.д.) по числу секунд.
/**
* Very simple demo: превращаем секунды в «N minutes», «N hours» и т.д.
*/
function demo_interval( $seconds ) {
$chunks = [
YEAR_IN_SECONDS => _n_noop( '%s year', '%s years' ),
MONTH_IN_SECONDS => _n_noop( '%s month', '%s months' ),
WEEK_IN_SECONDS => _n_noop( '%s week', '%s weeks' ),
DAY_IN_SECONDS => _n_noop( '%s day', '%s days' ),
HOUR_IN_SECONDS => _n_noop( '%s hour', '%s hours' ),
MINUTE_IN_SECONDS => _n_noop( '%s minute', '%s minutes' ),
1 => _n_noop( '%s second', '%s seconds' ),
];
foreach ( $chunks as $size => $nooped ) {
if ( $seconds < $size ) {
continue;
}
$count = floor( $seconds / $size );
return sprintf( translate_nooped_plural( $nooped, $count ), $count );
}
return __( 'now' );
} #2 Использование _n_noop() в register_post_status()
_n_noop() в ВП чаще всего используется в параметрах функции register_post_status(), чтобы при регистрации статуса задать шаблоны перевода множественного числа, а затем при использовании строк в адмнике (когда число известно) ВП создавал строку по указанному шаблону.
register_post_status( 'featured', [ 'label' => 'Featured', 'label_count' => _n_noop( 'Featured <span class="count">(%s)</span>', 'Featured <span class="count">(%s)</span>' ), 'public' => true, ] );
Список изменений
| С версии 2.5.0 | Введена. |
Код _n_noop() n noop WP 7.0
function _n_noop( $singular, $plural, $domain = null ) {
return array(
0 => $singular,
1 => $plural,
'singular' => $singular,
'plural' => $plural,
'context' => null,
'domain' => $domain,
);
}