sr-cyrl.js 4.1 KB

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