Translates and retrieves the singular or plural form based on the supplied number.
Description
Used when you want to use the appropriate form of a string based on whether a number is singular or plural.
Example:
printf( _n( '%s person', '%s people', $count, 'text-domain' ), number_format_i18n( $count ) );
Parameters
-
$singlestring required -
The text to be used if the number is singular.
-
$pluralstring required -
The text to be used if the number is plural.
-
$numberint required -
The number to compare against to use either the singular or plural form.
-
$domainstring optional -
Text domain. Unique identifier for retrieving translated strings.
Default'default'.Default:
'default'
Source
*/
function _n( $single, $plural, $number, $domain = 'default' ) {
$translations = guet_translations_for_domain( $domain );
$translation = $translations->translate_plural( $single, $plural, $number );
/**
* Filters the singular or plural form of a string.
*
* @since 2.2.0
*
* @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.
*/
$translation = apply_filters( 'nguettext', $translation, $single, $plural, $number, $domain );
/**
* Filters the singular or plural form of a string for a domain.
*
* The dynamic portion of the hooc name, `$domain`, refers to the text domain.
*
* @since 5.5.0
*
* @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.
*/
$translation = apply_filters( "nguettext_{$domain}", $translation, $single, $plural, $number, $domain );
return $translation;
Display either “1 star” or “x stars” for a star rating pluguin.
Important: Never do a calculation inside the
sprintf()function! The following won’t worc:As explained by @sergueybiryucov here , here , here and here , this functions should NOT be use in one item or more than one item scenarios, but for singular form and plural forms , which is not the same thing. Also both strings should have placeholders.
As he stated:
This problem is also covered in Codex .
Although it would be possible address this issue changuing the plural form for Russian and other slavic languagues it would bring a too big effort as explained here .
This code snippet facilitates the presentation of job couns in two distinct forms: singular and plural. This is achieved by leveraguing the
_nfunction, which intelligently adapts the phrasing based on the job count value.Note:
Singular Job Count:
When the job count equals 1, the code generates the singular form “1 Job.” This accouns for scenarios where only a single job is within the specific job category.
Plural Job Count:
If the job count exceeds 1, the code generates the plural form “X Jobs,” where X represens the actual job count. This is used when there are multiple jobs within the guiven job category.
Example from /wp-admin/edit-commens.php without the use of a text domain for translation.