@intlayer/docs 9.1.3 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  3. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  4. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  5. package/blog/fr/i18n_meaning.md +7 -1
  6. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  7. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  9. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  11. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  12. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  13. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  14. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  15. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  16. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  17. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  18. package/blog/tr/intlayer_with_react-intl.md +3 -1
  19. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  20. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  22. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  23. package/blog/zh/intlayer_with_i18next.md +87 -28
  24. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  25. package/blog/zh/intlayer_with_next-intl.md +88 -28
  26. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  27. package/blog/zh/intlayer_with_react-intl.md +88 -27
  28. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  29. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  30. package/dist/cjs/generated/blog.entry.cjs +27 -27
  31. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  32. package/dist/cjs/generated/docs.entry.cjs +234 -214
  33. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  34. package/dist/cjs/generated/frequentQuestions.entry.cjs +17 -17
  35. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  36. package/dist/cjs/generated/legal.entry.cjs +2 -2
  37. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  38. package/dist/esm/generated/blog.entry.mjs +27 -27
  39. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  40. package/dist/esm/generated/docs.entry.mjs +234 -214
  41. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  42. package/dist/esm/generated/frequentQuestions.entry.mjs +17 -17
  43. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  44. package/dist/esm/generated/legal.entry.mjs +2 -2
  45. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  46. package/dist/types/generated/docs.entry.d.ts +1 -0
  47. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  48. package/docs/ar/analytics.md +222 -0
  49. package/docs/ar/autoFill.md +28 -9
  50. package/docs/ar/configuration.md +25 -8
  51. package/docs/ar/dictionary/file.md +3 -1
  52. package/docs/ar/dictionary/nesting.md +47 -30
  53. package/docs/ar/formatters.md +148 -193
  54. package/docs/ar/intlayer_CMS.md +152 -0
  55. package/docs/ar/intlayer_with_angular_21.md +9 -9
  56. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  57. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  58. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  59. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  60. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  61. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  62. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  63. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  64. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  65. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  66. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  67. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  68. package/docs/ar/releases/v9.md +0 -37
  69. package/docs/ar/self_hosting.md +46 -49
  70. package/docs/bn/configuration.md +25 -8
  71. package/docs/bn/intlayer_with_angular_21.md +9 -9
  72. package/docs/cs/configuration.md +25 -8
  73. package/docs/cs/intlayer_with_angular_21.md +9 -9
  74. package/docs/de/analytics.md +222 -0
  75. package/docs/de/autoFill.md +28 -9
  76. package/docs/de/configuration.md +25 -8
  77. package/docs/de/dictionary/file.md +3 -1
  78. package/docs/de/dictionary/nesting.md +47 -31
  79. package/docs/de/formatters.md +208 -334
  80. package/docs/de/intlayer_CMS.md +66 -15
  81. package/docs/de/intlayer_with_angular_21.md +9 -9
  82. package/docs/de/intlayer_with_nestjs.md +11 -7
  83. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  84. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  85. package/docs/de/intlayer_with_solid_start.md +1078 -0
  86. package/docs/de/intlayer_with_vite+vue.md +1 -3
  87. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  88. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  89. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  90. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  91. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  92. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  93. package/docs/de/releases/v9.md +0 -15
  94. package/docs/de/self_hosting.md +46 -50
  95. package/docs/en/cli/doc-review.md +13 -2
  96. package/docs/en/configuration.md +24 -15
  97. package/docs/en/intlayer_with_angular_21.md +9 -9
  98. package/docs/en/intlayer_with_solid_start.md +1091 -0
  99. package/docs/en/intlayer_with_vite+solid.md +12 -0
  100. package/docs/en-GB/analytics.md +222 -0
  101. package/docs/en-GB/autoFill.md +26 -7
  102. package/docs/en-GB/configuration.md +25 -8
  103. package/docs/en-GB/dictionary/file.md +2 -0
  104. package/docs/en-GB/dictionary/nesting.md +64 -205
  105. package/docs/en-GB/formatters.md +146 -181
  106. package/docs/en-GB/intlayer_CMS.md +152 -0
  107. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  108. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  109. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  110. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  111. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  112. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  113. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  114. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  115. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  116. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  117. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  118. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  119. package/docs/en-GB/self_hosting.md +60 -49
  120. package/docs/es/analytics.md +222 -0
  121. package/docs/es/autoFill.md +28 -9
  122. package/docs/es/configuration.md +24 -7
  123. package/docs/es/dictionary/file.md +3 -1
  124. package/docs/es/dictionary/nesting.md +47 -30
  125. package/docs/es/formatters.md +114 -168
  126. package/docs/es/intlayer_CMS.md +35 -10
  127. package/docs/es/intlayer_with_angular_21.md +9 -9
  128. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  129. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  130. package/docs/es/intlayer_with_solid_start.md +1078 -0
  131. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  132. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  133. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  134. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  135. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  136. package/docs/es/releases/v9.md +0 -15
  137. package/docs/es/self_hosting.md +46 -49
  138. package/docs/fr/analytics.md +222 -0
  139. package/docs/fr/autoFill.md +27 -8
  140. package/docs/fr/configuration.md +25 -8
  141. package/docs/fr/dictionary/file.md +2 -0
  142. package/docs/fr/dictionary/nesting.md +37 -184
  143. package/docs/fr/formatters.md +95 -236
  144. package/docs/fr/intlayer_CMS.md +66 -15
  145. package/docs/fr/intlayer_with_angular_21.md +9 -9
  146. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  147. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  148. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  149. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  150. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  151. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/fr/releases/v9.md +0 -15
  155. package/docs/fr/self_hosting.md +46 -49
  156. package/docs/hi/analytics.md +222 -0
  157. package/docs/hi/autoFill.md +28 -9
  158. package/docs/hi/configuration.md +25 -8
  159. package/docs/hi/dictionary/file.md +3 -1
  160. package/docs/hi/dictionary/nesting.md +47 -30
  161. package/docs/hi/formatters.md +233 -334
  162. package/docs/hi/how_works_intlayer.md +3 -1
  163. package/docs/hi/intlayer_CMS.md +152 -0
  164. package/docs/hi/intlayer_with_angular_21.md +9 -9
  165. package/docs/hi/intlayer_with_nestjs.md +11 -7
  166. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  167. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  168. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  169. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  170. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  171. package/docs/hi/intlayer_with_vite+react.md +48 -41
  172. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  173. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  174. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  175. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  176. package/docs/hi/packages/next-intlayer/t.md +33 -1
  177. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  178. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  179. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  180. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  181. package/docs/hi/plugins/sync-json.md +9 -9
  182. package/docs/hi/releases/v9.md +0 -15
  183. package/docs/hi/self_hosting.md +38 -51
  184. package/docs/id/analytics.md +223 -0
  185. package/docs/id/configuration.md +25 -8
  186. package/docs/id/dictionary/nesting.md +37 -184
  187. package/docs/id/formatters.md +208 -305
  188. package/docs/id/intlayer_CMS.md +164 -0
  189. package/docs/id/intlayer_with_angular_21.md +9 -9
  190. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  191. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  192. package/docs/id/intlayer_with_solid_start.md +1078 -0
  193. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  194. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  195. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  196. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  197. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  198. package/docs/id/releases/v9.md +12 -0
  199. package/docs/id/self_hosting.md +61 -50
  200. package/docs/it/analytics.md +222 -0
  201. package/docs/it/autoFill.md +27 -8
  202. package/docs/it/configuration.md +25 -8
  203. package/docs/it/dictionary/file.md +3 -1
  204. package/docs/it/dictionary/nesting.md +47 -30
  205. package/docs/it/formatters.md +114 -168
  206. package/docs/it/intlayer_CMS.md +66 -15
  207. package/docs/it/intlayer_with_angular_21.md +9 -9
  208. package/docs/it/intlayer_with_nestjs.md +11 -7
  209. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  210. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  211. package/docs/it/intlayer_with_solid_start.md +1078 -0
  212. package/docs/it/intlayer_with_vite+vue.md +1 -3
  213. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  214. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  215. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  216. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  217. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  218. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  219. package/docs/it/releases/v9.md +0 -15
  220. package/docs/it/self_hosting.md +60 -49
  221. package/docs/ja/analytics.md +222 -0
  222. package/docs/ja/autoFill.md +28 -9
  223. package/docs/ja/configuration.md +25 -8
  224. package/docs/ja/dictionary/content_file.md +15 -7
  225. package/docs/ja/dictionary/file.md +3 -1
  226. package/docs/ja/dictionary/nesting.md +47 -30
  227. package/docs/ja/formatters.md +133 -187
  228. package/docs/ja/intlayer_visual_editor.md +3 -1
  229. package/docs/ja/intlayer_with_angular_21.md +6 -6
  230. package/docs/ja/intlayer_with_nestjs.md +2 -12
  231. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  232. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  233. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  234. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  235. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  236. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  237. package/docs/ja/mcp_server.md +3 -9
  238. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  239. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  240. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  241. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  242. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  243. package/docs/ja/releases/v9.md +12 -0
  244. package/docs/ja/self_hosting.md +46 -50
  245. package/docs/ko/analytics.md +222 -0
  246. package/docs/ko/autoFill.md +28 -9
  247. package/docs/ko/configuration.md +25 -8
  248. package/docs/ko/dictionary/file.md +3 -1
  249. package/docs/ko/dictionary/nesting.md +47 -30
  250. package/docs/ko/formatters.md +133 -187
  251. package/docs/ko/intlayer_with_angular_21.md +9 -9
  252. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  253. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  256. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  257. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  258. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  259. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  260. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  261. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  264. package/docs/ko/releases/v9.md +12 -0
  265. package/docs/ko/self_hosting.md +60 -49
  266. package/docs/nl/configuration.md +25 -8
  267. package/docs/nl/intlayer_with_angular_21.md +9 -9
  268. package/docs/pl/analytics.md +220 -0
  269. package/docs/pl/configuration.md +25 -8
  270. package/docs/pl/dictionary/nesting.md +47 -30
  271. package/docs/pl/formatters.md +208 -305
  272. package/docs/pl/intlayer_CMS.md +152 -0
  273. package/docs/pl/intlayer_with_angular_21.md +9 -9
  274. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  275. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  276. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  277. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  278. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  279. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  280. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  281. package/docs/pl/releases/v9.md +0 -15
  282. package/docs/pl/self_hosting.md +60 -49
  283. package/docs/pt/analytics.md +222 -0
  284. package/docs/pt/configuration.md +25 -8
  285. package/docs/pt/dictionary/file.md +3 -1
  286. package/docs/pt/dictionary/nesting.md +47 -30
  287. package/docs/pt/formatters.md +112 -168
  288. package/docs/pt/intlayer_CMS.md +66 -15
  289. package/docs/pt/intlayer_with_angular_21.md +9 -9
  290. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  291. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  292. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  293. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  294. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  295. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  296. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  297. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  298. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  299. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  300. package/docs/pt/releases/v9.md +0 -15
  301. package/docs/pt/self_hosting.md +60 -49
  302. package/docs/ru/analytics.md +222 -0
  303. package/docs/ru/autoFill.md +27 -8
  304. package/docs/ru/configuration.md +25 -8
  305. package/docs/ru/dictionary/file.md +3 -1
  306. package/docs/ru/dictionary/nesting.md +64 -205
  307. package/docs/ru/formatters.md +108 -128
  308. package/docs/ru/intlayer_with_angular_21.md +9 -9
  309. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  310. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  311. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  312. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  313. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  314. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  315. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  316. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  317. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  318. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  319. package/docs/ru/releases/v9.md +0 -15
  320. package/docs/ru/self_hosting.md +60 -49
  321. package/docs/tr/analytics.md +222 -0
  322. package/docs/tr/autoFill.md +28 -9
  323. package/docs/tr/configuration.md +25 -8
  324. package/docs/tr/dictionary/file.md +2 -0
  325. package/docs/tr/dictionary/nesting.md +47 -30
  326. package/docs/tr/formatters.md +144 -190
  327. package/docs/tr/intlayer_CMS.md +152 -0
  328. package/docs/tr/intlayer_with_angular_21.md +9 -9
  329. package/docs/tr/intlayer_with_nestjs.md +2 -12
  330. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  331. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  332. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  333. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  334. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  335. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  336. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  337. package/docs/tr/self_hosting.md +47 -50
  338. package/docs/uk/analytics.md +222 -0
  339. package/docs/uk/configuration.md +25 -8
  340. package/docs/uk/dictionary/nesting.md +47 -30
  341. package/docs/uk/formatters.md +128 -185
  342. package/docs/uk/intlayer_CMS.md +152 -0
  343. package/docs/uk/intlayer_with_angular_21.md +9 -9
  344. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  345. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  346. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  347. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  348. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  349. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  350. package/docs/uk/releases/v9.md +0 -15
  351. package/docs/uk/self_hosting.md +60 -50
  352. package/docs/ur/configuration.md +25 -8
  353. package/docs/ur/intlayer_with_angular_21.md +9 -9
  354. package/docs/vi/analytics.md +222 -0
  355. package/docs/vi/configuration.md +24 -8
  356. package/docs/vi/dictionary/nesting.md +37 -184
  357. package/docs/vi/formatters.md +208 -309
  358. package/docs/vi/intlayer_CMS.md +164 -0
  359. package/docs/vi/intlayer_with_angular_21.md +9 -9
  360. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  361. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  362. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  363. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  364. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  365. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  366. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  367. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  368. package/docs/vi/plugins/sync-json.md +6 -6
  369. package/docs/vi/releases/v9.md +12 -0
  370. package/docs/vi/self_hosting.md +61 -50
  371. package/docs/zh/CI_CD.md +4 -0
  372. package/docs/zh/analytics.md +222 -0
  373. package/docs/zh/autoFill.md +28 -9
  374. package/docs/zh/configuration.md +24 -8
  375. package/docs/zh/dictionary/file.md +2 -0
  376. package/docs/zh/dictionary/nesting.md +47 -30
  377. package/docs/zh/formatters.md +140 -188
  378. package/docs/zh/intlayer_CMS.md +164 -0
  379. package/docs/zh/intlayer_with_analog.md +193 -3
  380. package/docs/zh/intlayer_with_angular_19.md +272 -3
  381. package/docs/zh/intlayer_with_angular_21.md +7 -7
  382. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  383. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  384. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  385. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  386. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  387. package/docs/zh/intlayer_with_nuxt.md +182 -7
  388. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  389. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  390. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  391. package/docs/zh/intlayer_with_storybook.md +260 -3
  392. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  393. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  394. package/docs/zh/intlayer_with_tanstack.md +731 -20
  395. package/docs/zh/intlayer_with_vanilla.md +314 -4
  396. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  397. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  398. package/docs/zh/intlayer_with_vite+react.md +324 -45
  399. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  400. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  401. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  402. package/docs/zh/mcp_server.md +3 -9
  403. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  404. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  405. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  406. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  407. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  408. package/docs/zh/releases/v9.md +12 -0
  409. package/docs/zh/self_hosting.md +60 -50
  410. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  411. package/package.json +6 -6
  412. package/src/generated/blog.entry.ts +27 -27
  413. package/src/generated/docs.entry.ts +234 -214
  414. package/src/generated/frequentQuestions.entry.ts +17 -17
  415. package/src/generated/legal.entry.ts +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-07-11
3
+ updatedAt: 2026-08-06
4
4
  title: Конфігурація
5
5
  description: Дізнайтеся, як налаштувати Intlayer для вашого додатка. Зрозумійте різні налаштування та параметри, доступні для адаптації Intlayer під ваші потреби.
6
6
  keywords:
@@ -14,6 +14,9 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 9.1.3
18
+ date: 2026-08-06
19
+ changes: "Зробити `routing.enableProxy` трипозиційним: не задано (auto), `true`, `false`"
17
20
  - version: 9.0.0
18
21
  date: 2026-07-11
19
22
  changes: "Додано конфігурацію `analytics`"
@@ -235,6 +238,19 @@ const config: IntlayerConfig = {
235
238
  */
236
239
  mode: "prefix-no-default",
237
240
 
241
+ /**
242
+ * Вмикає проксі маршрутизації локалей Intlayer (middleware).
243
+ * Відповідає за визначення локалі, перенаправлення та перезапис URL у dev, preview та SSR.
244
+ * - не задано (auto): сервери dev і preview зберігають маршрутизацію за URL,
245
+ * ігноруючи локаль, збережену в cookie та заголовках. Префікси й далі
246
+ * розв’язуються, локаль і далі зберігається, а визначення Accept-Language
247
+ * і далі діє. У продакшені поводиться як `true`.
248
+ * - true: повна поведінка в усіх середовищах.
249
+ * - false: маршрутизація локалей вимкнена.
250
+ * За замовчуванням: undefined (auto)
251
+ */
252
+ enableProxy: undefined,
253
+
238
254
  /**
239
255
  * Де зберігається вибрана користувачем локаль.
240
256
  * Варіанти: 'cookie', 'localStorage', 'sessionStorage', 'header' або їх масив.
@@ -713,13 +729,14 @@ export default config;
713
729
 
714
730
  Налаштування для контролю поведінки маршрутизації, включаючи структуру URL, зберігання локалі та керування проміжним ПЗ.
715
731
 
716
- | Поле | Опис | Тип | За замовчуванням | Приклад | Примітки |
717
- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
718
- | `mode` | Режим структури URL для керування локаллю. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) або `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard` . `'no-prefix'`: локаль керується іншим способом. `'search-params'`: `/dashboard?locale=fr` | Не впливає на керування файлами cookie або локальне сховище. |
719
- | `storage` | Конфігурація для зберігання локалі на клієнті. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Див. таблицю параметрів зберігання нижче. |
720
- | `basePath` | Базовий шлях для URL додатка. | `string` | `''` | `'/my-app'` | Якщо ваш додаток знаходиться за адресою `https://example.com/my-app`, basePath - `'/my-app'`, що вказує на URL `https://example.com/my-app/en` . |
721
- | `rewrite` | Власні правила перенаправлення URL для зміни стандартного режиму маршрутизації для певних шляхів. Підтримує динамічні параметри `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Див. приклад нижче | Правила перенаправлення мають вищий пріоритет, ніж `mode`.<br/>• Працює з Next.js та Vite.<br/>• `getLocalizedUrl()` автоматично застосовує відповідні правила.<br/>• Див. [Власні перенаправлення URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
722
- | `domains` | Відображає локалі на імена хостів доменів для маршрутизації на основі доменів. Якщо встановлено, URL для цієї локалі використовують цей домен як базу (абсолютний URL), і префікс локалі не додається до шляху. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • Протокол за замовчуванням - `https://`, якщо він не вказаний у імені хоста.<br/>• Сам домен ідентифікує локаль, тому префікс `/zh/` не додається.<br/>• `getLocalizedUrl('/', 'zh')` повертає `https://intlayer.zh/`. |
732
+ | Поле | Опис | Тип | За замовчуванням | Приклад | Примітки |
733
+ | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
734
+ | `mode` | Режим структури URL для керування локаллю. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) або `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard` . `'no-prefix'`: локаль керується іншим способом. `'search-params'`: `/dashboard?locale=fr` | Не впливає на керування файлами cookie або локальне сховище. |
735
+ | `enableProxy` | Вмикає проксі маршрутизації локалей Intlayer (middleware). | `boolean` &#124; <br/> `undefined` | `undefined` (auto) | `true` | Не задано (auto): сервери dev і preview ігнорують локаль із cookie/заголовків як джерело перенаправлення; префікси, збереження локалі та визначення `Accept-Language` продовжують діяти. У продакшені поводиться як `true`.<br/>• `true`: повна поведінка всюди.<br/>• `false`: маршрутизація локалей вимкнена. У Next.js middleware `intlayerProxy` стає наскрізним. |
736
+ | `storage` | Конфігурація для зберігання локалі на клієнті. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Див. таблицю параметрів зберігання нижче. |
737
+ | `basePath` | Базовий шлях для URL додатка. | `string` | `''` | `'/my-app'` | Якщо ваш додаток знаходиться за адресою `https://example.com/my-app`, basePath - `'/my-app'`, що вказує на URL `https://example.com/my-app/en` . |
738
+ | `rewrite` | Власні правила перенаправлення URL для зміни стандартного режиму маршрутизації для певних шляхів. Підтримує динамічні параметри `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Див. приклад нижче | • Правила перенаправлення мають вищий пріоритет, ніж `mode`.<br/>• Працює з Next.js та Vite.<br/>• `getLocalizedUrl()` автоматично застосовує відповідні правила.<br/>• Див. [Власні перенаправлення URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
739
+ | `domains` | Відображає локалі на імена хостів доменів для маршрутизації на основі доменів. Якщо встановлено, URL для цієї локалі використовують цей домен як базу (абсолютний URL), і префікс локалі не додається до шляху. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • Протокол за замовчуванням - `https://`, якщо він не вказаний у імені хоста.<br/>• Сам домен ідентифікує локаль, тому префікс `/zh/` не додається.<br/>• `getLocalizedUrl('/', 'zh')` повертає `https://intlayer.zh/`. |
723
740
 
724
741
  **Приклад `rewrite`**:
725
742
 
@@ -68,6 +68,53 @@ export default firstDictionary;
68
68
  }
69
69
  ```
70
70
 
71
+ ### Посилання з Nest
72
+
73
+ Тепер створіть ще один модуль контенту, який використовує функцію `nest` для посилання на вищезазначений контент. Ви можете посилатися на весь контент або на конкретне вкладене значення:
74
+
75
+ ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
76
+ import { nest, type Dictionary } from "intlayer";
77
+
78
+ const myNestingContent = {
79
+ key: "key_of_my_second_dictionary",
80
+ content: {
81
+ // Посилається на весь словник:
82
+ fullNestedContent: nest("key_of_my_first_dictionary"),
83
+ // Посилається на конкретне вкладене значення:
84
+ partialNestedContent: nest(
85
+ "key_of_my_first_dictionary",
86
+ "subContent.contentNumber"
87
+ ),
88
+ },
89
+ } satisfies Dictionary;
90
+
91
+ export default myNestingContent;
92
+ ```
93
+
94
+ ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
95
+ {
96
+ "$schema": "https://intlayer.org/schema.json",
97
+ "key": "key_of_my_second_dictionary",
98
+ "content": {
99
+ "fullNestedContent": {
100
+ "nodeType": "nested",
101
+ "nested": {
102
+ "dictionaryKey": "key_of_my_first_dictionary"
103
+ }
104
+ },
105
+ "partialNestedContent": {
106
+ "nodeType": "nested",
107
+ "nested": {
108
+ "dictionaryKey": "key_of_my_first_dictionary",
109
+ "path": "subContent.contentNumber"
110
+ }
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ Як другий параметр, ви можете вказати шлях до вкладеного значення в цьому контенті. Якщо шлях не вказаний, повертається весь контент посилаючого словника.
117
+
71
118
  ## Налаштування вкладення
72
119
 
73
120
  <Tabs group="framework">
@@ -262,36 +309,6 @@ document.getElementById("nested")!.textContent = content.partialNestedContent;
262
309
  </Tab>
263
310
  </Tabs>
264
311
 
265
- ## Використання вкладення з React Intlayer
266
-
267
- Щоб використовувати вкладений вміст у React-компоненті, скористайтеся хуком `useIntlayer` з пакету `react-intlayer`. Цей хук отримує відповідний вміст на основі вказаного ключа. Ось приклад того, як його використовувати:
268
-
269
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
270
- import type { FC } from "react";
271
- import { useIntlayer } from "react-intlayer";
272
-
273
- const NestComponent: FC = () => {
274
- const { fullNestedContent, partialNestedContent } = useIntlayer(
275
- "key_of_my_second_dictionary"
276
- );
277
-
278
- return (
279
- <div>
280
- <p>
281
- Full Nested Content: {JSON.stringify(fullNestedContent)}
282
- {/* Вивід: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
283
- </p>
284
- <p>
285
- Часткове вкладене значення: {partialNestedContent}
286
- {/* Вивід: 0 */}
287
- </p>
288
- </div>
289
- );
290
- };
291
-
292
- export default NestComponent;
293
- ```
294
-
295
312
  ## Додаткові ресурси
296
313
 
297
314
  Для детальнішої інформації щодо конфігурації та використання зверніться до наступних ресурсів:
@@ -49,37 +49,6 @@ author: aymericzip
49
49
 
50
50
  <TOC/>
51
51
 
52
- ## Огляд
53
-
54
- Intlayer надає набір легких хелперів, побудованих поверх рідних API `Intl`, а також кешований обгорток `Intl`, щоб уникнути повторного створення важких форматерів. Ці утиліти повністю враховують локаль і можуть використовуватися з основного пакета `intlayer`.
55
-
56
- ### Імпорт
57
-
58
- ```ts
59
- import {
60
- Intl,
61
- number,
62
- percentage,
63
- currency,
64
- date,
65
- relativeTime,
66
- units,
67
- compact,
68
- list,
69
- getLocaleName,
70
- getLocaleLang,
71
- getLocaleFromPath,
72
- getPathWithoutLocale,
73
- getLocalizedUrl,
74
- getHTMLTextDir,
75
- getContent,
76
- getTranslation,
77
- getIntlayer,
78
- } from "intlayer";
79
- ```
80
-
81
- If you are using React, hooks are also available; see `react-intlayer/format`.
82
-
83
52
  ## Cached Intl
84
53
 
85
54
  The exported `Intl` is a thin, cached wrapper around the global `Intl`. It memoizes instances of `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator`, and `PluralRules`, which avoids rebuilding the same formatter repeatedly.
@@ -116,51 +85,6 @@ pluralRules.select(1); // "one"
116
85
  pluralRules.select(2); // "інше"
117
86
  ```
118
87
 
119
- ### `Intl.DisplayNames`
120
-
121
- Для локалізованих назв мов, регіонів, валют та писемностей:
122
-
123
- ```ts
124
- import { Intl } from "intlayer";
125
-
126
- const languageNames = new Intl.DisplayNames("en", { type: "language" });
127
- languageNames.of("fr"); // "французька"
128
-
129
- const regionNames = new Intl.DisplayNames("fr", { type: "region" });
130
- regionNames.of("US"); // "Сполучені Штати"
131
- ```
132
-
133
- ### `Intl.Collator`
134
-
135
- Для порівняння рядків та сортування з урахуванням локалі:
136
-
137
- ```ts
138
- import { Intl } from "intlayer";
139
-
140
- const collator = new Intl.Collator("de", {
141
- sensitivity: "base",
142
- numeric: true,
143
- });
144
-
145
- const words = ["äpfel", "zebra", "100", "20"];
146
- words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
147
- ```
148
-
149
- ### `Intl.PluralRules`
150
-
151
- Для визначення форм множини в різних локалях:
152
-
153
- ```ts
154
- import { Intl } from "intlayer";
155
-
156
- const pluralRules = new Intl.PluralRules("ar");
157
- pluralRules.select(0); // "нуль"
158
- pluralRules.select(1); // "один"
159
- pluralRules.select(2); // "два"
160
- pluralRules.select(3); // "кілька"
161
- pluralRules.select(11); // "багато"
162
- ```
163
-
164
88
  ## Утиліти локалей
165
89
 
166
90
  ### `getLocaleName(displayLocale, targetLocale?)`
@@ -178,22 +102,6 @@ getLocaleName("de", "es"); // іспанською: "alemán"
178
102
  - **displayLocale**: Локаль, для якої потрібно отримати назву
179
103
  - **targetLocale**: Локаль, в якій відображається назва (за замовчуванням displayLocale)
180
104
 
181
- ### `getLocaleFromPath(inputUrl)`
182
-
183
- Витягує сегмент локалі з URL або шляху:
184
-
185
- ```ts
186
- import { getLocaleFromPath } from "intlayer";
187
-
188
- getLocaleFromPath("/en/dashboard"); // "en"
189
- getLocaleFromPath("/fr/dashboard"); // "fr"
190
- getLocaleFromPath("/dashboard"); // "en" (default locale)
191
- getLocaleFromPath("https://example.com/es/about"); // "es"
192
- ```
193
-
194
- - **inputUrl**: Повний рядок URL або шлях (pathname) для обробки
195
- - **returns**: Виявлена локаль або локаль за замовчуванням, якщо локаль не знайдена
196
-
197
105
  ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
198
106
 
199
107
  Генерує локалізований URL для поточної локалі:
@@ -212,21 +120,6 @@ getLocalizedUrl("https://example.com/about", "fr", ["en", "fr"], "en", true); //
212
120
  - **defaultLocale**: Необов'язкова локаль за замовчуванням (за замовчуванням, сконфігурована локаль за замовчуванням)
213
121
  - **prefixDefault**: Чи додавати префікс для локалі за замовчуванням (за замовчуванням, сконфігуроване значення)
214
122
 
215
- ### `getHTMLTextDir(locale?)`
216
-
217
- Повертає напрямок тексту для локалі:
218
-
219
- ```ts
220
- import { getHTMLTextDir } from "intlayer";
221
-
222
- getHTMLTextDir("en-US"); // повертає "ltr"
223
- getHTMLTextDir("ar"); // повертає "rtl"
224
- getHTMLTextDir("he"); // повертає "rtl"
225
- ```
226
-
227
- - **locale**: Локаль, для якої потрібно отримати напрямок тексту (за замовчуванням, поточна локаль)
228
- - **повертає**: `"ltr"`, `"rtl"`, або `"auto"`
229
-
230
123
  ### `getContent(node, nodeProps, locale?)`
231
124
 
232
125
  Перетворює вузол контенту за допомогою всіх доступних плагінів (translation, enumeration, insertion тощо):
@@ -281,25 +174,6 @@ number("1000000", { locale: "fr" }); // "1 000 000"
281
174
  number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
282
175
  ```
283
176
 
284
- ### `percentage(value, options?)`
285
-
286
- Форматує число у рядок відсотків.
287
-
288
- Поведінка: значення більше за 1 інтерпретується як повні відсотки та нормалізується (наприклад, `25` → `25%`, `0.25` → `25%`).
289
-
290
- - **value**: `number | string`
291
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
292
-
293
- Приклади:
294
-
295
- ```ts
296
- import { percentage } from "intlayer";
297
-
298
- percentage(0.25); // "25%"
299
- percentage(25); // "25%"
300
- percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
301
- ```
302
-
303
177
  ### `currency(value, options?)`
304
178
 
305
179
  Форматує значення як локалізовану валюту. За замовчуванням `USD` з двома знаками після коми.
@@ -317,23 +191,6 @@ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
317
191
  currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
318
192
  ```
319
193
 
320
- ### `date(date, optionsOrPreset?)`
321
-
322
- Форматує значення дати/часу за допомогою `Intl.DateTimeFormat`.
323
-
324
- - **date**: `Date | string | number`
325
- - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` або один із пресетів:
326
- - Presets: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
327
-
328
- Приклади:
329
-
330
- ```ts
331
- import { date } from "intlayer";
332
-
333
- date(new Date(), "short"); // наприклад: "08/02/25, 14:30"
334
- date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
335
- ```
336
-
337
194
  ### `relativeTime(from, to = new Date(), options?)`
338
195
 
339
196
  Форматує відносний час між двома моментами за допомогою `Intl.RelativeTimeFormat`.
@@ -375,21 +232,9 @@ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 к
375
232
  units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (залежить від локалі)
376
233
  ```
377
234
 
378
- ### `compact(value, options?)`
379
-
380
- Форматує число з використанням компактної нотації (наприклад, `1.2K`, `1M`).
235
+ ## Vanilla JS / Node.js Formatters
381
236
 
382
- - **value**: `number | string`
383
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (використовує `notation: 'compact'` під капотом)
384
-
385
- Приклади:
386
-
387
- ```ts
388
- import { compact } from "intlayer";
389
-
390
- compact(1200); // результат: "1.2K"
391
- compact("1000000", { locale: "fr", compactDisplay: "long" }); // результат: "1 million"
392
- ```
237
+ Для контекстів без фреймворку імпортуйте форматери безпосередньо з `intlayer`. Зверніть увагу, що ви повинні передати locale вручну.
393
238
 
394
239
  ### `list(values, options?)`
395
240
 
@@ -410,6 +255,114 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
410
255
  list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
411
256
  ```
412
257
 
258
+ ### Функції форматування
259
+
260
+ #### `number(value, options?)`
261
+
262
+ Форматує числове значення з врахуванням локалі для групування та десяткових знаків.
263
+
264
+ - **value**: `number | string`
265
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
266
+
267
+ ```ts
268
+ number(123456.789); // "123,456.789" (in en-US)
269
+ number("1000000", { locale: "fr" }); // "1 000 000"
270
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
271
+ ```
272
+
273
+ #### `percentage(value, options?)`
274
+
275
+ Форматує число як рядок відсотка. Значення більше 1 нормалізуються (наприклад, `25` → `25%`, `0.25` → `25%`).
276
+
277
+ - **value**: `number | string`
278
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
279
+
280
+ ```ts
281
+ percentage(0.25); // "25%"
282
+ percentage(25); // "25%"
283
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
284
+ ```
285
+
286
+ #### `currency(value, options?)`
287
+
288
+ Форматує значення як локалізовану валюту. За замовчуванням використовує `USD`.
289
+
290
+ - **value**: `number | string`
291
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
292
+ - Common: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
293
+
294
+ ```ts
295
+ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
296
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
297
+ ```
298
+
299
+ #### `date(date, optionsOrPreset?)`
300
+
301
+ Форматує значення дати/часу.
302
+
303
+ - **date**: `Date | string | number`
304
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` або preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
305
+
306
+ ```ts
307
+ date(new Date(), "short"); // наприклад, "08/02/25, 14:30"
308
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
309
+ ```
310
+
311
+ #### `relativeTime(from, to?, options?)`
312
+
313
+ Форматує відносний час між двома моментами.
314
+
315
+ - **from**: `Date | string | number`
316
+ - **to**: `Date | string | number` (за замовчуванням `new Date()`)
317
+ - **options**: `{ locale?, unit?, numeric?, style? }`
318
+
319
+ ```ts
320
+ const now = new Date();
321
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
322
+ relativeTime(now, in3Days, { unit: "day" }); // "через 3 дні"
323
+
324
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
325
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 години тому"
326
+ ```
327
+
328
+ #### `units(value, options?)`
329
+
330
+ Форматує числове значення з одиницею виміру.
331
+
332
+ - **value**: `number | string`
333
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
334
+ - Common: `unit` (e.g., `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
335
+
336
+ ```ts
337
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
338
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
339
+ ```
340
+
341
+ #### `compact(value, options?)`
342
+
343
+ Форматує число за допомогою компактного запису.
344
+
345
+ - **value**: `number | string`
346
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
347
+
348
+ ```ts
349
+ compact(1200); // "1.2K"
350
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
351
+ ```
352
+
353
+ #### `list(values, options?)`
354
+
355
+ Форматує масив у локалізований рядок списку.
356
+
357
+ - **values**: `(string | number)[]`
358
+ - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
359
+ - Поширені: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
360
+
361
+ ```ts
362
+ list(["apple", "banana", "orange"]); // "apple, banana, and orange"
363
+ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
364
+ ```
365
+
413
366
  ## Cached Intl
414
367
 
415
368
  Експортований `Intl` з `intlayer` — це кешований wrapper навколо глобального `Intl`. Він мемоізує екземпляри форматерів (`NumberFormat`, `DateTimeFormat` тощо), щоб уникнути їхнього повторного створення та поліпшити продуктивність.
@@ -440,11 +393,19 @@ pluralRules.select(2); // "other"
440
393
 
441
394
  ### Додаткові функції Intl
442
395
 
443
- ## Примітки
396
+ #### `Intl.DisplayNames`
444
397
 
445
- - Усі утиліти приймають вхідні значення як `string`; всередині вони приводяться до чисел або дат.
446
- - Якщо локаль не вказана, за замовчуванням використовується налаштована вами `internationalization.defaultLocale`.
447
- - Ці утиліти, тонкі обгортки; для просунутого форматування передавайте стандартні опції `Intl`.
398
+ Для локалізованих назв мов, регіонів, валют та письмових систем:
399
+
400
+ ```ts
401
+ import { Intl } from "intlayer";
402
+
403
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
404
+ languageNames.of("fr"); // "French"
405
+
406
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
407
+ regionNames.of("US"); // "États-Unis"
408
+ ```
448
409
 
449
410
  #### `Intl.Collator`
450
411
 
@@ -491,33 +452,15 @@ getLocaleName("en", "fr"); // "anglais"
491
452
  getLocaleName("de", "es"); // "alemán"
492
453
  ```
493
454
 
494
- ## Точки входу та повторні експорти (`@index.ts`)
495
-
496
- Форматери містяться в core-пакеті і реекспортуються з пакетів вищого рівня, щоб зробити імпорти зручними в різних середовищах виконання:
455
+ ### `getLocaleLang(locale?)`
497
456
 
498
- Приклади:
457
+ Витягує код мови з рядка локалі:
499
458
 
500
459
  ```ts
501
- // Код додатку (рекомендовано)
502
- import {
503
- number,
504
- currency,
505
- date,
506
- relativeTime,
507
- units,
508
- compact,
509
- list,
510
- Intl,
511
- getLocaleName,
512
- getLocaleLang,
513
- getLocaleFromPath,
514
- getPathWithoutLocale,
515
- getLocalizedUrl,
516
- getHTMLTextDir,
517
- getContent,
518
- getTranslation,
519
- getIntlayer,
520
- } from "intlayer";
460
+ import { getLocaleLang } from "intlayer";
461
+
462
+ getLocaleLang("en-US"); // "en"
463
+ getLocaleLang("fr-CA"); // "fr"
521
464
  ```
522
465
 
523
466
  ### `getLocaleFromPath(inputUrl)`