Как сделать правильное склонение для множественных чисел в Drupal

Сегодня впервые столкнулся с проблемой правильного склонения множественного числа. Для английского языка данная проблема не актуальна, так как там всего два варианта: 1 item, 5 items.

В русском же языке существует 3 формы множественного числа: 1 элемент, 2 элемента, 11 элементов.

Напомню, что в Drupal числа во множественном числе выводятся с помощью функции format_plural($count, $singular, $plural, array $args = array(), array $options).

Параметры

  • $count - число для подстановки;
  • $singular - строка в единственном числе. Не используйте @count в этой строке;
  • $plural - строка для множественного значения;
  • $args - ассоциативный массив подстановок для перевода; При встрече ключей массива в строке перевода, они заменяются на соответствующие значения;
  • $options - ассоциативный массив дополнительных опций. См. t() для разрешенных ключей.

Пример

format_plural($count, '1 item', '@count items');

Чтобы теперь сделать правильное склонение на русском языке, необходимо в переводы (admin/config/regional/translate) добавить следующие строки:

1 item - 1 элемент
@count items — @count элемента
@count[2] items — @count[2] элементов

Таким образом для определенных значений @count будет выводится нужная форма множественного числа (1 элемент, 2 элемента, 11 элементов т.д.).

Benya