parser

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

[09 февраля 2004]

Метод, позволяет склонять существительные, стоящие после числительных, и позволяет избегать в результатах работы ваших скриптов сообщений вида: «найдено 2 записей».

Принцип работы крайне прост: в качестве результата выдается словоформа, которая определяется двумя последними цифрами (или одной, если число однозначное).

@num_decline[num;nominative;genitive_singular;genitive_plural]
^if($num > 10 && (($num % 100) \ 10) == 1){
        $result[$genitive_plural]
}{
        ^switch($num % 10){
                ^case(1){$result[$nominative]}
                ^case(2;3;4){$result[$genitive_singular]}
                ^case(5;6;7;8;9;0){$result[$genitive_plural]}
        }
}

Использование:
^num_decline[натуральное число или ноль;именительный падеж;родительный падеж, ед. число;родительный падеж, мн. число]

Примеры вызовов:
^num_decline[112;сообщение;сообщения;сообщений] вернет: «сообщений», а
^num_decline[102;сообщение;сообщения;сообщений] возвратит строку: «сообщения».

Как правило, удобнее использовать склонение нескольких слов одновременно.

Такой вызов:

$found(77)
^num_decline[$found;найдена $found запись;найдены $found записи;найдены $found записей]

вернет строку «найдены 77 записей».