@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
@@ -27,9 +27,7 @@ history:
27
27
  author: aymericzip
28
28
  ---
29
29
 
30
- # Traduza seu Vite and Vue com Intlayer | Internacionalização (i18n)
31
-
32
- Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-vite-vue-template) no GitHub.
30
+ # Traduza seu site Vite e Vue usando Intlayer | Internacionalização (i18n)
33
31
 
34
32
  ## Índice
35
33
 
@@ -13,6 +13,10 @@ keywords:
13
13
  - Intlayer
14
14
  - Next.js
15
15
  - Vite
16
+ slugs:
17
+ - doc
18
+ - concept
19
+ - live-sync
16
20
  history:
17
21
  - version: 9.0.0
18
22
  date: 2026-07-08
@@ -59,36 +59,44 @@ getLocalizedUrl(
59
59
 
60
60
  ## Parâmetros
61
61
 
62
- ## Descrição
63
-
64
- A função `getLocalizedUrl` gera uma URL localizada prefixando a URL fornecida com o locale especificado. Ela lida tanto com URLs absolutas quanto relativas, garantindo que o prefixo de locale correto seja aplicado com base na configuração.
65
-
66
- ---
67
-
68
- ## Parâmetros
62
+ ### Parâmetros Obrigatórios
69
63
 
70
64
  - `url: string`
71
- - **Descrição**: A string da URL original a ser prefixada com um locale.
72
- - **Tipo**: `string`
65
+ - **Description**: A string de URL original a ser prefixada com um locale.
66
+ - **Type**: `string`
67
+ - **Required**: Yes
73
68
 
74
69
  - `currentLocale: Locales`
75
- - **Descrição**: O locale atual para o qual a URL está sendo localizada.
76
- - **Tipo**: `Locales`
77
-
78
- - `locales: Locales[]`
79
- - **Descrição**: Array opcional de locales suportados. Por padrão, os locales configurados no projeto são fornecidos.
80
- - **Tipo**: `Locales[]`
81
- - **Padrão**: [`Configuração do Projeto`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md#middleware)
82
-
83
- - `defaultLocale: Locales`
84
- - **Descrição**: O locale padrão para a aplicação. Por padrão, o locale padrão configurado no projeto é fornecido.
85
- - **Tipo**: `Locales`
86
- - **Padrão**: [`Configuração do Projeto`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md#middleware)
87
-
88
- - `prefixDefault: boolean`
89
- - **Descrição**: Indica se deve prefixar a URL para o locale padrão. Por padrão, o valor configurado no projeto é fornecido.
90
- - **Tipo**: `boolean`
91
- - **Padrão**: [`Configuração do Projeto`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md#middleware)
70
+ - **Description**: O locale atual para o qual a URL está sendo localizada.
71
+ - **Type**: `Locales`
72
+ - **Required**: Yes
73
+
74
+ ### Parâmetros Opcionais
75
+
76
+ - `options?: object`
77
+ - **Description**: Objeto de configuração para o comportamento de localização de URL.
78
+ - **Type**: `object`
79
+ - **Required**: Não (Opcional)
80
+
81
+ - `options.locales?: Locales[]`
82
+ - **Description**: Array de locales suportados. Se não fornecido, usa os locales configurados na configuração do seu projeto.
83
+ - **Type**: `Locales[]`
84
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md#middleware)
85
+
86
+ - `options.defaultLocale?: Locales`
87
+ - **Description**: O locale padrão para a aplicação. Se não fornecido, usa o locale padrão configurado na configuração do seu projeto.
88
+ - **Type**: `Locales`
89
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md#middleware)
90
+
91
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
92
+ - **Description**: O modo de roteamento de URL para o tratamento de locale. Se não fornecido, usa o modo configurado na configuração do seu projeto.
93
+ - **Type**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
94
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md#middleware)
95
+ - **Modes**:
96
+ - `prefix-no-default`: Sem prefixo para o locale padrão, prefixo para todos os outros
97
+ - `prefix-all`: Prefixo para todos os locales, incluindo o padrão
98
+ - `no-prefix`: Sem prefixo de locale na URL
99
+ - `search-params`: Usa parâmetros de query para locale (ex: `?locale=fr`)
92
100
 
93
101
  ### Retorno
94
102
 
@@ -50,26 +50,12 @@ getMultilingualUrls(
50
50
 
51
51
  ## Parâmetros
52
52
 
53
- ## Parâmetros
53
+ ### Parâmetros Obrigatórios
54
54
 
55
55
  - `url: string`
56
- - **Descrição**: A string da URL original a ser prefixada com as localidades.
57
- - **Tipo**: `string`
58
-
59
- - `locales: Locales[]`
60
- - **Descrição**: Array opcional de localidades suportadas. O padrão são as localidades configuradas no projeto.
61
- - **Tipo**: `Locales[]`
62
- - **Padrão**: `localesDefault`
63
-
64
- - `defaultLocale: Locales`
65
- - **Descrição**: A localidade padrão para a aplicação. O padrão é a localidade padrão configurada no projeto.
66
- - **Tipo**: `Locales`
67
- - **Padrão**: `defaultLocaleDefault`
68
-
69
- - `prefixDefault: boolean`
70
- - **Descrição**: Se deve prefixar a localidade padrão. O padrão é o valor configurado no projeto.
71
- - **Tipo**: `boolean`
72
- - **Padrão**: `prefixDefaultDefault`
56
+ - **Description**: A string de URL original a ser prefixada com locales.
57
+ - **Type**: `string`
58
+ - **Required**: Sim
73
59
 
74
60
  ### Parâmetros Opcionais
75
61
 
@@ -48,3 +48,18 @@ import "vite-intlayer";
48
48
  | `intlayerProxy` | Plugin middleware de desenvolvimento para tratar a detecção de locale e roteamento. | - |
49
49
  | `intlayerMiddleware` | (**Obsoleto**) Alias para `intlayerProxy`. | - |
50
50
  | `intlayerPrune` | Plugin para tree-shake e remover dicionários não utilizados durante o build. | [intlayerPrune](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/vite-intlayer/intlayerPrune.md) |
51
+
52
+ ### Utilitários
53
+
54
+ | Exportação | Descrição | Documentação Relacionada |
55
+ | ---------------------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
56
+ | `createIntlayerProxyHandler` | Retorna um middleware Node.js agnóstico de framework `(req, res, next)` com lógica de roteamento de locale. | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/vite-intlayer/intlayerProxy.md) |
57
+
58
+ ### Tipos
59
+
60
+ | Exportação | Descrição |
61
+ | ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
62
+ | `IntlayerPluginOptions` | Opções aceitas por `intlayer()`. Estende `GetConfigurationOptions` com `compatCallers` e `proxy`. |
63
+ | `IntlayerProxyPluginOptions` | Opções aceitas por `intlayerProxy()` e `createIntlayerProxyHandler()`. Inclui `ignore` e `configOptions`. |
64
+ | `IntlayerCompilerOptions` | Opções aceitas por `intlayerCompiler()`. Inclui `configOptions` e `compilerConfig`. |
65
+ | `CompatCallerConfig` | Re-exportação de `@intlayer/babel`. Descreve um padrão de chamador compat-adapter para análise de uso de campo. |
@@ -39,11 +39,126 @@ export default defineConfig({
39
39
  });
40
40
  ```
41
41
 
42
- ## Descrição
42
+ ## Opções
43
43
 
44
- O plugin realiza as seguintes tarefas:
44
+ ```ts
45
+ import type { IntlayerPluginOptions } from "vite-intlayer";
46
+ ```
47
+
48
+ `IntlayerPluginOptions` estende `GetConfigurationOptions` (ver `@intlayer/config`) com os seguintes campos adicionais:
49
+
50
+ | Opção | Tipo | Padrão | Descrição |
51
+ | --------------- | ------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
52
+ | `compatCallers` | `CompatCallerConfig[]` | `[]` | Padrões de chamador extra para pacotes compat-adapter (ex.: `@intlayer/react-i18next`). Passado ao analisador de uso de campo no momento da compilação. |
53
+ | `proxy` | `{ ignore?: (req) => boolean }` | `undefined` | Opções encaminhadas para o proxy de roteamento de locale agrupado. Use `ignore` para excluir caminhos específicos (ex.: rotas de API) do roteamento de locale. |
54
+
55
+ Todas as outras opções (`override`, `configFile`, …) são encaminhadas diretamente para `getConfiguration()`.
56
+
57
+ ### Exemplos
58
+
59
+ #### Ignorar rotas de API do roteamento de locale
60
+
61
+ ```ts
62
+ // vite.config.ts
63
+ import { defineConfig } from "vite";
64
+ import { intlayer } from "vite-intlayer";
65
+
66
+ export default defineConfig({
67
+ plugins: [
68
+ intlayer({
69
+ proxy: {
70
+ ignore: (req) => req.url?.startsWith("/api"),
71
+ },
72
+ }),
73
+ ],
74
+ });
75
+ ```
76
+
77
+ #### Com um caminho de arquivo de configuração personalizado
78
+
79
+ ```ts
80
+ export default defineConfig({
81
+ plugins: [
82
+ intlayer({
83
+ configFile: "./config/intlayer.config.ts",
84
+ }),
85
+ ],
86
+ });
87
+ ```
88
+
89
+ #### Com callers compat-adapter
90
+
91
+ ```ts
92
+ import { intlayer } from "vite-intlayer";
93
+ import { reactI18nextCallerConfig } from "@intlayer/react-i18next/plugin";
94
+
95
+ export default defineConfig({
96
+ plugins: [
97
+ intlayer({
98
+ compatCallers: [reactI18nextCallerConfig],
99
+ }),
100
+ ],
101
+ });
102
+ ```
103
+
104
+ ## O que o plugin faz
105
+
106
+ ### 1. Preparação do dicionário
107
+
108
+ Antes do build iniciar (e uma vez por hora em dev), `intlayer` chama `prepareIntlayer` para compilar todos os arquivos `.content.ts` em dicionários JSON otimizados armazenados em `.intlayer/`.
109
+
110
+ ### 2. Aliases de módulo
111
+
112
+ O plugin adiciona aliases de resolução do Vite para que `import { myDict } from 'intlayer/dictionaries/my-dict'` seja resolvido para o arquivo JSON compilado no disco. Os builds SSR usam `ssr.noExternal` para garantir que todos os pacotes `@intlayer/*` sejam agrupados com aliases aplicados.
113
+
114
+ ### 3. Dev-server watcher
115
+
116
+ Em modo de desenvolvimento, um watcher `chokidar` é iniciado. Quando um arquivo `.content.ts` é alterado, os dicionários são recompilados e o HMR do Vite propaga a atualização para o navegador.
117
+
118
+ ### 4. Proxy de roteamento de locale agrupado (v9+)
119
+
120
+ Desde o Intlayer v9, o middleware `intlayerProxy` é registrado automaticamente dentro de `intlayer()`. Ele trata:
121
+
122
+ - Detecção de locale a partir do prefixo da URL, cookies e cabeçalho `Accept-Language`.
123
+ - Redirecionamentos 301 quando o locale detectado não corresponde à URL atual.
124
+ - Reescritas de URL internas para que o framework veja o parâmetro de rota `[locale]` correto.
125
+
126
+ O proxy é controlado por `routing.enableProxy` (padrão `true`) na sua configuração do Intlayer. Para desabilitá-lo completamente:
127
+
128
+ ```ts
129
+ // intlayer.config.ts
130
+ import { defineConfig } from "intlayer";
131
+
132
+ export default defineConfig({
133
+ routing: { enableProxy: false },
134
+ });
135
+ ```
136
+
137
+ Para personalizar o comportamento do proxy sem uma chamada `intlayerProxy()` separada, passe opções `proxy` para o plugin principal:
138
+
139
+ ```ts
140
+ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api") } });
141
+ ```
142
+
143
+ Veja a [documentação do intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/vite-intlayer/intlayerProxy.md) para a referência completa do comportamento de roteamento.
144
+
145
+ ### 5. Compilador agrupado (v9+)
146
+
147
+ Quando `compiler.enabled` é `true` **e** `compiler.output` está definido na sua configuração Intlayer, `intlayer()` registra `intlayerCompiler` automaticamente. O compilador extrai declarações de conteúdo inline escritas diretamente dentro de arquivos de componente e as escreve em dicionários no tempo de transformação. Consulte a [documentação do intlayerCompiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/vite-intlayer/intlayerCompiler.md).
148
+
149
+ ### 6. Otimizações de build
150
+
151
+ Durante um build de produção, o plugin adiciona:
152
+
153
+ - **intlayerOptimize** – Babel transform que reescreve `useIntlayer('key')` → `useDictionary(hash)` e injeta importações JSON diretas.
154
+ - **intlayerPrune** – remove campos de conteúdo não utilizados do dictionary JSON.
155
+ - **intlayerMinify** – compacta dictionary JSON e opcionalmente faz mangling de nomes de campos.
156
+
157
+ Estes estão inativos em modo de desenvolvimento.
158
+
159
+ ## Aliases Descontinuadas
45
160
 
46
- 1. **Preparar dicionários**: Compila os dicionários em arquivos otimizados no início do processo de build ou de desenvolvimento.
47
- 2. **Modo de observação (watch)**: Em modo de desenvolvimento, observa mudanças nos arquivos de dicionário e os recompila automaticamente.
48
- 3. **Aliases**: Fornece aliases para aceder aos dicionários na sua aplicação.
49
- 4. **Tree-shaking**: Suporta tree-shaking de traduções não utilizadas através do plugin `intlayerPrune`.
161
+ | Exportação Descontinuada | Substituição |
162
+ | ------------------------ | ------------ |
163
+ | `intlayerPlugin` | `intlayer` |
164
+ | `intLayerPlugin` | `intlayer` |
@@ -28,19 +28,91 @@ author: aymericzip
28
28
 
29
29
  O plugin Vite `intlayerPrune` é usado para realizar tree-shaking e podar dicionários não utilizados do bundle da sua aplicação. Isso ajuda a reduzir o tamanho final do bundle incluindo apenas o conteúdo multilíngue necessário.
30
30
 
31
- ## Uso
31
+ ## Utilização
32
+
33
+ ### Como parte de `intlayer()` (recomendado)
34
+
35
+ Ative a poda através da sua configuração Intlayer e o plugin principal trata de tudo:
36
+
37
+ ```ts
38
+ // intlayer.config.ts
39
+ import { defineConfig } from "intlayer";
40
+
41
+ export default defineConfig({
42
+ build: {
43
+ optimize: true, // ativa poda e minificação
44
+ },
45
+ });
46
+ ```
47
+
48
+ ```ts
49
+ // vite.config.ts
50
+ import { defineConfig } from "vite";
51
+ import { intlayer } from "vite-intlayer";
52
+
53
+ export default defineConfig({
54
+ plugins: [intlayer()],
55
+ });
56
+ ```
57
+
58
+ ### Standalone
59
+
60
+ Se você está compondo a pilha de plugins manualmente, `intlayerPrune` e `intlayerMinify` compartilham um objeto `PruneContext` que deve ser criado uma vez e passado para ambos:
32
61
 
33
62
  ```ts
34
63
  // vite.config.ts
35
64
  import { defineConfig } from "vite";
36
- ts;
37
- import { intlayer, intlayerPrune } from "vite-intlayer";
65
+ import { intlayerPrune, intlayerMinify } from "vite-intlayer";
66
+ import { createPruneContext } from "@intlayer/babel";
67
+ import { getConfiguration } from "@intlayer/config/node";
68
+
69
+ const intlayerConfig = getConfiguration();
70
+ const pruneContext = createPruneContext();
38
71
 
39
72
  export default defineConfig({
40
- plugins: [intlayer(), intlayerPrune()],
73
+ plugins: [
74
+ intlayerPrune(intlayerConfig, pruneContext),
75
+ intlayerMinify(intlayerConfig, pruneContext), // opcional, lê do mesmo contexto
76
+ ],
41
77
  });
42
78
  ```
43
79
 
44
- ## Descrição
80
+ ## Como funciona
81
+
82
+ ### 1. Análise de uso (buildStart)
83
+
84
+ Durante `buildStart`, o plugin `intlayerOptimize` (também parte de `intlayer()`) verifica cada arquivo de código-fonte de componente listado em `build.filesList`. Para cada chamada `useIntlayer('key')` ou `getIntlayer('key')`, ele registra exatamente quais campos são acessados, por exemplo:
85
+
86
+ ```ts
87
+ const { title, description } = useIntlayer("myDict");
88
+ // registra: myDict → { title, description }
89
+ ```
90
+
91
+ Isso constrói `pruneContext.fieldUsageMap` antes de qualquer chamada `transform` ser executada.
92
+
93
+ ### 2. JSON pruning (transform, enforce: 'pre')
94
+
95
+ When Vite processes a compiled dictionary JSON file, `intlayerPrune` intercepts it before Vite's built-in JSON → ESM conversion. It reads the field-usage map from `pruneContext` and removes any content field that is not in the recorded usage set.
96
+
97
+ Two content shapes are supported:
98
+
99
+ - **Static dictionaries** — `{ nodeType: "translation", translation: { en: {...}, fr: {...} } }`. Fields are pruned per-locale inside `translation`.
100
+ - **Dynamic (per-locale) dictionaries** — flat `{ fieldA: ..., fieldB: ... }`. Fields are pruned at the top level.
101
+
102
+ ### 3. Casos extremos
103
+
104
+ Se a estrutura de conteúdo de um dicionário não puder ser reconhecida (por exemplo, uma forma aninhada incomum), ele será adicionado a `pruneContext.dictionariesWithEdgeCases` e **deixado intocado**. Um aviso é registrado. `intlayerMinify` também ignora esses dicionários.
105
+
106
+ ### 4. Mapa de renomeação de campos
107
+
108
+ Quando a limpeza tem sucesso, `intlayerPrune` também escreve `pruneContext.dictionaryKeyToFieldRenameMap` — um mapeamento de nomes de campos originais para aliases curtos. `intlayerMinify` lê este mapa para renomear campos no JSON de saída, e a passagem de renomeação Babel de `intlayerOptimize` atualiza os acessos de propriedades nos arquivos fonte de acordo.
109
+
110
+ ## Condições de ativação
111
+
112
+ `intlayerPrune` está ativo **apenas** quando todas as seguintes condições são verdadeiras:
113
+
114
+ 1. O comando Vite é `build`.
115
+ 2. `build.optimize` é `true` (ou `undefined`, que assume como padrão `true` para builds).
116
+ 3. `build.purge` é `true` na sua configuração do Intlayer.
45
117
 
46
- O plugin analisa o seu código-fonte para identificar quais chaves de dicionário são realmente utilizadas. Em seguida, remove qualquer conteúdo não utilizado dos arquivos de dicionário empacotados. Isto é particularmente útil em projetos grandes com muitos dicionários, onde apenas um subconjunto é usado em páginas ou componentes específicos.
118
+ É automaticamente **desativado** quando `editor.enabled` é `true` porque o editor precisa do conteúdo completo do dicionário.
@@ -374,21 +374,6 @@ curl -fsSL https://intlayer.org/install.sh | sh
374
374
 
375
375
  O instalador baixa um `docker-compose.yml` e um `.env`, gera automaticamente os secrets necessários e executa `docker compose up -d`. Tudo — o dashboard, a API, o banco de dados, o armazenamento de objetos e o e-mail transacional — roda localmente em contêineres.
376
376
 
377
- ### Serviços incluídos
378
-
379
- | Serviço | Finalidade |
380
- | --------------------------------------- | ------------------------------------------------------------------------------- |
381
- | **app** (TanStack Start) | Interface do dashboard na porta `3000` |
382
- | **backend** (Fastify/Bun) | API REST na porta `3100` |
383
- | **MongoDB 7** (single-node replica set) | Banco de dados principal |
384
- | **Redis 7** | Filas de tarefas e cache |
385
- | **MinIO** | Armazenamento de objetos compatível com S3 (avatares, capturas de tela) |
386
- | **Mailpit** | Sumidouro SMTP local + interface web para e-mails transacionais na porta `8025` |
387
-
388
- O Chromium (usado para geração de capturas de tela com Puppeteer) está incluído na imagem do backend — nenhum contêiner adicional é necessário.
389
-
390
- ---
391
-
392
377
  ## Notas de migração da v8
393
378
 
394
379
  Se você estiver atualizando da v8, observe que a v9 não inclui breaking changes. Mas aqui estão as principais mudanças:
@@ -62,6 +62,32 @@ O Chromium (usado para a geração de screenshots do Puppeteer) é empacotado de
62
62
 
63
63
  ---
64
64
 
65
+ ## Início Rápido
66
+
67
+ Puxe e execute a imagem publicada, fornecendo suas credenciais e secrets do MongoDB Atlas:
68
+
69
+ ```sh
70
+ docker run -d --name intlayer \
71
+ -p 3000:3000 \
72
+ -p 3100:3100 \
73
+ -p 9000:9000 \
74
+ -p 9001:9001 \
75
+ -v intlayer-data:/data \
76
+ -e DB_ID="<atlas-user>" \
77
+ -e DB_MDP="<atlas-password>" \
78
+ -e DB_CLUSTER="<cluster>.xxxxx.mongodb.net" \
79
+ -e BETTER_AUTH_SECRET="$(openssl rand -hex 32)" \
80
+ -e S3_SECRET_ACCESS_KEY="$(openssl rand -hex 16)" \
81
+ -e RESEND_API_KEY="<your-resend-key>" \
82
+ aymericzip/intlayer-selfhost
83
+ ```
84
+
85
+ Em seguida, abra **http://localhost:3000**.
86
+
87
+ > O dashboard é servido em `localhost`. Veja [Limitações](#limitations) — domínios personalizados não são suportados pela imagem publicada.
88
+
89
+ ---
90
+
65
91
  ## Início rápido
66
92
 
67
93
  ```sh
@@ -99,7 +125,16 @@ As portas internas (mongo, redis) não são expostas ao host por padrão.
99
125
 
100
126
  ## Variáveis de ambiente
101
127
 
102
- O instalador gera um arquivo `.env` pronto para uso. A tabela abaixo descreve cada variável.
128
+ ### Obrigatório
129
+
130
+ | Variável | Exemplo | Descrição |
131
+ | ---------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
132
+ | `DB_ID` | `intlayer` | Usuário MongoDB Atlas |
133
+ | `DB_MDP` | _(sua senha)_ | Senha MongoDB Atlas |
134
+ | `DB_CLUSTER` | `cluster0.xxxxx.mongodb.net` | Host do cluster MongoDB Atlas (usado na URI `mongodb+srv://`) |
135
+ | `BETTER_AUTH_SECRET` | _(gerado)_ | Secret de 32 bytes para assinatura de sessão |
136
+ | `S3_SECRET_ACCESS_KEY` | _(gerado)_ | Secret para o MinIO incluído |
137
+ | `RESEND_API_KEY` | _(sua chave)_ | Email transacional via Resend. Obrigatório para configuração inicial, a menos que você configure um mailer SMTP global (veja [Global mailer](#global-mailer)) |
103
138
 
104
139
  ### Obrigatórias (auto-geradas ou solicitadas)
105
140
 
@@ -141,6 +176,26 @@ O instalador gera um arquivo `.env` pronto para uso. A tabela abaixo descreve ca
141
176
 
142
177
  ---
143
178
 
179
+ ### Global mailer
180
+
181
+ Por padrão, todos os emails transacionais são enviados através do Resend usando `RESEND_API_KEY`. Implantações auto-hospedadas podem, em vez disso, rotear **todos** os emails — incluindo emails não-organizacionais, como redefinições de senha e magic links — através de um mailer global configurado com variáveis de ambiente.
182
+
183
+ Configure `MAIL_PROVIDER` para ativá-lo. Quando não configurado, o mailer padrão do Resend é usado.
184
+
185
+ | Variable | Example | Description |
186
+ | -------------------- | ------------------------------ | ----------------------------------------------------------------------------- |
187
+ | `MAIL_PROVIDER` | `smtp` | Global transport: `smtp` ou `resend`. Deixe não configurado para usar padrões |
188
+ | `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | Sender header. Aceita um endereço simples ou formato `Name <email>` |
189
+ | `MAIL_SMTP_HOST` | `smtp.acme.com` | SMTP host (obrigatório quando `MAIL_PROVIDER=smtp`) |
190
+ | `MAIL_SMTP_PORT` | `587` | SMTP port (padrão é `587`) |
191
+ | `MAIL_SMTP_SECURE` | `false` | Implicit TLS. Configure `true` para a porta `465` |
192
+ | `MAIL_SMTP_USER` | _(seu usuário)_ | SMTP username (opcional; omita para relays não autenticados) |
193
+ | `MAIL_SMTP_PASSWORD` | _(sua senha)_ | SMTP password |
194
+
195
+ > Precedência: o próprio mailer de uma organização (configurado a partir do dashboard **Organization**) tem prioridade sobre o mailer global, que por sua vez tem prioridade sobre a chave padrão do Resend.
196
+
197
+ ---
198
+
144
199
  ## Conectando seu projeto Intlayer
145
200
 
146
201
  Uma vez que a stack esteja em execução, aponte seu projeto para o backend e dashboard auto-hospedados em vez de `intlayer.org`.
@@ -259,47 +314,11 @@ docker run --rm \
259
314
 
260
315
  ---
261
316
 
262
- ## Usando um proxy reverso (Nginx / Caddy)
317
+ ## Limitações
263
318
 
264
- Para implantações em produção, coloque um proxy reverso na frente dos containers do aplicativo e do backend, em vez de expô-los diretamente.
265
-
266
- ### Exemplo de Nginx
267
-
268
- ```nginx
269
- server {
270
- listen 80;
271
- server_name cms.example.com;
272
-
273
- location / {
274
- proxy_pass http://localhost:3000;
275
- proxy_set_header Host $host;
276
- proxy_set_header X-Real-IP $remote_addr;
277
- }
278
- }
279
-
280
- server {
281
- listen 80;
282
- server_name api.example.com;
283
-
284
- location / {
285
- proxy_pass http://localhost:3100;
286
- proxy_set_header Host $host;
287
- proxy_set_header X-Real-IP $remote_addr;
288
- }
289
- }
290
- ```
291
-
292
- Atualize as seguintes variáveis `.env` para corresponder aos seus domínios públicos:
293
-
294
- ```sh
295
- BACKEND_URL=https://api.example.com
296
- APP_URL=https://cms.example.com
297
- DOMAIN=example.com
298
- VITE_BACKEND_URL=https://api.example.com
299
- VITE_DOMAIN=example.com
300
- ```
301
-
302
- > As variáveis `VITE_*` são incorporadas à imagem do dashboard no momento da compilação. Se você as alterar após a imagem ser construída, precisará reconstruir a imagem do `app` (`docker compose build app`) ou usar a injeção de configuração em tempo de execução.
319
+ - **MongoDB deve ser externo (Atlas).** O backend conecta apenas via `mongodb+srv://` (construído a partir de `DB_ID` / `DB_MDP` / `DB_CLUSTER`), então um simples `mongodb://host:27017` incluindo o `mongod` incluído no container não pode ser usado. Forneça um cluster MongoDB Atlas.
320
+ - **Sem domínio personalizado.** Todas as URLs `VITE_*` voltadas para o navegador são inseridas no app em tempo de construção, e a imagem publicada é enviada com valores `localhost`. O dashboard deve ser acessado em `http://localhost:3000`; servir em um domínio público exigiria reconstruir a imagem com as URLs de destino incorporadas e não é suportado por padrão.
321
+ - **Email requer um mailer funcionando.** A configuração da primeira execução impõe verificação de email, portanto, `RESEND_API_KEY` ou um [mailer SMTP global](#global-mailer) (`MAIL_PROVIDER=smtp` + `MAIL_SMTP_*`) deve ser configurado. Após o primeiro admin se conectar, cada organização também pode configurar seu próprio mailer SMTP ou Resend no dashboard.
303
322
 
304
323
  ---
305
324
 
@@ -324,14 +343,6 @@ docker compose build app
324
343
  docker compose up -d app
325
344
  ```
326
345
 
327
- ### E-mail não está sendo enviado
328
-
329
- Por padrão, todos os e-mails de saída são capturados pelo Mailpit. Abra `http://localhost:8025` para ver as mensagens enviadas. Para enviar e-mails reais, defina `MAIL_PROVIDER=resend` e `RESEND_API_KEY=<sua-chave>` no `.env`, então reinicie o backend:
330
-
331
- ```sh
332
- docker compose restart backend
333
- ```
334
-
335
346
  ### Bucket MinIO ausente
336
347
 
337
348
  Se o serviço `minio-init` de execução única não foi executado (ou executou antes que o MinIO estivesse pronto), crie o bucket manualmente: