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.
127 lines
4.7 KiB
127 lines
4.7 KiB
//! moment.js locale configuration |
|
//! locale : Serbian Cyrillic [sr-cyrl] |
|
//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j |
|
//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic |
|
|
|
import moment from '../moment'; |
|
|
|
var translator = { |
|
words: { |
|
//Different grammatical cases |
|
ss: ['секунда', 'секунде', 'секунди'], |
|
m: ['један минут', 'једног минута'], |
|
mm: ['минут', 'минута', 'минута'], |
|
h: ['један сат', 'једног сата'], |
|
hh: ['сат', 'сата', 'сати'], |
|
d: ['један дан', 'једног дана'], |
|
dd: ['дан', 'дана', 'дана'], |
|
M: ['један месец', 'једног месеца'], |
|
MM: ['месец', 'месеца', 'месеци'], |
|
y: ['једну годину', 'једне године'], |
|
yy: ['годину', 'године', 'година'], |
|
}, |
|
correctGrammaticalCase: function (number, wordKey) { |
|
if ( |
|
number % 10 >= 1 && |
|
number % 10 <= 4 && |
|
(number % 100 < 10 || number % 100 >= 20) |
|
) { |
|
return number % 10 === 1 ? wordKey[0] : wordKey[1]; |
|
} |
|
return wordKey[2]; |
|
}, |
|
translate: function (number, withoutSuffix, key, isFuture) { |
|
var wordKey = translator.words[key], |
|
word; |
|
|
|
if (key.length === 1) { |
|
// Nominativ |
|
if (key === 'y' && withoutSuffix) return 'једна година'; |
|
return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; |
|
} |
|
|
|
word = translator.correctGrammaticalCase(number, wordKey); |
|
// Nominativ |
|
if (key === 'yy' && withoutSuffix && word === 'годину') { |
|
return number + ' година'; |
|
} |
|
|
|
return number + ' ' + word; |
|
}, |
|
}; |
|
|
|
export default moment.defineLocale('sr-cyrl', { |
|
months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( |
|
'_' |
|
), |
|
monthsShort: |
|
'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), |
|
monthsParseExact: true, |
|
weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), |
|
weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), |
|
weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), |
|
weekdaysParseExact: true, |
|
longDateFormat: { |
|
LT: 'H:mm', |
|
LTS: 'H:mm:ss', |
|
L: 'D. M. YYYY.', |
|
LL: 'D. MMMM YYYY.', |
|
LLL: 'D. MMMM YYYY. H:mm', |
|
LLLL: 'dddd, D. MMMM YYYY. H:mm', |
|
}, |
|
calendar: { |
|
sameDay: '[данас у] LT', |
|
nextDay: '[сутра у] LT', |
|
nextWeek: function () { |
|
switch (this.day()) { |
|
case 0: |
|
return '[у] [недељу] [у] LT'; |
|
case 3: |
|
return '[у] [среду] [у] LT'; |
|
case 6: |
|
return '[у] [суботу] [у] LT'; |
|
case 1: |
|
case 2: |
|
case 4: |
|
case 5: |
|
return '[у] dddd [у] LT'; |
|
} |
|
}, |
|
lastDay: '[јуче у] LT', |
|
lastWeek: function () { |
|
var lastWeekDays = [ |
|
'[прошле] [недеље] [у] LT', |
|
'[прошлог] [понедељка] [у] LT', |
|
'[прошлог] [уторка] [у] LT', |
|
'[прошле] [среде] [у] LT', |
|
'[прошлог] [четвртка] [у] LT', |
|
'[прошлог] [петка] [у] LT', |
|
'[прошле] [суботе] [у] LT', |
|
]; |
|
return lastWeekDays[this.day()]; |
|
}, |
|
sameElse: 'L', |
|
}, |
|
relativeTime: { |
|
future: 'за %s', |
|
past: 'пре %s', |
|
s: 'неколико секунди', |
|
ss: translator.translate, |
|
m: translator.translate, |
|
mm: translator.translate, |
|
h: translator.translate, |
|
hh: translator.translate, |
|
d: translator.translate, |
|
dd: translator.translate, |
|
M: translator.translate, |
|
MM: translator.translate, |
|
y: translator.translate, |
|
yy: translator.translate, |
|
}, |
|
dayOfMonthOrdinalParse: /\d{1,2}\./, |
|
ordinal: '%d.', |
|
week: { |
|
dow: 1, // Monday is the first day of the week. |
|
doy: 7, // The week that contains Jan 1st is the first week of the year. |
|
}, |
|
});
|
|
|