function TranslatorTrait::getPluralizationRule
Returns the plural position to use for the given locale and number.
The plural rules are derived from code of the Zend Framework (2010-09-25), which is subject to the new BSD license (http://framework.zend.com/license/new-bsd). Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
1 call to TranslatorTrait::getPluralizationRule()
- TranslatorTrait::trans in vendor/
symfony/ translation-contracts/ TranslatorTrait.php
File
-
vendor/
symfony/ translation-contracts/ TranslatorTrait.php, line 133
Class
- TranslatorTrait
- A trait to help implement TranslatorInterface and LocaleAwareInterface.
Namespace
Symfony\Contracts\TranslationCode
private function getPluralizationRule(float $number, string $locale) : int {
$number = abs($number);
return match ('pt_BR' !== $locale && 'en_US_POSIX' !== $locale && \strlen($locale) > 3 ? substr($locale, 0, strrpos($locale, '_')) : $locale) { 'af', 'bn', 'bg', 'ca', 'da', 'de', 'el', 'en', 'en_US_POSIX', 'eo', 'es', 'et', 'eu', 'fa', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'he', 'hu', 'is', 'it', 'ku', 'lb', 'ml', 'mn', 'mr', 'nah', 'nb', 'ne', 'nl', 'nn', 'no', 'oc', 'om', 'or', 'pa', 'pap', 'ps', 'pt', 'so', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'zu' => 1 == $number ? 0 : 1,
'am', 'bh', 'fil', 'fr', 'gun', 'hi', 'hy', 'ln', 'mg', 'nso', 'pt_BR', 'ti', 'wa' => $number < 2 ? 0 : 1,
'be', 'bs', 'hr', 'ru', 'sh', 'sr', 'uk' => 1 == $number % 10 && 11 != $number % 100 ? 0 : ($number % 10 >= 2 && $number % 10 <= 4 && ($number % 100 < 10 || $number % 100 >= 20) ? 1 : 2),
'cs', 'sk' => 1 == $number ? 0 : ($number >= 2 && $number <= 4 ? 1 : 2),
'ga' => 1 == $number ? 0 : (2 == $number ? 1 : 2),
'lt' => 1 == $number % 10 && 11 != $number % 100 ? 0 : ($number % 10 >= 2 && ($number % 100 < 10 || $number % 100 >= 20) ? 1 : 2),
'sl' => 1 == $number % 100 ? 0 : (2 == $number % 100 ? 1 : (3 == $number % 100 || 4 == $number % 100 ? 2 : 3)),
'mk' => 1 == $number % 10 ? 0 : 1,
'mt' => 1 == $number ? 0 : (0 == $number || $number % 100 > 1 && $number % 100 < 11 ? 1 : ($number % 100 > 10 && $number % 100 < 20 ? 2 : 3)),
'lv' => 0 == $number ? 0 : (1 == $number % 10 && 11 != $number % 100 ? 1 : 2),
'pl' => 1 == $number ? 0 : ($number % 10 >= 2 && $number % 10 <= 4 && ($number % 100 < 12 || $number % 100 > 14) ? 1 : 2),
'cy' => 1 == $number ? 0 : (2 == $number ? 1 : (8 == $number || 11 == $number ? 2 : 3)),
'ro' => 1 == $number ? 0 : (0 == $number || $number % 100 > 0 && $number % 100 < 20 ? 1 : 2),
'ar' => 0 == $number ? 0 : (1 == $number ? 1 : (2 == $number ? 2 : ($number % 100 >= 3 && $number % 100 <= 10 ? 3 : ($number % 100 >= 11 && $number % 100 <= 99 ? 4 : 5)))),
default => 0,
};
}