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.

151 lines
6.2 KiB

  1. //! moment.js locale configuration
  2. //! locale : ukrainian (uk)
  3. //! author : zemlanin : https://github.com/zemlanin
  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': 'хвилина_хвилини_хвилин',
  17. 'hh': 'година_години_годин',
  18. 'dd': 'день_дні_днів',
  19. 'MM': 'місяць_місяці_місяців',
  20. 'yy': 'рік_роки_років'
  21. };
  22. if (key === 'm') {
  23. return withoutSuffix ? 'хвилина' : 'хвилину';
  24. }
  25. else if (key === 'h') {
  26. return withoutSuffix ? 'година' : 'годину';
  27. }
  28. else {
  29. return number + ' ' + plural(format[key], +number);
  30. }
  31. }
  32. function monthsCaseReplace(m, format) {
  33. var months = {
  34. 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
  35. 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
  36. },
  37. nounCase = (/D[oD]? *MMMM?/).test(format) ?
  38. 'accusative' :
  39. 'nominative';
  40. return months[nounCase][m.month()];
  41. }
  42. function weekdaysCaseReplace(m, format) {
  43. var weekdays = {
  44. 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
  45. 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
  46. 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
  47. },
  48. nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
  49. 'accusative' :
  50. ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
  51. 'genitive' :
  52. 'nominative');
  53. return weekdays[nounCase][m.day()];
  54. }
  55. function processHoursFunction(str) {
  56. return function () {
  57. return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
  58. };
  59. }
  60. var uk = moment.defineLocale('uk', {
  61. months : monthsCaseReplace,
  62. monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
  63. weekdays : weekdaysCaseReplace,
  64. weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
  65. weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
  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: processHoursFunction('[Сьогодні '),
  76. nextDay: processHoursFunction('[Завтра '),
  77. lastDay: processHoursFunction('[Вчора '),
  78. nextWeek: processHoursFunction('[У] dddd ['),
  79. lastWeek: function () {
  80. switch (this.day()) {
  81. case 0:
  82. case 3:
  83. case 5:
  84. case 6:
  85. return processHoursFunction('[Минулої] dddd [').call(this);
  86. case 1:
  87. case 2:
  88. case 4:
  89. return processHoursFunction('[Минулого] dddd [').call(this);
  90. }
  91. },
  92. sameElse: 'L'
  93. },
  94. relativeTime : {
  95. future : 'за %s',
  96. past : '%s тому',
  97. s : 'декілька секунд',
  98. m : relativeTimeWithPlural,
  99. mm : relativeTimeWithPlural,
  100. h : 'годину',
  101. hh : relativeTimeWithPlural,
  102. d : 'день',
  103. dd : relativeTimeWithPlural,
  104. M : 'місяць',
  105. MM : relativeTimeWithPlural,
  106. y : 'рік',
  107. yy : relativeTimeWithPlural
  108. },
  109. // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
  110. meridiemParse: /ночі|ранку|дня|вечора/,
  111. isPM: function (input) {
  112. return /^(дня|вечора)$/.test(input);
  113. },
  114. meridiem : function (hour, minute, isLower) {
  115. if (hour < 4) {
  116. return 'ночі';
  117. } else if (hour < 12) {
  118. return 'ранку';
  119. } else if (hour < 17) {
  120. return 'дня';
  121. } else {
  122. return 'вечора';
  123. }
  124. },
  125. ordinalParse: /\d{1,2}-(й|го)/,
  126. ordinal: function (number, period) {
  127. switch (period) {
  128. case 'M':
  129. case 'd':
  130. case 'DDD':
  131. case 'w':
  132. case 'W':
  133. return number + '-й';
  134. case 'D':
  135. return number + '-го';
  136. default:
  137. return number;
  138. }
  139. },
  140. week : {
  141. dow : 1, // Monday is the first day of the week.
  142. doy : 7 // The week that contains Jan 1st is the first week of the year.
  143. }
  144. });
  145. return uk;
  146. }));