@intlayer/docs 9.1.3 → 9.3.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 (482) hide show
  1. package/blog/ar/index.md +1 -1
  2. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  3. package/blog/de/index.md +1 -1
  4. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  5. package/blog/en/index.md +1 -1
  6. package/blog/en-GB/index.md +1 -1
  7. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/es/index.md +1 -1
  9. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/fr/i18n_meaning.md +7 -1
  11. package/blog/fr/index.md +1 -1
  12. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  13. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  14. package/blog/hi/index.md +1 -1
  15. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  16. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  17. package/blog/id/index.md +1 -1
  18. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  19. package/blog/it/index.md +1 -1
  20. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/ja/index.md +1 -1
  22. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  23. package/blog/ko/index.md +1 -1
  24. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  25. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  26. package/blog/pl/index.md +1 -1
  27. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  28. package/blog/pt/index.md +1 -1
  29. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  30. package/blog/ru/index.md +1 -1
  31. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  32. package/blog/tr/intlayer_with_react-intl.md +3 -1
  33. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  34. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  35. package/blog/uk/index.md +1 -1
  36. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  37. package/blog/vi/index.md +1 -1
  38. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  39. package/blog/zh/index.md +1 -1
  40. package/blog/zh/intlayer_with_i18next.md +87 -28
  41. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  42. package/blog/zh/intlayer_with_next-intl.md +88 -28
  43. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  44. package/blog/zh/intlayer_with_react-intl.md +88 -27
  45. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  46. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  47. package/dist/cjs/common.cjs +24 -1
  48. package/dist/cjs/common.cjs.map +1 -1
  49. package/dist/cjs/generated/blog.entry.cjs +58 -31
  50. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  51. package/dist/cjs/generated/docs.entry.cjs +265 -218
  52. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  53. package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
  54. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  55. package/dist/cjs/generated/legal.entry.cjs +33 -6
  56. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  57. package/dist/esm/common.mjs +24 -1
  58. package/dist/esm/common.mjs.map +1 -1
  59. package/dist/esm/generated/blog.entry.mjs +58 -31
  60. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  61. package/dist/esm/generated/docs.entry.mjs +265 -218
  62. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  63. package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
  64. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  65. package/dist/esm/generated/legal.entry.mjs +33 -6
  66. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  67. package/dist/types/common.d.ts.map +1 -1
  68. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  69. package/dist/types/generated/docs.entry.d.ts +1 -0
  70. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  71. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  72. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  73. package/docs/ar/analytics.md +222 -0
  74. package/docs/ar/autoFill.md +28 -9
  75. package/docs/ar/bundle_optimization.md +58 -25
  76. package/docs/ar/configuration.md +25 -8
  77. package/docs/ar/dictionary/file.md +3 -1
  78. package/docs/ar/dictionary/nesting.md +47 -30
  79. package/docs/ar/formatters.md +148 -193
  80. package/docs/ar/intlayer_CMS.md +152 -0
  81. package/docs/ar/intlayer_with_angular_21.md +9 -9
  82. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  83. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  84. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  85. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  86. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  87. package/docs/ar/live-sync.md +4 -0
  88. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  89. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  90. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  91. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  92. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  93. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  94. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  95. package/docs/ar/releases/v9.md +0 -37
  96. package/docs/ar/self_hosting.md +46 -49
  97. package/docs/bn/bundle_optimization.md +58 -25
  98. package/docs/bn/configuration.md +25 -8
  99. package/docs/bn/intlayer_with_angular_21.md +9 -9
  100. package/docs/cs/bundle_optimization.md +58 -25
  101. package/docs/cs/configuration.md +25 -8
  102. package/docs/cs/intlayer_with_angular_21.md +9 -9
  103. package/docs/de/analytics.md +222 -0
  104. package/docs/de/autoFill.md +28 -9
  105. package/docs/de/bundle_optimization.md +58 -25
  106. package/docs/de/configuration.md +25 -8
  107. package/docs/de/dictionary/file.md +3 -1
  108. package/docs/de/dictionary/nesting.md +47 -31
  109. package/docs/de/formatters.md +208 -334
  110. package/docs/de/intlayer_CMS.md +66 -15
  111. package/docs/de/intlayer_with_angular_21.md +9 -9
  112. package/docs/de/intlayer_with_nestjs.md +11 -7
  113. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  114. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  115. package/docs/de/intlayer_with_solid_start.md +1078 -0
  116. package/docs/de/intlayer_with_vite+vue.md +1 -3
  117. package/docs/de/live-sync.md +4 -0
  118. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  119. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  120. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  121. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  122. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  123. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  124. package/docs/de/releases/v9.md +0 -15
  125. package/docs/de/self_hosting.md +46 -50
  126. package/docs/en/bundle_optimization.md +51 -23
  127. package/docs/en/cli/doc-review.md +13 -2
  128. package/docs/en/configuration.md +24 -15
  129. package/docs/en/intlayer_with_angular_21.md +9 -9
  130. package/docs/en/intlayer_with_solid_start.md +1091 -0
  131. package/docs/en/intlayer_with_vite+solid.md +12 -0
  132. package/docs/en/live-sync.md +4 -0
  133. package/docs/en-GB/analytics.md +222 -0
  134. package/docs/en-GB/autoFill.md +26 -7
  135. package/docs/en-GB/bundle_optimization.md +58 -25
  136. package/docs/en-GB/configuration.md +25 -8
  137. package/docs/en-GB/dictionary/file.md +2 -0
  138. package/docs/en-GB/dictionary/nesting.md +64 -205
  139. package/docs/en-GB/formatters.md +146 -181
  140. package/docs/en-GB/intlayer_CMS.md +152 -0
  141. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  142. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  143. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  144. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  145. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  146. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  147. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  148. package/docs/en-GB/live-sync.md +4 -0
  149. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  150. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  151. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/en-GB/self_hosting.md +60 -49
  155. package/docs/es/analytics.md +222 -0
  156. package/docs/es/autoFill.md +28 -9
  157. package/docs/es/bundle_optimization.md +58 -25
  158. package/docs/es/configuration.md +24 -7
  159. package/docs/es/dictionary/file.md +3 -1
  160. package/docs/es/dictionary/nesting.md +47 -30
  161. package/docs/es/formatters.md +114 -168
  162. package/docs/es/intlayer_CMS.md +35 -10
  163. package/docs/es/intlayer_with_angular_21.md +9 -9
  164. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  165. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  166. package/docs/es/intlayer_with_solid_start.md +1078 -0
  167. package/docs/es/live-sync.md +4 -0
  168. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  169. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  170. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  171. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  172. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  173. package/docs/es/releases/v9.md +0 -15
  174. package/docs/es/self_hosting.md +46 -49
  175. package/docs/fr/analytics.md +222 -0
  176. package/docs/fr/autoFill.md +27 -8
  177. package/docs/fr/bundle_optimization.md +58 -25
  178. package/docs/fr/configuration.md +25 -8
  179. package/docs/fr/dictionary/file.md +2 -0
  180. package/docs/fr/dictionary/nesting.md +37 -184
  181. package/docs/fr/formatters.md +95 -236
  182. package/docs/fr/intlayer_CMS.md +66 -15
  183. package/docs/fr/intlayer_with_angular_21.md +9 -9
  184. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  185. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  186. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  187. package/docs/fr/live-sync.md +4 -0
  188. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  189. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  190. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  191. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  192. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  193. package/docs/fr/releases/v9.md +0 -15
  194. package/docs/fr/self_hosting.md +46 -49
  195. package/docs/hi/analytics.md +222 -0
  196. package/docs/hi/autoFill.md +28 -9
  197. package/docs/hi/bundle_optimization.md +58 -25
  198. package/docs/hi/configuration.md +25 -8
  199. package/docs/hi/dictionary/file.md +3 -1
  200. package/docs/hi/dictionary/nesting.md +47 -30
  201. package/docs/hi/formatters.md +233 -334
  202. package/docs/hi/how_works_intlayer.md +3 -1
  203. package/docs/hi/intlayer_CMS.md +152 -0
  204. package/docs/hi/intlayer_with_angular_21.md +9 -9
  205. package/docs/hi/intlayer_with_nestjs.md +11 -7
  206. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  207. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  208. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  209. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  210. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  211. package/docs/hi/intlayer_with_vite+react.md +48 -41
  212. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  213. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  214. package/docs/hi/live-sync.md +4 -0
  215. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  216. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  217. package/docs/hi/packages/next-intlayer/t.md +33 -1
  218. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  219. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  220. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  221. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  222. package/docs/hi/plugins/sync-json.md +9 -9
  223. package/docs/hi/releases/v9.md +0 -15
  224. package/docs/hi/self_hosting.md +38 -51
  225. package/docs/id/analytics.md +223 -0
  226. package/docs/id/bundle_optimization.md +58 -25
  227. package/docs/id/configuration.md +25 -8
  228. package/docs/id/dictionary/nesting.md +37 -184
  229. package/docs/id/formatters.md +208 -305
  230. package/docs/id/intlayer_CMS.md +164 -0
  231. package/docs/id/intlayer_with_angular_21.md +9 -9
  232. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  233. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  234. package/docs/id/intlayer_with_solid_start.md +1078 -0
  235. package/docs/id/live-sync.md +4 -0
  236. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  237. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  238. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  239. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  240. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  241. package/docs/id/releases/v9.md +12 -0
  242. package/docs/id/self_hosting.md +61 -50
  243. package/docs/it/analytics.md +222 -0
  244. package/docs/it/autoFill.md +27 -8
  245. package/docs/it/bundle_optimization.md +58 -25
  246. package/docs/it/configuration.md +25 -8
  247. package/docs/it/dictionary/file.md +3 -1
  248. package/docs/it/dictionary/nesting.md +47 -30
  249. package/docs/it/formatters.md +114 -168
  250. package/docs/it/intlayer_CMS.md +66 -15
  251. package/docs/it/intlayer_with_angular_21.md +9 -9
  252. package/docs/it/intlayer_with_nestjs.md +11 -7
  253. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/it/intlayer_with_solid_start.md +1078 -0
  256. package/docs/it/intlayer_with_vite+vue.md +1 -3
  257. package/docs/it/live-sync.md +4 -0
  258. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  259. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  260. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  261. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  264. package/docs/it/releases/v9.md +0 -15
  265. package/docs/it/self_hosting.md +60 -49
  266. package/docs/ja/analytics.md +222 -0
  267. package/docs/ja/autoFill.md +28 -9
  268. package/docs/ja/bundle_optimization.md +58 -25
  269. package/docs/ja/configuration.md +25 -8
  270. package/docs/ja/dictionary/content_file.md +15 -7
  271. package/docs/ja/dictionary/file.md +3 -1
  272. package/docs/ja/dictionary/nesting.md +47 -30
  273. package/docs/ja/formatters.md +133 -187
  274. package/docs/ja/intlayer_visual_editor.md +3 -1
  275. package/docs/ja/intlayer_with_angular_21.md +6 -6
  276. package/docs/ja/intlayer_with_nestjs.md +2 -12
  277. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  278. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  279. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  280. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  281. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  282. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  283. package/docs/ja/live-sync.md +4 -0
  284. package/docs/ja/mcp_server.md +3 -9
  285. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  286. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  287. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  288. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  289. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  290. package/docs/ja/releases/v9.md +12 -0
  291. package/docs/ja/self_hosting.md +46 -50
  292. package/docs/ko/analytics.md +222 -0
  293. package/docs/ko/autoFill.md +28 -9
  294. package/docs/ko/bundle_optimization.md +58 -25
  295. package/docs/ko/configuration.md +25 -8
  296. package/docs/ko/dictionary/file.md +3 -1
  297. package/docs/ko/dictionary/nesting.md +47 -30
  298. package/docs/ko/formatters.md +133 -187
  299. package/docs/ko/intlayer_with_angular_21.md +9 -9
  300. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  301. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  302. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  303. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  304. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  305. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  306. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  307. package/docs/ko/live-sync.md +4 -0
  308. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  309. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  310. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  311. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  312. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  313. package/docs/ko/releases/v9.md +12 -0
  314. package/docs/ko/self_hosting.md +60 -49
  315. package/docs/nl/bundle_optimization.md +58 -25
  316. package/docs/nl/configuration.md +25 -8
  317. package/docs/nl/intlayer_with_angular_21.md +9 -9
  318. package/docs/pl/analytics.md +220 -0
  319. package/docs/pl/bundle_optimization.md +58 -25
  320. package/docs/pl/configuration.md +25 -8
  321. package/docs/pl/dictionary/nesting.md +47 -30
  322. package/docs/pl/formatters.md +208 -305
  323. package/docs/pl/intlayer_CMS.md +152 -0
  324. package/docs/pl/intlayer_with_angular_21.md +9 -9
  325. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  326. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  327. package/docs/pl/live-sync.md +4 -0
  328. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  329. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  330. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  331. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  332. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  333. package/docs/pl/releases/v9.md +0 -15
  334. package/docs/pl/self_hosting.md +60 -49
  335. package/docs/pt/analytics.md +222 -0
  336. package/docs/pt/bundle_optimization.md +58 -24
  337. package/docs/pt/configuration.md +25 -8
  338. package/docs/pt/dictionary/file.md +3 -1
  339. package/docs/pt/dictionary/nesting.md +47 -30
  340. package/docs/pt/formatters.md +112 -168
  341. package/docs/pt/intlayer_CMS.md +66 -15
  342. package/docs/pt/intlayer_with_angular_21.md +9 -9
  343. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  344. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  345. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  346. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  347. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  348. package/docs/pt/live-sync.md +4 -0
  349. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  350. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  351. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  352. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  353. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  354. package/docs/pt/releases/v9.md +0 -15
  355. package/docs/pt/self_hosting.md +60 -49
  356. package/docs/ru/analytics.md +222 -0
  357. package/docs/ru/autoFill.md +27 -8
  358. package/docs/ru/bundle_optimization.md +58 -25
  359. package/docs/ru/configuration.md +25 -8
  360. package/docs/ru/dictionary/file.md +3 -1
  361. package/docs/ru/dictionary/nesting.md +64 -205
  362. package/docs/ru/formatters.md +108 -128
  363. package/docs/ru/intlayer_with_angular_21.md +9 -9
  364. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  365. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  366. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  367. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  368. package/docs/ru/live-sync.md +4 -0
  369. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  370. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  371. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  372. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  373. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  374. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  375. package/docs/ru/releases/v9.md +0 -15
  376. package/docs/ru/self_hosting.md +60 -49
  377. package/docs/tr/analytics.md +222 -0
  378. package/docs/tr/autoFill.md +28 -9
  379. package/docs/tr/bundle_optimization.md +58 -25
  380. package/docs/tr/configuration.md +25 -8
  381. package/docs/tr/dictionary/file.md +2 -0
  382. package/docs/tr/dictionary/nesting.md +47 -30
  383. package/docs/tr/formatters.md +144 -190
  384. package/docs/tr/intlayer_CMS.md +152 -0
  385. package/docs/tr/intlayer_with_angular_21.md +9 -9
  386. package/docs/tr/intlayer_with_nestjs.md +2 -12
  387. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  388. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  389. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  390. package/docs/tr/live-sync.md +4 -0
  391. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  392. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  393. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  394. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  395. package/docs/tr/self_hosting.md +47 -50
  396. package/docs/uk/analytics.md +222 -0
  397. package/docs/uk/bundle_optimization.md +58 -25
  398. package/docs/uk/configuration.md +25 -8
  399. package/docs/uk/dictionary/nesting.md +47 -30
  400. package/docs/uk/formatters.md +128 -185
  401. package/docs/uk/intlayer_CMS.md +152 -0
  402. package/docs/uk/intlayer_with_angular_21.md +9 -9
  403. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  404. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  405. package/docs/uk/live-sync.md +4 -0
  406. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  407. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  408. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  409. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  410. package/docs/uk/releases/v9.md +0 -15
  411. package/docs/uk/self_hosting.md +60 -50
  412. package/docs/ur/bundle_optimization.md +58 -25
  413. package/docs/ur/configuration.md +25 -8
  414. package/docs/ur/intlayer_with_angular_21.md +9 -9
  415. package/docs/vi/analytics.md +222 -0
  416. package/docs/vi/bundle_optimization.md +58 -25
  417. package/docs/vi/configuration.md +24 -8
  418. package/docs/vi/dictionary/nesting.md +37 -184
  419. package/docs/vi/formatters.md +208 -309
  420. package/docs/vi/intlayer_CMS.md +164 -0
  421. package/docs/vi/intlayer_with_angular_21.md +9 -9
  422. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  423. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  424. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  425. package/docs/vi/live-sync.md +4 -0
  426. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  427. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  428. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  429. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  430. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  431. package/docs/vi/plugins/sync-json.md +6 -6
  432. package/docs/vi/releases/v9.md +12 -0
  433. package/docs/vi/self_hosting.md +61 -50
  434. package/docs/zh/CI_CD.md +4 -0
  435. package/docs/zh/analytics.md +222 -0
  436. package/docs/zh/autoFill.md +28 -9
  437. package/docs/zh/bundle_optimization.md +58 -25
  438. package/docs/zh/configuration.md +24 -8
  439. package/docs/zh/dictionary/file.md +2 -0
  440. package/docs/zh/dictionary/nesting.md +47 -30
  441. package/docs/zh/formatters.md +140 -188
  442. package/docs/zh/intlayer_CMS.md +164 -0
  443. package/docs/zh/intlayer_with_analog.md +193 -3
  444. package/docs/zh/intlayer_with_angular_19.md +272 -3
  445. package/docs/zh/intlayer_with_angular_21.md +7 -7
  446. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  447. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  448. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  449. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  450. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  451. package/docs/zh/intlayer_with_nuxt.md +182 -7
  452. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  453. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  454. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  455. package/docs/zh/intlayer_with_storybook.md +260 -3
  456. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  457. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  458. package/docs/zh/intlayer_with_tanstack.md +731 -20
  459. package/docs/zh/intlayer_with_vanilla.md +314 -4
  460. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  461. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  462. package/docs/zh/intlayer_with_vite+react.md +324 -45
  463. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  464. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  465. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  466. package/docs/zh/live-sync.md +4 -0
  467. package/docs/zh/mcp_server.md +3 -9
  468. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  469. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  470. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  471. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  472. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  473. package/docs/zh/releases/v9.md +12 -0
  474. package/docs/zh/self_hosting.md +60 -50
  475. package/docs/zh-TW/bundle_optimization.md +58 -25
  476. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  477. package/package.json +7 -7
  478. package/src/common.ts +39 -2
  479. package/src/generated/blog.entry.ts +66 -34
  480. package/src/generated/docs.entry.ts +273 -221
  481. package/src/generated/frequentQuestions.entry.ts +56 -24
  482. package/src/generated/legal.entry.ts +41 -9
@@ -64,199 +64,52 @@ export default firstDictionary;
64
64
  }
65
65
  ```
66
66
 
67
- ## Configuration de l'imbrication
67
+ ### Référencement avec Nest
68
68
 
69
- <Tabs group="framework">
70
- <Tab label="React" value="react">
69
+ Maintenant, créez un autre module de contenu qui utilise la fonction `nest` pour référencer le contenu ci-dessus. Vous pouvez référencer l'intégralité du contenu ou une valeur imbriquée spécifique :
71
70
 
72
- To use nested content in a React component, leverage the `useIntlayer` hook from the `react-intlayer` package. This hook retrieves the correct content based on the specified key. Here's an example of how to use it:
73
-
74
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
75
- import type { FC } from "react";
76
- import { useIntlayer } from "react-intlayer";
77
-
78
- const NestComponent: FC = () => {
79
- const { fullNestedContent, partialNestedContent } = useIntlayer(
80
- "key_of_my_second_dictionary"
81
- );
71
+ ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
72
+ import { nest, type Dictionary } from "intlayer";
82
73
 
83
- return (
84
- <div>
85
- <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
86
- <p>Partial Nested Value: {partialNestedContent}</p>
87
- </div>
88
- );
89
- };
90
-
91
- export default NestComponent;
92
- ```
93
-
94
- </Tab>
95
- <Tab label="Next.js" value="nextjs">
96
-
97
- To use nested content in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
98
-
99
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
100
- "use client";
101
-
102
- import type { FC } from "react";
103
- import { useIntlayer } from "next-intlayer";
104
-
105
- const NestComponent: FC = () => {
106
- const { fullNestedContent, partialNestedContent } = useIntlayer(
107
- "key_of_my_second_dictionary"
108
- );
109
-
110
- return (
111
- <div>
112
- <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
113
- <p>Partial Nested Value: {partialNestedContent}</p>
114
- </div>
115
- );
116
- };
117
-
118
- export default NestComponent;
119
- ```
120
-
121
- </Tab>
122
- <Tab label="Vue" value="vue">
123
-
124
- To use nested content in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
125
-
126
- ```vue fileName="**/*.vue"
127
- <script setup lang="ts">
128
- import { useIntlayer } from "vue-intlayer";
129
-
130
- const { fullNestedContent, partialNestedContent } = useIntlayer(
131
- "key_of_my_second_dictionary"
132
- );
133
- </script>
134
-
135
- <template>
136
- <div>
137
- <p>Full Nested Content: {{ JSON.stringify(fullNestedContent) }}</p>
138
- <p>Partial Nested Value: {{ partialNestedContent }}</p>
139
- </div>
140
- </template>
141
- ```
142
-
143
- </Tab>
144
- <Tab label="Svelte" value="svelte">
145
-
146
- To use nested content in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
147
-
148
- ```svelte fileName="**/*.svelte"
149
- <script lang="ts">
150
- import { useIntlayer } from "svelte-intlayer";
151
-
152
- const content = useIntlayer("key_of_my_second_dictionary");
153
- </script>
154
-
155
- <div>
156
- <p>Full Nested Content: {JSON.stringify($content.fullNestedContent)}</p>
157
- <p>Partial Nested Value: {$content.partialNestedContent}</p>
158
- </div>
159
- ```
160
-
161
- </Tab>
162
- <Tab label="Preact" value="preact">
163
-
164
- To use nested content in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
165
-
166
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
167
- import type { FC } from "preact";
168
- import { useIntlayer } from "preact-intlayer";
169
-
170
- const NestComponent: FC = () => {
171
- const { fullNestedContent, partialNestedContent } = useIntlayer(
172
- "key_of_my_second_dictionary"
173
- );
174
-
175
- return (
176
- <div>
177
- <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
178
- <p>Partial Nested Value: {partialNestedContent}</p>
179
- </div>
180
- );
181
- };
182
-
183
- export default NestComponent;
184
- ```
185
-
186
- </Tab>
187
- <Tab label="Solid" value="solid">
188
-
189
- To use nested content in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
190
-
191
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
192
- import type { Component } from "solid-js";
193
- import { useIntlayer } from "solid-intlayer";
194
-
195
- const NestComponent: Component = () => {
196
- const { fullNestedContent, partialNestedContent } = useIntlayer(
197
- "key_of_my_second_dictionary"
198
- );
199
-
200
- return (
201
- <div>
202
- <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
203
- <p>Partial Nested Value: {partialNestedContent}</p>
204
- </div>
205
- );
206
- };
207
-
208
- export default NestComponent;
209
- ```
210
-
211
- </Tab>
212
- <Tab label="Angular" value="angular">
213
-
214
- To use nested content in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
215
-
216
- ```typescript fileName="app.component.ts" codeFormat="typescript"
217
- import { Component } from "@angular/core";
218
- import { useIntlayer } from "angular-intlayer";
74
+ const myNestingContent = {
75
+ key: "key_of_my_second_dictionary",
76
+ content: {
77
+ // Référence l'intégralité du dictionnaire :
78
+ fullNestedContent: nest("key_of_my_first_dictionary"),
79
+ // Référence une valeur imbriquée spécifique :
80
+ partialNestedContent: nest(
81
+ "key_of_my_first_dictionary",
82
+ "subContent.contentNumber"
83
+ ),
84
+ },
85
+ } satisfies Dictionary;
219
86
 
220
- @Component({
221
- selector: "app-nest",
222
- template: `
223
- <div>
224
- <p>
225
- Full Nested Content: {{ JSON.stringify(content().fullNestedContent) }}
226
- </p>
227
- <p>Partial Nested Value: {{ content().partialNestedContent }}</p>
228
- </div>
229
- `,
230
- })
231
- export class NestComponent {
232
- content = useIntlayer("key_of_my_second_dictionary");
233
- JSON = JSON;
234
- }
87
+ export default myNestingContent;
235
88
  ```
236
89
 
237
- </Tab>
238
- <Tab label="Vanilla JS" value="vanilla">
239
-
240
- To use nested content with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
241
-
242
- ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
243
- import { installIntlayer, useIntlayer } from "vanilla-intlayer";
244
-
245
- installIntlayer();
246
-
247
- const content = useIntlayer("key_of_my_second_dictionary").onChange(
248
- (newContent) => {
249
- document.getElementById("nested")!.textContent =
250
- newContent.partialNestedContent;
90
+ ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
91
+ {
92
+ "$schema": "https://intlayer.org/schema.json",
93
+ "key": "key_of_my_second_dictionary",
94
+ "content": {
95
+ "fullNestedContent": {
96
+ "nodeType": "nested",
97
+ "nested": {
98
+ "dictionaryKey": "key_of_my_first_dictionary"
99
+ }
100
+ },
101
+ "partialNestedContent": {
102
+ "nodeType": "nested",
103
+ "nested": {
104
+ "dictionaryKey": "key_of_my_first_dictionary",
105
+ "path": "subContent.contentNumber"
106
+ }
107
+ }
251
108
  }
252
- );
253
-
254
- // Initial render
255
- document.getElementById("nested")!.textContent = content.partialNestedContent;
109
+ }
256
110
  ```
257
111
 
258
- </Tab>
259
- </Tabs>
112
+ En tant que deuxième paramètre, vous pouvez spécifier un chemin vers une valeur imbriquée dans ce contenu. Lorsqu'aucun chemin n'est fourni, l'intégralité du contenu du dictionnaire référencé est retournée.
260
113
 
261
114
  ## Utilisation de l'imbrication avec React Intlayer
262
115
 
@@ -52,34 +52,6 @@ author: aymericzip
52
52
 
53
53
  Intlayer fournit un ensemble d'aides légères construites sur les API natives `Intl`, ainsi qu'un wrapper `Intl` mis en cache pour éviter de reconstruire à plusieurs reprises des formatteurs lourds. Ces utilitaires sont entièrement sensibles à la locale et peuvent être utilisés depuis le package principal `intlayer`.
54
54
 
55
- ### Importation
56
-
57
- ```ts
58
- import {
59
- Intl,
60
- number,
61
- percentage,
62
- currency,
63
- date,
64
- relativeTime,
65
- units,
66
- compact,
67
- list,
68
- getLocaleName,
69
- getLocaleLang,
70
- getLocaleFromPath,
71
- getPathWithoutLocale,
72
- getLocalizedUrl,
73
- getHTMLTextDir,
74
- getContent,
75
- getTranslation,
76
- getIntlayer,
77
- getIntlayerAsync,
78
- } from "intlayer";
79
- ```
80
-
81
- Si vous utilisez React, des hooks sont également disponibles ; voir `react-intlayer/format`.
82
-
83
55
  ## Intl mis en cache
84
56
 
85
57
  L'`Intl` exporté est un wrapper léger et mis en cache autour de l'`Intl` global. Il mémorise les instances de `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` et `PluralRules`, ce qui évite de reconstruire plusieurs fois le même formateur.
@@ -116,55 +88,6 @@ pluralRules.select(1); // "one"
116
88
  pluralRules.select(2); // "other"
117
89
  ```
118
90
 
119
- ## Utilitaires Intl supplémentaires
120
-
121
- Au-delà des helpers de formatage, vous pouvez également utiliser directement le wrapper Intl mis en cache pour d'autres fonctionnalités Intl :
122
-
123
- ### `Intl.DisplayNames`
124
-
125
- Pour les noms localisés des langues, régions, devises et scripts :
126
-
127
- ```ts
128
- import { Intl } from "intlayer";
129
-
130
- const languageNames = new Intl.DisplayNames("en", { type: "language" });
131
- languageNames.of("fr"); // "French"
132
-
133
- const regionNames = new Intl.DisplayNames("fr", { type: "region" });
134
- regionNames.of("US"); // "États-Unis"
135
- ```
136
-
137
- ### `Intl.Collator`
138
-
139
- Pour la comparaison et le tri de chaînes sensibles à la locale :
140
-
141
- ```ts
142
- import { Intl } from "intlayer";
143
-
144
- const collator = new Intl.Collator("de", {
145
- sensitivity: "base",
146
- numeric: true,
147
- });
148
-
149
- const words = ["äpfel", "zebra", "100", "20"];
150
- words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
151
- ```
152
-
153
- ### `Intl.PluralRules`
154
-
155
- Pour déterminer les formes plurielles dans différentes locales :
156
-
157
- ```ts
158
- import { Intl } from "intlayer";
159
-
160
- const pluralRules = new Intl.PluralRules("ar");
161
- pluralRules.select(0); // "zero"
162
- pluralRules.select(1); // "one"
163
- pluralRules.select(2); // "two"
164
- pluralRules.select(3); // "few"
165
- pluralRules.select(11); // "many"
166
- ```
167
-
168
91
  ## Utilitaires de locale
169
92
 
170
93
  ### `getLocaleName(displayLocale, targetLocale?)`
@@ -182,20 +105,6 @@ getLocaleName("de", "es"); // "alemán"
182
105
  - **displayLocale** : La locale pour laquelle obtenir le nom
183
106
  - **targetLocale** : La locale dans laquelle afficher le nom (par défaut displayLocale)
184
107
 
185
- ### `getLocaleLang(locale?)`
186
-
187
- Extrait le code langue d'une chaîne locale :
188
-
189
- ```ts
190
- import { getLocaleLang } from "intlayer";
191
-
192
- getLocaleLang("en-US"); // "en"
193
- getLocaleLang("fr-CA"); // "fr"
194
- getLocaleLang("de"); // "de"
195
- ```
196
-
197
- - **locale** : La locale dont extraire la langue (par défaut la locale courante)
198
-
199
108
  ### `getLocaleFromPath(inputUrl)`
200
109
 
201
110
  Extrait le segment de locale d'une URL ou d'un chemin :
@@ -212,22 +121,6 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
212
121
  - **inputUrl** : La chaîne complète de l'URL ou le chemin à traiter
213
122
  - **returns** : La locale détectée ou la locale par défaut si aucune locale n'est trouvée
214
123
 
215
- ### `getPathWithoutLocale(inputUrl, locales?)`
216
-
217
- Supprime le segment de locale d'une URL ou d'un chemin :
218
-
219
- ```ts
220
- import { getPathWithoutLocale } from "intlayer";
221
-
222
- getPathWithoutLocale("/en/dashboard"); // "/dashboard"
223
- getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
224
- getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
225
- ```
226
-
227
- - **inputUrl** : La chaîne complète de l'URL ou le chemin à traiter
228
- - **locales** : Tableau optionnel des locales supportées (par défaut les locales configurées)
229
- - **returns** : L’URL sans le segment de locale
230
-
231
124
  ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
232
125
 
233
126
  Génère une URL localisée pour la locale courante :
@@ -282,25 +175,6 @@ number("1000000", { locale: "fr" }); // "1 000 000"
282
175
  number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
283
176
  ```
284
177
 
285
- ### `percentage(value, options?)`
286
-
287
- Formate un nombre en chaîne de pourcentage.
288
-
289
- Comportement : les valeurs supérieures à 1 sont interprétées comme des pourcentages entiers et normalisées (par exemple, `25` → `25%`, `0.25` → `25%`).
290
-
291
- - **value** : `number | string`
292
- - **options** : `Intl.NumberFormatOptions & { locale?: LocalesValues }`
293
-
294
- Exemples :
295
-
296
- ```ts
297
- import { percentage } from "intlayer";
298
-
299
- percentage(0.25); // "25%"
300
- percentage(25); // "25%"
301
- percentage(0.237, { minimumFractionDigits: 1 }); // "23,7%"
302
- ```
303
-
304
178
  ### `currency(value, options?)`
305
179
 
306
180
  Formate une valeur en devise localisée. Par défaut en `USD` avec deux chiffres fractionnaires.
@@ -358,6 +232,10 @@ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
358
232
  relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "il y a 2 heures"
359
233
  ```
360
234
 
235
+ ## Vanilla JS / Node.js Formatters
236
+
237
+ Pour les contextes sans framework, importez les formatters directement depuis `intlayer`. Notez que vous devez passer la locale manuellement.
238
+
361
239
  ### `units(value, options?)`
362
240
 
363
241
  Formate une valeur numérique en chaîne localisée avec une unité en utilisant `Intl.NumberFormat` avec `style: 'unit'`.
@@ -376,6 +254,89 @@ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kil
376
254
  units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (dépendant de la locale)
377
255
  ```
378
256
 
257
+ ### Fonctions de formatage
258
+
259
+ #### `number(value, options?)`
260
+
261
+ Formate une valeur numérique en utilisant le groupement et les décimales tenant compte de la locale.
262
+
263
+ - **value**: `number | string`
264
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
265
+
266
+ ```ts
267
+ number(123456.789); // "123,456.789" (en en-US)
268
+ number("1000000", { locale: "fr" }); // "1 000 000"
269
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
270
+ ```
271
+
272
+ #### `percentage(value, options?)`
273
+
274
+ Formate un nombre en tant que chaîne de caractères de pourcentage. Les valeurs supérieures à 1 sont normalisées (par exemple, `25` → `25%`, `0.25` → `25%`).
275
+
276
+ - **value**: `number | string`
277
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
278
+
279
+ ```ts
280
+ percentage(0.25); // "25%"
281
+ percentage(25); // "25%"
282
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
283
+ ```
284
+
285
+ #### `currency(value, options?)`
286
+
287
+ Formate une valeur en devise localisée. Par défaut `USD`.
288
+
289
+ - **value**: `number | string`
290
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
291
+ - Courant: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
292
+
293
+ ```ts
294
+ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
295
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
296
+ ```
297
+
298
+ #### `date(date, optionsOrPreset?)`
299
+
300
+ Formate une valeur de date/heure.
301
+
302
+ - **date**: `Date | string | number`
303
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` ou preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
304
+
305
+ ```ts
306
+ date(new Date(), "short"); // par exemple, "08/02/25, 14:30"
307
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
308
+ ```
309
+
310
+ #### `relativeTime(from, to?, options?)`
311
+
312
+ Formate le temps relatif entre deux instants.
313
+
314
+ - **from**: `Date | string | number`
315
+ - **to**: `Date | string | number` (par défaut `new Date()`)
316
+ - **options**: `{ locale?, unit?, numeric?, style? }`
317
+
318
+ ```ts
319
+ const now = new Date();
320
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
321
+ relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
322
+
323
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
324
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
325
+ ```
326
+
327
+ #### `units(value, options?)`
328
+
329
+ Formate une valeur numérique avec une unité.
330
+
331
+ - **value**: `number | string`
332
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
333
+ - Common: `unit` (par exemple, `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
334
+
335
+ ```ts
336
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
337
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
338
+ ```
339
+
379
340
  #### `compact(value, options?)`
380
341
 
381
342
  Formate un nombre en utilisant la notation compacte.
@@ -547,6 +508,8 @@ getHTMLTextDir("ar"); // "rtl"
547
508
  getHTMLTextDir("he"); // "rtl"
548
509
  ```
549
510
 
511
+ ## Utilitaires de gestion du contenu
512
+
550
513
  ### `compact(value, options?)`
551
514
 
552
515
  Formate un nombre en utilisant la notation compacte (par exemple, `1.2K`, `1M`).
@@ -582,116 +545,6 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
582
545
  list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
583
546
  ```
584
547
 
585
- ## Points d'entrée et réexportations (`@index.ts`)
586
-
587
- Les formateurs résident dans le package core et sont réexportés depuis des packages de niveau supérieur pour garder des imports ergonomiques à travers les environnements d'exécution :
588
-
589
- Exemples :
590
-
591
- ```ts
592
- // Code de l'application (recommandé)
593
- import {
594
- number,
595
- currency,
596
- date,
597
- relativeTime,
598
- units,
599
- compact,
600
- list,
601
- Intl,
602
- getLocaleName,
603
- getLocaleLang,
604
- getLocaleFromPath,
605
- getPathWithoutLocale,
606
- getLocalizedUrl,
607
- getHTMLTextDir,
608
- getContent,
609
- getTranslation,
610
- getIntlayer,
611
- getIntlayerAsync,
612
- } from "intlayer";
613
- ```
614
-
615
- ### React
616
-
617
- Composants client :
618
-
619
- ```tsx
620
- import {
621
- useNumber,
622
- useCurrency,
623
- useDate,
624
- usePercentage,
625
- useCompact,
626
- useList,
627
- useRelativeTime,
628
- useUnit,
629
- } from "react-intlayer/format";
630
- // ou dans les applications Next.js
631
- import {
632
- useNumber,
633
- useCurrency,
634
- useDate,
635
- usePercentage,
636
- useCompact,
637
- useList,
638
- useRelativeTime,
639
- useUnit,
640
- } from "next-intlayer/client/format";
641
-
642
- const MyComponent = () => {
643
- const number = useNumber();
644
- const currency = useCurrency();
645
- const date = useDate();
646
- const percentage = usePercentage();
647
- const compact = useCompact();
648
- const list = useList();
649
- const relativeTime = useRelativeTime();
650
- const unit = useUnit();
651
-
652
- return (
653
- <div>
654
- <p>{number(123456.789)}</p>
655
- <p>{currency(1234.5, { currency: "EUR" })}</p>
656
- <p>{date(new Date(), "short")}</p>
657
- <p>{percentage(0.25)}</p>
658
- <p>{compact(1200)}</p>
659
- <p>{list(["apple", "banana", "orange"])}</p>
660
- <p>{relativeTime(new Date(), new Date() + 1000)}</p>
661
- <p>{unit(123456.789, { unit: "kilometer" })}</p>
662
- </div>
663
- );
664
- };
665
- ```
666
-
667
- Composants serveur (ou runtime React Server) :
668
-
669
- ```ts
670
- import {
671
- useNumber,
672
- useCurrency,
673
- useDate,
674
- usePercentage,
675
- useCompact,
676
- useList,
677
- useRelativeTime,
678
- useUnit,
679
- } from "react-intlayer/server/format";
680
- // ou dans les applications Next.js
681
- import {
682
- useNumber,
683
- useCurrency,
684
- useDate,
685
- usePercentage,
686
- useCompact,
687
- useList,
688
- useRelativeTime,
689
- useUnit,
690
- } from "next-intlayer/server/format";
691
- ```
692
-
693
- > Ces hooks prendront en compte la locale depuis le `IntlayerProvider` ou `IntlayerServerProvider`
694
-
695
548
  ### Vue
696
549
 
697
550
  Composants client :
@@ -710,3 +563,9 @@ import {
710
563
  ```
711
564
 
712
565
  > Ces composables prendront en compte la locale depuis le `IntlayerProvider` injecté
566
+
567
+ ## Notes
568
+
569
+ - Tous les helpers acceptent des entrées `string` ; elles sont converties en nombres ou dates en interne.
570
+ - La locale par défaut est votre `internationalization.defaultLocale` configurée si elle n'est pas fournie.
571
+ - Ces utilitaires sont des wrappers minimalistes ; pour un formatage avancé, transmettez les options `Intl` standard.