ngettext
Позволяет изменить переведенную функцией _n() строку.
Такая строка используется для надписей, которые зависят от впереди стоящего числа, например: 1 персик, 2 персика, 10 персиков.
Это фильтр для функции _n().
Использование
add_filter( 'ngettext', 'wp_kama_ngettext_filter', 10, 5 );
/**
* Function for `ngettext` filter-hook.
*
* @param string $translation Translated text.
* @param string $single The text to be used if the number is singular.
* @param string $plural The text to be used if the number is plural.
* @param int $number The number to compare against to use either the singular or plural form.
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
*
* @return string
*/
function wp_kama_ngettext_filter( $translation, $single, $plural, $number, $domain ){
// filter...
return $translation;
}
- $translation(строка)
- Переведенный текст.
- $single(строка)
- Оригинальный текст для единственного числа.
- $plural(строка)
- Оригинальный текст для множественного числа.
- $number(строка)
- Число по которому выбирается строка для перевода.
- $domain(строка)
- Идентификатор перевода, который указывается в функциях перевода. По нему загружается файл перевода .mo.
Примеры
#1 Заменим слово items на elements в блоке пагинации таблицы WP_List_Table в админке

## Replace `items` name in wp_list_table pagination box
add_filter( 'ngettext', 'change_wp_list_table_pagination_item_name', 10, 5 );
function change_wp_list_table_pagination_item_name( $translation, $single, $plural, $number, $domain ) {
if ( $domain === 'default' && in_array( $translation, ['%s item', '%s items'] ) ) {
return str_replace( '%s item', '%s element', $translation );
}
return $translation;
}
Список изменений
| С версии 2.2.0 | Введена. |
Где вызывается хук
ngettext
wp-includes/l10n.php 498
$translation = apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );