localize.cjs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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: ["1-ы квартал", "2-і квартал", "3-і квартал", "4-ы квартал"],
  13. };
  14. const monthValues = {
  15. narrow: ["С", "Л", "С", "К", "Т", "Ч", "Л", "Ж", "В", "К", "Л", "С"],
  16. abbreviated: [
  17. "студз.",
  18. "лют.",
  19. "сак.",
  20. "крас.",
  21. "трав.",
  22. "чэрв.",
  23. "ліп.",
  24. "жн.",
  25. "вер.",
  26. "кастр.",
  27. "ліст.",
  28. "сьнеж.",
  29. ],
  30. wide: [
  31. "студзень",
  32. "люты",
  33. "сакавік",
  34. "красавік",
  35. "травень",
  36. "чэрвень",
  37. "ліпень",
  38. "жнівень",
  39. "верасень",
  40. "кастрычнік",
  41. "лістапад",
  42. "сьнежань",
  43. ],
  44. };
  45. const formattingMonthValues = {
  46. narrow: ["С", "Л", "С", "К", "Т", "Ч", "Л", "Ж", "В", "К", "Л", "С"],
  47. abbreviated: [
  48. "студз.",
  49. "лют.",
  50. "сак.",
  51. "крас.",
  52. "трав.",
  53. "чэрв.",
  54. "ліп.",
  55. "жн.",
  56. "вер.",
  57. "кастр.",
  58. "ліст.",
  59. "сьнеж.",
  60. ],
  61. wide: [
  62. "студзеня",
  63. "лютага",
  64. "сакавіка",
  65. "красавіка",
  66. "траўня",
  67. "чэрвеня",
  68. "ліпеня",
  69. "жніўня",
  70. "верасня",
  71. "кастрычніка",
  72. "лістапада",
  73. "сьнежня",
  74. ],
  75. };
  76. const dayValues = {
  77. narrow: ["Н", "П", "А", "С", "Ч", "П", "С"],
  78. short: ["нд", "пн", "аў", "ср", "чц", "пт", "сб"],
  79. abbreviated: ["нядз", "пан", "аўт", "сер", "чаць", "пят", "суб"],
  80. wide: [
  81. "нядзеля",
  82. "панядзелак",
  83. "аўторак",
  84. "серада",
  85. "чацьвер",
  86. "пятніца",
  87. "субота",
  88. ],
  89. };
  90. const dayPeriodValues = {
  91. narrow: {
  92. am: "ДП",
  93. pm: "ПП",
  94. midnight: "поўн.",
  95. noon: "поўд.",
  96. morning: "ран.",
  97. afternoon: "дзень",
  98. evening: "веч.",
  99. night: "ноч",
  100. },
  101. abbreviated: {
  102. am: "ДП",
  103. pm: "ПП",
  104. midnight: "поўн.",
  105. noon: "поўд.",
  106. morning: "ран.",
  107. afternoon: "дзень",
  108. evening: "веч.",
  109. night: "ноч",
  110. },
  111. wide: {
  112. am: "ДП",
  113. pm: "ПП",
  114. midnight: "поўнач",
  115. noon: "поўдзень",
  116. morning: "раніца",
  117. afternoon: "дзень",
  118. evening: "вечар",
  119. night: "ноч",
  120. },
  121. };
  122. const formattingDayPeriodValues = {
  123. narrow: {
  124. am: "ДП",
  125. pm: "ПП",
  126. midnight: "поўн.",
  127. noon: "поўд.",
  128. morning: "ран.",
  129. afternoon: "дня",
  130. evening: "веч.",
  131. night: "ночы",
  132. },
  133. abbreviated: {
  134. am: "ДП",
  135. pm: "ПП",
  136. midnight: "поўн.",
  137. noon: "поўд.",
  138. morning: "ран.",
  139. afternoon: "дня",
  140. evening: "веч.",
  141. night: "ночы",
  142. },
  143. wide: {
  144. am: "ДП",
  145. pm: "ПП",
  146. midnight: "поўнач",
  147. noon: "поўдзень",
  148. morning: "раніцы",
  149. afternoon: "дня",
  150. evening: "вечара",
  151. night: "ночы",
  152. },
  153. };
  154. const ordinalNumber = (dirtyNumber, options) => {
  155. const unit = String(options?.unit);
  156. const number = Number(dirtyNumber);
  157. let suffix;
  158. /** Though it's an incorrect ordinal form of a date we use it here for consistency with other similar locales (ru, uk)
  159. * For date-month combinations should be used `d` formatter.
  160. * Correct: `d MMMM` (4 верасня)
  161. * Incorrect: `do MMMM` (4-га верасня)
  162. *
  163. * But following the consistency leads to mistakes for literal uses of `do` formatter (ordinal day of month).
  164. * So for phrase "5th day of month" (`do дзень месяца`)
  165. * library will produce: `5-га дзень месяца`
  166. * but correct spelling should be: `5-ы дзень месяца`
  167. *
  168. * So I guess there should be a stand-alone and a formatting version of "day of month" formatters
  169. */
  170. if (unit === "date") {
  171. suffix = "-га";
  172. } else if (unit === "hour" || unit === "minute" || unit === "second") {
  173. suffix = "-я";
  174. } else {
  175. suffix =
  176. (number % 10 === 2 || number % 10 === 3) &&
  177. number % 100 !== 12 &&
  178. number % 100 !== 13
  179. ? "-і"
  180. : "-ы";
  181. }
  182. return number + suffix;
  183. };
  184. const localize = (exports.localize = {
  185. ordinalNumber,
  186. era: (0, _index.buildLocalizeFn)({
  187. values: eraValues,
  188. defaultWidth: "wide",
  189. }),
  190. quarter: (0, _index.buildLocalizeFn)({
  191. values: quarterValues,
  192. defaultWidth: "wide",
  193. argumentCallback: (quarter) => quarter - 1,
  194. }),
  195. month: (0, _index.buildLocalizeFn)({
  196. values: monthValues,
  197. defaultWidth: "wide",
  198. formattingValues: formattingMonthValues,
  199. defaultFormattingWidth: "wide",
  200. }),
  201. day: (0, _index.buildLocalizeFn)({
  202. values: dayValues,
  203. defaultWidth: "wide",
  204. }),
  205. dayPeriod: (0, _index.buildLocalizeFn)({
  206. values: dayPeriodValues,
  207. defaultWidth: "any",
  208. formattingValues: formattingDayPeriodValues,
  209. defaultFormattingWidth: "wide",
  210. }),
  211. });