• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/localization/loc.php
  • Класс: BitrixMainLocalizationLoc
  • Вызов: Loc::getPluralForm
static function getPluralForm($value, $language = ''): int
{
	$value = (int)$value;
	$language = (string)$language;
	if ($language === '')
	{
		$language = LANGUAGE_ID;
	}

	if ($value < 0)
	{
		$value = (-1) * $value;
	}

	switch ($language)
	{
		case 'ar':
			$pluralForm = (($value !== 1) ? 1 : 0);
/*
			if ($value === 0)
			{
				$pluralForm = 0;
			}
			else if ($value === 1)
			{
				$pluralForm = 1;
			}
			else if ($value === 2)
			{
				$pluralForm = 2;
			}
			else if (
				$value % 100 >= 3
				&& $value % 100 <= 10
			)
			{
				$pluralForm = 3;
			}
			else if ($value % 100 >= 11)
			{
				$pluralForm = 4;
			}
			else
			{
				$pluralForm = 5;
			}
*/
			break;

		case 'br':
		case 'fr':
		case 'tr':
			$pluralForm = (($value > 1) ? 1 : 0);
			break;

		case 'de':
		case 'en':
		case 'hi':
		case 'it':
		case 'la':
			$pluralForm = (($value !== 1) ? 1 : 0);
			break;

		case 'ru':
		case 'ua':
			if (
				($value % 10 === 1)
				&& ($value % 100 !== 11)
			)
			{
				$pluralForm = 0;
			}
			else if (
				($value % 10 >= 2)
				&& ($value % 10 <= 4)
				&& (
					($value % 100 < 10)
					|| ($value % 100 >= 20)
				)
			)
			{
				$pluralForm = 1;
			}
			else
			{
				$pluralForm = 2;
			}
			break;

		case 'pl':
			if ($value === 1)
			{
				$pluralForm = 0;
			}
			else if (
				$value % 10 >= 2
				&& $value % 10 <= 4
				&& (
					$value % 100 < 10
					|| $value % 100 >= 20
				)
			)
			{
				$pluralForm = 1;
			}
			else
			{
				$pluralForm = 2;
			}
			break;

		case 'id':
		case 'ja':
		case 'ms':
		case 'sc':
		case 'tc':
		case 'th':
		case 'vn':
			$pluralForm = 0;
			break;

		default:
			$pluralForm = 1;
			break;
	}

	return $pluralForm;

}