localize.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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: ["Τ1", "Τ2", "Τ3", "Τ4"],
  10. wide: ["1ο τρίμηνο", "2ο τρίμηνο", "3ο τρίμηνο", "4ο τρίμηνο"],
  11. };
  12. const monthValues = {
  13. narrow: ["Ι", "Φ", "Μ", "Α", "Μ", "Ι", "Ι", "Α", "Σ", "Ο", "Ν", "Δ"],
  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 formattingMonthValues = {
  44. narrow: ["Ι", "Φ", "Μ", "Α", "Μ", "Ι", "Ι", "Α", "Σ", "Ο", "Ν", "Δ"],
  45. abbreviated: [
  46. "Ιαν",
  47. "Φεβ",
  48. "Μαρ",
  49. "Απρ",
  50. "Μαΐ",
  51. "Ιουν",
  52. "Ιουλ",
  53. "Αυγ",
  54. "Σεπ",
  55. "Οκτ",
  56. "Νοε",
  57. "Δεκ",
  58. ],
  59. wide: [
  60. "Ιανουαρίου",
  61. "Φεβρουαρίου",
  62. "Μαρτίου",
  63. "Απριλίου",
  64. "Μαΐου",
  65. "Ιουνίου",
  66. "Ιουλίου",
  67. "Αυγούστου",
  68. "Σεπτεμβρίου",
  69. "Οκτωβρίου",
  70. "Νοεμβρίου",
  71. "Δεκεμβρίου",
  72. ],
  73. };
  74. const dayValues = {
  75. narrow: ["Κ", "Δ", "T", "Τ", "Π", "Π", "Σ"],
  76. short: ["Κυ", "Δε", "Τρ", "Τε", "Πέ", "Πα", "Σά"],
  77. abbreviated: ["Κυρ", "Δευ", "Τρί", "Τετ", "Πέμ", "Παρ", "Σάβ"],
  78. wide: [
  79. "Κυριακή",
  80. "Δευτέρα",
  81. "Τρίτη",
  82. "Τετάρτη",
  83. "Πέμπτη",
  84. "Παρασκευή",
  85. "Σάββατο",
  86. ],
  87. };
  88. const dayPeriodValues = {
  89. narrow: {
  90. am: "πμ",
  91. pm: "μμ",
  92. midnight: "μεσάνυχτα",
  93. noon: "μεσημέρι",
  94. morning: "πρωί",
  95. afternoon: "απόγευμα",
  96. evening: "βράδυ",
  97. night: "νύχτα",
  98. },
  99. abbreviated: {
  100. am: "π.μ.",
  101. pm: "μ.μ.",
  102. midnight: "μεσάνυχτα",
  103. noon: "μεσημέρι",
  104. morning: "πρωί",
  105. afternoon: "απόγευμα",
  106. evening: "βράδυ",
  107. night: "νύχτα",
  108. },
  109. wide: {
  110. am: "π.μ.",
  111. pm: "μ.μ.",
  112. midnight: "μεσάνυχτα",
  113. noon: "μεσημέρι",
  114. morning: "πρωί",
  115. afternoon: "απόγευμα",
  116. evening: "βράδυ",
  117. night: "νύχτα",
  118. },
  119. };
  120. const ordinalNumber = (dirtyNumber, options) => {
  121. const number = Number(dirtyNumber);
  122. const unit = options?.unit;
  123. let suffix;
  124. if (unit === "year" || unit === "month") {
  125. suffix = "ος";
  126. } else if (
  127. unit === "week" ||
  128. unit === "dayOfYear" ||
  129. unit === "day" ||
  130. unit === "hour" ||
  131. unit === "date"
  132. ) {
  133. suffix = "η";
  134. } else {
  135. suffix = "ο";
  136. }
  137. return number + suffix;
  138. };
  139. export const localize = {
  140. ordinalNumber,
  141. era: buildLocalizeFn({
  142. values: eraValues,
  143. defaultWidth: "wide",
  144. }),
  145. quarter: buildLocalizeFn({
  146. values: quarterValues,
  147. defaultWidth: "wide",
  148. argumentCallback: (quarter) => quarter - 1,
  149. }),
  150. month: buildLocalizeFn({
  151. values: monthValues,
  152. defaultWidth: "wide",
  153. formattingValues: formattingMonthValues,
  154. defaultFormattingWidth: "wide",
  155. }),
  156. day: buildLocalizeFn({
  157. values: dayValues,
  158. defaultWidth: "wide",
  159. }),
  160. dayPeriod: buildLocalizeFn({
  161. values: dayPeriodValues,
  162. defaultWidth: "wide",
  163. }),
  164. };