@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
@@ -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.
@@ -253,28 +253,61 @@ La synchronisation en direct permet à votre application de refléter les modifi
253
253
 
254
254
  Pour le guide de configuration complet (activation, démarrage du serveur Live Sync, flux de travail en développement local et contraintes), consultez la [documentation Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/live-sync.md).
255
255
 
256
- ## Auto-hébergement
256
+ ### Installation
257
257
 
258
- Intlayer peut fonctionner entièrement sur votre propre infrastructure — aucun compte Intlayer Cloud requis. Une seule commande amorce l'ensemble de la pile (tableau de bord, API, base de données, stockage d'objets et e-mail) avec Docker Compose :
258
+ ```bash packageManager="npm"
259
+ npm install @intlayer/api
260
+ ```
259
261
 
260
- ```sh
261
- curl -fsSL https://intlayer.org/install.sh | sh
262
+ ```bash packageManager="yarn"
263
+ yarn add @intlayer/api
264
+ ```
265
+
266
+ ```bash packageManager="pnpm"
267
+ pnpm add @intlayer/api
268
+ ```
269
+
270
+ ```bash packageManager="bun"
271
+ bun add @intlayer/api
262
272
  ```
263
273
 
264
- Cela télécharge un `docker-compose.yml` et un `.env`, génère automatiquement les secrets requis (`BETTER_AUTH_SECRET`, identifiants MinIO) et démarre tous les conteneurs avec `docker compose up -d`. Relancer la même commande sur une installation existante effectue une mise à niveau progressive sans perte de données.
274
+ ### Fonctionnement : authenticator + endpoints
275
+
276
+ Le SDK est divisé en **deux imports distincts** à dessein, pour maintenir la taille de votre bundle réduite :
277
+
278
+ 1. `createIntlayerCMS` — crée un **authenticator** léger. Il ne transporte que les credentials et le token d'accès géré ; il ne connaît rien sur aucun domaine spécifique.
279
+ 2. `dictionaryEndpoint`, `projectEndpoint`, … — des **endpoint binders** par domaine, chacun importé depuis son propre chemin (`@intlayer/api/dictionary`, `@intlayer/api/project`, …). Vous passez l'authenticator à l'endpoint dont vous avez besoin.
280
+
281
+ Parce que chaque endpoint est importé séparément, votre bundle inclut uniquement les domaines que vous utilisez réellement — importer `dictionaryEndpoint` ne tire jamais le client du projet, de l'IA ou d'un autre domaine.
282
+
283
+ ```typescript fileName="cms.ts" codeFormat="typescript"
284
+ import { createIntlayerCMS } from "@intlayer/api";
285
+
286
+ // La configuration est optionnelle : lorsqu'elle est omise, les credentials sont lus depuis
287
+ // `@intlayer/config/built`, qui résout les variables d'environnement INTLAYER_CLIENT_ID et
288
+ // INTLAYER_CLIENT_SECRET.
289
+ export const cmsAuthenticator = createIntlayerCMS();
290
+ ```
291
+
292
+ > [!WARNING]
293
+ > Les credentials du CMS (`clientId` / `clientSecret`) accordent un **accès en écriture** à votre contenu. Ne créez l'authenticator que du **côté serveur** (server actions, route handlers, scripts, CI). Ne l'importez jamais dans du code côté client ni n'exposez vos credentials au navigateur.
294
+
295
+ Si vous préférez ne pas vous fier à la configuration au moment de la construction, passez les credentials explicitement :
265
296
 
266
- ### Services démarrés
297
+ ```typescript fileName="cms.ts" codeFormat="typescript"
298
+ import { createIntlayerCMS } from "@intlayer/api";
267
299
 
268
- | Service | Port(s) | Objectif |
269
- | ------------------------- | ------------------------------------- | -------------------------------------------------- |
270
- | **app** (tableau de bord) | `3000` | Interface CMS TanStack Start |
271
- | **backend** (API) | `3100` | API REST Fastify |
272
- | **MongoDB 7** | interne | Base de données principale (replica set mono-nœud) |
273
- | **Redis 7** | interne | Files d'attente de tâches et mise en cache |
274
- | **MinIO** | `9000` (S3), `9001` (console) | Stockage d'objets compatible S3 |
275
- | **Mailpit** | `1025` (SMTP), `8025` (interface web) | Puits d'e-mails transactionnels local |
300
+ export const cmsAuthenticator = createIntlayerCMS({
301
+ editor: {
302
+ clientId: process.env.INTLAYER_CLIENT_ID,
303
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
304
+ // Optionnel, pour les backends auto-hébergés :
305
+ // backendURL: process.env.INTLAYER_BACKEND_URL,
306
+ },
307
+ });
308
+ ```
276
309
 
277
- Chromium (pour la génération de captures d'écran Puppeteer) est intégré dans l'image du backend aucun conteneur séparé n'est nécessaire.
310
+ > Obtenez vos credentials en créant une nouvelle clé d'accès dans le [Tableau de bord Intlayer - Projets](https://app.intlayer.org/projects).
278
311
 
279
312
  ### Connecter votre projet à une instance auto-hébergée
280
313
 
@@ -366,6 +399,24 @@ Pour une référence complète de toutes les variables d'environnement disponibl
366
399
 
367
400
  ---
368
401
 
402
+ ## Synchronisation en direct
403
+
404
+ La Synchronisation en direct permet à votre application de refléter les changements de contenu CMS à l'exécution — aucune reconstruction ou redéploiement requis. Lorsqu'elle est activée, les mises à jour sont diffusées vers un serveur Live Sync qui actualise les dictionnaires que votre application lit.
405
+
406
+ Pour le guide de configuration complet (configuration, démarrage du serveur Live Sync, le flux de travail de développement local et les contraintes), consultez la [documentation Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/live-sync.md).
407
+
408
+ ## Auto-hébergement
409
+
410
+ Intlayer peut s'exécuter entièrement sur votre propre infrastructure. Une seule commande bootstrap la pile complète (dashboard, API, base de données, stockage d'objets et email) avec Docker Compose :
411
+
412
+ ```sh
413
+ curl -fsSL https://intlayer.org/install.sh | sh
414
+ ```
415
+
416
+ Pour le guide de configuration complet, la référence des variables d'environnement, les instructions de mise à jour et les procédures de sauvegarde/restauration, consultez le [Guide d'auto-hébergement](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/self_hosting.md).
417
+
418
+ ---
419
+
369
420
  ## Débogage
370
421
 
371
422
  Si vous rencontrez des problèmes avec le CMS, vérifiez les points suivants :
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
3
  updatedAt: 2026-05-31
4
- title: "Angular 21 i18n - Guide complet pour traduire votre application"
5
- description: "Oubliez i18next. Le guide 2026 pour créer une application Angular 21 multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
4
+ title: "Angular 22 i18n - Guide complet pour traduire votre application"
5
+ description: "Oubliez i18next. Le guide 2026 pour créer une application Angular 22 multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
6
6
  keywords:
7
7
  - Internationalisation
8
8
  - Documentation
@@ -13,8 +13,8 @@ slugs:
13
13
  - doc
14
14
  - environment
15
15
  - angular
16
- applicationTemplate: https://github.com/aymericzip/intlayer-angular-21-template
17
- applicationShowcase: https://intlayer-angular-21-template.vercel.app/
16
+ applicationTemplate: https://github.com/aymericzip/intlayer-angular-22-template
17
+ applicationShowcase: https://intlayer-angular-22-template.vercel.app/
18
18
  history:
19
19
  - version: 8.9.0
20
20
  date: 2026-05-04
@@ -31,7 +31,7 @@ history:
31
31
  author: aymericzip
32
32
  ---
33
33
 
34
- # Traduisez votre site Angular 21 (Vite) avec Intlayer | Internationalisation (i18n)
34
+ # Traduisez votre site Angular 22 (Vite) avec Intlayer | Internationalisation (i18n)
35
35
 
36
36
  ## Table des matières
37
37
 
@@ -94,7 +94,7 @@ Bien plus qu'une simple solution i18n, Intlayer propose un **[éditeur visuel](h
94
94
  <Tab label="Code" value="code">
95
95
 
96
96
  <iframe
97
- src="https://ide.intlayer.org/aymericzip/intlayer-angular-21-template?file=intlayer.config.ts"
97
+ src="https://ide.intlayer.org/aymericzip/intlayer-angular-22-template?file=intlayer.config.ts"
98
98
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
99
99
  title="Démo CodeSandbox - Comment internationaliser votre application avec Intlayer"
100
100
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -105,7 +105,7 @@ Bien plus qu'une simple solution i18n, Intlayer propose un **[éditeur visuel](h
105
105
  <Tab label="Démo" value="demo">
106
106
 
107
107
  <iframe
108
- src="https://intlayer-angular-21-template.vercel.app/"
108
+ src="https://intlayer-angular-22-template.vercel.app/"
109
109
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
110
110
  title="Démo - intlayer-angular-template"
111
111
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -115,7 +115,7 @@ Bien plus qu'une simple solution i18n, Intlayer propose un **[éditeur visuel](h
115
115
  </Tab>
116
116
  </Tabs>
117
117
 
118
- Voir [Modèle d'Application](https://github.com/aymericzip/intlayer-angular-21-template) sur GitHub.
118
+ Voir [Modèle d'Application](https://github.com/aymericzip/intlayer-angular-22-template) sur GitHub.
119
119
 
120
120
  <Steps>
121
121
 
@@ -203,7 +203,7 @@ export default config;
203
203
 
204
204
  <Step number={3} title="Intégrer Intlayer dans votre configuration Angular">
205
205
 
206
- Pour intégrer Intlayer avec Angular CLI, vous devez utiliser un builder personnalisé. Ce guide suppose que vous utilisez Vite/esbuild (par défaut pour les projets Angular 21).
206
+ Pour intégrer Intlayer avec Angular CLI, vous devez utiliser un builder personnalisé. Ce guide suppose que vous utilisez Vite/esbuild (par défaut pour les projets Angular 22).
207
207
 
208
208
  D'abord, modifiez votre `angular.json` pour utiliser le builder esbuild personnalisé. Mettez à jour les configurations `build` et `serve` :
209
209
 
@@ -24,34 +24,7 @@ history:
24
24
  author: aymericzip
25
25
  ---
26
26
 
27
- # Traduire votre Next.js 14 and App Router avec Intlayer | Internationalisation (i18n)
28
-
29
- <Tabs defaultTab="code">
30
- <Tab label="Code" value="code">
31
-
32
- <iframe
33
- src="https://ide.intlayer.org/aymericzip/intlayer-next-14-template?file=intlayer.config.ts"
34
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
35
- title="Demo CodeSandbox - Intlayer"
36
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
37
- loading="lazy"
38
- />
39
-
40
- </Tab>
41
- <Tab label="Démo" value="demo">
42
-
43
- <iframe
44
- src="https://intlayer-next-14-template.vercel.app"
45
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
46
- title="Démo - intlayer-next-14-template"
47
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
48
- loading="lazy"
49
- />
50
-
51
- </Tab>
52
- </Tabs>
53
-
54
- Voir [Application Template](https://github.com/aymericzip/intlayer-next-14-template) sur GitHub.
27
+ # Traduisez votre site web Next.js 14 et App Router avec Intlayer | Internationalisation (i18n)
55
28
 
56
29
  ## Table des matières
57
30
 
@@ -31,39 +31,7 @@ history:
31
31
  author: aymericzip
32
32
  ---
33
33
 
34
- # Traduire votre Next.js 15 avec Intlayer | Internationalisation (i18n)
35
-
36
- <Tabs defaultTab="video">
37
- <Tab label="Vidéo" value="video">
38
-
39
- <iframe title="Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
40
-
41
- </Tab>
42
- <Tab label="Code" value="code">
43
-
44
- <iframe
45
- src="https://ide.intlayer.org/aymericzip/intlayer-next-15-template?file=intlayer.config.ts"
46
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
47
- title="Demo CodeSandbox - Intlayer"
48
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
49
- loading="lazy"
50
- />
51
-
52
- </Tab>
53
- <Tab label="Démo" value="demo">
54
-
55
- <iframe
56
- src="https://next-15-intlayer-template-xt83.vercel.app"
57
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
58
- title="Démo - intlayer-next-15-template"
59
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
60
- loading="lazy"
61
- />
62
-
63
- </Tab>
64
- </Tabs>
65
-
66
- Voir le [Modèle d’Application](https://github.com/aymericzip/intlayer-next-15-template) sur GitHub.
34
+ # Traduisez votre site web Next.js 15 avec Intlayer | Internationalization (i18n)
67
35
 
68
36
  ## Table des matières
69
37