The ngettext_{$domain} WordPress PHP filter allows you to modify the singular or plural form of a string based on a domain and a number.
Usage
add_filter( 'ngettext_example_domain', 'custom_ngettext_example_domain', 10, 5 ); function custom_ngettext_example_domain( $translation, $single, $plural, $number, $domain ) { // your custom code here return $translation; }
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_{$domain}
Examples
Change plural form for the “example” domain
Modify the plural form for a string in the “example” domain based on the number of items:
add_filter( 'ngettext_example', 'custom_ngettext_example', 10, 5 ); function custom_ngettext_example( $translation, $single, $plural, $number, $domain ) { if ( $number > 1 ) { $translation = $plural . " (modified)"; } return $translation; }
Change singular form for the “example” domain
Modify the singular form for a string in the “example” domain:
add_filter( 'ngettext_example', 'custom_ngettext_example', 10, 5 ); function custom_ngettext_example( $translation, $single, $plural, $number, $domain ) { if ( $number == 1 ) { $translation = $single . " (modified)"; } return $translation; }
Change plural form for a specific number
Modify the plural form for a string in the “example” domain when the number is 5:
add_filter( 'ngettext_example', 'custom_ngettext_example', 10, 5 ); function custom_ngettext_example( $translation, $single, $plural, $number, $domain ) { if ( $number == 5 ) { $translation = $plural . " (special case)"; } return $translation; }
Add a prefix to translations
Add a prefix to the translated text in the “example” domain:
add_filter( 'ngettext_example', 'custom_ngettext_example', 10, 5 ); function custom_ngettext_example( $translation, $single, $plural, $number, $domain ) { $translation = "Prefix: " . $translation; return $translation; }
Change translation based on custom logic
Modify the translation for a string in the “example” domain based on custom logic:
add_filter( 'ngettext_example', 'custom_ngettext_example', 10, 5 ); function custom_ngettext_example( $translation, $single, $plural, $number, $domain ) { if ( custom_logic_function() ) { $translation = $single; } else { $translation = $plural; } return $translation; }