localize.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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: ["第一季", "第二季", "第三季", "第四季"],
  10. wide: ["第一季度", "第二季度", "第三季度", "第四季度"],
  11. };
  12. const monthValues = {
  13. narrow: [
  14. "一",
  15. "二",
  16. "三",
  17. "四",
  18. "五",
  19. "六",
  20. "七",
  21. "八",
  22. "九",
  23. "十",
  24. "十一",
  25. "十二",
  26. ],
  27. abbreviated: [
  28. "1月",
  29. "2月",
  30. "3月",
  31. "4月",
  32. "5月",
  33. "6月",
  34. "7月",
  35. "8月",
  36. "9月",
  37. "10月",
  38. "11月",
  39. "12月",
  40. ],
  41. wide: [
  42. "一月",
  43. "二月",
  44. "三月",
  45. "四月",
  46. "五月",
  47. "六月",
  48. "七月",
  49. "八月",
  50. "九月",
  51. "十月",
  52. "十一月",
  53. "十二月",
  54. ],
  55. };
  56. const dayValues = {
  57. narrow: ["日", "一", "二", "三", "四", "五", "六"],
  58. short: ["日", "一", "二", "三", "四", "五", "六"],
  59. abbreviated: ["週日", "週一", "週二", "週三", "週四", "週五", "週六"],
  60. wide: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
  61. };
  62. const dayPeriodValues = {
  63. narrow: {
  64. am: "上",
  65. pm: "下",
  66. midnight: "午夜",
  67. noon: "晌",
  68. morning: "早",
  69. afternoon: "午",
  70. evening: "晚",
  71. night: "夜",
  72. },
  73. abbreviated: {
  74. am: "上午",
  75. pm: "下午",
  76. midnight: "午夜",
  77. noon: "中午",
  78. morning: "上午",
  79. afternoon: "下午",
  80. evening: "晚上",
  81. night: "夜晚",
  82. },
  83. wide: {
  84. am: "上午",
  85. pm: "下午",
  86. midnight: "午夜",
  87. noon: "中午",
  88. morning: "上午",
  89. afternoon: "下午",
  90. evening: "晚上",
  91. night: "夜晚",
  92. },
  93. };
  94. const formattingDayPeriodValues = {
  95. narrow: {
  96. am: "上",
  97. pm: "下",
  98. midnight: "午夜",
  99. noon: "晌",
  100. morning: "早",
  101. afternoon: "午",
  102. evening: "晚",
  103. night: "夜",
  104. },
  105. abbreviated: {
  106. am: "上午",
  107. pm: "下午",
  108. midnight: "午夜",
  109. noon: "中午",
  110. morning: "上午",
  111. afternoon: "下午",
  112. evening: "晚上",
  113. night: "夜晚",
  114. },
  115. wide: {
  116. am: "上午",
  117. pm: "下午",
  118. midnight: "午夜",
  119. noon: "中午",
  120. morning: "上午",
  121. afternoon: "下午",
  122. evening: "晚上",
  123. night: "夜晚",
  124. },
  125. };
  126. const ordinalNumber = (dirtyNumber, options) => {
  127. const number = Number(dirtyNumber);
  128. switch (options?.unit) {
  129. case "date":
  130. return number + "日";
  131. case "hour":
  132. return number + "時";
  133. case "minute":
  134. return number + "分";
  135. case "second":
  136. return number + "秒";
  137. default:
  138. return "第 " + number;
  139. }
  140. };
  141. export const localize = {
  142. ordinalNumber,
  143. era: buildLocalizeFn({
  144. values: eraValues,
  145. defaultWidth: "wide",
  146. }),
  147. quarter: buildLocalizeFn({
  148. values: quarterValues,
  149. defaultWidth: "wide",
  150. argumentCallback: (quarter) => quarter - 1,
  151. }),
  152. month: buildLocalizeFn({
  153. values: monthValues,
  154. defaultWidth: "wide",
  155. }),
  156. day: buildLocalizeFn({
  157. values: dayValues,
  158. defaultWidth: "wide",
  159. }),
  160. dayPeriod: buildLocalizeFn({
  161. values: dayPeriodValues,
  162. defaultWidth: "wide",
  163. formattingValues: formattingDayPeriodValues,
  164. defaultFormattingWidth: "wide",
  165. }),
  166. };