localize.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.js";
  2. const eraValues = {
  3. narrow: ["AC", "DC"],
  4. abbreviated: ["AC", "DC"],
  5. wide: ["antes de cristo", "depois de cristo"],
  6. };
  7. const quarterValues = {
  8. narrow: ["1", "2", "3", "4"],
  9. abbreviated: ["T1", "T2", "T3", "T4"],
  10. wide: ["1º trimestre", "2º trimestre", "3º trimestre", "4º trimestre"],
  11. };
  12. const monthValues = {
  13. narrow: ["j", "f", "m", "a", "m", "j", "j", "a", "s", "o", "n", "d"],
  14. abbreviated: [
  15. "jan",
  16. "fev",
  17. "mar",
  18. "abr",
  19. "mai",
  20. "jun",
  21. "jul",
  22. "ago",
  23. "set",
  24. "out",
  25. "nov",
  26. "dez",
  27. ],
  28. wide: [
  29. "janeiro",
  30. "fevereiro",
  31. "março",
  32. "abril",
  33. "maio",
  34. "junho",
  35. "julho",
  36. "agosto",
  37. "setembro",
  38. "outubro",
  39. "novembro",
  40. "dezembro",
  41. ],
  42. };
  43. const dayValues = {
  44. narrow: ["D", "S", "T", "Q", "Q", "S", "S"],
  45. short: ["dom", "seg", "ter", "qua", "qui", "sex", "sab"],
  46. abbreviated: [
  47. "domingo",
  48. "segunda",
  49. "terça",
  50. "quarta",
  51. "quinta",
  52. "sexta",
  53. "sábado",
  54. ],
  55. wide: [
  56. "domingo",
  57. "segunda-feira",
  58. "terça-feira",
  59. "quarta-feira",
  60. "quinta-feira",
  61. "sexta-feira",
  62. "sábado",
  63. ],
  64. };
  65. const dayPeriodValues = {
  66. narrow: {
  67. am: "a",
  68. pm: "p",
  69. midnight: "mn",
  70. noon: "md",
  71. morning: "manhã",
  72. afternoon: "tarde",
  73. evening: "tarde",
  74. night: "noite",
  75. },
  76. abbreviated: {
  77. am: "AM",
  78. pm: "PM",
  79. midnight: "meia-noite",
  80. noon: "meio-dia",
  81. morning: "manhã",
  82. afternoon: "tarde",
  83. evening: "tarde",
  84. night: "noite",
  85. },
  86. wide: {
  87. am: "a.m.",
  88. pm: "p.m.",
  89. midnight: "meia-noite",
  90. noon: "meio-dia",
  91. morning: "manhã",
  92. afternoon: "tarde",
  93. evening: "tarde",
  94. night: "noite",
  95. },
  96. };
  97. const formattingDayPeriodValues = {
  98. narrow: {
  99. am: "a",
  100. pm: "p",
  101. midnight: "mn",
  102. noon: "md",
  103. morning: "da manhã",
  104. afternoon: "da tarde",
  105. evening: "da tarde",
  106. night: "da noite",
  107. },
  108. abbreviated: {
  109. am: "AM",
  110. pm: "PM",
  111. midnight: "meia-noite",
  112. noon: "meio-dia",
  113. morning: "da manhã",
  114. afternoon: "da tarde",
  115. evening: "da tarde",
  116. night: "da noite",
  117. },
  118. wide: {
  119. am: "a.m.",
  120. pm: "p.m.",
  121. midnight: "meia-noite",
  122. noon: "meio-dia",
  123. morning: "da manhã",
  124. afternoon: "da tarde",
  125. evening: "da tarde",
  126. night: "da noite",
  127. },
  128. };
  129. const ordinalNumber = (dirtyNumber, options) => {
  130. const number = Number(dirtyNumber);
  131. if (options?.unit === "week") {
  132. return number + "ª";
  133. }
  134. return number + "º";
  135. };
  136. export const localize = {
  137. ordinalNumber,
  138. era: buildLocalizeFn({
  139. values: eraValues,
  140. defaultWidth: "wide",
  141. }),
  142. quarter: buildLocalizeFn({
  143. values: quarterValues,
  144. defaultWidth: "wide",
  145. argumentCallback: (quarter) => quarter - 1,
  146. }),
  147. month: buildLocalizeFn({
  148. values: monthValues,
  149. defaultWidth: "wide",
  150. }),
  151. day: buildLocalizeFn({
  152. values: dayValues,
  153. defaultWidth: "wide",
  154. }),
  155. dayPeriod: buildLocalizeFn({
  156. values: dayPeriodValues,
  157. defaultWidth: "wide",
  158. formattingValues: formattingDayPeriodValues,
  159. defaultFormattingWidth: "wide",
  160. }),
  161. };