Страница 1 из 1

[3.1] Склонение существительных с числительными

Добавлено: 24.01.2014 20:47
rxu
В phpBB 3.1 введена новая система работы со склонениями существительных с числительными.
Взята с проекта Mozilla - localizationd and plurals и использует т.н. правила.
Для русского языка используется правило 7.
Прописывается изменением специальной языковой переменной в language/ru/common.php:
По умолчанию для английского языка

Код: Выделить всё

'PLURAL_RULE'		=> 1,
Для русского языка

Код: Выделить всё

'PLURAL_RULE'		=> 7,
После этого языковые переменные (как встроенные, так и пользовательские), для которых необходимо задать несколько вариантов с числительными, прописываются в виде (для примера):

Код: Выделить всё

	'DOWNLOAD_COUNTS'		=> array(
		0	=> '0 скачиваний',
		1	=> '%d скачивание',
		2	=> '%d скачивания',
		3	=> '%d скачиваний',
	),
Здесь ключи соответствуют сочетаниям:
  • 1 - с числами, оканчивающимися на 1, кроме 11. Например: 1 минута, 51 минута.
  • 2 - с числами, оканчивающимися на 2, 3 и 4, кроме 12, 13 и 14. Например: 2 минуты, 33 минуты, 44 минуты.
  • 3 - со всеми остальными числами. Например: 0 минут, 11 минут, 14 минут, 99 минут.
При этом число единиц, на которые оканчивается числительное, определяется автоматически.
Ключ 0 является специальным случаем, присвоенное ему значение обрабатывается независимо и выводится как есть. В приведенном примере в случае, если обрабатывается число 0, просто выводится "0 скачиваний", независимо от значения ключа 3.
Если задать "Мама мыла раму", при обработке числа 0 также будет выводиться заданное.
Пример:

Код: Выделить всё

		'AGO'		=> array(
			0		=> 'менее минуты назад',
			1		=> '%d минуту назад',
			2		=> '%d минуты назад',
			3		=> '%d минут назад',
		),
В случае, если обрабатываемое значение менее 1 минуты (т.е. равно 0), будет выведено "менее минуты назад".

Примеры:

Код: Выделить всё

$user->lang('AGO', 0);
выведет "менее минуты назад" (использован ключ 0). Однако, если, например, удалить вхождение с ключом 0, будет выведено "0 минут назад" (т.е. использован ключ 3).

Код: Выделить всё

$user->lang('AGO', 11);
выведет "11 минут назад" (использован ключ 3).

Код: Выделить всё

$user->lang('AGO', 92);
выведет "92 минуты назад" (использован ключ 2).

И так далее.

Re: Склонение существительных с числительными

Добавлено: 24.01.2014 21:21
Пчелкин
Во разжевано... Аж просветление появилось в этом вопросе... ПасиБ!!!