@intlayer/docs 9.1.3 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/blog/ar/index.md +1 -1
  2. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  3. package/blog/de/index.md +1 -1
  4. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  5. package/blog/en/index.md +1 -1
  6. package/blog/en-GB/index.md +1 -1
  7. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/es/index.md +1 -1
  9. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/fr/i18n_meaning.md +7 -1
  11. package/blog/fr/index.md +1 -1
  12. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  13. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  14. package/blog/hi/index.md +1 -1
  15. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  16. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  17. package/blog/id/index.md +1 -1
  18. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  19. package/blog/it/index.md +1 -1
  20. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/ja/index.md +1 -1
  22. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  23. package/blog/ko/index.md +1 -1
  24. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  25. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  26. package/blog/pl/index.md +1 -1
  27. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  28. package/blog/pt/index.md +1 -1
  29. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  30. package/blog/ru/index.md +1 -1
  31. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  32. package/blog/tr/intlayer_with_react-intl.md +3 -1
  33. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  34. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  35. package/blog/uk/index.md +1 -1
  36. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  37. package/blog/vi/index.md +1 -1
  38. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  39. package/blog/zh/index.md +1 -1
  40. package/blog/zh/intlayer_with_i18next.md +87 -28
  41. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  42. package/blog/zh/intlayer_with_next-intl.md +88 -28
  43. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  44. package/blog/zh/intlayer_with_react-intl.md +88 -27
  45. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  46. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  47. package/dist/cjs/common.cjs +24 -1
  48. package/dist/cjs/common.cjs.map +1 -1
  49. package/dist/cjs/generated/blog.entry.cjs +58 -31
  50. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  51. package/dist/cjs/generated/docs.entry.cjs +265 -218
  52. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  53. package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
  54. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  55. package/dist/cjs/generated/legal.entry.cjs +33 -6
  56. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  57. package/dist/esm/common.mjs +24 -1
  58. package/dist/esm/common.mjs.map +1 -1
  59. package/dist/esm/generated/blog.entry.mjs +58 -31
  60. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  61. package/dist/esm/generated/docs.entry.mjs +265 -218
  62. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  63. package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
  64. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  65. package/dist/esm/generated/legal.entry.mjs +33 -6
  66. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  67. package/dist/types/common.d.ts.map +1 -1
  68. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  69. package/dist/types/generated/docs.entry.d.ts +1 -0
  70. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  71. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  72. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  73. package/docs/ar/analytics.md +222 -0
  74. package/docs/ar/autoFill.md +28 -9
  75. package/docs/ar/bundle_optimization.md +58 -25
  76. package/docs/ar/configuration.md +25 -8
  77. package/docs/ar/dictionary/file.md +3 -1
  78. package/docs/ar/dictionary/nesting.md +47 -30
  79. package/docs/ar/formatters.md +148 -193
  80. package/docs/ar/intlayer_CMS.md +152 -0
  81. package/docs/ar/intlayer_with_angular_21.md +9 -9
  82. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  83. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  84. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  85. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  86. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  87. package/docs/ar/live-sync.md +4 -0
  88. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  89. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  90. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  91. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  92. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  93. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  94. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  95. package/docs/ar/releases/v9.md +0 -37
  96. package/docs/ar/self_hosting.md +46 -49
  97. package/docs/bn/bundle_optimization.md +58 -25
  98. package/docs/bn/configuration.md +25 -8
  99. package/docs/bn/intlayer_with_angular_21.md +9 -9
  100. package/docs/cs/bundle_optimization.md +58 -25
  101. package/docs/cs/configuration.md +25 -8
  102. package/docs/cs/intlayer_with_angular_21.md +9 -9
  103. package/docs/de/analytics.md +222 -0
  104. package/docs/de/autoFill.md +28 -9
  105. package/docs/de/bundle_optimization.md +58 -25
  106. package/docs/de/configuration.md +25 -8
  107. package/docs/de/dictionary/file.md +3 -1
  108. package/docs/de/dictionary/nesting.md +47 -31
  109. package/docs/de/formatters.md +208 -334
  110. package/docs/de/intlayer_CMS.md +66 -15
  111. package/docs/de/intlayer_with_angular_21.md +9 -9
  112. package/docs/de/intlayer_with_nestjs.md +11 -7
  113. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  114. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  115. package/docs/de/intlayer_with_solid_start.md +1078 -0
  116. package/docs/de/intlayer_with_vite+vue.md +1 -3
  117. package/docs/de/live-sync.md +4 -0
  118. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  119. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  120. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  121. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  122. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  123. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  124. package/docs/de/releases/v9.md +0 -15
  125. package/docs/de/self_hosting.md +46 -50
  126. package/docs/en/bundle_optimization.md +51 -23
  127. package/docs/en/cli/doc-review.md +13 -2
  128. package/docs/en/configuration.md +24 -15
  129. package/docs/en/intlayer_with_angular_21.md +9 -9
  130. package/docs/en/intlayer_with_solid_start.md +1091 -0
  131. package/docs/en/intlayer_with_vite+solid.md +12 -0
  132. package/docs/en/live-sync.md +4 -0
  133. package/docs/en-GB/analytics.md +222 -0
  134. package/docs/en-GB/autoFill.md +26 -7
  135. package/docs/en-GB/bundle_optimization.md +58 -25
  136. package/docs/en-GB/configuration.md +25 -8
  137. package/docs/en-GB/dictionary/file.md +2 -0
  138. package/docs/en-GB/dictionary/nesting.md +64 -205
  139. package/docs/en-GB/formatters.md +146 -181
  140. package/docs/en-GB/intlayer_CMS.md +152 -0
  141. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  142. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  143. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  144. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  145. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  146. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  147. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  148. package/docs/en-GB/live-sync.md +4 -0
  149. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  150. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  151. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/en-GB/self_hosting.md +60 -49
  155. package/docs/es/analytics.md +222 -0
  156. package/docs/es/autoFill.md +28 -9
  157. package/docs/es/bundle_optimization.md +58 -25
  158. package/docs/es/configuration.md +24 -7
  159. package/docs/es/dictionary/file.md +3 -1
  160. package/docs/es/dictionary/nesting.md +47 -30
  161. package/docs/es/formatters.md +114 -168
  162. package/docs/es/intlayer_CMS.md +35 -10
  163. package/docs/es/intlayer_with_angular_21.md +9 -9
  164. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  165. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  166. package/docs/es/intlayer_with_solid_start.md +1078 -0
  167. package/docs/es/live-sync.md +4 -0
  168. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  169. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  170. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  171. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  172. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  173. package/docs/es/releases/v9.md +0 -15
  174. package/docs/es/self_hosting.md +46 -49
  175. package/docs/fr/analytics.md +222 -0
  176. package/docs/fr/autoFill.md +27 -8
  177. package/docs/fr/bundle_optimization.md +58 -25
  178. package/docs/fr/configuration.md +25 -8
  179. package/docs/fr/dictionary/file.md +2 -0
  180. package/docs/fr/dictionary/nesting.md +37 -184
  181. package/docs/fr/formatters.md +95 -236
  182. package/docs/fr/intlayer_CMS.md +66 -15
  183. package/docs/fr/intlayer_with_angular_21.md +9 -9
  184. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  185. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  186. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  187. package/docs/fr/live-sync.md +4 -0
  188. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  189. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  190. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  191. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  192. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  193. package/docs/fr/releases/v9.md +0 -15
  194. package/docs/fr/self_hosting.md +46 -49
  195. package/docs/hi/analytics.md +222 -0
  196. package/docs/hi/autoFill.md +28 -9
  197. package/docs/hi/bundle_optimization.md +58 -25
  198. package/docs/hi/configuration.md +25 -8
  199. package/docs/hi/dictionary/file.md +3 -1
  200. package/docs/hi/dictionary/nesting.md +47 -30
  201. package/docs/hi/formatters.md +233 -334
  202. package/docs/hi/how_works_intlayer.md +3 -1
  203. package/docs/hi/intlayer_CMS.md +152 -0
  204. package/docs/hi/intlayer_with_angular_21.md +9 -9
  205. package/docs/hi/intlayer_with_nestjs.md +11 -7
  206. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  207. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  208. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  209. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  210. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  211. package/docs/hi/intlayer_with_vite+react.md +48 -41
  212. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  213. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  214. package/docs/hi/live-sync.md +4 -0
  215. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  216. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  217. package/docs/hi/packages/next-intlayer/t.md +33 -1
  218. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  219. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  220. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  221. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  222. package/docs/hi/plugins/sync-json.md +9 -9
  223. package/docs/hi/releases/v9.md +0 -15
  224. package/docs/hi/self_hosting.md +38 -51
  225. package/docs/id/analytics.md +223 -0
  226. package/docs/id/bundle_optimization.md +58 -25
  227. package/docs/id/configuration.md +25 -8
  228. package/docs/id/dictionary/nesting.md +37 -184
  229. package/docs/id/formatters.md +208 -305
  230. package/docs/id/intlayer_CMS.md +164 -0
  231. package/docs/id/intlayer_with_angular_21.md +9 -9
  232. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  233. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  234. package/docs/id/intlayer_with_solid_start.md +1078 -0
  235. package/docs/id/live-sync.md +4 -0
  236. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  237. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  238. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  239. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  240. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  241. package/docs/id/releases/v9.md +12 -0
  242. package/docs/id/self_hosting.md +61 -50
  243. package/docs/it/analytics.md +222 -0
  244. package/docs/it/autoFill.md +27 -8
  245. package/docs/it/bundle_optimization.md +58 -25
  246. package/docs/it/configuration.md +25 -8
  247. package/docs/it/dictionary/file.md +3 -1
  248. package/docs/it/dictionary/nesting.md +47 -30
  249. package/docs/it/formatters.md +114 -168
  250. package/docs/it/intlayer_CMS.md +66 -15
  251. package/docs/it/intlayer_with_angular_21.md +9 -9
  252. package/docs/it/intlayer_with_nestjs.md +11 -7
  253. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/it/intlayer_with_solid_start.md +1078 -0
  256. package/docs/it/intlayer_with_vite+vue.md +1 -3
  257. package/docs/it/live-sync.md +4 -0
  258. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  259. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  260. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  261. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  264. package/docs/it/releases/v9.md +0 -15
  265. package/docs/it/self_hosting.md +60 -49
  266. package/docs/ja/analytics.md +222 -0
  267. package/docs/ja/autoFill.md +28 -9
  268. package/docs/ja/bundle_optimization.md +58 -25
  269. package/docs/ja/configuration.md +25 -8
  270. package/docs/ja/dictionary/content_file.md +15 -7
  271. package/docs/ja/dictionary/file.md +3 -1
  272. package/docs/ja/dictionary/nesting.md +47 -30
  273. package/docs/ja/formatters.md +133 -187
  274. package/docs/ja/intlayer_visual_editor.md +3 -1
  275. package/docs/ja/intlayer_with_angular_21.md +6 -6
  276. package/docs/ja/intlayer_with_nestjs.md +2 -12
  277. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  278. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  279. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  280. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  281. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  282. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  283. package/docs/ja/live-sync.md +4 -0
  284. package/docs/ja/mcp_server.md +3 -9
  285. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  286. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  287. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  288. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  289. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  290. package/docs/ja/releases/v9.md +12 -0
  291. package/docs/ja/self_hosting.md +46 -50
  292. package/docs/ko/analytics.md +222 -0
  293. package/docs/ko/autoFill.md +28 -9
  294. package/docs/ko/bundle_optimization.md +58 -25
  295. package/docs/ko/configuration.md +25 -8
  296. package/docs/ko/dictionary/file.md +3 -1
  297. package/docs/ko/dictionary/nesting.md +47 -30
  298. package/docs/ko/formatters.md +133 -187
  299. package/docs/ko/intlayer_with_angular_21.md +9 -9
  300. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  301. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  302. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  303. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  304. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  305. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  306. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  307. package/docs/ko/live-sync.md +4 -0
  308. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  309. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  310. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  311. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  312. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  313. package/docs/ko/releases/v9.md +12 -0
  314. package/docs/ko/self_hosting.md +60 -49
  315. package/docs/nl/bundle_optimization.md +58 -25
  316. package/docs/nl/configuration.md +25 -8
  317. package/docs/nl/intlayer_with_angular_21.md +9 -9
  318. package/docs/pl/analytics.md +220 -0
  319. package/docs/pl/bundle_optimization.md +58 -25
  320. package/docs/pl/configuration.md +25 -8
  321. package/docs/pl/dictionary/nesting.md +47 -30
  322. package/docs/pl/formatters.md +208 -305
  323. package/docs/pl/intlayer_CMS.md +152 -0
  324. package/docs/pl/intlayer_with_angular_21.md +9 -9
  325. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  326. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  327. package/docs/pl/live-sync.md +4 -0
  328. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  329. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  330. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  331. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  332. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  333. package/docs/pl/releases/v9.md +0 -15
  334. package/docs/pl/self_hosting.md +60 -49
  335. package/docs/pt/analytics.md +222 -0
  336. package/docs/pt/bundle_optimization.md +58 -24
  337. package/docs/pt/configuration.md +25 -8
  338. package/docs/pt/dictionary/file.md +3 -1
  339. package/docs/pt/dictionary/nesting.md +47 -30
  340. package/docs/pt/formatters.md +112 -168
  341. package/docs/pt/intlayer_CMS.md +66 -15
  342. package/docs/pt/intlayer_with_angular_21.md +9 -9
  343. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  344. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  345. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  346. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  347. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  348. package/docs/pt/live-sync.md +4 -0
  349. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  350. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  351. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  352. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  353. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  354. package/docs/pt/releases/v9.md +0 -15
  355. package/docs/pt/self_hosting.md +60 -49
  356. package/docs/ru/analytics.md +222 -0
  357. package/docs/ru/autoFill.md +27 -8
  358. package/docs/ru/bundle_optimization.md +58 -25
  359. package/docs/ru/configuration.md +25 -8
  360. package/docs/ru/dictionary/file.md +3 -1
  361. package/docs/ru/dictionary/nesting.md +64 -205
  362. package/docs/ru/formatters.md +108 -128
  363. package/docs/ru/intlayer_with_angular_21.md +9 -9
  364. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  365. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  366. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  367. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  368. package/docs/ru/live-sync.md +4 -0
  369. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  370. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  371. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  372. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  373. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  374. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  375. package/docs/ru/releases/v9.md +0 -15
  376. package/docs/ru/self_hosting.md +60 -49
  377. package/docs/tr/analytics.md +222 -0
  378. package/docs/tr/autoFill.md +28 -9
  379. package/docs/tr/bundle_optimization.md +58 -25
  380. package/docs/tr/configuration.md +25 -8
  381. package/docs/tr/dictionary/file.md +2 -0
  382. package/docs/tr/dictionary/nesting.md +47 -30
  383. package/docs/tr/formatters.md +144 -190
  384. package/docs/tr/intlayer_CMS.md +152 -0
  385. package/docs/tr/intlayer_with_angular_21.md +9 -9
  386. package/docs/tr/intlayer_with_nestjs.md +2 -12
  387. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  388. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  389. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  390. package/docs/tr/live-sync.md +4 -0
  391. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  392. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  393. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  394. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  395. package/docs/tr/self_hosting.md +47 -50
  396. package/docs/uk/analytics.md +222 -0
  397. package/docs/uk/bundle_optimization.md +58 -25
  398. package/docs/uk/configuration.md +25 -8
  399. package/docs/uk/dictionary/nesting.md +47 -30
  400. package/docs/uk/formatters.md +128 -185
  401. package/docs/uk/intlayer_CMS.md +152 -0
  402. package/docs/uk/intlayer_with_angular_21.md +9 -9
  403. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  404. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  405. package/docs/uk/live-sync.md +4 -0
  406. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  407. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  408. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  409. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  410. package/docs/uk/releases/v9.md +0 -15
  411. package/docs/uk/self_hosting.md +60 -50
  412. package/docs/ur/bundle_optimization.md +58 -25
  413. package/docs/ur/configuration.md +25 -8
  414. package/docs/ur/intlayer_with_angular_21.md +9 -9
  415. package/docs/vi/analytics.md +222 -0
  416. package/docs/vi/bundle_optimization.md +58 -25
  417. package/docs/vi/configuration.md +24 -8
  418. package/docs/vi/dictionary/nesting.md +37 -184
  419. package/docs/vi/formatters.md +208 -309
  420. package/docs/vi/intlayer_CMS.md +164 -0
  421. package/docs/vi/intlayer_with_angular_21.md +9 -9
  422. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  423. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  424. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  425. package/docs/vi/live-sync.md +4 -0
  426. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  427. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  428. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  429. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  430. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  431. package/docs/vi/plugins/sync-json.md +6 -6
  432. package/docs/vi/releases/v9.md +12 -0
  433. package/docs/vi/self_hosting.md +61 -50
  434. package/docs/zh/CI_CD.md +4 -0
  435. package/docs/zh/analytics.md +222 -0
  436. package/docs/zh/autoFill.md +28 -9
  437. package/docs/zh/bundle_optimization.md +58 -25
  438. package/docs/zh/configuration.md +24 -8
  439. package/docs/zh/dictionary/file.md +2 -0
  440. package/docs/zh/dictionary/nesting.md +47 -30
  441. package/docs/zh/formatters.md +140 -188
  442. package/docs/zh/intlayer_CMS.md +164 -0
  443. package/docs/zh/intlayer_with_analog.md +193 -3
  444. package/docs/zh/intlayer_with_angular_19.md +272 -3
  445. package/docs/zh/intlayer_with_angular_21.md +7 -7
  446. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  447. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  448. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  449. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  450. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  451. package/docs/zh/intlayer_with_nuxt.md +182 -7
  452. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  453. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  454. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  455. package/docs/zh/intlayer_with_storybook.md +260 -3
  456. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  457. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  458. package/docs/zh/intlayer_with_tanstack.md +731 -20
  459. package/docs/zh/intlayer_with_vanilla.md +314 -4
  460. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  461. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  462. package/docs/zh/intlayer_with_vite+react.md +324 -45
  463. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  464. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  465. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  466. package/docs/zh/live-sync.md +4 -0
  467. package/docs/zh/mcp_server.md +3 -9
  468. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  469. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  470. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  471. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  472. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  473. package/docs/zh/releases/v9.md +12 -0
  474. package/docs/zh/self_hosting.md +60 -50
  475. package/docs/zh-TW/bundle_optimization.md +58 -25
  476. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  477. package/package.json +7 -7
  478. package/src/common.ts +39 -2
  479. package/src/generated/blog.entry.ts +66 -34
  480. package/src/generated/docs.entry.ts +273 -221
  481. package/src/generated/frequentQuestions.entry.ts +56 -24
  482. package/src/generated/legal.entry.ts +41 -9
@@ -64,6 +64,53 @@ export default firstDictionary;
64
64
  }
65
65
  ```
66
66
 
67
+ ### Referencing with Nest
68
+
69
+ Ora, crea un altro modulo di contenuto che utilizza la funzione `nest` per fare riferimento al contenuto precedente. Puoi fare riferimento all'intero contenuto o a un valore annidato specifico:
70
+
71
+ ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
72
+ import { nest, type Dictionary } from "intlayer";
73
+
74
+ const myNestingContent = {
75
+ key: "key_of_my_second_dictionary",
76
+ content: {
77
+ // Fa riferimento all'intero dizionario:
78
+ fullNestedContent: nest("key_of_my_first_dictionary"),
79
+ // Fa riferimento a un valore annidato specifico:
80
+ partialNestedContent: nest(
81
+ "key_of_my_first_dictionary",
82
+ "subContent.contentNumber"
83
+ ),
84
+ },
85
+ } satisfies Dictionary;
86
+
87
+ export default myNestingContent;
88
+ ```
89
+
90
+ ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
91
+ {
92
+ "$schema": "https://intlayer.org/schema.json",
93
+ "key": "key_of_my_second_dictionary",
94
+ "content": {
95
+ "fullNestedContent": {
96
+ "nodeType": "nested",
97
+ "nested": {
98
+ "dictionaryKey": "key_of_my_first_dictionary"
99
+ }
100
+ },
101
+ "partialNestedContent": {
102
+ "nodeType": "nested",
103
+ "nested": {
104
+ "dictionaryKey": "key_of_my_first_dictionary",
105
+ "path": "subContent.contentNumber"
106
+ }
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ Come secondo parametro, puoi specificare un percorso a un valore annidato all'interno di quel contenuto. Quando non viene fornito alcun percorso, viene restituito l'intero contenuto del dizionario di riferimento.
113
+
67
114
  ## Configurazione dell'Annidamento
68
115
 
69
116
  <Tabs group="framework">
@@ -258,36 +305,6 @@ document.getElementById("nested")!.textContent = content.partialNestedContent;
258
305
  </Tab>
259
306
  </Tabs>
260
307
 
261
- ## Utilizzo dell'Annidamento con React Intlayer
262
-
263
- Per utilizzare contenuti annidati in un componente React, sfrutta il hook `useIntlayer` del pacchetto `react-intlayer`. Questo hook recupera il contenuto corretto in base alla chiave specificata. Ecco un esempio di come utilizzarlo:
264
-
265
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
266
- import type { FC } from "react";
267
- import { useIntlayer } from "react-intlayer";
268
-
269
- const NestComponent: FC = () => {
270
- const { fullNestedContent, partialNestedContent } = useIntlayer(
271
- "key_of_my_second_dictionary"
272
- );
273
-
274
- return (
275
- <div>
276
- <p>
277
- Contenuto Annidato Completo: {JSON.stringify(fullNestedContent)}
278
- {/* Output: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
279
- </p>
280
- <p>
281
- Valore Annidato Parziale: {partialNestedContent}
282
- {/* Output: 0 */}
283
- </p>
284
- </div>
285
- );
286
- };
287
-
288
- export default NestComponent;
289
- ```
290
-
291
308
  ## Risorse Aggiuntive
292
309
 
293
310
  Per informazioni più dettagliate sulla configurazione e sull'utilizzo, consulta le seguenti risorse:
@@ -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