Задача: сделать так, чтобы цифры и числительные к ним выводились корректно при пересчете значения на Javascript, то есть сделать склонение числительных на javascript.
Без склонения числительных пользователь может увидеть «8 мортышка(ек)» или «4 трамваев» и т.д. Это не красиво и усложняет процесс восприятия интерфейса.
Поэтому для многих стало нормой делать системы, которые бы склоняли числительные, так, чтобы пользователю было удобно читать интерфейс, так, как будто интерфейс – живое существо.
Как сделать склонение числительных на javascript
Подход очень простой. В русском языке есть несколько падежей, в которых числительное может выступать в зависимости от числа, с которым они используются.
Ниже приведена функция, которая выполняет склонение числительных на javascript:
function declOfNum(number, titles) { cases = [2, 0, 1, 1, 1, 2]; return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ]; }
В эту функцию передается число (параметр number), и массив заголовков (параметр titles), среди которых будет выбрана правильная форма, подходящая к числу.
Первый элемент title — для единиц, второй — для пар, третия — для других чисел.
Например:
Нужно вывести фразу N арбузов, вызовем функцию:
title=declOfNum(N,['арбуз','арбуза','арбузов']);
В результате склонение числительных на javascript сработает, и мы получим (в зависимости от N):
1 арбуз
2 арбуза
12 арбузов
Всё просто, и удобно.
Кстати, есть подобная функция, для того, чтобы сделать склонение числительных на php