Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. TranslatorTrait.php

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\Translation

Code

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,
    
    };
}
RSS feed
Powered by Drupal