@intlayer/docs 9.1.3 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  3. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  4. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  5. package/blog/fr/i18n_meaning.md +7 -1
  6. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  7. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  9. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  11. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  12. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  13. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  14. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  15. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  16. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  17. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  18. package/blog/tr/intlayer_with_react-intl.md +3 -1
  19. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  20. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  22. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  23. package/blog/zh/intlayer_with_i18next.md +87 -28
  24. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  25. package/blog/zh/intlayer_with_next-intl.md +88 -28
  26. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  27. package/blog/zh/intlayer_with_react-intl.md +88 -27
  28. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  29. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  30. package/dist/cjs/generated/blog.entry.cjs +27 -27
  31. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  32. package/dist/cjs/generated/docs.entry.cjs +234 -214
  33. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  34. package/dist/cjs/generated/frequentQuestions.entry.cjs +17 -17
  35. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  36. package/dist/cjs/generated/legal.entry.cjs +2 -2
  37. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  38. package/dist/esm/generated/blog.entry.mjs +27 -27
  39. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  40. package/dist/esm/generated/docs.entry.mjs +234 -214
  41. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  42. package/dist/esm/generated/frequentQuestions.entry.mjs +17 -17
  43. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  44. package/dist/esm/generated/legal.entry.mjs +2 -2
  45. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  46. package/dist/types/generated/docs.entry.d.ts +1 -0
  47. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  48. package/docs/ar/analytics.md +222 -0
  49. package/docs/ar/autoFill.md +28 -9
  50. package/docs/ar/configuration.md +25 -8
  51. package/docs/ar/dictionary/file.md +3 -1
  52. package/docs/ar/dictionary/nesting.md +47 -30
  53. package/docs/ar/formatters.md +148 -193
  54. package/docs/ar/intlayer_CMS.md +152 -0
  55. package/docs/ar/intlayer_with_angular_21.md +9 -9
  56. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  57. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  58. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  59. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  60. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  61. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  62. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  63. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  64. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  65. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  66. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  67. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  68. package/docs/ar/releases/v9.md +0 -37
  69. package/docs/ar/self_hosting.md +46 -49
  70. package/docs/bn/configuration.md +25 -8
  71. package/docs/bn/intlayer_with_angular_21.md +9 -9
  72. package/docs/cs/configuration.md +25 -8
  73. package/docs/cs/intlayer_with_angular_21.md +9 -9
  74. package/docs/de/analytics.md +222 -0
  75. package/docs/de/autoFill.md +28 -9
  76. package/docs/de/configuration.md +25 -8
  77. package/docs/de/dictionary/file.md +3 -1
  78. package/docs/de/dictionary/nesting.md +47 -31
  79. package/docs/de/formatters.md +208 -334
  80. package/docs/de/intlayer_CMS.md +66 -15
  81. package/docs/de/intlayer_with_angular_21.md +9 -9
  82. package/docs/de/intlayer_with_nestjs.md +11 -7
  83. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  84. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  85. package/docs/de/intlayer_with_solid_start.md +1078 -0
  86. package/docs/de/intlayer_with_vite+vue.md +1 -3
  87. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  88. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  89. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  90. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  91. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  92. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  93. package/docs/de/releases/v9.md +0 -15
  94. package/docs/de/self_hosting.md +46 -50
  95. package/docs/en/cli/doc-review.md +13 -2
  96. package/docs/en/configuration.md +24 -15
  97. package/docs/en/intlayer_with_angular_21.md +9 -9
  98. package/docs/en/intlayer_with_solid_start.md +1091 -0
  99. package/docs/en/intlayer_with_vite+solid.md +12 -0
  100. package/docs/en-GB/analytics.md +222 -0
  101. package/docs/en-GB/autoFill.md +26 -7
  102. package/docs/en-GB/configuration.md +25 -8
  103. package/docs/en-GB/dictionary/file.md +2 -0
  104. package/docs/en-GB/dictionary/nesting.md +64 -205
  105. package/docs/en-GB/formatters.md +146 -181
  106. package/docs/en-GB/intlayer_CMS.md +152 -0
  107. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  108. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  109. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  110. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  111. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  112. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  113. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  114. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  115. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  116. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  117. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  118. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  119. package/docs/en-GB/self_hosting.md +60 -49
  120. package/docs/es/analytics.md +222 -0
  121. package/docs/es/autoFill.md +28 -9
  122. package/docs/es/configuration.md +24 -7
  123. package/docs/es/dictionary/file.md +3 -1
  124. package/docs/es/dictionary/nesting.md +47 -30
  125. package/docs/es/formatters.md +114 -168
  126. package/docs/es/intlayer_CMS.md +35 -10
  127. package/docs/es/intlayer_with_angular_21.md +9 -9
  128. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  129. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  130. package/docs/es/intlayer_with_solid_start.md +1078 -0
  131. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  132. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  133. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  134. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  135. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  136. package/docs/es/releases/v9.md +0 -15
  137. package/docs/es/self_hosting.md +46 -49
  138. package/docs/fr/analytics.md +222 -0
  139. package/docs/fr/autoFill.md +27 -8
  140. package/docs/fr/configuration.md +25 -8
  141. package/docs/fr/dictionary/file.md +2 -0
  142. package/docs/fr/dictionary/nesting.md +37 -184
  143. package/docs/fr/formatters.md +95 -236
  144. package/docs/fr/intlayer_CMS.md +66 -15
  145. package/docs/fr/intlayer_with_angular_21.md +9 -9
  146. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  147. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  148. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  149. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  150. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  151. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/fr/releases/v9.md +0 -15
  155. package/docs/fr/self_hosting.md +46 -49
  156. package/docs/hi/analytics.md +222 -0
  157. package/docs/hi/autoFill.md +28 -9
  158. package/docs/hi/configuration.md +25 -8
  159. package/docs/hi/dictionary/file.md +3 -1
  160. package/docs/hi/dictionary/nesting.md +47 -30
  161. package/docs/hi/formatters.md +233 -334
  162. package/docs/hi/how_works_intlayer.md +3 -1
  163. package/docs/hi/intlayer_CMS.md +152 -0
  164. package/docs/hi/intlayer_with_angular_21.md +9 -9
  165. package/docs/hi/intlayer_with_nestjs.md +11 -7
  166. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  167. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  168. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  169. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  170. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  171. package/docs/hi/intlayer_with_vite+react.md +48 -41
  172. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  173. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  174. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  175. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  176. package/docs/hi/packages/next-intlayer/t.md +33 -1
  177. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  178. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  179. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  180. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  181. package/docs/hi/plugins/sync-json.md +9 -9
  182. package/docs/hi/releases/v9.md +0 -15
  183. package/docs/hi/self_hosting.md +38 -51
  184. package/docs/id/analytics.md +223 -0
  185. package/docs/id/configuration.md +25 -8
  186. package/docs/id/dictionary/nesting.md +37 -184
  187. package/docs/id/formatters.md +208 -305
  188. package/docs/id/intlayer_CMS.md +164 -0
  189. package/docs/id/intlayer_with_angular_21.md +9 -9
  190. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  191. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  192. package/docs/id/intlayer_with_solid_start.md +1078 -0
  193. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  194. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  195. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  196. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  197. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  198. package/docs/id/releases/v9.md +12 -0
  199. package/docs/id/self_hosting.md +61 -50
  200. package/docs/it/analytics.md +222 -0
  201. package/docs/it/autoFill.md +27 -8
  202. package/docs/it/configuration.md +25 -8
  203. package/docs/it/dictionary/file.md +3 -1
  204. package/docs/it/dictionary/nesting.md +47 -30
  205. package/docs/it/formatters.md +114 -168
  206. package/docs/it/intlayer_CMS.md +66 -15
  207. package/docs/it/intlayer_with_angular_21.md +9 -9
  208. package/docs/it/intlayer_with_nestjs.md +11 -7
  209. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  210. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  211. package/docs/it/intlayer_with_solid_start.md +1078 -0
  212. package/docs/it/intlayer_with_vite+vue.md +1 -3
  213. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  214. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  215. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  216. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  217. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  218. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  219. package/docs/it/releases/v9.md +0 -15
  220. package/docs/it/self_hosting.md +60 -49
  221. package/docs/ja/analytics.md +222 -0
  222. package/docs/ja/autoFill.md +28 -9
  223. package/docs/ja/configuration.md +25 -8
  224. package/docs/ja/dictionary/content_file.md +15 -7
  225. package/docs/ja/dictionary/file.md +3 -1
  226. package/docs/ja/dictionary/nesting.md +47 -30
  227. package/docs/ja/formatters.md +133 -187
  228. package/docs/ja/intlayer_visual_editor.md +3 -1
  229. package/docs/ja/intlayer_with_angular_21.md +6 -6
  230. package/docs/ja/intlayer_with_nestjs.md +2 -12
  231. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  232. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  233. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  234. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  235. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  236. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  237. package/docs/ja/mcp_server.md +3 -9
  238. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  239. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  240. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  241. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  242. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  243. package/docs/ja/releases/v9.md +12 -0
  244. package/docs/ja/self_hosting.md +46 -50
  245. package/docs/ko/analytics.md +222 -0
  246. package/docs/ko/autoFill.md +28 -9
  247. package/docs/ko/configuration.md +25 -8
  248. package/docs/ko/dictionary/file.md +3 -1
  249. package/docs/ko/dictionary/nesting.md +47 -30
  250. package/docs/ko/formatters.md +133 -187
  251. package/docs/ko/intlayer_with_angular_21.md +9 -9
  252. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  253. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  256. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  257. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  258. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  259. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  260. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  261. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  264. package/docs/ko/releases/v9.md +12 -0
  265. package/docs/ko/self_hosting.md +60 -49
  266. package/docs/nl/configuration.md +25 -8
  267. package/docs/nl/intlayer_with_angular_21.md +9 -9
  268. package/docs/pl/analytics.md +220 -0
  269. package/docs/pl/configuration.md +25 -8
  270. package/docs/pl/dictionary/nesting.md +47 -30
  271. package/docs/pl/formatters.md +208 -305
  272. package/docs/pl/intlayer_CMS.md +152 -0
  273. package/docs/pl/intlayer_with_angular_21.md +9 -9
  274. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  275. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  276. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  277. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  278. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  279. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  280. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  281. package/docs/pl/releases/v9.md +0 -15
  282. package/docs/pl/self_hosting.md +60 -49
  283. package/docs/pt/analytics.md +222 -0
  284. package/docs/pt/configuration.md +25 -8
  285. package/docs/pt/dictionary/file.md +3 -1
  286. package/docs/pt/dictionary/nesting.md +47 -30
  287. package/docs/pt/formatters.md +112 -168
  288. package/docs/pt/intlayer_CMS.md +66 -15
  289. package/docs/pt/intlayer_with_angular_21.md +9 -9
  290. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  291. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  292. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  293. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  294. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  295. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  296. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  297. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  298. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  299. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  300. package/docs/pt/releases/v9.md +0 -15
  301. package/docs/pt/self_hosting.md +60 -49
  302. package/docs/ru/analytics.md +222 -0
  303. package/docs/ru/autoFill.md +27 -8
  304. package/docs/ru/configuration.md +25 -8
  305. package/docs/ru/dictionary/file.md +3 -1
  306. package/docs/ru/dictionary/nesting.md +64 -205
  307. package/docs/ru/formatters.md +108 -128
  308. package/docs/ru/intlayer_with_angular_21.md +9 -9
  309. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  310. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  311. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  312. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  313. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  314. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  315. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  316. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  317. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  318. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  319. package/docs/ru/releases/v9.md +0 -15
  320. package/docs/ru/self_hosting.md +60 -49
  321. package/docs/tr/analytics.md +222 -0
  322. package/docs/tr/autoFill.md +28 -9
  323. package/docs/tr/configuration.md +25 -8
  324. package/docs/tr/dictionary/file.md +2 -0
  325. package/docs/tr/dictionary/nesting.md +47 -30
  326. package/docs/tr/formatters.md +144 -190
  327. package/docs/tr/intlayer_CMS.md +152 -0
  328. package/docs/tr/intlayer_with_angular_21.md +9 -9
  329. package/docs/tr/intlayer_with_nestjs.md +2 -12
  330. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  331. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  332. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  333. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  334. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  335. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  336. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  337. package/docs/tr/self_hosting.md +47 -50
  338. package/docs/uk/analytics.md +222 -0
  339. package/docs/uk/configuration.md +25 -8
  340. package/docs/uk/dictionary/nesting.md +47 -30
  341. package/docs/uk/formatters.md +128 -185
  342. package/docs/uk/intlayer_CMS.md +152 -0
  343. package/docs/uk/intlayer_with_angular_21.md +9 -9
  344. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  345. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  346. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  347. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  348. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  349. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  350. package/docs/uk/releases/v9.md +0 -15
  351. package/docs/uk/self_hosting.md +60 -50
  352. package/docs/ur/configuration.md +25 -8
  353. package/docs/ur/intlayer_with_angular_21.md +9 -9
  354. package/docs/vi/analytics.md +222 -0
  355. package/docs/vi/configuration.md +24 -8
  356. package/docs/vi/dictionary/nesting.md +37 -184
  357. package/docs/vi/formatters.md +208 -309
  358. package/docs/vi/intlayer_CMS.md +164 -0
  359. package/docs/vi/intlayer_with_angular_21.md +9 -9
  360. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  361. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  362. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  363. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  364. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  365. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  366. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  367. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  368. package/docs/vi/plugins/sync-json.md +6 -6
  369. package/docs/vi/releases/v9.md +12 -0
  370. package/docs/vi/self_hosting.md +61 -50
  371. package/docs/zh/CI_CD.md +4 -0
  372. package/docs/zh/analytics.md +222 -0
  373. package/docs/zh/autoFill.md +28 -9
  374. package/docs/zh/configuration.md +24 -8
  375. package/docs/zh/dictionary/file.md +2 -0
  376. package/docs/zh/dictionary/nesting.md +47 -30
  377. package/docs/zh/formatters.md +140 -188
  378. package/docs/zh/intlayer_CMS.md +164 -0
  379. package/docs/zh/intlayer_with_analog.md +193 -3
  380. package/docs/zh/intlayer_with_angular_19.md +272 -3
  381. package/docs/zh/intlayer_with_angular_21.md +7 -7
  382. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  383. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  384. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  385. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  386. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  387. package/docs/zh/intlayer_with_nuxt.md +182 -7
  388. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  389. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  390. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  391. package/docs/zh/intlayer_with_storybook.md +260 -3
  392. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  393. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  394. package/docs/zh/intlayer_with_tanstack.md +731 -20
  395. package/docs/zh/intlayer_with_vanilla.md +314 -4
  396. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  397. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  398. package/docs/zh/intlayer_with_vite+react.md +324 -45
  399. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  400. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  401. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  402. package/docs/zh/mcp_server.md +3 -9
  403. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  404. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  405. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  406. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  407. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  408. package/docs/zh/releases/v9.md +12 -0
  409. package/docs/zh/self_hosting.md +60 -50
  410. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  411. package/package.json +6 -6
  412. package/src/generated/blog.entry.ts +27 -27
  413. package/src/generated/docs.entry.ts +234 -214
  414. package/src/generated/frequentQuestions.entry.ts +17 -17
  415. package/src/generated/legal.entry.ts +2 -2
@@ -52,34 +52,6 @@ author: aymericzip
52
52
 
53
53
  Intlayer proporciona un conjunto de helpers ligeros construidos sobre las APIs nativas de `Intl`, además de un wrapper `Intl` en caché para evitar construir repetidamente formateadores pesados. Estas utilidades son completamente conscientes del locale y pueden usarse desde el paquete principal `intlayer`.
54
54
 
55
- ### Importar
56
-
57
- ```ts
58
- import {
59
- Intl,
60
- number,
61
- percentage,
62
- currency,
63
- date,
64
- relativeTime,
65
- units,
66
- compact,
67
- list,
68
- getLocaleName,
69
- getLocaleLang,
70
- getLocaleFromPath,
71
- getPathWithoutLocale,
72
- getLocalizedUrl,
73
- getHTMLTextDir,
74
- getContent,
75
- getTranslation,
76
- getIntlayer,
77
- getIntlayerAsync,
78
- } from "intlayer";
79
- ```
80
-
81
- Si usas React, también hay hooks disponibles; consulta `react-intlayer/format`.
82
-
83
55
  ## Intl en caché
84
56
 
85
57
  El `Intl` exportado es un wrapper ligero y en caché alrededor del `Intl` global. Memoiza instancias de `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` y `PluralRules`, lo que evita reconstruir repetidamente el mismo formateador.
@@ -116,9 +88,7 @@ pluralRules.select(1); // "one"
116
88
  pluralRules.select(2); // "other"
117
89
  ```
118
90
 
119
- ## Utilidades adicionales de Intl
120
-
121
- Más allá de los ayudantes para formateadores, también puedes usar directamente el wrapper cacheado de Intl para otras funcionalidades de Intl:
91
+ ## Formateadores de React
122
92
 
123
93
  ### `Intl.DisplayNames`
124
94
 
@@ -134,6 +104,22 @@ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
134
104
  regionNames.of("US"); // "Estados Unidos"
135
105
  ```
136
106
 
107
+ ### Hooks Disponibles
108
+
109
+ Todos los hooks utilizan automáticamente la configuración regional de `IntlayerProvider` o `IntlayerServerProvider`.
110
+
111
+ | Hook | Description | Example Output |
112
+ | ------------------- | ----------------------------------------------------------- | ----------------------------- |
113
+ | `useNumber()` | Formatear números con agrupación | `"123,456.789"` |
114
+ | `useCurrency()` | Formatear valores de moneda | `"€1,234.50"` |
115
+ | `usePercentage()` | Formatear porcentajes | `"25%"` |
116
+ | `useDate()` | Formatear fechas y horas | `"Aug 2, 2025"` |
117
+ | `useRelativeTime()` | Formatear tiempo relativo | `"in 3 days"` |
118
+ | `useUnit()` | Formatear valores con unidades | `"5 kilometers"` |
119
+ | `useCompact()` | Formatear números en notación compacta | `"1.2K"` |
120
+ | `useList()` | Formatear arrays como listas | `"apple, banana, and orange"` |
121
+ | `useIntl()` | Obtener objeto `Intl` vinculado a la configuración regional | Full `Intl` API access |
122
+
137
123
  ### `Intl.Collator`
138
124
 
139
125
  Para la comparación y ordenación de cadenas conscientes del locale:
@@ -273,166 +259,146 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
273
259
 
274
260
  ### Funciones de Formato
275
261
 
276
- ### `getPathWithoutLocale(inputUrl, locales?)`
262
+ #### `number(value, options?)`
277
263
 
278
- Elimina el segmento de locale de una URL o ruta:
264
+ Formatea un valor numérico usando agrupación y decimales conscientes de la configuración regional.
279
265
 
280
- ```ts
281
- import { getPathWithoutLocale } from "intlayer";
266
+ - **value**: `number | string`
267
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
282
268
 
283
- getPathWithoutLocale("/en/dashboard"); // "/dashboard"
284
- getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
285
- getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
269
+ ```ts
270
+ number(123456.789); // "123,456.789" (en en-US)
271
+ number("1000000", { locale: "fr" }); // "1 000 000"
272
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
286
273
  ```
287
274
 
288
- - **inputUrl**: La cadena completa de URL o ruta a procesar
289
- - **locales**: Matriz opcional de locales soportados (por defecto, los locales configurados)
290
- - **returns**: La URL sin el segmento de locale
275
+ #### `percentage(value, options?)`
291
276
 
292
- ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
277
+ Formatea un número como una cadena de porcentaje. Los valores mayores que 1 se normalizan (por ejemplo, `25` `25%`, `0.25` → `25%`).
293
278
 
294
- Genera una URL localizada para el locale actual:
279
+ - **value**: `number | string`
280
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
295
281
 
296
282
  ```ts
297
- import { getLocalizedUrl } from "intlayer";
298
-
299
- getLocalizedUrl("/about", "fr", ["en", "fr"], "en", false); // "/fr/about"
300
- getLocalizedUrl("/about", "en", ["en", "fr"], "en", false); // "/about"
301
- getLocalizedUrl("https://example.com/about", "fr", ["en", "fr"], "en", true); // "https://example.com/fr/about"
283
+ percentage(0.25); // "25%"
284
+ percentage(25); // "25%"
285
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
302
286
  ```
303
287
 
304
- - **url**: La URL original para localizar
305
- - **currentLocale**: El locale actual
306
- - **locales**: Matriz opcional de locales soportados (por defecto, los locales configurados)
307
- - **defaultLocale**: Locale predeterminado opcional (por defecto, el locale predeterminado configurado)
308
- - **prefixDefault**: Indica si se debe prefijar el locale predeterminado (por defecto, el valor configurado)
288
+ #### `currency(value, options?)`
309
289
 
310
- ### `getHTMLTextDir(locale?)`
290
+ Formatea un valor como moneda localizada. Por defecto es `USD`.
311
291
 
312
- Devuelve la dirección del texto para un locale:
292
+ - **value**: `number | string`
293
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
294
+ - Common: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
313
295
 
314
296
  ```ts
315
- import { getHTMLTextDir } from "intlayer";
316
-
317
- getHTMLTextDir("en-US"); // "ltr"
318
- getHTMLTextDir("ar"); // "rtl"
319
- getHTMLTextDir("he"); // "rtl"
297
+ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
298
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
320
299
  ```
321
300
 
322
- - **locale**: El locale para obtener la dirección del texto (por defecto, el locale actual)
323
- - **returns**: `"ltr"`, `"rtl"` o `"auto"`
301
+ #### `date(date, optionsOrPreset?)`
302
+
303
+ Formatea un valor de fecha/hora.
304
+
305
+ - **date**: `Date | string | number`
306
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` o preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
307
+
308
+ ```ts
309
+ date(new Date(), "short"); // p. ej., "08/02/25, 14:30"
310
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
311
+ ```
324
312
 
325
- ## Utilidades para el Manejo de Contenido
313
+ #### `relativeTime(from, to?, options?)`
326
314
 
327
- ### `getContent(node, nodeProps, locale?)`
315
+ Formatea el tiempo relativo entre dos instantes.
328
316
 
329
- Transforma un nodo de contenido con todos los plugins disponibles (traducción, enumeración, inserción, etc.):
317
+ - **from**: `Date | string | number`
318
+ - **to**: `Date | string | number` (por defecto `new Date()`)
319
+ - **options**: `{ locale?, unit?, numeric?, style? }`
330
320
 
331
321
  ```ts
332
- import { getContent } from "intlayer";
322
+ const now = new Date();
323
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
324
+ relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
333
325
 
334
- const content = getContent(
335
- contentNode,
336
- { dictionaryKey: "common", dictionaryPath: "/path/to/dict" },
337
- "fr"
338
- );
326
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
327
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
339
328
  ```
340
329
 
341
- - **node**: El nodo de contenido a transformar
342
- - **nodeProps**: Propiedades para el contexto de transformación
343
- - **locale**: Locale opcional (por defecto, el locale predeterminado configurado)
330
+ #### `units(value, options?)`
344
331
 
345
- ### `getTranslation(languageContent, locale?, fallback?)`
332
+ Formatea un valor numérico con una unidad.
346
333
 
347
- Extrae contenido para un locale específico de un objeto de contenido multilingüe:
334
+ - **value**: `number | string`
335
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
336
+ - Common: `unit` (e.g., `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
348
337
 
349
338
  ```ts
350
- import { getTranslation } from "intlayer";
351
-
352
- const content = getTranslation(
353
- {
354
- en: "Hello",
355
- fr: "Bonjour",
356
- de: "Hallo",
357
- },
358
- "fr",
359
- true
360
- ); // "Bonjour"
339
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
340
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
361
341
  ```
362
342
 
363
- - **languageContent**: Objeto que mapea locales a contenido
364
- - **locale**: Locale objetivo (por defecto el locale predeterminado configurado)
365
- - **fallback**: Indica si se debe usar el locale predeterminado como respaldo (por defecto es true)
343
+ #### `compact(value, options?)`
366
344
 
367
- ### `getIntlayer(dictionaryKey, locale?, plugins?)`
345
+ Formatea un número usando notación compacta.
368
346
 
369
- Recupera y transforma contenido de un diccionario por clave:
347
+ - **value**: `number | string`
348
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
370
349
 
371
350
  ```ts
372
- import { getIntlayer } from "intlayer";
373
-
374
- const content = getIntlayer("common", "fr");
375
- const nestedContent = getIntlayer("common", "fr", customPlugins);
351
+ compact(1200); // "1.2K"
352
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
376
353
  ```
377
354
 
378
- - **dictionaryKey**: La clave del diccionario a recuperar
379
- - **locale**: Locale opcional (por defecto es el locale predeterminado configurado)
380
- - **plugins**: Array opcional de plugins personalizados para transformación
355
+ #### `list(values, options?)`
381
356
 
382
- ### `getIntlayerAsync(dictionaryKey, locale?, plugins?)`
357
+ Formatea un array en una cadena de lista localizada.
383
358
 
384
- Recupera contenido de un diccionario remoto de forma asíncrona:
359
+ - **values**: `(string | number)[]`
360
+ - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
361
+ - Common: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
385
362
 
386
363
  ```ts
387
- import { getIntlayerAsync } from "intlayer";
388
-
389
- const content = await getIntlayerAsync("common", "fr");
364
+ list(["apple", "banana", "orange"]); // "apple, banana, and orange"
365
+ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
390
366
  ```
391
367
 
392
- - **dictionaryKey**: La clave del diccionario a recuperar
393
- - **locale**: Locale opcional (por defecto es el locale predeterminado configurado)
394
- - **plugins**: Array opcional de plugins personalizados para transformación
395
-
396
368
  ## Formateadores
397
369
 
398
370
  Todos los helpers a continuación son exportados desde `intlayer`.
399
371
 
400
372
  ### Características Intl Adicionales
401
373
 
402
- ### `number(value, options?)`
403
-
404
- Formatea un valor numérico utilizando agrupación y decimales sensibles al locale.
405
-
406
- - **value**: `number | string`
407
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
374
+ #### `Intl.DisplayNames`
408
375
 
409
- Ejemplos:
376
+ Para nombres localizados de idiomas, regiones, monedas y escrituras:
410
377
 
411
378
  ```ts
412
- import { number } from "intlayer";
413
-
414
- number(123456.789); // "123,456.789" (en en-US)
415
- number("1000000", { locale: "fr" }); // "1 000 000"
416
- number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
417
- ```
418
-
419
- ### `percentage(value, options?)`
379
+ import { Intl } from "intlayer";
420
380
 
421
- Formatea un número como una cadena de porcentaje.
381
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
382
+ languageNames.of("fr"); // "French"
422
383
 
423
- Comportamiento: los valores mayores que 1 se interpretan como porcentajes enteros y se normalizan (por ejemplo, `25` `25%`, `0.25` → `25%`).
384
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
385
+ regionNames.of("US"); // "États-Unis"
386
+ ```
424
387
 
425
- - **value**: `number | string`
426
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
388
+ #### `Intl.Collator`
427
389
 
428
- Ejemplos:
390
+ Para comparación y ordenamiento de cadenas sensibles a la configuración regional:
429
391
 
430
392
  ```ts
431
- import { percentage } from "intlayer";
393
+ import { Intl } from "intlayer";
432
394
 
433
- percentage(0.25); // "25%"
434
- percentage(25); // "25%"
435
- percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
395
+ const collator = new Intl.Collator("de", {
396
+ sensitivity: "base",
397
+ numeric: true,
398
+ });
399
+
400
+ const words = ["äpfel", "zebra", "100", "20"];
401
+ words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
436
402
  ```
437
403
 
438
404
  #### `Intl.PluralRules`
@@ -564,42 +530,6 @@ list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
564
530
 
565
531
  ## Utilidades de Manejo de Contenido
566
532
 
567
- ## Notas
568
-
569
- - Todos los ayudantes aceptan entradas de tipo `string`; internamente se convierten a números o fechas.
570
- - El locale por defecto es el configurado en `internationalization.defaultLocale` si no se proporciona.
571
- - Estas utilidades son envoltorios ligeros; para un formateo avanzado, pase las opciones estándar de `Intl`.
572
-
573
- ## Puntos de entrada y re-exportaciones (`@index.ts`)
574
-
575
- Los formateadores residen en el paquete core y se re-exportan desde paquetes de nivel superior para mantener las importaciones ergonómicas en diferentes entornos de ejecución:
576
-
577
- Ejemplos:
578
-
579
- ```ts
580
- // Código de la aplicación (recomendado)
581
- import {
582
- number,
583
- currency,
584
- date,
585
- relativeTime,
586
- units,
587
- compact,
588
- list,
589
- Intl,
590
- getLocaleName,
591
- getLocaleLang,
592
- getLocaleFromPath,
593
- getPathWithoutLocale,
594
- getLocalizedUrl,
595
- getHTMLTextDir,
596
- getContent,
597
- getTranslation,
598
- getIntlayer,
599
- getIntlayerAsync,
600
- } from "intlayer";
601
- ```
602
-
603
533
  ### React
604
534
 
605
535
  Componentes cliente:
@@ -698,3 +628,19 @@ import {
698
628
  ```
699
629
 
700
630
  > Esos composables considerarán la configuración regional del `IntlayerProvider` inyectado.
631
+
632
+ ### `getIntlayer(dictionaryKey, locale?, plugins?)`
633
+
634
+ Recupera y transforma contenido de un diccionario:
635
+
636
+ ```ts
637
+ import { getIntlayer } from "intlayer";
638
+
639
+ const content = getIntlayer("common", "fr");
640
+ ```
641
+
642
+ ## Notas
643
+
644
+ - Todos los helpers aceptan entradas `string`; internamente se convierten a números o fechas.
645
+ - La configuración regional por defecto es tu `internationalization.defaultLocale` si no se proporciona.
646
+ - Estas utilidades son wrappers delgados; para formateo avanzado, pasa las opciones estándar de `Intl`.
@@ -253,16 +253,6 @@ La sincronización en vivo permite que tu aplicación refleje los cambios de con
253
253
 
254
254
  Para la guía de configuración completa (activación, inicio del servidor Live Sync, flujo de trabajo de desarrollo local y restricciones), consulta la [documentación de Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/live-sync.md).
255
255
 
256
- ## Auto-alojamiento
257
-
258
- Intlayer puede ejecutarse completamente en tu propia infraestructura — no se requiere cuenta de Intlayer Cloud. Un solo comando arranca toda la pila (panel de control, API, base de datos, almacenamiento de objetos y correo electrónico) mediante Docker Compose:
259
-
260
- ```sh
261
- curl -fsSL https://intlayer.org/install.sh | sh
262
- ```
263
-
264
- Esto descarga un `docker-compose.yml` y un `.env`, genera automáticamente los secretos necesarios (`BETTER_AUTH_SECRET`, credenciales de MinIO) y arranca todos los contenedores con `docker compose up -d`. Volver a ejecutar el mismo comando en una instalación existente realiza una actualización progresiva sin pérdida de datos.
265
-
266
256
  ### Servicios iniciados
267
257
 
268
258
  | Servicio | Puerto(s) | Propósito |
@@ -366,6 +356,41 @@ Para una referencia completa de todas las variables de entorno disponibles y opc
366
356
 
367
357
  ---
368
358
 
359
+ ### Extrayendo un método único
360
+
361
+ Cada método de endpoint ya está autenticado y es independiente (maneja su propio token), por lo que puedes extraer uno y pasarlo — por ejemplo para inyectarlo como una dependencia:
362
+
363
+ ```typescript fileName="push.ts" codeFormat="typescript"
364
+ import { createIntlayerCMS } from "@intlayer/api";
365
+ import { dictionaryEndpoint } from "@intlayer/api/dictionary";
366
+
367
+ const dictionary = dictionaryEndpoint(createIntlayerCMS());
368
+
369
+ // Ya autenticado — refresca el token automáticamente en cada llamada
370
+ export const pushDictionaries = dictionary.pushDictionaries;
371
+
372
+ // Uso
373
+ await pushDictionaries([{ key: "home", content: { title: "Home" } }]);
374
+ ```
375
+
376
+ ## Live sync
377
+
378
+ Live Sync permite que tu aplicación refleje los cambios de contenido del CMS en tiempo de ejecución — sin necesidad de reconstruir o redeplegar. Cuando está habilitado, las actualizaciones se transmiten a un servidor Live Sync que actualiza los diccionarios que tu aplicación lee.
379
+
380
+ Para la guía de configuración completa (configuración, iniciar el servidor Live Sync, el flujo de trabajo de desarrollo local y limitaciones), consulta la [documentación de Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/live-sync.md).
381
+
382
+ ## Auto-hospedaje
383
+
384
+ Intlayer puede ejecutarse completamente en tu propia infraestructura. Una sola línea arranca el stack completo (dashboard, API, base de datos, almacenamiento de objetos y correo electrónico) con Docker Compose:
385
+
386
+ ```sh
387
+ curl -fsSL https://intlayer.org/install.sh | sh
388
+ ```
389
+
390
+ Para la guía de configuración completa, referencia de variables de entorno, instrucciones de actualización y procedimientos de copia de seguridad/restauración, consulta la [Guía de Auto-hospedaje](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/self_hosting.md).
391
+
392
+ ---
393
+
369
394
  ## Depuración
370
395
 
371
396
  Si encuentras problemas con el CMS, verifica lo siguiente:
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
3
  updatedAt: 2026-05-31
4
- title: "Angular 21 i18n - Guía completa para traducir tu aplicación"
5
- description: "Sin más i18next. La guía 2026 para crear una aplicación Angular 21 multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
4
+ title: "Angular 22 i18n - Guía completa para traducir tu aplicación"
5
+ description: "Sin más i18next. La guía 2026 para crear una aplicación Angular 22 multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
7
7
  - Internacionalización
8
8
  - Documentación
@@ -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
- # Traduce tu sitio Angular 21 (Vite) usando Intlayer | Internacionalización (i18n)
34
+ # Traduce tu sitio Angular 22 (Vite) usando Intlayer | Internacionalización (i18n)
35
35
 
36
36
  ## Tabla de Contenidos
37
37
 
@@ -94,7 +94,7 @@ Más que una simple solución i18n, Intlayer proporciona un **[editor visual] au
94
94
  <Tab label="Código" 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 - Cómo Internacionalizar tu aplicación usando Intlayer"
100
100
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -105,7 +105,7 @@ Más que una simple solución i18n, Intlayer proporciona un **[editor visual] au
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 @@ Más que una simple solución i18n, Intlayer proporciona un **[editor visual] au
115
115
  </Tab>
116
116
  </Tabs>
117
117
 
118
- Ver la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-angular-21-template) en GitHub.
118
+ Ver la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-angular-22-template) en GitHub.
119
119
 
120
120
  <Steps>
121
121
 
@@ -203,7 +203,7 @@ export default config;
203
203
 
204
204
  <Step number={3} title="Integrar Intlayer en tu Configuración Angular">
205
205
 
206
- Para integrar Intlayer con la CLI de Angular, necesitas usar un constructor (builder) personalizado. Esta guía asume que estás usando Vite/esbuild (por defecto para proyectos Angular 21).
206
+ Para integrar Intlayer con la CLI de Angular, necesitas usar un constructor (builder) personalizado. Esta guía asume que estás usando Vite/esbuild (por defecto para proyectos Angular 22).
207
207
 
208
208
  Primero, modifica tu `angular.json` para usar el constructor esbuild personalizado. Actualiza las configuraciones `build` y `serve`:
209
209
 
@@ -30,34 +30,7 @@ history:
30
30
  author: aymericzip
31
31
  ---
32
32
 
33
- # Traduce tu Next.js 14 and App Router con Intlayer | Internacionalización (i18n)
34
-
35
- <Tabs defaultTab="code">
36
- <Tab label="Código" value="code">
37
-
38
- <iframe
39
- src="https://ide.intlayer.org/aymericzip/intlayer-next-14-template?file=intlayer.config.ts"
40
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
41
- title="Demo CodeSandbox - Intlayer"
42
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
43
- loading="lazy"
44
- />
45
-
46
- </Tab>
47
- <Tab label="Demo" value="demo">
48
-
49
- <iframe
50
- src="https://intlayer-next-14-template.vercel.app"
51
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
52
- title="Demo - intlayer-next-14-template"
53
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
54
- loading="lazy"
55
- />
56
-
57
- </Tab>
58
- </Tabs>
59
-
60
- Consulta la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-next-14-template) en GitHub.
33
+ # Traduce tu sitio web Next.js 14 y App Router usando Intlayer | Internacionalización (i18n)
61
34
 
62
35
  ## Tabla de Contenidos
63
36
 
@@ -31,39 +31,7 @@ history:
31
31
  author: aymericzip
32
32
  ---
33
33
 
34
- # Traduce tu Next.js 15 con Intlayer | Internacionalización (i18n)
35
-
36
- <Tabs defaultTab="video">
37
- <Tab label="Vídeo" value="video">
38
-
39
- <iframe title="Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
40
-
41
- </Tab>
42
- <Tab label="Código" value="code">
43
-
44
- <iframe
45
- src="https://ide.intlayer.org/aymericzip/intlayer-next-15-template?file=intlayer.config.ts"
46
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
47
- title="Demo CodeSandbox - Intlayer"
48
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
49
- loading="lazy"
50
- />
51
-
52
- </Tab>
53
- <Tab label="Demo" value="demo">
54
-
55
- <iframe
56
- src="https://next-15-intlayer-template-xt83.vercel.app"
57
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
58
- title="Demo - intlayer-next-15-template"
59
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
60
- loading="lazy"
61
- />
62
-
63
- </Tab>
64
- </Tabs>
65
-
66
- Consulta la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-next-15-template) en GitHub.
34
+ # Traduce tu sitio web Next.js 15 usando Intlayer | Internacionalización (i18n)
67
35
 
68
36
  ## Tabla de Contenidos
69
37