dateutils

pluralize

function
pluralize()

Option name Type Description
number number
words Array
return string

For example:
1 год
2 года, 3 года, 4 года
5 лет, 6 лет … 11 лет, 12 лет … 20 лет
21 год, 31 год
22 года, 32 года

function pluralize(number, words) {
  const magnitude = number % 100;
  let pluralWord = '';

  if ((magnitude > 10 && magnitude < 20) || (number === 0)) {
    pluralWord = words[2];
  } else {
    switch (Math.abs(number % 10)) {
      case 1:
        pluralWord = words[0];
        break
      case 2:
      case 3:
      case 4:
        pluralWord = words[1];
        break
      default:
        pluralWord = words[2];
        break
    }
  }
  return [number, pluralWord].join(' ')
}

module.exports = {
  id: 'RU',
  monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
  dayNames: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
  shortDayNames: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
  yearsLabel: years => pluralize(years, ['Год', 'Года', 'Лет']),
  monthsLabel: months => pluralize(months, ['Месяц', 'Месяца', 'Месяцев']),
  daysLabel: days => pluralize(days, ['День', 'Дня', 'Дней']),
  hoursLabel: (hours, minutes) => {
    const hoursAndMinutes = DateFormat.hoursAndMinutes(hours, minutes).replace('.', ',');

It's weird to say like this but correct pronounce is:
1,2 = '1 целая две десятых часа'
0,1 = '1 десятая часа'
0,06 = '6 сотых часа'
2,05 = '2 целых пять сотых часа'
3,12 = '3 целых двенадцать сотых часа'
4,29 = '4 целых 29 сотых часа'

return hoursAndMinutes + ' Часа'
  },
  learRangeLabel: 'Очистить диапазон',
  clearDateLabel: 'Очистить дату',
  shortDateFormat: 'j.n.Y',
  weekDateFormat: 'D j.n.Y',
  dateTimeFormat: 'D j.n.Y G:i',
  firstWeekday: DateTime.MONDAY,
  holidays: {}
}