The ngettext WordPress PHP filter helps you translate singular and plural forms of a string based on a given number.
Usage
$result = apply_filters('ngettext', $translation, $single, $plural, $number, $domain); // your custom code here return $result;
Parameters
- $translation (string): Translated text.
- $single (string): The text to be used if the number is singular.
- $plural (string): The text to be used if the number is plural.
- $number (int): The number to compare against to use either the singular or plural form.
- $domain (string): Text domain. Unique identifier for retrieving translated strings.
More information
See WordPress Developer Resources: ngettext
Examples
Basic Usage
In this example, the filter translates the singular and plural forms of the word “comment”.
function translate_comments($translation, $single, $plural, $number, $domain) { if ('my_domain' === $domain) { if ($number == 1) { return "1 comment"; } else { return "{$number} comments"; } } return $translation; } add_filter('ngettext', 'translate_comments', 10, 5);
Translate “Like” and “Likes”
In this example, we translate the words “like” and “likes” based on the number of likes.
function translate_likes($translation, $single, $plural, $number, $domain) { if ('my_domain' === $domain) { return ($number == 1) ? "{$number} like" : "{$number} likes"; } return $translation; } add_filter('ngettext', 'translate_likes', 10, 5);
Translate “Post” and “Posts”
In this example, we translate the words “post” and “posts” based on the number of posts.
function translate_posts($translation, $single, $plural, $number, $domain) { if ('my_domain' === $domain) { return ($number == 1) ? "{$number} post" : "{$number} posts"; } return $translation; } add_filter('ngettext', 'translate_posts', 10, 5);
Translate “Category” and “Categories”
In this example, we translate the words “category” and “categories” based on the number of categories.
function translate_categories($translation, $single, $plural, $number, $domain) { if ('my_domain' === $domain) { return ($number == 1) ? "{$number} category" : "{$number} categories"; } return $translation; } add_filter('ngettext', 'translate_categories', 10, 5);
Translate “Tag” and “Tags”
In this example, we translate the words “tag” and “tags” based on the number of tags.
function translate_tags($translation, $single, $plural, $number, $domain) { if ('my_domain' === $domain) { return ($number == 1) ? "{$number} tag" : "{$number} tags"; } return $translation; } add_filter('ngettext', 'translate_tags', 10, 5);