function locale_get_plural
Same name and namespace in other branches
- 10 core/modules/locale/locale.module \locale_get_plural()
- 11.x core/modules/locale/locale.module \locale_get_plural()
- 9 core/modules/locale/locale.module \locale_get_plural()
- 8.9.x core/modules/locale/locale.module \locale_get_plural()
- 7.x modules/locale/locale.module \locale_get_plural()
Returns plural form index for a specific number.
The index is computed from the formula of this language.
Parameters
int $count: Number to return plural for.
string|null $langcode: (optional) Language code to translate to a language other than what is used to display the page, or NULL for current language. Defaults to NULL.
Return value
int The numeric index of the plural variant to use for this $langcode and $count combination or -1 if the language was not found or does not have a plural formula.
Deprecated
in drupal:11.5.0 and is removed from drupal:13.0.0. There is no replacement.
See also
https://www.drupal.org/node/3590542
1 call to locale_get_plural()
- LocaleGetPluralDeprecationTest::testLocaleGetPlural in core/
modules/ locale/ tests/ src/ Kernel/ LocaleGetPluralDeprecationTest.php - Tests deprecation of locale_get_plural().
File
-
core/
modules/ locale/ locale.module, line 241
Code
function locale_get_plural($count, $langcode = NULL) {
@trigger_error(__FUNCTION__ . '() is deprecated in drupal:11.5.0 and is removed from drupal:13.0.0. There is no replacement. See https://www.drupal.org/node/3590542', E_USER_DEPRECATED);
$language_interface = \Drupal::languageManager()->getCurrentLanguage();
// Used to store precomputed plural indexes corresponding to numbers
// individually for each language.
$plural_indexes =& drupal_static(__FUNCTION__ . ':plurals', []);
$langcode = $langcode ?: $language_interface->getId();
if (!isset($plural_indexes[$langcode][$count])) {
// Retrieve and statically cache the plural formulas for all languages.
$plural_formulas = \Drupal::service('locale.plural.formula')->getFormula($langcode);
// If there is a plural formula for the language, evaluate it for the given
// $count and statically cache the result for the combination of language
// and count, since the result will always be identical.
if (!empty($plural_formulas)) {
// Plural formulas are stored as an array for 0-199. 100 is the highest
// modulo used but storing 0-99 is not enough because below 100 we often
// find exceptions (1, 2, etc).
$index = $count > 199 ? 100 + $count % 100 : $count;
$plural_indexes[$langcode][$count] = $plural_formulas[$index] ?? $plural_formulas['default'];
}
elseif ($langcode == 'en') {
$plural_indexes[$langcode][$count] = (int) ($count != 1);
}
else {
$plural_indexes[$langcode][$count] = -1;
}
}
return $plural_indexes[$langcode][$count];
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.