@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
@@ -30,9 +30,7 @@ history:
30
30
  author: aymericzip
31
31
  ---
32
32
 
33
- # Übersetzen Sie Ihre Vite and Vue mit Intlayer | Internationalisierung (i18n)
34
-
35
- Siehe [Application Template](https://github.com/aymericzip/intlayer-vite-vue-template) auf GitHub.
33
+ # Übersetzen Sie Ihre Vite- und Vue-Website mit Intlayer | Internationalization (i18n)
36
34
 
37
35
  ## Inhaltsverzeichnis
38
36
 
@@ -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
  ## Parameter
61
61
 
62
- ## Beschreibung
63
-
64
- Die Funktion `getLocalizedUrl` erzeugt eine lokalisierte URL, indem sie die angegebene URL mit dem spezifizierten Locale voranstellt. Sie verarbeitet sowohl absolute als auch relative URLs und stellt sicher, dass das korrekte Locale-Präfix basierend auf der Konfiguration angewendet wird.
65
-
66
- ---
67
-
68
- ## Parameter
62
+ ### Erforderliche Parameter
69
63
 
70
64
  - `url: string`
71
- - **Beschreibung**: Die ursprüngliche URL-Zeichenkette, die mit einem Locale-Präfix versehen werden soll.
72
- - **Typ**: `string`
65
+ - **Beschreibung**: Die ursprüngliche URL-Zeichenkette, der ein Locale vorangestellt wird.
66
+ - **Type**: `string`
67
+ - **Erforderlich**: Ja
73
68
 
74
69
  - `currentLocale: Locales`
75
70
  - **Beschreibung**: Das aktuelle Locale, für das die URL lokalisiert wird.
76
- - **Typ**: `Locales`
77
-
78
- - `locales: Locales[]`
79
- - **Beschreibung**: Optionales Array unterstützter Locales. Standardmäßig werden die im Projekt konfigurierten Locales verwendet.
80
- - **Typ**: `Locales[]`
81
- - **Standard**: [`Projektkonfiguration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#middleware)
82
-
83
- - `defaultLocale: Locales`
84
- - **Beschreibung**: Das Standard-Locale für die Anwendung. Standardmäßig wird das konfigurierte Standard-Locale im Projekt verwendet.
85
- - **Typ**: `Locales`
86
- - **Standard**: [`Projektkonfiguration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#middleware)
87
-
88
- - `prefixDefault: boolean`
89
- - **Beschreibung**: Ob die URL für das Standard-Locale mit einem Präfix versehen werden soll. Standardmäßig wird der konfigurierte Wert im Projekt verwendet.
90
- - **Typ**: `boolean`
91
- - **Standard**: [`Projektkonfiguration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#middleware)
71
+ - **Type**: `Locales`
72
+ - **Erforderlich**: Ja
73
+
74
+ ### Optionale Parameter
75
+
76
+ - `options?: object`
77
+ - **Description**: Konfigurationsobjekt für das URL-Lokalisierungsverhalten.
78
+ - **Type**: `object`
79
+ - **Required**: No (Optional)
80
+
81
+ - `options.locales?: Locales[]`
82
+ - **Description**: Array von unterstützten Locales. Falls nicht angegeben, werden die konfigurierten Locales aus Ihrer Projektkonfiguration verwendet.
83
+ - **Type**: `Locales[]`
84
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#middleware)
85
+
86
+ - `options.defaultLocale?: Locales`
87
+ - **Description**: Das Standard-Locale für die Anwendung. Falls nicht angegeben, wird das konfigurierte Standard-Locale aus Ihrer Projektkonfiguration verwendet.
88
+ - **Type**: `Locales`
89
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#middleware)
90
+
91
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
92
+ - **Description**: Der URL-Routing-Modus für die Locale-Verwaltung. Falls nicht angegeben, wird der konfigurierte Modus aus Ihrer Projektkonfiguration verwendet.
93
+ - **Type**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
94
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md#middleware)
95
+ - **Modes**:
96
+ - `prefix-no-default`: Kein Präfix für Standard-Locale, Präfix für alle anderen
97
+ - `prefix-all`: Präfix für alle Locales einschließlich Standard
98
+ - `no-prefix`: Kein Locale-Präfix in der URL
99
+ - `search-params`: Abfrageparameter für Locale verwenden (z. B. `?locale=fr`)
92
100
 
93
101
  ### Rückgabewert
94
102
 
@@ -49,26 +49,12 @@ Die Funktion `getMultilingualUrls` erzeugt eine Zuordnung mehrsprachiger URLs, i
49
49
 
50
50
  ## Parameter
51
51
 
52
- ## Parameter
52
+ ### Erforderliche Parameter
53
53
 
54
54
  - `url: string`
55
- - **Beschreibung**: Der ursprüngliche URL-String, der mit Gebietsschemata vorangestellt werden soll.
56
- - **Typ**: `string`
57
-
58
- - `locales: Locales[]`
59
- - **Beschreibung**: Optionale Liste der unterstützten Gebietsschemata. Standardmäßig die im Projekt konfigurierten Gebietsschemata.
60
- - **Typ**: `Locales[]`
61
- - **Standard**: `localesDefault`
62
-
63
- - `defaultLocale: Locales`
64
- - **Beschreibung**: Das Standardgebietsschema für die Anwendung. Standardmäßig das im Projekt konfigurierte Standardgebietsschema.
65
- - **Typ**: `Locales`
66
- - **Standard**: `defaultLocaleDefault`
67
-
68
- - `prefixDefault: boolean`
69
- - **Beschreibung**: Ob das Standard-Gebietsschema vorangestellt werden soll. Standardmäßig der im Projekt konfigurierte Wert.
70
- - **Typ**: `boolean`
71
- - **Standard**: `prefixDefaultDefault`
55
+ - **Description**: Die ursprüngliche URL-Zeichenkette, der Locales vorangestellt werden sollen.
56
+ - **Type**: `string`
57
+ - **Required**: Ja
72
58
 
73
59
  ### Optionale Parameter
74
60
 
@@ -24,12 +24,9 @@ history:
24
24
  author: aymericzip
25
25
  ---
26
26
 
27
- ## Parameter
27
+ # useDictionary Hook Documentation
28
28
 
29
- Der Hook akzeptiert zwei Parameter:
30
-
31
- 1. **`dictionary`**: Ein deklariertes Wörterbuchobjekt, das lokalisierte Inhalte für bestimmte Schlüssel enthält.
32
- 2. **`locale`** (optional): Die gewünschte Locale. Standardmäßig wird die Locale des aktuellen Kontexts verwendet, wenn keine angegeben ist.
29
+ Der `useDictionary` Hook ermöglicht es dir, ein Objekt zu verarbeiten, das wie ein Dictionary aussieht (mit Schlüsseln und Inhalten), und Übersetzungen, Aufzählungen usw. darin zu handhaben. Im Gegensatz zu `useIntlayer`, das für die Arbeit mit generierten Dictionary-Deklarationen ausgelegt ist, ist `useDictionary` flexibler und kann mit jedem Objekt verwendet werden, das der Dictionary-Struktur folgt.
33
30
 
34
31
  ## Beispiel für die Verwendung in React
35
32
 
@@ -48,3 +48,18 @@ import "vite-intlayer";
48
48
  | `intlayerProxy` | Entwicklungs-Middleware-Plugin zur Behandlung der Lokalerkennung und des Routings. | - |
49
49
  | `intlayerMiddleware` | (**Deprecated**) Alias für `intlayerProxy`. | - |
50
50
  | `intlayerPrune` | Plugin, das während des Builds ungenutzte Wörterbücher per Tree-Shaking entfernt. | [intlayerPrune](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/packages/vite-intlayer/intlayerPrune.md) |
51
+
52
+ ### Utilities
53
+
54
+ | Export | Description | Related Doc |
55
+ | ---------------------------- | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
56
+ | `createIntlayerProxyHandler` | Gibt eine Framework-agnostische Node.js `(req, res, next)` Middleware mit Locale-Routing-Logik zurück. | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/packages/vite-intlayer/intlayerProxy.md) |
57
+
58
+ ### Typen
59
+
60
+ | Export | Beschreibung |
61
+ | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- |
62
+ | `IntlayerPluginOptions` | Von `intlayer()` akzeptierte Optionen. Erweitert `GetConfigurationOptions` mit `compatCallers` und `proxy`. |
63
+ | `IntlayerProxyPluginOptions` | Von `intlayerProxy()` und `createIntlayerProxyHandler()` akzeptierte Optionen. Umfasst `ignore` und `configOptions`. |
64
+ | `IntlayerCompilerOptions` | Von `intlayerCompiler()` akzeptierte Optionen. Umfasst `configOptions` und `compilerConfig`. |
65
+ | `CompatCallerConfig` | Neu-Export von `@intlayer/babel`. Beschreibt ein compat-adapter caller pattern für die Feldnutzungsanalyse. |
@@ -39,11 +39,126 @@ export default defineConfig({
39
39
  });
40
40
  ```
41
41
 
42
- ## Beschreibung
42
+ ## Optionen
43
43
 
44
- Das Plugin übernimmt folgende Aufgaben:
44
+ ```ts
45
+ import type { IntlayerPluginOptions } from "vite-intlayer";
46
+ ```
47
+
48
+ `IntlayerPluginOptions` erweitert `GetConfigurationOptions` (siehe `@intlayer/config`) mit den folgenden zusätzlichen Feldern:
49
+
50
+ | Option | Type | Default | Beschreibung |
51
+ | --------------- | ------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
52
+ | `compatCallers` | `CompatCallerConfig[]` | `[]` | Zusätzliche Caller-Muster für compat-adapter-Pakete (z. B. `@intlayer/react-i18next`). Wird zur Build-Zeit an den Field-Usage-Analysierer übergeben. |
53
+ | `proxy` | `{ ignore?: (req) => boolean }` | `undefined` | Optionen, die an den gebündelten Locale-Routing-Proxy weitergeleitet werden. Verwenden Sie `ignore`, um bestimmte Pfade (z. B. API-Routen) von Locale-Routing auszuschließen. |
54
+
55
+ Alle anderen Optionen (`override`, `configFile`, …) werden direkt an `getConfiguration()` weitergeleitet.
56
+
57
+ ### Beispiele
58
+
59
+ #### API-Routen von der Locale-Routing ignorieren
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
+ #### Mit einem benutzerdefinierten Konfigurationsdateipfad
78
+
79
+ ```ts
80
+ export default defineConfig({
81
+ plugins: [
82
+ intlayer({
83
+ configFile: "./config/intlayer.config.ts",
84
+ }),
85
+ ],
86
+ });
87
+ ```
88
+
89
+ #### Mit compat-adapter Aufrufern
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
+ ## Was das Plugin macht
105
+
106
+ ### 1. Dictionary preparation
107
+
108
+ Vor dem Start des Builds (und einmal pro Stunde in der Entwicklung) ruft `intlayer` `prepareIntlayer` auf, um alle `.content.ts` Dateien in optimierte JSON-Wörterbücher zu kompilieren, die in `.intlayer/` gespeichert werden.
109
+
110
+ ### 2. Module aliases
111
+
112
+ Das Plugin fügt Vite-Resolve-Aliase hinzu, damit `import { myDict } from 'intlayer/dictionaries/my-dict'` zur kompilierten JSON-Datei auf der Festplatte aufgelöst wird. SSR-Builds verwenden `ssr.noExternal`, um sicherzustellen, dass alle `@intlayer/*`-Packages mit angewendeten Aliasen gebündelt werden.
113
+
114
+ ### 3. Dev-server watcher
115
+
116
+ Im Entwicklungsmodus wird ein `chokidar` Watcher gestartet. Wenn sich eine `.content.ts` Datei ändert, werden die Wörterbücher neu kompiliert und Vites HMR propagiert das Update zum Browser.
117
+
118
+ ### 4. Bundled locale-routing proxy (v9+)
119
+
120
+ Seit Intlayer v9 wird die `intlayerProxy` Middleware automatisch innerhalb von `intlayer()` registriert. Sie verwaltet:
121
+
122
+ - Locale-Erkennung anhand des URL-Präfix, Cookies und `Accept-Language`-Header.
123
+ - 301-Weiterleitungen, wenn die erkannte Locale nicht mit der aktuellen URL übereinstimmt.
124
+ - Interne URL-Umschreibungen, damit das Framework den korrekten `[locale]`-Routenparameter sieht.
125
+
126
+ Der Proxy wird durch `routing.enableProxy` (Standard `true`) in deiner Intlayer-Konfiguration gesteuert. Um ihn vollständig zu deaktivieren:
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
+ Um das Proxy-Verhalten ohne einen separaten `intlayerProxy()`-Aufruf anzupassen, übergebe `proxy`-Optionen an das Haupt-Plugin:
138
+
139
+ ```ts
140
+ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api") } });
141
+ ```
142
+
143
+ Siehe die [intlayerProxy-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/packages/vite-intlayer/intlayerProxy.md) für die vollständige Routing-Verhaltenreferenz.
144
+
145
+ ### 5. Bundled compiler (v9+)
146
+
147
+ Wenn `compiler.enabled` auf `true` gesetzt ist **und** `compiler.output` in Ihrer Intlayer-Konfiguration definiert ist, registriert `intlayer()` `intlayerCompiler` automatisch. Der Compiler extrahiert Inline-Content-Deklarationen, die direkt in Komponentendateien geschrieben sind, und schreibt sie zur Transform-Zeit in Dictionaries. Siehe [intlayerCompiler-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/packages/vite-intlayer/intlayerCompiler.md).
148
+
149
+ ### 6. Build-Optimierungen
150
+
151
+ Während eines Production-Builds fügt das Plugin folgende Komponenten hinzu:
152
+
153
+ - **intlayerOptimize** – Babel-Transformation, die `useIntlayer('key')` → `useDictionary(hash)` umschreibt und direkte JSON-Importe einfügt.
154
+ - **intlayerPrune** – entfernt ungenutzte Content-Felder aus dem Dictionary-JSON.
155
+ - **intlayerMinify** – komprimiert Dictionary-JSON und mangelt optional Feldnamen.
156
+
157
+ Diese sind im Development-Modus inaktiv.
158
+
159
+ ## Veraltete Aliase
45
160
 
46
- 1. **Dictionaries vorbereiten**: Es kompiliert die Dictionaries in optimierte Dateien beim Start des Build- oder Dev-Prozesses.
47
- 2. **Watch-Modus**: Im Entwicklungsmodus überwacht es Änderungen an den Dictionary-Dateien und kompiliert sie automatisch neu.
48
- 3. **Aliases**: Es stellt Aliase zur Verfügung, um in deiner Anwendung auf die Dictionaries zuzugreifen.
49
- 4. **Tree-Shaking**: Es unterstützt Tree-Shaking ungenutzter Übersetzungen über das `intlayerPrune`-Plugin.
161
+ | Veralteter Export | Ersatz |
162
+ | ----------------- | ---------- |
163
+ | `intlayerPlugin` | `intlayer` |
164
+ | `intLayerPlugin` | `intlayer` |
@@ -30,16 +30,89 @@ Das `intlayerPrune` Vite-Plugin wird verwendet, um ungenutzte Wörterbücher aus
30
30
 
31
31
  ## Verwendung
32
32
 
33
+ ### As part of `intlayer()` (recommended)
34
+
35
+ Enable pruning through your Intlayer config and the main plugin handles everything:
36
+
37
+ ```ts
38
+ // intlayer.config.ts
39
+ import { defineConfig } from "intlayer";
40
+
41
+ export default defineConfig({
42
+ build: {
43
+ optimize: true, // aktiviert sowohl Pruning als auch Minifizierung
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
+ Wenn Sie den Plugin-Stack manuell zusammenstellen, teilen `intlayerPrune` und `intlayerMinify` ein `PruneContext`-Objekt, das einmal erstellt und an beide übergeben werden muss:
61
+
33
62
  ```ts
34
63
  // vite.config.ts
35
64
  import { defineConfig } from "vite";
36
- 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();
37
71
 
38
72
  export default defineConfig({
39
- plugins: [intlayer(), intlayerPrune()],
73
+ plugins: [
74
+ intlayerPrune(intlayerConfig, pruneContext),
75
+ intlayerMinify(intlayerConfig, pruneContext), // optional, liest aus demselben Kontext
76
+ ],
40
77
  });
41
78
  ```
42
79
 
43
- ## Beschreibung
80
+ ## Funktionsweise
81
+
82
+ ### 1. Nutzungsanalyse (buildStart)
83
+
84
+ Während `buildStart` scannt das `intlayerOptimize`-Plugin (auch Teil von `intlayer()`) jede Komponenten-Quelldatei in `build.filesList`. Für jeden `useIntlayer('key')`- oder `getIntlayer('key')`-Aufruf wird genau aufgezeichnet, auf welche Felder zugegriffen wird, z. B.:
85
+
86
+ ```ts
87
+ const { title, description } = useIntlayer("myDict");
88
+ // records: myDict → { title, description }
89
+ ```
90
+
91
+ Dies erstellt `pruneContext.fieldUsageMap`, bevor `transform`-Aufrufe ausgeführt werden.
92
+
93
+ ### 2. JSON Pruning (transform, enforce: 'pre')
94
+
95
+ Wenn Vite eine kompilierte Dictionary-JSON-Datei verarbeitet, fängt `intlayerPrune` sie vor Vites integrierter JSON → ESM-Konvertierung ab. Es liest die Feldnutzungs-Map aus `pruneContext` und entfernt alle Content-Felder, die nicht im aufgezeichneten Usage-Set enthalten sind.
96
+
97
+ Zwei Content-Formen werden unterstützt:
98
+
99
+ - **Static dictionaries** — `{ nodeType: "translation", translation: { en: {...}, fr: {...} } }`. Felder werden pro Locale innerhalb von `translation` entfernt.
100
+ - **Dynamic (per-locale) dictionaries** — flach `{ fieldA: ..., fieldB: ... }`. Felder werden auf oberster Ebene entfernt.
101
+
102
+ ### 3. Edge cases
103
+
104
+ Falls die Inhaltsstruktur eines Wörterbuchs nicht erkannt werden kann (z. B. eine ungewöhnliche verschachtelte Form), wird sie zu `pruneContext.dictionariesWithEdgeCases` hinzugefügt und **bleibt unverändert**. Eine Warnung wird protokolliert. `intlayerMinify` überspringt diese Wörterbücher ebenfalls.
105
+
106
+ ### 4. Field-rename map
107
+
108
+ Wenn das Pruning erfolgreich ist, schreibt `intlayerPrune` auch `pruneContext.dictionaryKeyToFieldRenameMap` — eine Zuordnung von ursprünglichen Feldnamen zu kurzen Aliasen. `intlayerMinify` liest diese Map, um Felder in der Ausgabe-JSON umzubenennen, und der Babel-Umbenennungs-Pass von `intlayerOptimize` aktualisiert entsprechend Eigenschaftszugriffe in Quelldateien.
109
+
110
+ ## Aktivierungsbedingungen
111
+
112
+ `intlayerPrune` ist aktiv **nur** wenn alle folgenden Bedingungen erfüllt sind:
113
+
114
+ 1. Der Vite-Befehl ist `build`.
115
+ 2. `build.optimize` ist `true` (oder `undefined`, was standardmäßig `true` für Builds ist).
116
+ 3. `build.purge` ist `true` in Ihrer Intlayer-Konfiguration.
44
117
 
45
- Das Plugin analysiert Ihren Quellcode, um zu ermitteln, welche Wörterbuchschlüssel tatsächlich verwendet werden. Anschließend entfernt es nicht verwendete Inhalte aus den gebündelten Wörterbuchdateien. Das ist besonders nützlich bei großen Projekten mit vielen Wörterbüchern, bei denen in bestimmten Seiten oder Komponenten nur ein Teil verwendet wird.
118
+ Es wird automatisch **deaktiviert**, wenn `editor.enabled` `true` ist, da der Editor den vollständigen Dictionary-Inhalt benötigt.
@@ -374,21 +374,6 @@ curl -fsSL https://intlayer.org/install.sh | sh
374
374
 
375
375
  Das Installationsprogramm lädt eine `docker-compose.yml` und eine `.env` herunter, generiert automatisch die erforderlichen Secrets und führt `docker compose up -d` aus. Alles – das Dashboard, die API, die Datenbank, der Objektspeicher und die transaktionale E-Mail – läuft lokal in Containern.
376
376
 
377
- ### Enthaltene Dienste
378
-
379
- | Dienst | Zweck |
380
- | --------------------------------------- | --------------------------------------------------------------------- |
381
- | **app** (TanStack Start) | Dashboard-Oberfläche auf Port `3000` |
382
- | **backend** (Fastify/Bun) | REST API auf Port `3100` |
383
- | **MongoDB 7** (single-node replica set) | Primäre Datenbank |
384
- | **Redis 7** | Job-Warteschlangen und Caching |
385
- | **MinIO** | S3-kompatibler Objektspeicher (Avatare, Screenshots) |
386
- | **Mailpit** | Lokale SMTP-Senke + Web-UI für transaktionale E-Mails auf Port `8025` |
387
-
388
- Chromium (für die Puppeteer-Screenshot-Generierung verwendet) ist im Backend-Image gebündelt – kein zusätzlicher Container erforderlich.
389
-
390
- ---
391
-
392
377
  ## Migrationshinweise von v8
393
378
 
394
379
  Wenn Sie von v8 upgraden, beachten Sie, dass v9 keine Breaking Changes enthält. Hier sind jedoch die wichtigsten Änderungen:
@@ -80,6 +80,18 @@ Nachdem der Stack gestartet ist, öffnen Sie **http://localhost:3000** und erste
80
80
 
81
81
  ---
82
82
 
83
+ ## Erstmalige Einrichtung
84
+
85
+ Bei einer frischen Instanz (leere Datenbank) leitet Sie das Öffnen des Dashboards zur Seite **`/init`** weiter:
86
+
87
+ 1. Erstellen Sie das erste Konto. Da die users-Collection leer ist, wird dieses Konto automatisch zum **super admin** befördert.
88
+ 2. Eine Verifizierungs-E-Mail wird gesendet (über Resend). E-Mail-Verifizierung ist **erforderlich** — deshalb muss `RESEND_API_KEY` vor dem Start gesetzt werden.
89
+ 3. Klicken Sie auf den Link in der E-Mail und melden Sie sich an.
90
+
91
+ Sobald ein Admin existiert, leitet `/init` zur Standard-Anmeldeseite weiter.
92
+
93
+ ---
94
+
83
95
  ## Dienste
84
96
 
85
97
  | Service | Image | Host port(s) | Zweck |
@@ -99,7 +111,16 @@ Interne Ports (mongo, redis) werden standardmäßig nicht zum Host exponiert.
99
111
 
100
112
  ## Umgebungsvariablen
101
113
 
102
- Der Installer generiert eine gebrauchsfertige `.env`. Die folgende Tabelle beschreibt jede Variable.
114
+ ### Erforderlich
115
+
116
+ | Variable | Beispiel | Beschreibung |
117
+ | ---------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
118
+ | `DB_ID` | `intlayer` | MongoDB Atlas Benutzer |
119
+ | `DB_MDP` | _(dein Passwort)_ | MongoDB Atlas Passwort |
120
+ | `DB_CLUSTER` | `cluster0.xxxxx.mongodb.net` | MongoDB Atlas Cluster Host (verwendet in der `mongodb+srv://` URI) |
121
+ | `BETTER_AUTH_SECRET` | _(generiert)_ | 32-Byte Secret für Session-Signierung |
122
+ | `S3_SECRET_ACCESS_KEY` | _(generiert)_ | Secret für das gebündelte MinIO |
123
+ | `RESEND_API_KEY` | _(dein Schlüssel)_ | Transaktionale E-Mail via Resend. Erforderlich für das erste Setup, es sei denn, du konfigurierst einen globalen SMTP Mailer (siehe [Global mailer](#global-mailer)) |
103
124
 
104
125
  ### Erforderlich (automatisch generiert oder abgefragt)
105
126
 
@@ -141,6 +162,26 @@ Der Installer generiert eine gebrauchsfertige `.env`. Die folgende Tabelle besch
141
162
 
142
163
  ---
143
164
 
165
+ ### Global mailer
166
+
167
+ By default, all transactional emails are sent through Resend using `RESEND_API_KEY`. Self-hosted deployments can instead route **every** email — including non-organization emails such as password resets and magic links — through a global mailer configured with environment variables.
168
+
169
+ Set `MAIL_PROVIDER` to activate it. When unset, the default Resend mailer is used.
170
+
171
+ | Variable | Example | Description |
172
+ | -------------------- | ------------------------------ | ----------------------------------------------------------------- |
173
+ | `MAIL_PROVIDER` | `smtp` | Global transport: `smtp` or `resend`. Leave unset to use defaults |
174
+ | `MAIL_FROM` | `Intlayer <no-reply@acme.com>` | Sender header. Accepts a bare address or `Name <email>` format |
175
+ | `MAIL_SMTP_HOST` | `smtp.acme.com` | SMTP host (required when `MAIL_PROVIDER=smtp`) |
176
+ | `MAIL_SMTP_PORT` | `587` | SMTP port (defaults to `587`) |
177
+ | `MAIL_SMTP_SECURE` | `false` | Implicit TLS. Set `true` for port `465` |
178
+ | `MAIL_SMTP_USER` | _(your user)_ | SMTP username (optional; omit for unauthenticated relays) |
179
+ | `MAIL_SMTP_PASSWORD` | _(your password)_ | SMTP password |
180
+
181
+ > Precedence: an organization's own mailer (configured from the **Organization** dashboard) takes priority over the global mailer, which in turn takes priority over the default Resend key.
182
+
183
+ ---
184
+
144
185
  ## Ihr Intlayer-Projekt verbinden
145
186
 
146
187
  Sobald der Stack läuft, verweisen Sie Ihr Projekt auf das selbst gehostete Backend und Dashboard anstelle von `intlayer.org`.
@@ -259,47 +300,11 @@ docker run --rm \
259
300
 
260
301
  ---
261
302
 
262
- ## Verwendung eines Reverse-Proxys (Nginx / Caddy)
263
-
264
- Für Produktionsbereitstellungen platzieren Sie einen Reverse-Proxy vor den App- und Backend-Containern, anstatt sie direkt zu exponieren.
303
+ ## Einschränkungen
265
304
 
266
- ### Nginx-Beispiel
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
- Aktualisieren Sie die folgenden `.env`-Variablen, um sie an Ihre öffentlichen Domains anzupassen:
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
- > `VITE_*`-Variablen werden zur Build-Zeit in das Dashboard-Image integriert. Wenn Sie diese nach dem Bau des Images ändern, müssen Sie das `app`-Image neu erstellen (`docker compose build app`) oder die Laufzeitkonfigurationsinjektion verwenden.
305
+ - **MongoDB muss extern sein (Atlas).** Das Backend verbindet sich nur über `mongodb+srv://` (zusammengesetzt aus `DB_ID` / `DB_MDP` / `DB_CLUSTER`), daher kann ein einfaches `mongodb://host:27017` — einschließlich des eigenen `mongod` des Containers — nicht verwendet werden. Stellen Sie einen MongoDB Atlas Cluster bereit.
306
+ - **Keine benutzerdefinierte Domain.** Alle browsergestützten `VITE_*` URLs werden zur Build-Zeit in die App inline eingefügt, und das veröffentlichte Image wird mit `localhost` Werten ausgeliefert. Das Dashboard muss unter `http://localhost:3000` aufgerufen werden; das Serving auf einer öffentlichen Domain würde ein Neubau des Images mit den eingebetteten Ziel-URLs erfordern und wird out-of-the-box nicht unterstützt.
307
+ - **E-Mail erfordert einen funktionierenden Mailer.** Das Setup beim ersten Durchlauf erzwingt eine E-Mail-Verifizierung, daher muss entweder `RESEND_API_KEY` oder ein [globaler SMTP Mailer](#global-mailer) (`MAIL_PROVIDER=smtp` + `MAIL_SMTP_*`) konfiguriert sein. Nach der ersten Anmeldung eines Administrators kann jede Organisation auch ihren eigenen SMTP oder Resend Mailer vom Dashboard aus konfigurieren.
303
308
 
304
309
  ---
305
310
 
@@ -315,15 +320,6 @@ docker compose logs mongo
315
320
  docker compose logs redis
316
321
  ```
317
322
 
318
- ### Dashboard kann die API nicht erreichen
319
-
320
- Stellen Sie sicher, dass `VITE_BACKEND_URL` der URL entspricht, unter der das Backend vom **Browser** (nicht vom Docker-Netzwerk) aus erreichbar ist. Wenn Sie den Backend-Port geändert oder einen Reverse-Proxy hinzugefügt haben, erstellen Sie das Dashboard-Image neu:
321
-
322
- ```sh
323
- docker compose build app
324
- docker compose up -d app
325
- ```
326
-
327
323
  ### E-Mail wird nicht gesendet
328
324
 
329
325
  Standardmäßig werden alle ausgehenden E-Mails von Mailpit abgefangen. Öffnen Sie `http://localhost:8025`, um gesendete Nachrichten anzuzeigen. Um echte E-Mails zu senden, setzen Sie `MAIL_PROVIDER=resend` und `RESEND_API_KEY=<Ihr-Schlüssel>` in `.env` und starten Sie dann das Backend neu: