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 497
$translation = apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );