sr-cyrl.js (4762B)
1//! moment.js locale configuration 2//! locale : Serbian Cyrillic [sr-cyrl] 3//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j 4//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic 5 6import moment from '../moment'; 7 8var translator = { 9 words: { 10 //Different grammatical cases 11 ss: ['секунда', 'секунде', 'секунди'], 12 m: ['један минут', 'једног минута'], 13 mm: ['минут', 'минута', 'минута'], 14 h: ['један сат', 'једног сата'], 15 hh: ['сат', 'сата', 'сати'], 16 d: ['један дан', 'једног дана'], 17 dd: ['дан', 'дана', 'дана'], 18 M: ['један месец', 'једног месеца'], 19 MM: ['месец', 'месеца', 'месеци'], 20 y: ['једну годину', 'једне године'], 21 yy: ['годину', 'године', 'година'], 22 }, 23 correctGrammaticalCase: function (number, wordKey) { 24 if ( 25 number % 10 >= 1 && 26 number % 10 <= 4 && 27 (number % 100 < 10 || number % 100 >= 20) 28 ) { 29 return number % 10 === 1 ? wordKey[0] : wordKey[1]; 30 } 31 return wordKey[2]; 32 }, 33 translate: function (number, withoutSuffix, key, isFuture) { 34 var wordKey = translator.words[key], 35 word; 36 37 if (key.length === 1) { 38 // Nominativ 39 if (key === 'y' && withoutSuffix) return 'једна година'; 40 return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; 41 } 42 43 word = translator.correctGrammaticalCase(number, wordKey); 44 // Nominativ 45 if (key === 'yy' && withoutSuffix && word === 'годину') { 46 return number + ' година'; 47 } 48 49 return number + ' ' + word; 50 }, 51}; 52 53export default moment.defineLocale('sr-cyrl', { 54 months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( 55 '_' 56 ), 57 monthsShort: 58 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), 59 monthsParseExact: true, 60 weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), 61 weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), 62 weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), 63 weekdaysParseExact: true, 64 longDateFormat: { 65 LT: 'H:mm', 66 LTS: 'H:mm:ss', 67 L: 'D. M. YYYY.', 68 LL: 'D. MMMM YYYY.', 69 LLL: 'D. MMMM YYYY. H:mm', 70 LLLL: 'dddd, D. MMMM YYYY. H:mm', 71 }, 72 calendar: { 73 sameDay: '[данас у] LT', 74 nextDay: '[сутра у] LT', 75 nextWeek: function () { 76 switch (this.day()) { 77 case 0: 78 return '[у] [недељу] [у] LT'; 79 case 3: 80 return '[у] [среду] [у] LT'; 81 case 6: 82 return '[у] [суботу] [у] LT'; 83 case 1: 84 case 2: 85 case 4: 86 case 5: 87 return '[у] dddd [у] LT'; 88 } 89 }, 90 lastDay: '[јуче у] LT', 91 lastWeek: function () { 92 var lastWeekDays = [ 93 '[прошле] [недеље] [у] LT', 94 '[прошлог] [понедељка] [у] LT', 95 '[прошлог] [уторка] [у] LT', 96 '[прошле] [среде] [у] LT', 97 '[прошлог] [четвртка] [у] LT', 98 '[прошлог] [петка] [у] LT', 99 '[прошле] [суботе] [у] LT', 100 ]; 101 return lastWeekDays[this.day()]; 102 }, 103 sameElse: 'L', 104 }, 105 relativeTime: { 106 future: 'за %s', 107 past: 'пре %s', 108 s: 'неколико секунди', 109 ss: translator.translate, 110 m: translator.translate, 111 mm: translator.translate, 112 h: translator.translate, 113 hh: translator.translate, 114 d: translator.translate, 115 dd: translator.translate, 116 M: translator.translate, 117 MM: translator.translate, 118 y: translator.translate, 119 yy: translator.translate, 120 }, 121 dayOfMonthOrdinalParse: /\d{1,2}\./, 122 ordinal: '%d.', 123 week: { 124 dow: 1, // Monday is the first day of the week. 125 doy: 7, // The week that contains Jan 1st is the first week of the year. 126 }, 127});