UNPKG

4.76 kBJavaScriptView Raw
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});