Довольно часто (сплошь и рядом) приходится выводить слова, принципы написания которых зависят от числительного, с которым они связаны.

В моем проекте http://spaceismine.org/ к каждой статье выводится количество просмотров. Если дописывать после количества слово “просмотров”, то это не всегда будет корректно. Наверное, я достаточно сложно изъясняюсь. Попытаюсь поставить задачу и расписать способ ее решения.

Задача: сделать вывод вместо:

Прочитано раз: 1 / Прочитано раз: 3 / Прочитано раз: 11

такой:

Прочитано 1 раз / Прочитано 3 раза / Прочитано 11 раз

Не самый удачный пример на слове “раз”, так как форма 1 и 11 не отличаются. В большинстве случаев они будут все же разными:

1 просмотр / 3 просмотра / 11 просмотров

В русском языке, таким образом, имеется три множественные формы: “просмотр”, “просмотра”, “просмотров”. Начиная с версии 1.9, Zend Framework сильно облегчает решение такого рода задач.

Решение: итак, логика вывода у нас работает во view. И по такому случаю уже есть view helper translate. Пишем следующее:

Прочитано <?php
echo $article->views, ' ';
echo $this->translate(array('раз', 'раза', 'раз', intval($article->views), 'ru'));
?>

И получаем желаемый вывод.