index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. import buildLocalizeFn from "../../../_lib/buildLocalizeFn/index.js";
  2. var eraValues = {
  3. narrow: ['да н.э.', 'н.э.'],
  4. abbreviated: ['да н. э.', 'н. э.'],
  5. wide: ['да нашай эры', 'нашай эры']
  6. };
  7. var quarterValues = {
  8. narrow: ['1', '2', '3', '4'],
  9. abbreviated: ['1-ы кв.', '2-і кв.', '3-і кв.', '4-ы кв.'],
  10. wide: ['1-ы квартал', '2-і квартал', '3-і квартал', '4-ы квартал']
  11. };
  12. var monthValues = {
  13. narrow: ['С', 'Л', 'С', 'К', 'Т', 'Ч', 'Л', 'Ж', 'В', 'К', 'Л', 'С'],
  14. abbreviated: ['студз.', 'лют.', 'сак.', 'крас.', 'трав.', 'чэрв.', 'ліп.', 'жн.', 'вер.', 'кастр.', 'ліст.', 'сьнеж.'],
  15. wide: ['студзень', 'люты', 'сакавік', 'красавік', 'травень', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'сьнежань']
  16. };
  17. var formattingMonthValues = {
  18. narrow: ['С', 'Л', 'С', 'К', 'Т', 'Ч', 'Л', 'Ж', 'В', 'К', 'Л', 'С'],
  19. abbreviated: ['студз.', 'лют.', 'сак.', 'крас.', 'трав.', 'чэрв.', 'ліп.', 'жн.', 'вер.', 'кастр.', 'ліст.', 'сьнеж.'],
  20. wide: ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'траўня', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'сьнежня']
  21. };
  22. var dayValues = {
  23. narrow: ['Н', 'П', 'А', 'С', 'Ч', 'П', 'С'],
  24. short: ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'],
  25. abbreviated: ['нядз', 'пан', 'аўт', 'сер', 'чаць', 'пят', 'суб'],
  26. wide: ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацьвер', 'пятніца', 'субота']
  27. };
  28. var dayPeriodValues = {
  29. narrow: {
  30. am: 'ДП',
  31. pm: 'ПП',
  32. midnight: 'поўн.',
  33. noon: 'поўд.',
  34. morning: 'ран.',
  35. afternoon: 'дзень',
  36. evening: 'веч.',
  37. night: 'ноч'
  38. },
  39. abbreviated: {
  40. am: 'ДП',
  41. pm: 'ПП',
  42. midnight: 'поўн.',
  43. noon: 'поўд.',
  44. morning: 'ран.',
  45. afternoon: 'дзень',
  46. evening: 'веч.',
  47. night: 'ноч'
  48. },
  49. wide: {
  50. am: 'ДП',
  51. pm: 'ПП',
  52. midnight: 'поўнач',
  53. noon: 'поўдзень',
  54. morning: 'раніца',
  55. afternoon: 'дзень',
  56. evening: 'вечар',
  57. night: 'ноч'
  58. }
  59. };
  60. var formattingDayPeriodValues = {
  61. narrow: {
  62. am: 'ДП',
  63. pm: 'ПП',
  64. midnight: 'поўн.',
  65. noon: 'поўд.',
  66. morning: 'ран.',
  67. afternoon: 'дня',
  68. evening: 'веч.',
  69. night: 'ночы'
  70. },
  71. abbreviated: {
  72. am: 'ДП',
  73. pm: 'ПП',
  74. midnight: 'поўн.',
  75. noon: 'поўд.',
  76. morning: 'ран.',
  77. afternoon: 'дня',
  78. evening: 'веч.',
  79. night: 'ночы'
  80. },
  81. wide: {
  82. am: 'ДП',
  83. pm: 'ПП',
  84. midnight: 'поўнач',
  85. noon: 'поўдзень',
  86. morning: 'раніцы',
  87. afternoon: 'дня',
  88. evening: 'вечара',
  89. night: 'ночы'
  90. }
  91. };
  92. var ordinalNumber = function ordinalNumber(dirtyNumber, options) {
  93. var unit = String(options === null || options === void 0 ? void 0 : options.unit);
  94. var number = Number(dirtyNumber);
  95. var suffix;
  96. /** Though it's an incorrect ordinal form of a date we use it here for consistency with other similar locales (ru, uk)
  97. * For date-month combinations should be used `d` formatter.
  98. * Correct: `d MMMM` (4 верасня)
  99. * Incorrect: `do MMMM` (4-га верасня)
  100. *
  101. * But following the consistency leads to mistakes for literal uses of `do` formatter (ordinal day of month).
  102. * So for phrase "5th day of month" (`do дзень месяца`)
  103. * library will produce: `5-га дзень месяца`
  104. * but correct spelling should be: `5-ы дзень месяца`
  105. *
  106. * So I guess there should be a stand-alone and a formatting version of "day of month" formatters
  107. */
  108. if (unit === 'date') {
  109. suffix = '-га';
  110. } else if (unit === 'hour' || unit === 'minute' || unit === 'second') {
  111. suffix = '-я';
  112. } else {
  113. suffix = (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? '-і' : '-ы';
  114. }
  115. return number + suffix;
  116. };
  117. var localize = {
  118. ordinalNumber: ordinalNumber,
  119. era: buildLocalizeFn({
  120. values: eraValues,
  121. defaultWidth: 'wide'
  122. }),
  123. quarter: buildLocalizeFn({
  124. values: quarterValues,
  125. defaultWidth: 'wide',
  126. argumentCallback: function argumentCallback(quarter) {
  127. return quarter - 1;
  128. }
  129. }),
  130. month: buildLocalizeFn({
  131. values: monthValues,
  132. defaultWidth: 'wide',
  133. formattingValues: formattingMonthValues,
  134. defaultFormattingWidth: 'wide'
  135. }),
  136. day: buildLocalizeFn({
  137. values: dayValues,
  138. defaultWidth: 'wide'
  139. }),
  140. dayPeriod: buildLocalizeFn({
  141. values: dayPeriodValues,
  142. defaultWidth: 'any',
  143. formattingValues: formattingDayPeriodValues,
  144. defaultFormattingWidth: 'wide'
  145. })
  146. };
  147. export default localize;