@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
@@ -46,34 +46,6 @@ author: aymericzip
46
46
 
47
47
  O Intlayer fornece um conjunto de helpers leves construídos sobre as APIs nativas `Intl`, além de um wrapper `Intl` em cache para evitar a construção repetida de formatadores pesados. Esses utilitários são totalmente sensíveis à localidade e podem ser usados a partir do pacote principal `intlayer`.
48
48
 
49
- ### Importação
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 estiver a usar React, os hooks também estão disponíveis; veja `react-intlayer/format`.
76
-
77
49
  ## Intl em Cache
78
50
 
79
51
  O `Intl` exportado é um wrapper leve e em cache em torno do `Intl` global. Ele memoiza instâncias de `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` e `PluralRules`, o que evita reconstruir o mesmo formatador repetidamente.
@@ -110,9 +82,7 @@ pluralRules.select(1); // "one"
110
82
  pluralRules.select(2); // "other"
111
83
  ```
112
84
 
113
- ## Utilitários adicionais do Intl
114
-
115
- Além dos auxiliares de formatadores, você também pode usar diretamente o wrapper Intl em cache para outros recursos do 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
+ ### Hooks Disponíveis
102
+
103
+ Todos os hooks usam automaticamente a locale de `IntlayerProvider` ou `IntlayerServerProvider`.
104
+
105
+ | Hook | Description | Example Output |
106
+ | ------------------- | -------------------------------------- | ----------------------------- |
107
+ | `useNumber()` | Formatar números com agrupamento | `"123,456.789"` |
108
+ | `useCurrency()` | Formatar valores de moeda | `"€1,234.50"` |
109
+ | `usePercentage()` | Formatar percentagens | `"25%"` |
110
+ | `useDate()` | Formatar datas e horas | `"Aug 2, 2025"` |
111
+ | `useRelativeTime()` | Formatar tempo relativo | `"in 3 days"` |
112
+ | `useUnit()` | Formatar valores com unidades | `"5 kilometers"` |
113
+ | `useCompact()` | Formatar números em notação compacta | `"1.2K"` |
114
+ | `useList()` | Formatar arrays como listas | `"apple, banana, and orange"` |
115
+ | `useIntl()` | Obter objeto `Intl` vinculado à locale | Acesso completo à API `Intl` |
116
+
131
117
  ### `Intl.Collator`
132
118
 
133
119
  Para comparação e ordenação de strings sensíveis ao local:
@@ -267,166 +253,146 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
267
253
 
268
254
  ### Funções de Formatter
269
255
 
270
- ### `getPathWithoutLocale(inputUrl, locales?)`
256
+ #### `number(value, options?)`
271
257
 
272
- Remove o segmento de locale de uma URL ou caminho:
258
+ Formata um valor numérico usando agrupamento e decimais compatíveis com a localidade.
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" (em 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**: A string completa da URL ou caminho para processar
283
- - **locales**: Array opcional de locales suportados (padrão para os locales configurados)
284
- - **returns**: A URL sem o segmento de locale
269
+ #### `percentage(value, options?)`
285
270
 
286
- ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
271
+ Formata um número como uma string de percentual. Valores maiores que 1 são normalizados (ex: `25` `25%`, `0.25` → `25%`).
287
272
 
288
- Gera uma URL localizada para o locale atual:
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**: A URL original para localizar
299
- - **currentLocale**: O locale atual
300
- - **locales**: Array opcional de locales suportados (padrão para os locales configurados)
301
- - **defaultLocale**: Locale padrão opcional (padrão para o locale padrão configurado)
302
- - **prefixDefault**: Se deve prefixar o locale padrão (padrão para o valor configurado)
282
+ #### `currency(value, options?)`
303
283
 
304
- ### `getHTMLTextDir(locale?)`
284
+ Formata um valor como moeda localizada. Padrão é `USD`.
305
285
 
306
- Retorna a direção do texto para um locale:
286
+ - **value**: `number | string`
287
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
288
+ - Comuns: `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**: O locale para obter a direção do texto (padrão para o locale atual)
317
- - **returns**: `"ltr"`, `"rtl"` ou `"auto"`
295
+ #### `date(date, optionsOrPreset?)`
296
+
297
+ Formata um valor de data/hora.
298
+
299
+ - **date**: `Date | string | number`
300
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` or preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
301
+
302
+ ```ts
303
+ date(new Date(), "short"); // e.g., "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ários para Manipulação de Conteúdo
307
+ #### `relativeTime(from, to?, options?)`
320
308
 
321
- ### `getContent(node, nodeProps, locale?)`
309
+ Formata tempo relativo entre dois instantes.
322
310
 
323
- Transforma um de conteúdo com todos os plugins disponíveis (tradução, enumeração, inserção, etc.):
311
+ - **from**: `Date | string | number`
312
+ - **to**: `Date | string | number` (padrão para `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" }); // "em 3 dias"
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" }); // "há 2 horas"
333
322
  ```
334
323
 
335
- - **node**: O nó de conteúdo a ser transformado
336
- - **nodeProps**: Propriedades para o contexto da transformação
337
- - **locale**: Locale opcional (padrão para o locale padrão configurado)
324
+ #### `units(value, options?)`
338
325
 
339
- ### `getTranslation(languageContent, locale?, fallback?)`
326
+ Formata um valor numérico com uma unidade.
340
327
 
341
- Extrai conteúdo para um locale específico a partir de um objeto de conteúdo multilíngue:
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**: Objeto que mapeia locales para conteúdo
358
- - **locale**: Locale alvo (padrão para o locale padrão configurado)
359
- - **fallback**: Se deve retornar ao locale padrão (padrão é true)
337
+ #### `compact(value, options?)`
360
338
 
361
- ### `getIntlayer(dictionaryKey, locale?, plugins?)`
339
+ Formata um número usando notação compacta.
362
340
 
363
- Recupera e transforma conteúdo de um dicionário pela chave:
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**: A chave do dicionário a ser recuperada
373
- - **locale**: Locale opcional (padrão para o locale padrão configurado)
374
- - **plugins**: Array opcional de plugins de transformação personalizados
349
+ #### `list(values, options?)`
375
350
 
376
- ### `getIntlayerAsync(dictionaryKey, locale?, plugins?)`
351
+ Formata um array em uma string de lista localizada.
377
352
 
378
- Recupera conteúdo de um dicionário remoto de forma assíncrona:
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**: A chave do dicionário a ser recuperada
387
- - **locale**: Locale opcional (padrão para o locale padrão configurado)
388
- - **plugins**: Array opcional de plugins de transformação personalizados
389
-
390
362
  ## Formatadores
391
363
 
392
364
  Todos os helpers abaixo são exportados de `intlayer`.
393
365
 
394
366
  ### Funcionalidades Intl Adicionais
395
367
 
396
- ### `number(value, options?)`
397
-
398
- Formata um valor numérico usando agrupamento e decimais sensíveis ao locale.
399
-
400
- - **value**: `number | string`
401
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
368
+ #### `Intl.DisplayNames`
402
369
 
403
- Exemplos:
370
+ Para nomes localizados de idiomas, regiões, moedas e scripts:
404
371
 
405
372
  ```ts
406
- import { number } from "intlayer";
407
-
408
- number(123456.789); // "123,456.789" (em en-US)
409
- number("1000000", { locale: "fr" }); // "1 000 000"
410
- number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
411
- ```
373
+ import { Intl } from "intlayer";
412
374
 
413
- ### `percentage(value, options?)`
375
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
376
+ languageNames.of("fr"); // "French"
414
377
 
415
- Formata um número como uma string percentual.
378
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
379
+ regionNames.of("US"); // "États-Unis"
380
+ ```
416
381
 
417
- Comportamento: valores maiores que 1 são interpretados como percentuais inteiros e normalizados (ex.: `25` → `25%`, `0.25` → `25%`).
382
+ #### `Intl.Collator`
418
383
 
419
- - **value**: `number | string`
420
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
421
-
422
- Exemplos:
384
+ Para comparação e classificação de strings com reconhecimento de 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`
@@ -537,6 +503,20 @@ compact(1200); // "1.2K"
537
503
  compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 milhão"
538
504
  ```
539
505
 
506
+ ### `getHTMLTextDir(locale?)`
507
+
508
+ Retorna a direção do texto para uma localidade:
509
+
510
+ ```ts
511
+ import { getHTMLTextDir } from "intlayer";
512
+
513
+ getHTMLTextDir("en-US"); // "ltr"
514
+ getHTMLTextDir("ar"); // "rtl"
515
+ getHTMLTextDir("he"); // "rtl"
516
+ ```
517
+
518
+ ## Utilitários de Tratamento de Conteúdo
519
+
540
520
  ### `list(values, options?)`
541
521
 
542
522
  Formata um array de valores em uma string de lista localizada usando `Intl.ListFormat`.
@@ -556,42 +536,6 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
556
536
  list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
557
537
  ```
558
538
 
559
- ## Notas
560
-
561
- - Todos os helpers aceitam entradas do tipo `string`; elas são internamente convertidas para números ou datas.
562
- - O locale padrão é o configurado em `internationalization.defaultLocale`, caso não seja fornecido.
563
- - Essas utilidades são wrappers simples; para formatações avançadas, utilize diretamente as opções padrão do `Intl`.
564
-
565
- ## Pontos de entrada e re-exportações (`@index.ts`)
566
-
567
- Os formatadores estão no pacote core e são re-exportados por pacotes de nível superior para manter as importações ergonômicas em diferentes runtimes:
568
-
569
- Exemplos:
570
-
571
- ```ts
572
- // Código da aplicação (recomendado)
573
- import {
574
- number,
575
- currency,
576
- date,
577
- relativeTime,
578
- units,
579
- compact,
580
- list,
581
- Intl,
582
- getLocaleName,
583
- getLocaleLang,
584
- getLocaleFromPath,
585
- getPathWithoutLocale,
586
- getLocalizedUrl,
587
- getHTMLTextDir,
588
- getContent,
589
- getTranslation,
590
- getIntlayer,
591
- getIntlayerAsync,
592
- } from "intlayer";
593
- ```
594
-
595
539
  ### React
596
540
 
597
541
  Componentes cliente:
@@ -253,28 +253,61 @@ A Sincronização ao Vivo permite que a sua aplicação reflita as alterações
253
253
 
254
254
  Para o guia de configuração completo (ativação, início do servidor Live Sync, fluxo de trabalho de desenvolvimento local e restrições), consulte a [documentação do Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/live-sync.md).
255
255
 
256
- ## Auto-hospedagem
256
+ ### Instalação
257
257
 
258
- O Intlayer pode ser executado inteiramente na sua própria infraestrutura — sem necessidade de conta no Intlayer Cloud. Um único comando inicializa toda a pilha (dashboard, API, banco de dados, armazenamento de objetos e e-mail) usando 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
- Isso baixa um `docker-compose.yml` e um `.env`, gera automaticamente os secrets necessários (`BETTER_AUTH_SECRET`, credenciais do MinIO) e inicia todos os contêineres com `docker compose up -d`. Executar o mesmo comando novamente em uma instalação existente realiza uma atualização gradual sem perda de dados.
274
+ ### Como funciona: autenticador + endpoints
275
+
276
+ O SDK é dividido em **duas importações separadas** propositalmente, para manter seu bundle pequeno:
277
+
278
+ 1. `createIntlayerCMS` — cria um **autenticador** leve. Ele apenas contém as credenciais e o token de acesso gerenciado; não sabe nada sobre nenhum domínio específico.
279
+ 2. `dictionaryEndpoint`, `projectEndpoint`, … — **vinculadores de endpoint** por domínio, cada um importado de seu próprio subcaminho (`@intlayer/api/dictionary`, `@intlayer/api/project`, …). Você passa o autenticador para o endpoint que precisa.
265
280
 
266
- ### Serviços iniciados
281
+ Como cada endpoint é importado separadamente, seu bundle inclui apenas os domínios que você realmente usa — importar `dictionaryEndpoint` nunca puxa o cliente de projeto, IA ou qualquer outro domínio.
267
282
 
268
- | Serviço | Porta(s) | Finalidade |
269
- | ------------------- | ------------------------------------- | -------------------------------------------------- |
270
- | **app** (dashboard) | `3000` | Interface CMS TanStack Start |
271
- | **backend** (API) | `3100` | API REST Fastify |
272
- | **MongoDB 7** | interno | Banco de dados principal (replica set de nó único) |
273
- | **Redis 7** | interno | Filas de tarefas e cache |
274
- | **MinIO** | `9000` (S3), `9001` (console) | Armazenamento de objetos compatível com S3 |
275
- | **Mailpit** | `1025` (SMTP), `8025` (interface web) | Sumidouro local de e-mail transacional |
283
+ ```typescript fileName="cms.ts" codeFormat="typescript"
284
+ import { createIntlayerCMS } from "@intlayer/api";
276
285
 
277
- O Chromium (para geração de capturas de tela com Puppeteer) está incluído na imagem do backend — nenhum contêiner adicional é necessário.
286
+ // A configuração é opcional: quando omitida, as credenciais são lidas de
287
+ // `@intlayer/config/built`, que resolve as variáveis de ambiente
288
+ // INTLAYER_CLIENT_ID e INTLAYER_CLIENT_SECRET.
289
+ export const cmsAuthenticator = createIntlayerCMS();
290
+ ```
291
+
292
+ > [!WARNING]
293
+ > As credenciais do CMS (`clientId` / `clientSecret`) concedem **acesso de escrita** ao seu conteúdo. Sempre crie o autenticador apenas no **lado do servidor** (server actions, route handlers, scripts, CI). Nunca importe para código do lado do cliente ou exponha suas credenciais ao navegador.
294
+
295
+ Se preferir não depender da configuração em tempo de build, passe as credenciais explicitamente:
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
+ // Opcional, para backends auto-hospedados:
305
+ // backendURL: process.env.INTLAYER_BACKEND_URL,
306
+ },
307
+ });
308
+ ```
309
+
310
+ > Obtenha suas credenciais criando uma nova chave de acesso no [Intlayer Dashboard - Projects](https://app.intlayer.org/projects).
278
311
 
279
312
  ### Conectando seu projeto a uma instância auto-hospedada
280
313
 
@@ -366,6 +399,24 @@ Para uma referência completa de todas as variáveis de ambiente disponíveis e
366
399
 
367
400
  ---
368
401
 
402
+ ## Live Sync
403
+
404
+ O Live Sync permite que seu aplicativo reflita as alterações de conteúdo do CMS em tempo de execução — sem necessidade de reconstrução ou reimplantação. Quando habilitado, as atualizações são transmitidas para um servidor Live Sync que atualiza os dicionários que seu aplicativo lê.
405
+
406
+ Para o guia de configuração completo (configuração, iniciando o servidor Live Sync, fluxo de trabalho de desenvolvimento local e restrições), consulte a [documentação do Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/live-sync.md).
407
+
408
+ ## Auto-hospedagem
409
+
410
+ O Intlayer pode ser executado inteiramente em sua própria infraestrutura. Um comando único inicializa a pilha completa (dashboard, API, banco de dados, armazenamento de objetos e email) com Docker Compose:
411
+
412
+ ```sh
413
+ curl -fsSL https://intlayer.org/install.sh | sh
414
+ ```
415
+
416
+ Para o guia de configuração completo, referência de variáveis de ambiente, instruções de atualização e procedimentos de backup/restauração, consulte o [Guia de Auto-hospedagem](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/self_hosting.md).
417
+
418
+ ---
419
+
369
420
  ## Depuração
370
421
 
371
422
  Se encontrar problemas com o CMS, verifique o seguinte:
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
3
  updatedAt: 2026-05-31
4
- title: "Angular 21 i18n - Guia completo para traduzir seu aplicativo"
5
- description: "Sem mais i18next. O guia 2026 para criar uma aplicação Angular 21 multilíngue (i18n). Traduza com agentes de IA e otimize o tamanho do bundle, SEO e desempenho."
4
+ title: "Angular 22 i18n - Guia completo para traduzir seu aplicativo"
5
+ description: "Sem mais i18next. O guia 2026 para criar uma aplicação Angular 22 multilíngue (i18n). Traduza com agentes de IA e otimize o tamanho do bundle, SEO e desempenho."
6
6
  keywords:
7
7
  - Internacionalização
8
8
  - Documentação
@@ -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
- # Traduza seu site Angular 21 (Vite) usando Intlayer | Internacionalização (i18n)
34
+ # Traduza seu site Angular 22 (Vite) usando Intlayer | Internacionalização (i18n)
35
35
 
36
36
  ## Índice
37
37
 
@@ -94,7 +94,7 @@ Mais do que apenas uma solução i18n, o Intlayer fornece um **[editor visual] a
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 - Como internacionalizar sua aplicação usando Intlayer"
100
100
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -105,7 +105,7 @@ Mais do que apenas uma solução i18n, o Intlayer fornece um **[editor visual] a
105
105
  <Tab label="Demonstração" 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 @@ Mais do que apenas uma solução i18n, o Intlayer fornece um **[editor visual] a
115
115
  </Tab>
116
116
  </Tabs>
117
117
 
118
- Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-angular-21-template) no GitHub.
118
+ Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-angular-22-template) no GitHub.
119
119
 
120
120
  <Steps>
121
121
 
@@ -203,7 +203,7 @@ export default config;
203
203
 
204
204
  <Step number={3} title="Integrar o Intlayer na sua Configuração Angular">
205
205
 
206
- Para integrar o Intlayer com o Angular CLI, você precisa usar um builder personalizado. Este guia assume que você está usando Vite/esbuild (padrão para projetos Angular 21).
206
+ Para integrar o Intlayer com o Angular CLI, você precisa usar um builder personalizado. Este guia assume que você está usando Vite/esbuild (padrão para projetos Angular 22).
207
207
 
208
208
  Primeiro, modifique seu `angular.json` para usar o construtor esbuild personalizado. Atualize as configurações `build` e `serve`:
209
209
 
@@ -28,7 +28,32 @@ history:
28
28
  author: aymericzip
29
29
  ---
30
30
 
31
- # Traduza o seu site Astro + Lit com o Intlayer | Internacionalização (i18n)
31
+ # Traduza seu website Astro + Lit usando Intlayer | Internacionalização (i18n)
32
+
33
+ <Tabs defaultTab="code">
34
+ <Tab label="Code" value="code">
35
+
36
+ <iframe
37
+ src="https://ide.intlayer.org/aymericzip/intlayer-astro-template?file=intlayer.config.ts"
38
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
39
+ title="Demo CodeSandbox - Como internacionalizar sua aplicação usando Intlayer"
40
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
41
+ loading="lazy"
42
+ />
43
+
44
+ </Tab>
45
+ <Tab label="Demo" value="demo">
46
+
47
+ <iframe
48
+ src="https://intlayer-astro-template.vercel.app"
49
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
50
+ title="Demo - intlayer-astro-template"
51
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
52
+ loading="lazy"
53
+ />
54
+
55
+ </Tab>
56
+ </Tabs>
32
57
 
33
58
  ## Índice
34
59
 
@@ -24,34 +24,7 @@ history:
24
24
  author: aymericzip
25
25
  ---
26
26
 
27
- # Traduza seu Next.js 14 and App Router com Intlayer | Internacionalização (i18n)
28
-
29
- <Tabs defaultTab="code">
30
- <Tab label="Código" value="code">
31
-
32
- <iframe
33
- src="https://ide.intlayer.org/aymericzip/intlayer-next-14-template?file=intlayer.config.ts"
34
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
35
- title="Demo CodeSandbox - Intlayer"
36
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
37
- loading="lazy"
38
- />
39
-
40
- </Tab>
41
- <Tab label="Demo" value="demo">
42
-
43
- <iframe
44
- src="https://intlayer-next-14-template.vercel.app"
45
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
46
- title="Demo - intlayer-next-14-template"
47
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
48
- loading="lazy"
49
- />
50
-
51
- </Tab>
52
- </Tabs>
53
-
54
- Veja [Application Template](https://github.com/aymericzip/intlayer-next-14-template) no GitHub.
27
+ # Traduzir seu website Next.js 14 e App Router usando Intlayer | Internacionalização (i18n)
55
28
 
56
29
  ## Índice
57
30
 
@@ -31,39 +31,7 @@ history:
31
31
  author: aymericzip
32
32
  ---
33
33
 
34
- # Traduza seu Next.js 15 com Intlayer | Internacionalização (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
- Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-next-15-template) no GitHub.
34
+ # Traduza seu site Next.js 15 usando Intlayer | Internacionalização (i18n)
67
35
 
68
36
  ## Tabela de Conteúdos
69
37