namespace Ice\I18n\Plural; /** * Plural rules for the following locales and languages: * * Locales: be bs hr ru sh sr uk * * Rules: * one → n mod 10 is 1 and n mod 100 is not 11; * few → n mod 10 in 2..4 and n mod 100 not in 12..14; * many → n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14; * other → everything else (fractions) * * Reference CLDR Version 21 (2012-03-01 03:27:30 GMT) * @see http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html * @see http://unicode.org/repos/cldr/trunk/common/supplemental/plurals.xml * * @package Ice/I18n * @category Plural rules * @author Ice Team * @copyright (c) 2014-2023 Ice Team * @license http://iceframework.org/license */ class Balkan implements PluralInterface { public function getCategory(int count) -> string { var isInt; int i10, i100; let isInt = this->isInt(count), i10 = count % 10, i100 = count % 100; if isInt && count % 10 == 1 && count % 100 != 11 { return "one"; } elseif isInt && i10 >= 2 && i10 <= 4 && !(i100 >= 12 && i100 <= 14) { return "few"; } elseif isInt && (i10 == 0 || (i10 >= 5 && i10 <= 9) || (i100 >= 11 && i100 <= 14)) { return "many"; } else { return "other"; } } protected function isInt(value) { return is_numeric(value) && value - intval(value) == 0; } }