localize.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.js";
  2. const eraValues = {
  3. narrow: ["BC", "AD"],
  4. abbreviated: ["BC", "AD"],
  5. wide: ["기원전", "서기"],
  6. };
  7. const quarterValues = {
  8. narrow: ["1", "2", "3", "4"],
  9. abbreviated: ["Q1", "Q2", "Q3", "Q4"],
  10. wide: ["1분기", "2분기", "3분기", "4분기"],
  11. };
  12. const monthValues = {
  13. narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
  14. abbreviated: [
  15. "1월",
  16. "2월",
  17. "3월",
  18. "4월",
  19. "5월",
  20. "6월",
  21. "7월",
  22. "8월",
  23. "9월",
  24. "10월",
  25. "11월",
  26. "12월",
  27. ],
  28. wide: [
  29. "1월",
  30. "2월",
  31. "3월",
  32. "4월",
  33. "5월",
  34. "6월",
  35. "7월",
  36. "8월",
  37. "9월",
  38. "10월",
  39. "11월",
  40. "12월",
  41. ],
  42. };
  43. const dayValues = {
  44. narrow: ["일", "월", "화", "수", "목", "금", "토"],
  45. short: ["일", "월", "화", "수", "목", "금", "토"],
  46. abbreviated: ["일", "월", "화", "수", "목", "금", "토"],
  47. wide: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
  48. };
  49. const dayPeriodValues = {
  50. narrow: {
  51. am: "오전",
  52. pm: "오후",
  53. midnight: "자정",
  54. noon: "정오",
  55. morning: "아침",
  56. afternoon: "오후",
  57. evening: "저녁",
  58. night: "밤",
  59. },
  60. abbreviated: {
  61. am: "오전",
  62. pm: "오후",
  63. midnight: "자정",
  64. noon: "정오",
  65. morning: "아침",
  66. afternoon: "오후",
  67. evening: "저녁",
  68. night: "밤",
  69. },
  70. wide: {
  71. am: "오전",
  72. pm: "오후",
  73. midnight: "자정",
  74. noon: "정오",
  75. morning: "아침",
  76. afternoon: "오후",
  77. evening: "저녁",
  78. night: "밤",
  79. },
  80. };
  81. const formattingDayPeriodValues = {
  82. narrow: {
  83. am: "오전",
  84. pm: "오후",
  85. midnight: "자정",
  86. noon: "정오",
  87. morning: "아침",
  88. afternoon: "오후",
  89. evening: "저녁",
  90. night: "밤",
  91. },
  92. abbreviated: {
  93. am: "오전",
  94. pm: "오후",
  95. midnight: "자정",
  96. noon: "정오",
  97. morning: "아침",
  98. afternoon: "오후",
  99. evening: "저녁",
  100. night: "밤",
  101. },
  102. wide: {
  103. am: "오전",
  104. pm: "오후",
  105. midnight: "자정",
  106. noon: "정오",
  107. morning: "아침",
  108. afternoon: "오후",
  109. evening: "저녁",
  110. night: "밤",
  111. },
  112. };
  113. const ordinalNumber = (dirtyNumber, options) => {
  114. const number = Number(dirtyNumber);
  115. const unit = String(options?.unit);
  116. switch (unit) {
  117. case "minute":
  118. case "second":
  119. return String(number);
  120. case "date":
  121. return number + "일";
  122. default:
  123. return number + "번째";
  124. }
  125. };
  126. export const localize = {
  127. ordinalNumber,
  128. era: buildLocalizeFn({
  129. values: eraValues,
  130. defaultWidth: "wide",
  131. }),
  132. quarter: buildLocalizeFn({
  133. values: quarterValues,
  134. defaultWidth: "wide",
  135. argumentCallback: (quarter) => quarter - 1,
  136. }),
  137. month: buildLocalizeFn({
  138. values: monthValues,
  139. defaultWidth: "wide",
  140. }),
  141. day: buildLocalizeFn({
  142. values: dayValues,
  143. defaultWidth: "wide",
  144. }),
  145. dayPeriod: buildLocalizeFn({
  146. values: dayPeriodValues,
  147. defaultWidth: "wide",
  148. formattingValues: formattingDayPeriodValues,
  149. defaultFormattingWidth: "wide",
  150. }),
  151. };