function TranslationManager::getPluralIndex
Same name in this branch
- 11.x core/lib/Drupal/Core/StringTranslation/TranslationManager.php \Drupal\Core\StringTranslation\TranslationManager::getPluralIndex()
Same name and namespace in other branches
- main core/modules/locale/src/TranslationManager.php \Drupal\locale\TranslationManager::getPluralIndex()
- main core/lib/Drupal/Core/StringTranslation/TranslationManager.php \Drupal\Core\StringTranslation\TranslationManager::getPluralIndex()
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.
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.
Overrides TranslationManager::getPluralIndex
File
-
core/
modules/ locale/ src/ TranslationManager.php, line 37
Class
- TranslationManager
- Plural index implementation.
Namespace
Drupal\localeCode
protected function getPluralIndex(int $count, ?string $langcode = NULL) : int {
$langcode = $langcode ?: $this->defaultLangcode;
// Retrieve the plural formulas for all languages.
$plural_formulas = $this->pluralFormula
->getFormula($langcode);
// If there is a plural formula for the language, evaluate it for the
// given $count.
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;
return $plural_formulas[$index] ?? $plural_formulas['default'];
}
elseif ($langcode == 'en') {
return (int) ($count != 1);
}
else {
return -1;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.