localize.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  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: ["Ж", "Д", "С", "С", "Б", "Ж", "С"],
  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. wide: {
  100. am: "ТД",
  101. pm: "ТК",
  102. midnight: "түн ортасы",
  103. noon: "түс",
  104. morning: "таң",
  105. afternoon: "күндіз",
  106. evening: "кеш",
  107. night: "түн",
  108. },
  109. };
  110. const formattingDayPeriodValues = {
  111. narrow: {
  112. am: "ТД",
  113. pm: "ТК",
  114. midnight: "түн ортасында",
  115. noon: "түс",
  116. morning: "таң",
  117. afternoon: "күн",
  118. evening: "кеш",
  119. night: "түн",
  120. },
  121. wide: {
  122. am: "ТД",
  123. pm: "ТК",
  124. midnight: "түн ортасында",
  125. noon: "түсте",
  126. morning: "таңертең",
  127. afternoon: "күндіз",
  128. evening: "кеште",
  129. night: "түнде",
  130. },
  131. };
  132. const suffixes = {
  133. 0: "-ші",
  134. 1: "-ші",
  135. 2: "-ші",
  136. 3: "-ші",
  137. 4: "-ші",
  138. 5: "-ші",
  139. 6: "-шы",
  140. 7: "-ші",
  141. 8: "-ші",
  142. 9: "-шы",
  143. 10: "-шы",
  144. 20: "-шы",
  145. 30: "-шы",
  146. 40: "-шы",
  147. 50: "-ші",
  148. 60: "-шы",
  149. 70: "-ші",
  150. 80: "-ші",
  151. 90: "-шы",
  152. 100: "-ші",
  153. };
  154. const ordinalNumber = (dirtyNumber, _options) => {
  155. const number = Number(dirtyNumber);
  156. const mod10 = number % 10;
  157. const b = number >= 100 ? 100 : null;
  158. const suffix =
  159. suffixes[number] || suffixes[mod10] || (b && suffixes[b]) || "";
  160. return number + suffix;
  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. formattingValues: formattingMonthValues,
  177. defaultFormattingWidth: "wide",
  178. }),
  179. day: buildLocalizeFn({
  180. values: dayValues,
  181. defaultWidth: "wide",
  182. }),
  183. dayPeriod: buildLocalizeFn({
  184. values: dayPeriodValues,
  185. defaultWidth: "any",
  186. formattingValues: formattingDayPeriodValues,
  187. defaultFormattingWidth: "wide",
  188. }),
  189. };