locale_get_plural($count,$langcode= NULL)
Returns plural form index for a specific number.
The index is computed from the formula of this language.
$count: Number to return plural for.
$langcode: Optional language code to translate to a language other than what is used to display the page.
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.
function locale_get_plural($count, $langcode = NULL) { $language_interface = \Drupal::languageManager()->getCurrentLanguage(); // Used to store precomputed plural indexes corresponding to numbers // individually for each language. $plural_indexes = &drupal_static(__FUNCTION__ . ':plurals', array()); $langcode = $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] = isset($plural_formulas[$index]) ? $plural_formulas[$index] : $plural_formulas['default']; } // In case there is no plural formula for English (no imported translation // for English), use a default formula. elseif ($langcode == 'en') { $plural_indexes[$langcode][$count] = (int) ($count != 1); } // Otherwise, return -1 (unknown). else { $plural_indexes[$langcode][$count] = -1; } } return $plural_indexes[$langcode][$count]; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!modules!locale!locale.module/function/locale_get_plural/8.1.x