localize.cjs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. "use strict";
  2. exports.localize = void 0;
  3. var _index = require("../../_lib/buildLocalizeFn.cjs");
  4. const eraValues = {
  5. narrow: ["пр.н.е.", "н.е."],
  6. abbreviated: ["преди н. е.", "н. е."],
  7. wide: ["преди новата ера", "новата ера"],
  8. };
  9. const quarterValues = {
  10. narrow: ["1", "2", "3", "4"],
  11. abbreviated: ["1-во тримес.", "2-ро тримес.", "3-то тримес.", "4-то тримес."],
  12. wide: [
  13. "1-во тримесечие",
  14. "2-ро тримесечие",
  15. "3-то тримесечие",
  16. "4-то тримесечие",
  17. ],
  18. };
  19. const monthValues = {
  20. abbreviated: [
  21. "яну",
  22. "фев",
  23. "мар",
  24. "апр",
  25. "май",
  26. "юни",
  27. "юли",
  28. "авг",
  29. "сеп",
  30. "окт",
  31. "ное",
  32. "дек",
  33. ],
  34. wide: [
  35. "януари",
  36. "февруари",
  37. "март",
  38. "април",
  39. "май",
  40. "юни",
  41. "юли",
  42. "август",
  43. "септември",
  44. "октомври",
  45. "ноември",
  46. "декември",
  47. ],
  48. };
  49. const dayValues = {
  50. narrow: ["Н", "П", "В", "С", "Ч", "П", "С"],
  51. short: ["нд", "пн", "вт", "ср", "чт", "пт", "сб"],
  52. abbreviated: ["нед", "пон", "вто", "сря", "чет", "пет", "съб"],
  53. wide: [
  54. "неделя",
  55. "понеделник",
  56. "вторник",
  57. "сряда",
  58. "четвъртък",
  59. "петък",
  60. "събота",
  61. ],
  62. };
  63. const dayPeriodValues = {
  64. wide: {
  65. am: "преди обяд",
  66. pm: "след обяд",
  67. midnight: "в полунощ",
  68. noon: "на обяд",
  69. morning: "сутринта",
  70. afternoon: "следобед",
  71. evening: "вечерта",
  72. night: "през нощта",
  73. },
  74. };
  75. function isFeminine(unit) {
  76. return (
  77. unit === "year" || unit === "week" || unit === "minute" || unit === "second"
  78. );
  79. }
  80. function isNeuter(unit) {
  81. return unit === "quarter";
  82. }
  83. function numberWithSuffix(number, unit, masculine, feminine, neuter) {
  84. const suffix = isNeuter(unit)
  85. ? neuter
  86. : isFeminine(unit)
  87. ? feminine
  88. : masculine;
  89. return number + "-" + suffix;
  90. }
  91. const ordinalNumber = (dirtyNumber, options) => {
  92. const number = Number(dirtyNumber);
  93. const unit = options?.unit;
  94. if (number === 0) {
  95. return numberWithSuffix(0, unit, "ев", "ева", "ево");
  96. } else if (number % 1000 === 0) {
  97. return numberWithSuffix(number, unit, "ен", "на", "но");
  98. } else if (number % 100 === 0) {
  99. return numberWithSuffix(number, unit, "тен", "тна", "тно");
  100. }
  101. const rem100 = number % 100;
  102. if (rem100 > 20 || rem100 < 10) {
  103. switch (rem100 % 10) {
  104. case 1:
  105. return numberWithSuffix(number, unit, "ви", "ва", "во");
  106. case 2:
  107. return numberWithSuffix(number, unit, "ри", "ра", "ро");
  108. case 7:
  109. case 8:
  110. return numberWithSuffix(number, unit, "ми", "ма", "мо");
  111. }
  112. }
  113. return numberWithSuffix(number, unit, "ти", "та", "то");
  114. };
  115. const localize = (exports.localize = {
  116. ordinalNumber,
  117. era: (0, _index.buildLocalizeFn)({
  118. values: eraValues,
  119. defaultWidth: "wide",
  120. }),
  121. quarter: (0, _index.buildLocalizeFn)({
  122. values: quarterValues,
  123. defaultWidth: "wide",
  124. argumentCallback: (quarter) => quarter - 1,
  125. }),
  126. month: (0, _index.buildLocalizeFn)({
  127. values: monthValues,
  128. defaultWidth: "wide",
  129. }),
  130. day: (0, _index.buildLocalizeFn)({
  131. values: dayValues,
  132. defaultWidth: "wide",
  133. }),
  134. dayPeriod: (0, _index.buildLocalizeFn)({
  135. values: dayPeriodValues,
  136. defaultWidth: "wide",
  137. }),
  138. });