uk.js (5963B)
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 6import moment from '../moment'; 7 8function plural(word, num) { 9 var forms = word.split('_'); 10 return num % 10 === 1 && num % 100 !== 11 11 ? forms[0] 12 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 13 ? forms[1] 14 : forms[2]; 15} 16function relativeTimeWithPlural(number, withoutSuffix, key) { 17 var format = { 18 ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', 19 mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', 20 hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', 21 dd: 'день_дні_днів', 22 MM: 'місяць_місяці_місяців', 23 yy: 'рік_роки_років', 24 }; 25 if (key === 'm') { 26 return withoutSuffix ? 'хвилина' : 'хвилину'; 27 } else if (key === 'h') { 28 return withoutSuffix ? 'година' : 'годину'; 29 } else { 30 return number + ' ' + plural(format[key], +number); 31 } 32} 33function weekdaysCaseReplace(m, format) { 34 var weekdays = { 35 nominative: 36 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( 37 '_' 38 ), 39 accusative: 40 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( 41 '_' 42 ), 43 genitive: 44 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( 45 '_' 46 ), 47 }, 48 nounCase; 49 50 if (m === true) { 51 return weekdays['nominative'] 52 .slice(1, 7) 53 .concat(weekdays['nominative'].slice(0, 1)); 54 } 55 if (!m) { 56 return weekdays['nominative']; 57 } 58 59 nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) 60 ? 'accusative' 61 : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) 62 ? 'genitive' 63 : 'nominative'; 64 return weekdays[nounCase][m.day()]; 65} 66function processHoursFunction(str) { 67 return function () { 68 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; 69 }; 70} 71 72export default moment.defineLocale('uk', { 73 months: { 74 format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( 75 '_' 76 ), 77 standalone: 78 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( 79 '_' 80 ), 81 }, 82 monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( 83 '_' 84 ), 85 weekdays: weekdaysCaseReplace, 86 weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), 87 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), 88 longDateFormat: { 89 LT: 'HH:mm', 90 LTS: 'HH:mm:ss', 91 L: 'DD.MM.YYYY', 92 LL: 'D MMMM YYYY р.', 93 LLL: 'D MMMM YYYY р., HH:mm', 94 LLLL: 'dddd, D MMMM YYYY р., HH:mm', 95 }, 96 calendar: { 97 sameDay: processHoursFunction('[Сьогодні '), 98 nextDay: processHoursFunction('[Завтра '), 99 lastDay: processHoursFunction('[Вчора '), 100 nextWeek: processHoursFunction('[У] dddd ['), 101 lastWeek: function () { 102 switch (this.day()) { 103 case 0: 104 case 3: 105 case 5: 106 case 6: 107 return processHoursFunction('[Минулої] dddd [').call(this); 108 case 1: 109 case 2: 110 case 4: 111 return processHoursFunction('[Минулого] dddd [').call(this); 112 } 113 }, 114 sameElse: 'L', 115 }, 116 relativeTime: { 117 future: 'за %s', 118 past: '%s тому', 119 s: 'декілька секунд', 120 ss: relativeTimeWithPlural, 121 m: relativeTimeWithPlural, 122 mm: relativeTimeWithPlural, 123 h: 'годину', 124 hh: relativeTimeWithPlural, 125 d: 'день', 126 dd: relativeTimeWithPlural, 127 M: 'місяць', 128 MM: relativeTimeWithPlural, 129 y: 'рік', 130 yy: relativeTimeWithPlural, 131 }, 132 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason 133 meridiemParse: /ночі|ранку|дня|вечора/, 134 isPM: function (input) { 135 return /^(дня|вечора)$/.test(input); 136 }, 137 meridiem: function (hour, minute, isLower) { 138 if (hour < 4) { 139 return 'ночі'; 140 } else if (hour < 12) { 141 return 'ранку'; 142 } else if (hour < 17) { 143 return 'дня'; 144 } else { 145 return 'вечора'; 146 } 147 }, 148 dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, 149 ordinal: function (number, period) { 150 switch (period) { 151 case 'M': 152 case 'd': 153 case 'DDD': 154 case 'w': 155 case 'W': 156 return number + '-й'; 157 case 'D': 158 return number + '-го'; 159 default: 160 return number; 161 } 162 }, 163 week: { 164 dow: 1, // Monday is the first day of the week. 165 doy: 7, // The week that contains Jan 7th is the first week of the year. 166 }, 167});