2010-06-19

И снова коротко о множественных формах в Zend Framework

Довольно часто (сплошь и рядом) приходится выводить слова, принципы написания которых зависят от числительного, с которым они связаны.
В моем проекте 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'));
?>
И получаем желаемый вывод.

Комментариев нет:

Отправить комментарий