Posts tagged ‘plural’

Здравствуйте.
Думаю, многие из вас сталкивались с проблемой склонения существительных в зависимости от какого-либо числа. Например, “15 дней”. А если будет 21, выводить “21 дней”? Для решения этой проблемы написано множество функций, но я не встречал реализации в виде помощника Zend_View. Итак, встречайте: App_View_Helper_Plural.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Helper_View_Plural extends Zend_View_Helper_Abstract
{
    public function plural($n, $form1, $form2, $form3) {
        $plural = ($n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
        switch($plural) {
            case 0:
            default:
                return $form1;
            case 1:
                return $form2;
            case 2:
                return $form3;
        }
    }
}

Использование (в шаблоне):

1
2
3
echo '1 ' . $this->plural(1, 'день', 'дня', 'дней') . '<br>';
echo '4 ' . $this->plural(4, 'день', 'дня', 'дней') . '<br>';
echo '25 ' . $this->plural(25, 'день', 'дня', 'дней');

Вывод:

1 день
4 дня
25 дней

Надеюсь, этого поможет вам сделать ваши проекты более удобными для пользователей.
Всего доброго.