localize.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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: ["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. "ינו׳",
  16. "פבר׳",
  17. "מרץ",
  18. "אפר׳",
  19. "מאי",
  20. "יוני",
  21. "יולי",
  22. "אוג׳",
  23. "ספט׳",
  24. "אוק׳",
  25. "נוב׳",
  26. "דצמ׳",
  27. ],
  28. wide: [
  29. "ינואר",
  30. "פברואר",
  31. "מרץ",
  32. "אפריל",
  33. "מאי",
  34. "יוני",
  35. "יולי",
  36. "אוגוסט",
  37. "ספטמבר",
  38. "אוקטובר",
  39. "נובמבר",
  40. "דצמבר",
  41. ],
  42. };
  43. const dayValues = {
  44. narrow: ["א׳", "ב׳", "ג׳", "ד׳", "ה׳", "ו׳", "ש׳"],
  45. short: ["א׳", "ב׳", "ג׳", "ד׳", "ה׳", "ו׳", "ש׳"],
  46. abbreviated: [
  47. "יום א׳",
  48. "יום ב׳",
  49. "יום ג׳",
  50. "יום ד׳",
  51. "יום ה׳",
  52. "יום ו׳",
  53. "שבת",
  54. ],
  55. wide: [
  56. "יום ראשון",
  57. "יום שני",
  58. "יום שלישי",
  59. "יום רביעי",
  60. "יום חמישי",
  61. "יום שישי",
  62. "יום שבת",
  63. ],
  64. };
  65. const dayPeriodValues = {
  66. narrow: {
  67. am: "לפנה״צ",
  68. pm: "אחה״צ",
  69. midnight: "חצות",
  70. noon: "צהריים",
  71. morning: "בוקר",
  72. afternoon: "אחר הצהריים",
  73. evening: "ערב",
  74. night: "לילה",
  75. },
  76. abbreviated: {
  77. am: "לפנה״צ",
  78. pm: "אחה״צ",
  79. midnight: "חצות",
  80. noon: "צהריים",
  81. morning: "בוקר",
  82. afternoon: "אחר הצהריים",
  83. evening: "ערב",
  84. night: "לילה",
  85. },
  86. wide: {
  87. am: "לפנה״צ",
  88. pm: "אחה״צ",
  89. midnight: "חצות",
  90. noon: "צהריים",
  91. morning: "בוקר",
  92. afternoon: "אחר הצהריים",
  93. evening: "ערב",
  94. night: "לילה",
  95. },
  96. };
  97. const formattingDayPeriodValues = {
  98. narrow: {
  99. am: "לפנה״צ",
  100. pm: "אחה״צ",
  101. midnight: "חצות",
  102. noon: "צהריים",
  103. morning: "בבוקר",
  104. afternoon: "בצהריים",
  105. evening: "בערב",
  106. night: "בלילה",
  107. },
  108. abbreviated: {
  109. am: "לפנה״צ",
  110. pm: "אחה״צ",
  111. midnight: "חצות",
  112. noon: "צהריים",
  113. morning: "בבוקר",
  114. afternoon: "אחר הצהריים",
  115. evening: "בערב",
  116. night: "בלילה",
  117. },
  118. wide: {
  119. am: "לפנה״צ",
  120. pm: "אחה״צ",
  121. midnight: "חצות",
  122. noon: "צהריים",
  123. morning: "בבוקר",
  124. afternoon: "אחר הצהריים",
  125. evening: "בערב",
  126. night: "בלילה",
  127. },
  128. };
  129. const ordinalNumber = (dirtyNumber, options) => {
  130. const number = Number(dirtyNumber);
  131. // We only show words till 10
  132. if (number <= 0 || number > 10) return String(number);
  133. const unit = String(options?.unit);
  134. const isFemale = ["year", "hour", "minute", "second"].indexOf(unit) >= 0;
  135. const male = [
  136. "ראשון",
  137. "שני",
  138. "שלישי",
  139. "רביעי",
  140. "חמישי",
  141. "שישי",
  142. "שביעי",
  143. "שמיני",
  144. "תשיעי",
  145. "עשירי",
  146. ];
  147. const female = [
  148. "ראשונה",
  149. "שנייה",
  150. "שלישית",
  151. "רביעית",
  152. "חמישית",
  153. "שישית",
  154. "שביעית",
  155. "שמינית",
  156. "תשיעית",
  157. "עשירית",
  158. ];
  159. const index = number - 1;
  160. return isFemale ? female[index] : male[index];
  161. };
  162. export const localize = {
  163. ordinalNumber,
  164. era: buildLocalizeFn({
  165. values: eraValues,
  166. defaultWidth: "wide",
  167. }),
  168. quarter: buildLocalizeFn({
  169. values: quarterValues,
  170. defaultWidth: "wide",
  171. argumentCallback: (quarter) => quarter - 1,
  172. }),
  173. month: buildLocalizeFn({
  174. values: monthValues,
  175. defaultWidth: "wide",
  176. }),
  177. day: buildLocalizeFn({
  178. values: dayValues,
  179. defaultWidth: "wide",
  180. }),
  181. dayPeriod: buildLocalizeFn({
  182. values: dayPeriodValues,
  183. defaultWidth: "wide",
  184. formattingValues: formattingDayPeriodValues,
  185. defaultFormattingWidth: "wide",
  186. }),
  187. };