localize.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.js";
  2. const eraValues = {
  3. narrow: ["пр.н.е.", "н.е."],
  4. abbreviated: ["пред н. е.", "н. е."],
  5. wide: ["пред нашата ера", "нашата ера"],
  6. };
  7. const quarterValues = {
  8. narrow: ["1", "2", "3", "4"],
  9. abbreviated: ["1-ви кв.", "2-ри кв.", "3-ти кв.", "4-ти кв."],
  10. wide: ["1-ви квартал", "2-ри квартал", "3-ти квартал", "4-ти квартал"],
  11. };
  12. const monthValues = {
  13. abbreviated: [
  14. "јан",
  15. "фев",
  16. "мар",
  17. "апр",
  18. "мај",
  19. "јун",
  20. "јул",
  21. "авг",
  22. "септ",
  23. "окт",
  24. "ноем",
  25. "дек",
  26. ],
  27. wide: [
  28. "јануари",
  29. "февруари",
  30. "март",
  31. "април",
  32. "мај",
  33. "јуни",
  34. "јули",
  35. "август",
  36. "септември",
  37. "октомври",
  38. "ноември",
  39. "декември",
  40. ],
  41. };
  42. const dayValues = {
  43. narrow: ["Н", "П", "В", "С", "Ч", "П", "С"],
  44. short: ["не", "по", "вт", "ср", "че", "пе", "са"],
  45. abbreviated: ["нед", "пон", "вто", "сре", "чет", "пет", "саб"],
  46. wide: [
  47. "недела",
  48. "понеделник",
  49. "вторник",
  50. "среда",
  51. "четврток",
  52. "петок",
  53. "сабота",
  54. ],
  55. };
  56. const dayPeriodValues = {
  57. wide: {
  58. am: "претпладне",
  59. pm: "попладне",
  60. midnight: "полноќ",
  61. noon: "напладне",
  62. morning: "наутро",
  63. afternoon: "попладне",
  64. evening: "навечер",
  65. night: "ноќе",
  66. },
  67. };
  68. const ordinalNumber = (dirtyNumber, _options) => {
  69. const number = Number(dirtyNumber);
  70. const rem100 = number % 100;
  71. if (rem100 > 20 || rem100 < 10) {
  72. switch (rem100 % 10) {
  73. case 1:
  74. return number + "-ви";
  75. case 2:
  76. return number + "-ри";
  77. case 7:
  78. case 8:
  79. return number + "-ми";
  80. }
  81. }
  82. return number + "-ти";
  83. };
  84. export const localize = {
  85. ordinalNumber,
  86. era: buildLocalizeFn({
  87. values: eraValues,
  88. defaultWidth: "wide",
  89. }),
  90. quarter: buildLocalizeFn({
  91. values: quarterValues,
  92. defaultWidth: "wide",
  93. argumentCallback: (quarter) => quarter - 1,
  94. }),
  95. month: buildLocalizeFn({
  96. values: monthValues,
  97. defaultWidth: "wide",
  98. }),
  99. day: buildLocalizeFn({
  100. values: dayValues,
  101. defaultWidth: "wide",
  102. }),
  103. dayPeriod: buildLocalizeFn({
  104. values: dayPeriodValues,
  105. defaultWidth: "wide",
  106. }),
  107. };