You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
6.6 KiB

  1. //! moment.js locale configuration
  2. //! locale : russian (ru)
  3. //! author : Viktorminator : https://github.com/Viktorminator
  4. //! Author : Menelion Elensúle : https://github.com/Oire
  5. (function (global, factory) {
  6. typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
  7. typeof define === 'function' && define.amd ? define(['moment'], factory) :
  8. factory(global.moment)
  9. }(this, function (moment) { 'use strict';
  10. function plural(word, num) {
  11. var forms = word.split('_');
  12. return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
  13. }
  14. function relativeTimeWithPlural(number, withoutSuffix, key) {
  15. var format = {
  16. 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
  17. 'hh': 'час_часа_часов',
  18. 'dd': 'день_дня_дней',
  19. 'MM': 'месяц_месяца_месяцев',
  20. 'yy': 'год_года_лет'
  21. };
  22. if (key === 'm') {
  23. return withoutSuffix ? 'минута' : 'минуту';
  24. }
  25. else {
  26. return number + ' ' + plural(format[key], +number);
  27. }
  28. }
  29. function monthsCaseReplace(m, format) {
  30. var months = {
  31. 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
  32. 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
  33. },
  34. nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
  35. 'accusative' :
  36. 'nominative';
  37. return months[nounCase][m.month()];
  38. }
  39. function monthsShortCaseReplace(m, format) {
  40. var monthsShort = {
  41. 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
  42. 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
  43. },
  44. nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
  45. 'accusative' :
  46. 'nominative';
  47. return monthsShort[nounCase][m.month()];
  48. }
  49. function weekdaysCaseReplace(m, format) {
  50. var weekdays = {
  51. 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
  52. 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_')
  53. },
  54. nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ?
  55. 'accusative' :
  56. 'nominative';
  57. return weekdays[nounCase][m.day()];
  58. }
  59. var ru = moment.defineLocale('ru', {
  60. months : monthsCaseReplace,
  61. monthsShort : monthsShortCaseReplace,
  62. weekdays : weekdaysCaseReplace,
  63. weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
  64. weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
  65. monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i],
  66. longDateFormat : {
  67. LT : 'HH:mm',
  68. LTS : 'LT:ss',
  69. L : 'DD.MM.YYYY',
  70. LL : 'D MMMM YYYY г.',
  71. LLL : 'D MMMM YYYY г., LT',
  72. LLLL : 'dddd, D MMMM YYYY г., LT'
  73. },
  74. calendar : {
  75. sameDay: '[Сегодня в] LT',
  76. nextDay: '[Завтра в] LT',
  77. lastDay: '[Вчера в] LT',
  78. nextWeek: function () {
  79. return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
  80. },
  81. lastWeek: function (now) {
  82. if (now.week() !== this.week()) {
  83. switch (this.day()) {
  84. case 0:
  85. return '[В прошлое] dddd [в] LT';
  86. case 1:
  87. case 2:
  88. case 4:
  89. return '[В прошлый] dddd [в] LT';
  90. case 3:
  91. case 5:
  92. case 6:
  93. return '[В прошлую] dddd [в] LT';
  94. }
  95. } else {
  96. if (this.day() === 2) {
  97. return '[Во] dddd [в] LT';
  98. } else {
  99. return '[В] dddd [в] LT';
  100. }
  101. }
  102. },
  103. sameElse: 'L'
  104. },
  105. relativeTime : {
  106. future : 'через %s',
  107. past : '%s назад',
  108. s : 'несколько секунд',
  109. m : relativeTimeWithPlural,
  110. mm : relativeTimeWithPlural,
  111. h : 'час',
  112. hh : relativeTimeWithPlural,
  113. d : 'день',
  114. dd : relativeTimeWithPlural,
  115. M : 'месяц',
  116. MM : relativeTimeWithPlural,
  117. y : 'год',
  118. yy : relativeTimeWithPlural
  119. },
  120. meridiemParse: /ночи|утра|дня|вечера/i,
  121. isPM : function (input) {
  122. return /^(дня|вечера)$/.test(input);
  123. },
  124. meridiem : function (hour, minute, isLower) {
  125. if (hour < 4) {
  126. return 'ночи';
  127. } else if (hour < 12) {
  128. return 'утра';
  129. } else if (hour < 17) {
  130. return 'дня';
  131. } else {
  132. return 'вечера';
  133. }
  134. },
  135. ordinalParse: /\d{1,2}-(й|го|я)/,
  136. ordinal: function (number, period) {
  137. switch (period) {
  138. case 'M':
  139. case 'd':
  140. case 'DDD':
  141. return number + '-й';
  142. case 'D':
  143. return number + '-го';
  144. case 'w':
  145. case 'W':
  146. return number + '-я';
  147. default:
  148. return number;
  149. }
  150. },
  151. week : {
  152. dow : 1, // Monday is the first day of the week.
  153. doy : 7 // The week that contains Jan 1st is the first week of the year.
  154. }
  155. });
  156. return ru;
  157. }));