index.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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. // ДСТУ 3582:2013
  14. narrow: ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'],
  15. abbreviated: ['січ.', 'лют.', 'берез.', 'квіт.', 'трав.', 'черв.', 'лип.', 'серп.', 'верес.', 'жовт.', 'листоп.', 'груд.'],
  16. wide: ['січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень']
  17. };
  18. var formattingMonthValues = {
  19. narrow: ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'],
  20. abbreviated: ['січ.', 'лют.', 'берез.', 'квіт.', 'трав.', 'черв.', 'лип.', 'серп.', 'верес.', 'жовт.', 'листоп.', 'груд.'],
  21. wide: ['січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', 'жовтня', 'листопада', 'грудня']
  22. };
  23. var dayValues = {
  24. narrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],
  25. short: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
  26. abbreviated: ['нед', 'пон', 'вів', 'сер', 'чтв', 'птн', 'суб'],
  27. wide: ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п’ятниця', 'субота']
  28. };
  29. var dayPeriodValues = {
  30. narrow: {
  31. am: 'ДП',
  32. pm: 'ПП',
  33. midnight: 'півн.',
  34. noon: 'пол.',
  35. morning: 'ранок',
  36. afternoon: 'день',
  37. evening: 'веч.',
  38. night: 'ніч'
  39. },
  40. abbreviated: {
  41. am: 'ДП',
  42. pm: 'ПП',
  43. midnight: 'півн.',
  44. noon: 'пол.',
  45. morning: 'ранок',
  46. afternoon: 'день',
  47. evening: 'веч.',
  48. night: 'ніч'
  49. },
  50. wide: {
  51. am: 'ДП',
  52. pm: 'ПП',
  53. midnight: 'північ',
  54. noon: 'полудень',
  55. morning: 'ранок',
  56. afternoon: 'день',
  57. evening: 'вечір',
  58. night: 'ніч'
  59. }
  60. };
  61. var formattingDayPeriodValues = {
  62. narrow: {
  63. am: 'ДП',
  64. pm: 'ПП',
  65. midnight: 'півн.',
  66. noon: 'пол.',
  67. morning: 'ранку',
  68. afternoon: 'дня',
  69. evening: 'веч.',
  70. night: 'ночі'
  71. },
  72. abbreviated: {
  73. am: 'ДП',
  74. pm: 'ПП',
  75. midnight: 'півн.',
  76. noon: 'пол.',
  77. morning: 'ранку',
  78. afternoon: 'дня',
  79. evening: 'веч.',
  80. night: 'ночі'
  81. },
  82. wide: {
  83. am: 'ДП',
  84. pm: 'ПП',
  85. midnight: 'північ',
  86. noon: 'полудень',
  87. morning: 'ранку',
  88. afternoon: 'дня',
  89. evening: 'веч.',
  90. night: 'ночі'
  91. }
  92. };
  93. var ordinalNumber = function ordinalNumber(dirtyNumber, options) {
  94. var unit = String(options === null || options === void 0 ? void 0 : options.unit);
  95. var number = Number(dirtyNumber);
  96. var suffix;
  97. if (unit === 'date') {
  98. if (number === 3 || number === 23) {
  99. suffix = '-є';
  100. } else {
  101. suffix = '-е';
  102. }
  103. } else if (unit === 'minute' || unit === 'second' || unit === 'hour') {
  104. suffix = '-а';
  105. } else {
  106. suffix = '-й';
  107. }
  108. return number + suffix;
  109. };
  110. var localize = {
  111. ordinalNumber: ordinalNumber,
  112. era: buildLocalizeFn({
  113. values: eraValues,
  114. defaultWidth: 'wide'
  115. }),
  116. quarter: buildLocalizeFn({
  117. values: quarterValues,
  118. defaultWidth: 'wide',
  119. argumentCallback: function argumentCallback(quarter) {
  120. return quarter - 1;
  121. }
  122. }),
  123. month: buildLocalizeFn({
  124. values: monthValues,
  125. defaultWidth: 'wide',
  126. formattingValues: formattingMonthValues,
  127. defaultFormattingWidth: 'wide'
  128. }),
  129. day: buildLocalizeFn({
  130. values: dayValues,
  131. defaultWidth: 'wide'
  132. }),
  133. dayPeriod: buildLocalizeFn({
  134. values: dayPeriodValues,
  135. defaultWidth: 'any',
  136. formattingValues: formattingDayPeriodValues,
  137. defaultFormattingWidth: 'wide'
  138. })
  139. };
  140. export default localize;