_n_noop()WP 2.5.0

Подготавливает строку перевода с учётом множественного числа, но без немедленного перевода.

Это нужно, когда перевод выполняется не сразу а позже, например в админке. Когда вы хотите сохранить структуры строки перевода, где есть множественное число и использовать её позже, когда число будет известно.

Пример:

$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(), когда нужно добавить еще и контекст перевода.

1 раз — 0.0000069 сек (скорость света) | 50000 раз — 0.01 сек (скорость света)

Хуков нет.

Возвращает

Массив. Массив информации о переводе строки.

Использование

_n_noop( $singular, $plural, $domain );
$singular(строка) (обязательный)
Форма единственного числа для локализации.
$plural(строка) (обязательный)
Форма множественного числа для локализации.
$domain(строка)
Текстовый домен. Уникальный идентификатор для получения переведенных строк.
По умолчанию: null

Примеры

0

#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' );
}
0

#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() WP 7.0

function _n_noop( $singular, $plural, $domain = null ) {
	return array(
		0          => $singular,
		1          => $plural,
		'singular' => $singular,
		'plural'   => $plural,
		'context'  => null,
		'domain'   => $domain,
	);
}