@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
@@ -46,34 +46,6 @@ author: aymericzip
46
46
 
47
47
  Intlayer fornisce un set di helper leggeri costruiti sopra le API native `Intl`, oltre a un wrapper `Intl` con cache per evitare di costruire ripetutamente formattatori pesanti. Queste utilità sono completamente sensibili alla localizzazione e possono essere utilizzate dal pacchetto principale `intlayer`.
48
48
 
49
- ### Importazione
50
-
51
- ```ts
52
- import {
53
- Intl,
54
- number,
55
- percentage,
56
- currency,
57
- date,
58
- relativeTime,
59
- units,
60
- compact,
61
- list,
62
- getLocaleName,
63
- getLocaleLang,
64
- getLocaleFromPath,
65
- getPathWithoutLocale,
66
- getLocalizedUrl,
67
- getHTMLTextDir,
68
- getContent,
69
- getTranslation,
70
- getIntlayer,
71
- getIntlayerAsync,
72
- } from "intlayer";
73
- ```
74
-
75
- Se stai usando React, sono disponibili anche gli hook; vedi `react-intlayer/format`.
76
-
77
49
  ## Intl con cache
78
50
 
79
51
  L'`Intl` esportato è un wrapper sottile con cache attorno all'`Intl` globale. Memorizza in cache le istanze di `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` e `PluralRules`, evitando così di ricostruire ripetutamente lo stesso formattatore.
@@ -110,9 +82,7 @@ pluralRules.select(1); // "one"
110
82
  pluralRules.select(2); // "other"
111
83
  ```
112
84
 
113
- ## Utilità aggiuntive di Intl
114
-
115
- Oltre agli helper per i formatter, puoi anche utilizzare direttamente il wrapper Intl con cache per altre funzionalità Intl:
85
+ ## React Formatters
116
86
 
117
87
  ### `Intl.DisplayNames`
118
88
 
@@ -128,6 +98,22 @@ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
128
98
  regionNames.of("US"); // "États-Unis"
129
99
  ```
130
100
 
101
+ ### Hook Disponibili
102
+
103
+ Tutti gli hook utilizzano automaticamente la locale da `IntlayerProvider` o `IntlayerServerProvider`.
104
+
105
+ | Hook | Description | Example Output |
106
+ | ------------------- | ----------------------------------------- | ----------------------------- |
107
+ | `useNumber()` | Formatta numeri con raggruppamento | `"123,456.789"` |
108
+ | `useCurrency()` | Formatta valori di valuta | `"€1,234.50"` |
109
+ | `usePercentage()` | Formatta percentuali | `"25%"` |
110
+ | `useDate()` | Formatta date e orari | `"Aug 2, 2025"` |
111
+ | `useRelativeTime()` | Formatta tempo relativo | `"in 3 days"` |
112
+ | `useUnit()` | Formatta valori con unità | `"5 kilometers"` |
113
+ | `useCompact()` | Formatta numeri in notazione compatta | `"1.2K"` |
114
+ | `useList()` | Formatta array come liste | `"apple, banana, and orange"` |
115
+ | `useIntl()` | Ottieni oggetto `Intl` legato alla locale | Accesso completo API `Intl` |
116
+
131
117
  ### `Intl.Collator`
132
118
 
133
119
  Per il confronto e l'ordinamento di stringhe sensibili alla localizzazione:
@@ -267,166 +253,146 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
267
253
 
268
254
  ### Funzioni Formatter
269
255
 
270
- ### `getPathWithoutLocale(inputUrl, locales?)`
256
+ #### `number(value, options?)`
271
257
 
272
- Rimuove il segmento di localizzazione da un URL o percorso:
258
+ Formatta un valore numerico utilizzando il raggruppamento e i decimali consapevoli della locale.
273
259
 
274
- ```ts
275
- import { getPathWithoutLocale } from "intlayer";
260
+ - **value**: `number | string`
261
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
276
262
 
277
- getPathWithoutLocale("/en/dashboard"); // "/dashboard"
278
- getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
279
- getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
263
+ ```ts
264
+ number(123456.789); // "123,456.789" (in en-US)
265
+ number("1000000", { locale: "fr" }); // "1 000 000"
266
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
280
267
  ```
281
268
 
282
- - **inputUrl**: La stringa URL completa o il percorso da elaborare
283
- - **locales**: Array opzionale delle localizzazioni supportate (predefinito alle localizzazioni configurate)
284
- - **returns**: L'URL senza il segmento della localizzazione
269
+ #### `percentage(value, options?)`
285
270
 
286
- ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
271
+ Formatta un numero come stringa percentuale. I valori maggiori di 1 sono normalizzati (es. `25` `25%`, `0.25` → `25%`).
287
272
 
288
- Genera un URL localizzato per la localizzazione corrente:
273
+ - **value**: `number | string`
274
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
289
275
 
290
276
  ```ts
291
- import { getLocalizedUrl } from "intlayer";
292
-
293
- getLocalizedUrl("/about", "fr", ["en", "fr"], "en", false); // "/fr/about"
294
- getLocalizedUrl("/about", "en", ["en", "fr"], "en", false); // "/about"
295
- getLocalizedUrl("https://example.com/about", "fr", ["en", "fr"], "en", true); // "https://example.com/fr/about"
277
+ percentage(0.25); // "25%"
278
+ percentage(25); // "25%"
279
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
296
280
  ```
297
281
 
298
- - **url**: L'URL originale da localizzare
299
- - **currentLocale**: La localizzazione corrente
300
- - **locales**: Array opzionale delle localizzazioni supportate (predefinito alle localizzazioni configurate)
301
- - **defaultLocale**: Localizzazione predefinita opzionale (predefinita alla localizzazione predefinita configurata)
302
- - **prefixDefault**: Se aggiungere il prefisso alla localizzazione predefinita (predefinito al valore configurato)
282
+ #### `currency(value, options?)`
303
283
 
304
- ### `getHTMLTextDir(locale?)`
284
+ Formatta un valore come valuta localizzata. Il valore predefinito è `USD`.
305
285
 
306
- Restituisce la direzione del testo per una localizzazione:
286
+ - **value**: `number | string`
287
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
288
+ - Comuni: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
307
289
 
308
290
  ```ts
309
- import { getHTMLTextDir } from "intlayer";
310
-
311
- getHTMLTextDir("en-US"); // "ltr"
312
- getHTMLTextDir("ar"); // "rtl"
313
- getHTMLTextDir("he"); // "rtl"
291
+ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
292
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
314
293
  ```
315
294
 
316
- - **locale**: La localizzazione per cui ottenere la direzione del testo (predefinita alla localizzazione corrente)
317
- - **returns**: `"ltr"`, `"rtl"`, o `"auto"`
295
+ #### `date(date, optionsOrPreset?)`
296
+
297
+ Formatta un valore di data/ora.
298
+
299
+ - **date**: `Date | string | number`
300
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` o preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
301
+
302
+ ```ts
303
+ date(new Date(), "short"); // es. "08/02/25, 14:30"
304
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
305
+ ```
318
306
 
319
- ## Utilità per la gestione dei contenuti
307
+ #### `relativeTime(from, to?, options?)`
320
308
 
321
- ### `getContent(node, nodeProps, locale?)`
309
+ Formatta il tempo relativo tra due istanti.
322
310
 
323
- Trasforma un nodo di contenuto con tutti i plugin disponibili (traduzione, enumerazione, inserimento, ecc.):
311
+ - **from**: `Date | string | number`
312
+ - **to**: `Date | string | number` (predefinito `new Date()`)
313
+ - **options**: `{ locale?, unit?, numeric?, style? }`
324
314
 
325
315
  ```ts
326
- import { getContent } from "intlayer";
316
+ const now = new Date();
317
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
318
+ relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
327
319
 
328
- const content = getContent(
329
- contentNode,
330
- { dictionaryKey: "common", dictionaryPath: "/path/to/dict" },
331
- "fr"
332
- );
320
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
321
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
333
322
  ```
334
323
 
335
- - **node**: Il nodo di contenuto da trasformare
336
- - **nodeProps**: Proprietà per il contesto di trasformazione
337
- - **locale**: Localizzazione opzionale (predefinita alla localizzazione predefinita configurata)
324
+ #### `units(value, options?)`
338
325
 
339
- ### `getTranslation(languageContent, locale?, fallback?)`
326
+ Formatta un valore numerico con un'unità.
340
327
 
341
- Estrae il contenuto per una specifica lingua da un oggetto contenente più lingue:
328
+ - **value**: `number | string`
329
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
330
+ - Common: `unit` (e.g., `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
342
331
 
343
332
  ```ts
344
- import { getTranslation } from "intlayer";
345
-
346
- const content = getTranslation(
347
- {
348
- en: "Hello",
349
- fr: "Bonjour",
350
- de: "Hallo",
351
- },
352
- "fr",
353
- true
354
- ); // "Bonjour"
333
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
334
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
355
335
  ```
356
336
 
357
- - **languageContent**: Oggetto che mappa le lingue al contenuto
358
- - **locale**: Lingua di destinazione (default è la lingua configurata come predefinita)
359
- - **fallback**: Se effettuare il fallback alla lingua predefinita (default è true)
337
+ #### `compact(value, options?)`
360
338
 
361
- ### `getIntlayer(dictionaryKey, locale?, plugins?)`
339
+ Formatta un numero utilizzando la notazione compatta.
362
340
 
363
- Recupera e trasforma il contenuto da un dizionario tramite la chiave:
341
+ - **value**: `number | string`
342
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
364
343
 
365
344
  ```ts
366
- import { getIntlayer } from "intlayer";
367
-
368
- const content = getIntlayer("common", "fr");
369
- const nestedContent = getIntlayer("common", "fr", customPlugins);
345
+ compact(1200); // "1.2K"
346
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
370
347
  ```
371
348
 
372
- - **dictionaryKey**: La chiave del dizionario da recuperare
373
- - **locale**: Locale opzionale (default è la locale configurata di default)
374
- - **plugins**: Array opzionale di plugin di trasformazione personalizzati
349
+ #### `list(values, options?)`
375
350
 
376
- ### `getIntlayerAsync(dictionaryKey, locale?, plugins?)`
351
+ Formatta un array in una stringa di lista localizzata.
377
352
 
378
- Recupera asincronamente contenuti da un dizionario remoto:
353
+ - **values**: `(string | number)[]`
354
+ - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
355
+ - Common: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
379
356
 
380
357
  ```ts
381
- import { getIntlayerAsync } from "intlayer";
382
-
383
- const content = await getIntlayerAsync("common", "fr");
358
+ list(["apple", "banana", "orange"]); // "apple, banana, and orange"
359
+ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
384
360
  ```
385
361
 
386
- - **dictionaryKey**: La chiave del dizionario da recuperare
387
- - **locale**: Locale opzionale (default è la locale configurata di default)
388
- - **plugins**: Array opzionale di plugin di trasformazione personalizzati
389
-
390
362
  ## Formatter
391
363
 
392
364
  Tutti gli helper seguenti sono esportati da `intlayer`.
393
365
 
394
366
  ### Funzionalità Intl Aggiuntive
395
367
 
396
- ### `number(value, options?)`
397
-
398
- Formatta un valore numerico utilizzando la separazione delle migliaia e i decimali in base alla localizzazione.
368
+ #### `Intl.DisplayNames`
399
369
 
400
- - **value**: `number | string`
401
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
402
-
403
- Esempi:
370
+ Per nomi localizzati di lingue, regioni, valute e script:
404
371
 
405
372
  ```ts
406
- import { number } from "intlayer";
407
-
408
- number(123456.789); // "123,456.789" (in en-US)
409
- number("1000000", { locale: "fr" }); // "1 000 000"
410
- number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
411
- ```
412
-
413
- ### `percentage(value, options?)`
373
+ import { Intl } from "intlayer";
414
374
 
415
- Formatta un numero come stringa percentuale.
375
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
376
+ languageNames.of("fr"); // "French"
416
377
 
417
- Comportamento: i valori maggiori di 1 sono interpretati come percentuali intere e normalizzati (es. `25` `25%`, `0.25` → `25%`).
378
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
379
+ regionNames.of("US"); // "États-Unis"
380
+ ```
418
381
 
419
- - **value**: `number | string`
420
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
382
+ #### `Intl.Collator`
421
383
 
422
- Esempi:
384
+ Per il confronto e l'ordinamento di stringhe consapevoli della locale:
423
385
 
424
386
  ```ts
425
- import { percentage } from "intlayer";
387
+ import { Intl } from "intlayer";
426
388
 
427
- percentage(0.25); // "25%"
428
- percentage(25); // "25%"
429
- percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
389
+ const collator = new Intl.Collator("de", {
390
+ sensitivity: "base",
391
+ numeric: true,
392
+ });
393
+
394
+ const words = ["äpfel", "zebra", "100", "20"];
395
+ words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
430
396
  ```
431
397
 
432
398
  #### `Intl.PluralRules`
@@ -558,42 +524,6 @@ list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
558
524
 
559
525
  ## Utility di Gestione dei Contenuti
560
526
 
561
- ## Note
562
-
563
- - Tutti gli helper accettano input di tipo `string`; internamente vengono convertiti in numeri o date.
564
- - La localizzazione predefinita è quella configurata in `internationalization.defaultLocale` se non specificata.
565
- - Queste utility sono dei semplici wrapper; per formattazioni avanzate, passare le opzioni standard di `Intl`.
566
-
567
- ## Punti di ingresso e re-export (`@index.ts`)
568
-
569
- I formatter risiedono nel pacchetto core e vengono re-esportati da pacchetti di livello superiore per mantenere gli import ergonomici attraverso i runtime:
570
-
571
- Esempi:
572
-
573
- ```ts
574
- // Codice dell'app (consigliato)
575
- import {
576
- number,
577
- currency,
578
- date,
579
- relativeTime,
580
- units,
581
- compact,
582
- list,
583
- Intl,
584
- getLocaleName,
585
- getLocaleLang,
586
- getLocaleFromPath,
587
- getPathWithoutLocale,
588
- getLocalizedUrl,
589
- getHTMLTextDir,
590
- getContent,
591
- getTranslation,
592
- getIntlayer,
593
- getIntlayerAsync,
594
- } da "intlayer";
595
- ```
596
-
597
527
  ### React
598
528
 
599
529
  Componenti client:
@@ -692,3 +622,19 @@ import {
692
622
  ```
693
623
 
694
624
  > Questi composables considereranno la localizzazione dal `IntlayerProvider` iniettato
625
+
626
+ ### `getIntlayer(dictionaryKey, locale?, plugins?)`
627
+
628
+ Recupera e trasforma il contenuto da un dizionario:
629
+
630
+ ```ts
631
+ import { getIntlayer } from "intlayer";
632
+
633
+ const content = getIntlayer("common", "fr");
634
+ ```
635
+
636
+ ## Note
637
+
638
+ - Tutti gli helper accettano input `string`; vengono convertiti internamente a numeri o date.
639
+ - La locale predefinita è quella configurata in `internationalization.defaultLocale` se non fornita.
640
+ - Questi utility sono wrapper sottili; per la formattazione avanzata, passa attraverso le opzioni standard `Intl`.
@@ -253,28 +253,61 @@ La Sincronizzazione Live consente alla tua app di riflettere le modifiche ai con
253
253
 
254
254
  Per la guida completa alla configurazione (attivazione, avvio del server Live Sync, flusso di lavoro di sviluppo locale e limitazioni), consulta la [documentazione di Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/live-sync.md).
255
255
 
256
- ## Self-Hosting
256
+ ### Installazione
257
257
 
258
- Intlayer può essere eseguito interamente sulla propria infrastruttura — nessun account Intlayer Cloud richiesto. Un singolo comando avvia l'intera pila (dashboard, API, database, archiviazione di oggetti ed e-mail) tramite 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
- Questo scarica un `docker-compose.yml` e un `.env`, genera automaticamente i secret necessari (`BETTER_AUTH_SECRET`, credenziali MinIO) e avvia tutti i container con `docker compose up -d`. Rieseguire lo stesso comando su un'installazione esistente esegue un aggiornamento progressivo senza perdita di dati.
274
+ ### Come funziona: authenticator + endpoints
275
+
276
+ L'SDK è suddiviso in **due import separati** di proposito, per mantenere il bundle piccolo:
277
+
278
+ 1. `createIntlayerCMS` — crea un leggero **authenticator**. Contiene solo le credenziali e il token di accesso gestito; non conosce nulla di alcun dominio specifico.
279
+ 2. `dictionaryEndpoint`, `projectEndpoint`, … — **endpoint binder** per dominio, ognuno importato dal suo sottopercorso (`@intlayer/api/dictionary`, `@intlayer/api/project`, …). Passi l'authenticator all'endpoint di cui hai bisogno.
265
280
 
266
- ### Servizi avviati
281
+ Poiché ogni endpoint è importato separatamente, il tuo bundle include solo i domini che effettivamente utilizzi — importare `dictionaryEndpoint` non porta mai con sé il client del progetto, dell'AI o di alcun altro dominio.
267
282
 
268
- | Servizio | Porta/e | Scopo |
269
- | ------------------- | --------------------------------------- | ------------------------------------------------ |
270
- | **app** (dashboard) | `3000` | Interfaccia CMS TanStack Start |
271
- | **backend** (API) | `3100` | API REST Fastify |
272
- | **MongoDB 7** | interno | Database principale (replica set a nodo singolo) |
273
- | **Redis 7** | interno | Code di lavori e caching |
274
- | **MinIO** | `9000` (S3), `9001` (console) | Archiviazione di oggetti compatibile S3 |
275
- | **Mailpit** | `1025` (SMTP), `8025` (interfaccia web) | Sink locale per e-mail transazionali |
283
+ ```typescript fileName="cms.ts" codeFormat="typescript"
284
+ import { createIntlayerCMS } from "@intlayer/api";
276
285
 
277
- Chromium (per la generazione di screenshot con Puppeteer) è incluso nell'immagine del backend non è necessario un container separato.
286
+ // La configurazione è opzionale: quando omessa, le credenziali vengono lette da
287
+ // `@intlayer/config/built`, che risolve le variabili di ambiente
288
+ // INTLAYER_CLIENT_ID e INTLAYER_CLIENT_SECRET.
289
+ export const cmsAuthenticator = createIntlayerCMS();
290
+ ```
291
+
292
+ > [!WARNING]
293
+ > Le credenziali CMS (`clientId` / `clientSecret`) concedono **accesso in scrittura** ai tuoi contenuti. Crea sempre l'authenticator sul **lato server** (server actions, route handlers, script, CI). Non importarlo mai nel codice lato client o esporre le tue credenziali al browser.
294
+
295
+ Se preferisci non fare affidamento sulla configurazione al momento della build, passa le credenziali esplicitamente:
296
+
297
+ ```typescript fileName="cms.ts" codeFormat="typescript"
298
+ import { createIntlayerCMS } from "@intlayer/api";
299
+
300
+ export const cmsAuthenticator = createIntlayerCMS({
301
+ editor: {
302
+ clientId: process.env.INTLAYER_CLIENT_ID,
303
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
304
+ // Opzionale, per backend self-hosted:
305
+ // backendURL: process.env.INTLAYER_BACKEND_URL,
306
+ },
307
+ });
308
+ ```
309
+
310
+ > Ottieni le tue credenziali creando una nuova chiave di accesso in [Intlayer Dashboard - Projects](https://app.intlayer.org/projects).
278
311
 
279
312
  ### Connettere il tuo progetto a un'istanza self-hosted
280
313
 
@@ -366,6 +399,24 @@ Per un riferimento completo di tutte le variabili d'ambiente disponibili e le op
366
399
 
367
400
  ---
368
401
 
402
+ ## Live sync
403
+
404
+ Live Sync consente all'app di riflettere i cambiamenti del contenuto CMS in fase di runtime — nessuna ricostruzione o ridistribuzione richiesta. Quando abilitato, gli aggiornamenti vengono trasmessi a un server Live Sync che aggiorna i dizionari letti dall'applicazione.
405
+
406
+ Per la guida di configurazione completa (configurazione, avvio del server Live Sync, workflow di sviluppo locale e vincoli), consulta la [documentazione Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/live-sync.md).
407
+
408
+ ## Self-Hosting
409
+
410
+ Intlayer può funzionare interamente sulla tua infrastruttura. Un singolo comando inizializza l'intero stack (dashboard, API, database, object storage, e email) con Docker Compose:
411
+
412
+ ```sh
413
+ curl -fsSL https://intlayer.org/install.sh | sh
414
+ ```
415
+
416
+ Per la guida di configurazione completa, il riferimento delle variabili di ambiente, le istruzioni di aggiornamento e le procedure di backup/restore, consulta la [Guida Self-Hosting](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/self_hosting.md).
417
+
418
+ ---
419
+
369
420
  ## Debug
370
421
 
371
422
  Se riscontri problemi con il CMS, verifica quanto segue:
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
3
  updatedAt: 2026-05-31
4
- title: "Angular 21 i18n - Guida completa per tradurre la tua applicazione"
5
- description: "Niente più i18next. La guida 2026 per creare un'applicazione Angular 21 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni."
4
+ title: "Angular 22 i18n - Guida completa per tradurre la tua applicazione"
5
+ description: "Niente più i18next. La guida 2026 per creare un'applicazione Angular 22 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni."
6
6
  keywords:
7
7
  - Internazionalizzazione
8
8
  - Documentazione
@@ -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
- # Traduci il tuo sito Angular 21 (Vite) utilizzando Intlayer | Internazionalizzazione (i18n)
34
+ # Traduci il tuo sito Angular 22 (Vite) utilizzando Intlayer | Internazionalizzazione (i18n)
35
35
 
36
36
  ## Sommario
37
37
 
@@ -94,7 +94,7 @@ Più di una semplice soluzione i18n, Intlayer fornisce un **[editor visivo](http
94
94
  <Tab label="Codice" 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="Demo CodeSandbox - Come internazionalizzare la tua applicazione usando Intlayer"
100
100
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -105,7 +105,7 @@ Più di una semplice soluzione i18n, Intlayer fornisce un **[editor visivo](http
105
105
  <Tab label="Demo" 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="Demo - intlayer-angular-template"
111
111
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -115,7 +115,7 @@ Più di una semplice soluzione i18n, Intlayer fornisce un **[editor visivo](http
115
115
  </Tab>
116
116
  </Tabs>
117
117
 
118
- Vedi il [Modello di Applicazione](https://github.com/aymericzip/intlayer-angular-21-template) su GitHub.
118
+ Vedi il [Modello di Applicazione](https://github.com/aymericzip/intlayer-angular-22-template) su GitHub.
119
119
 
120
120
  <Steps>
121
121
 
@@ -203,7 +203,7 @@ export default config;
203
203
 
204
204
  <Step number={3} title="Integrare Intlayer nella tua Configurazione Angular">
205
205
 
206
- Per integrare Intlayer con la CLI di Angular, devi utilizzare un costruttore (builder) personalizzato. Questa guida presuppone che tu stia utilizzando Vite/esbuild (predefinito per i progetti Angular 21).
206
+ Per integrare Intlayer con la CLI di Angular, devi utilizzare un costruttore (builder) personalizzato. Questa guida presuppone che tu stia utilizzando Vite/esbuild (predefinito per i progetti Angular 22).
207
207
 
208
208
  Per prima cosa, modifica il tuo `angular.json` per utilizzare il costruttore esbuild personalizzato. Aggiorna le configurazioni `build` e `serve`:
209
209
 
@@ -29,19 +29,23 @@ history:
29
29
  changes: "Documentazione iniziale"
30
30
  ---
31
31
 
32
- ### Casi d'Uso Pratici
32
+ # Traduci il tuo sito backend Nest usando Intlayer | Internazionalizzazione (i18n)
33
33
 
34
- - **Visualizzare gli Errori del Backend nella Lingua dell'Utente**: Quando si verifica un errore, mostrare i messaggi nella lingua madre dell'utente migliora la comprensione e riduce la frustrazione. Questo è particolarmente utile per messaggi di errore dinamici che potrebbero essere mostrati in componenti front-end come toast o modali.
34
+ `express-intlayer` è un potente middleware di internazionalizzazione (i18n) per applicazioni Express, progettato per rendere i tuoi servizi backend accessibili a livello globale fornendo risposte localizzate in base alle preferenze del client. Poiché NestJS è costruito su Express, puoi integrare perfettamente `express-intlayer` nelle tue applicazioni NestJS per gestire efficacemente contenuti multilingue.
35
35
 
36
- - **Recuperare Contenuti Multilingue**: Per applicazioni che estraggono contenuti da un database, l'internazionalizzazione garantisce che tu possa fornire questi contenuti in più lingue. Questo è cruciale per piattaforme come siti di e-commerce o sistemi di gestione dei contenuti che devono mostrare descrizioni di prodotti, articoli e altri contenuti nella lingua preferita dall'utente.
36
+ Casi d'uso pratici
37
37
 
38
- - **Invio di Email Multilingue**: Che si tratti di email transazionali, campagne di marketing o notifiche, inviare email nella lingua del destinatario può aumentare significativamente l'engagement e l'efficacia.
38
+ - **Visualizzazione degli errori del backend nella lingua dell'utente**: Quando si verifica un errore, visualizzare i messaggi nella lingua nativa dell'utente migliora la comprensione e riduce la frustrazione. Questo è particolarmente utile per i messaggi di errore dinamici che potrebbero essere visualizzati in componenti front-end come toast o modali.
39
39
 
40
- - **Notifiche Push Multilingue**: Per le applicazioni mobili, inviare notifiche push nella lingua preferita dell'utente può migliorare l'interazione e la fidelizzazione. Questo tocco personale può rendere le notifiche più rilevanti e azionabili.
40
+ - **Recupero di contenuti multilingue**: Per le applicazioni che estraggono contenuti da un database, l'internazionalizzazione garantisce che tu possa servire questo contenuto in più lingue. Questo è fondamentale per piattaforme come siti di e-commerce o sistemi di gestione dei contenuti che devono visualizzare descrizioni di prodotti, articoli e altri contenuti nella lingua preferita dall'utente.
41
41
 
42
- - **Altre Comunicazioni**: Qualsiasi forma di comunicazione dal backend, come messaggi SMS, avvisi di sistema o aggiornamenti dell'interfaccia utente, beneficia di essere nella lingua dell'utente, garantendo chiarezza e migliorando l'esperienza complessiva dell'utente.
42
+ - **Invio di email multilingue**: Che si tratti di email transazionali, campagne di marketing o notifiche, inviare email nella lingua del destinatario può aumentare significativamente il coinvolgimento e l'efficacia.
43
43
 
44
- Internazionalizzando il backend, la tua applicazione non solo rispetta le differenze culturali, ma si allinea anche meglio alle esigenze del mercato globale, rendendolo un passaggio chiave per scalare i tuoi servizi a livello mondiale.
44
+ - **Notifiche push multilingue**: Per le applicazioni mobili, inviare notifiche push nella lingua preferita dall'utente può migliorare l'interazione e la fidelizzazione. Questo tocco personale può rendere le notifiche più rilevanti e attuabili.
45
+
46
+ - **Altre comunicazioni**: Qualsiasi forma di comunicazione dal backend, come messaggi SMS, avvisi di sistema o aggiornamenti dell'interfaccia utente, beneficia dall'essere nella lingua dell'utente, garantendo chiarezza e migliorando l'esperienza utente complessiva.
47
+
48
+ Internazionalizzando il backend, la tua applicazione non solo rispetta le differenze culturali ma si allinea anche meglio alle esigenze del mercato globale, rendendola un passo chiave nel ridimensionamento dei tuoi servizi a livello mondiale.
45
49
 
46
50
  ## Iniziare
47
51
 
@@ -24,34 +24,7 @@ history:
24
24
  author: aymericzip
25
25
  ---
26
26
 
27
- # Traduci la tua Next.js 14 and App Router con Intlayer | Internazionalizzazione (i18n)
28
-
29
- <Tabs defaultTab="code">
30
- <Tab label="Codice" 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="Demo" 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="Demo - 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
- Consulta [Application Template](https://github.com/aymericzip/intlayer-next-14-template) su GitHub.
27
+ # Traduci il tuo sito web Next.js 14 e App Router usando Intlayer | Internazionalizzazione (i18n)
55
28
 
56
29
  ## Tabella dei Contenuti
57
30