@intlayer/docs 9.1.3 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  3. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  4. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  5. package/blog/fr/i18n_meaning.md +7 -1
  6. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  7. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  9. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  11. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  12. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  13. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  14. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  15. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  16. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  17. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  18. package/blog/tr/intlayer_with_react-intl.md +3 -1
  19. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  20. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  22. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  23. package/blog/zh/intlayer_with_i18next.md +87 -28
  24. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  25. package/blog/zh/intlayer_with_next-intl.md +88 -28
  26. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  27. package/blog/zh/intlayer_with_react-intl.md +88 -27
  28. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  29. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  30. package/dist/cjs/generated/blog.entry.cjs +27 -27
  31. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  32. package/dist/cjs/generated/docs.entry.cjs +234 -214
  33. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  34. package/dist/cjs/generated/frequentQuestions.entry.cjs +17 -17
  35. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  36. package/dist/cjs/generated/legal.entry.cjs +2 -2
  37. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  38. package/dist/esm/generated/blog.entry.mjs +27 -27
  39. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  40. package/dist/esm/generated/docs.entry.mjs +234 -214
  41. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  42. package/dist/esm/generated/frequentQuestions.entry.mjs +17 -17
  43. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  44. package/dist/esm/generated/legal.entry.mjs +2 -2
  45. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  46. package/dist/types/generated/docs.entry.d.ts +1 -0
  47. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  48. package/docs/ar/analytics.md +222 -0
  49. package/docs/ar/autoFill.md +28 -9
  50. package/docs/ar/configuration.md +25 -8
  51. package/docs/ar/dictionary/file.md +3 -1
  52. package/docs/ar/dictionary/nesting.md +47 -30
  53. package/docs/ar/formatters.md +148 -193
  54. package/docs/ar/intlayer_CMS.md +152 -0
  55. package/docs/ar/intlayer_with_angular_21.md +9 -9
  56. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  57. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  58. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  59. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  60. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  61. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  62. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  63. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  64. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  65. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  66. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  67. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  68. package/docs/ar/releases/v9.md +0 -37
  69. package/docs/ar/self_hosting.md +46 -49
  70. package/docs/bn/configuration.md +25 -8
  71. package/docs/bn/intlayer_with_angular_21.md +9 -9
  72. package/docs/cs/configuration.md +25 -8
  73. package/docs/cs/intlayer_with_angular_21.md +9 -9
  74. package/docs/de/analytics.md +222 -0
  75. package/docs/de/autoFill.md +28 -9
  76. package/docs/de/configuration.md +25 -8
  77. package/docs/de/dictionary/file.md +3 -1
  78. package/docs/de/dictionary/nesting.md +47 -31
  79. package/docs/de/formatters.md +208 -334
  80. package/docs/de/intlayer_CMS.md +66 -15
  81. package/docs/de/intlayer_with_angular_21.md +9 -9
  82. package/docs/de/intlayer_with_nestjs.md +11 -7
  83. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  84. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  85. package/docs/de/intlayer_with_solid_start.md +1078 -0
  86. package/docs/de/intlayer_with_vite+vue.md +1 -3
  87. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  88. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  89. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  90. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  91. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  92. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  93. package/docs/de/releases/v9.md +0 -15
  94. package/docs/de/self_hosting.md +46 -50
  95. package/docs/en/cli/doc-review.md +13 -2
  96. package/docs/en/configuration.md +24 -15
  97. package/docs/en/intlayer_with_angular_21.md +9 -9
  98. package/docs/en/intlayer_with_solid_start.md +1091 -0
  99. package/docs/en/intlayer_with_vite+solid.md +12 -0
  100. package/docs/en-GB/analytics.md +222 -0
  101. package/docs/en-GB/autoFill.md +26 -7
  102. package/docs/en-GB/configuration.md +25 -8
  103. package/docs/en-GB/dictionary/file.md +2 -0
  104. package/docs/en-GB/dictionary/nesting.md +64 -205
  105. package/docs/en-GB/formatters.md +146 -181
  106. package/docs/en-GB/intlayer_CMS.md +152 -0
  107. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  108. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  109. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  110. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  111. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  112. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  113. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  114. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  115. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  116. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  117. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  118. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  119. package/docs/en-GB/self_hosting.md +60 -49
  120. package/docs/es/analytics.md +222 -0
  121. package/docs/es/autoFill.md +28 -9
  122. package/docs/es/configuration.md +24 -7
  123. package/docs/es/dictionary/file.md +3 -1
  124. package/docs/es/dictionary/nesting.md +47 -30
  125. package/docs/es/formatters.md +114 -168
  126. package/docs/es/intlayer_CMS.md +35 -10
  127. package/docs/es/intlayer_with_angular_21.md +9 -9
  128. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  129. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  130. package/docs/es/intlayer_with_solid_start.md +1078 -0
  131. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  132. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  133. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  134. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  135. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  136. package/docs/es/releases/v9.md +0 -15
  137. package/docs/es/self_hosting.md +46 -49
  138. package/docs/fr/analytics.md +222 -0
  139. package/docs/fr/autoFill.md +27 -8
  140. package/docs/fr/configuration.md +25 -8
  141. package/docs/fr/dictionary/file.md +2 -0
  142. package/docs/fr/dictionary/nesting.md +37 -184
  143. package/docs/fr/formatters.md +95 -236
  144. package/docs/fr/intlayer_CMS.md +66 -15
  145. package/docs/fr/intlayer_with_angular_21.md +9 -9
  146. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  147. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  148. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  149. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  150. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  151. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/fr/releases/v9.md +0 -15
  155. package/docs/fr/self_hosting.md +46 -49
  156. package/docs/hi/analytics.md +222 -0
  157. package/docs/hi/autoFill.md +28 -9
  158. package/docs/hi/configuration.md +25 -8
  159. package/docs/hi/dictionary/file.md +3 -1
  160. package/docs/hi/dictionary/nesting.md +47 -30
  161. package/docs/hi/formatters.md +233 -334
  162. package/docs/hi/how_works_intlayer.md +3 -1
  163. package/docs/hi/intlayer_CMS.md +152 -0
  164. package/docs/hi/intlayer_with_angular_21.md +9 -9
  165. package/docs/hi/intlayer_with_nestjs.md +11 -7
  166. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  167. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  168. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  169. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  170. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  171. package/docs/hi/intlayer_with_vite+react.md +48 -41
  172. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  173. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  174. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  175. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  176. package/docs/hi/packages/next-intlayer/t.md +33 -1
  177. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  178. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  179. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  180. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  181. package/docs/hi/plugins/sync-json.md +9 -9
  182. package/docs/hi/releases/v9.md +0 -15
  183. package/docs/hi/self_hosting.md +38 -51
  184. package/docs/id/analytics.md +223 -0
  185. package/docs/id/configuration.md +25 -8
  186. package/docs/id/dictionary/nesting.md +37 -184
  187. package/docs/id/formatters.md +208 -305
  188. package/docs/id/intlayer_CMS.md +164 -0
  189. package/docs/id/intlayer_with_angular_21.md +9 -9
  190. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  191. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  192. package/docs/id/intlayer_with_solid_start.md +1078 -0
  193. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  194. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  195. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  196. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  197. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  198. package/docs/id/releases/v9.md +12 -0
  199. package/docs/id/self_hosting.md +61 -50
  200. package/docs/it/analytics.md +222 -0
  201. package/docs/it/autoFill.md +27 -8
  202. package/docs/it/configuration.md +25 -8
  203. package/docs/it/dictionary/file.md +3 -1
  204. package/docs/it/dictionary/nesting.md +47 -30
  205. package/docs/it/formatters.md +114 -168
  206. package/docs/it/intlayer_CMS.md +66 -15
  207. package/docs/it/intlayer_with_angular_21.md +9 -9
  208. package/docs/it/intlayer_with_nestjs.md +11 -7
  209. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  210. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  211. package/docs/it/intlayer_with_solid_start.md +1078 -0
  212. package/docs/it/intlayer_with_vite+vue.md +1 -3
  213. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  214. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  215. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  216. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  217. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  218. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  219. package/docs/it/releases/v9.md +0 -15
  220. package/docs/it/self_hosting.md +60 -49
  221. package/docs/ja/analytics.md +222 -0
  222. package/docs/ja/autoFill.md +28 -9
  223. package/docs/ja/configuration.md +25 -8
  224. package/docs/ja/dictionary/content_file.md +15 -7
  225. package/docs/ja/dictionary/file.md +3 -1
  226. package/docs/ja/dictionary/nesting.md +47 -30
  227. package/docs/ja/formatters.md +133 -187
  228. package/docs/ja/intlayer_visual_editor.md +3 -1
  229. package/docs/ja/intlayer_with_angular_21.md +6 -6
  230. package/docs/ja/intlayer_with_nestjs.md +2 -12
  231. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  232. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  233. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  234. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  235. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  236. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  237. package/docs/ja/mcp_server.md +3 -9
  238. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  239. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  240. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  241. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  242. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  243. package/docs/ja/releases/v9.md +12 -0
  244. package/docs/ja/self_hosting.md +46 -50
  245. package/docs/ko/analytics.md +222 -0
  246. package/docs/ko/autoFill.md +28 -9
  247. package/docs/ko/configuration.md +25 -8
  248. package/docs/ko/dictionary/file.md +3 -1
  249. package/docs/ko/dictionary/nesting.md +47 -30
  250. package/docs/ko/formatters.md +133 -187
  251. package/docs/ko/intlayer_with_angular_21.md +9 -9
  252. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  253. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  256. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  257. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  258. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  259. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  260. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  261. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  264. package/docs/ko/releases/v9.md +12 -0
  265. package/docs/ko/self_hosting.md +60 -49
  266. package/docs/nl/configuration.md +25 -8
  267. package/docs/nl/intlayer_with_angular_21.md +9 -9
  268. package/docs/pl/analytics.md +220 -0
  269. package/docs/pl/configuration.md +25 -8
  270. package/docs/pl/dictionary/nesting.md +47 -30
  271. package/docs/pl/formatters.md +208 -305
  272. package/docs/pl/intlayer_CMS.md +152 -0
  273. package/docs/pl/intlayer_with_angular_21.md +9 -9
  274. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  275. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  276. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  277. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  278. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  279. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  280. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  281. package/docs/pl/releases/v9.md +0 -15
  282. package/docs/pl/self_hosting.md +60 -49
  283. package/docs/pt/analytics.md +222 -0
  284. package/docs/pt/configuration.md +25 -8
  285. package/docs/pt/dictionary/file.md +3 -1
  286. package/docs/pt/dictionary/nesting.md +47 -30
  287. package/docs/pt/formatters.md +112 -168
  288. package/docs/pt/intlayer_CMS.md +66 -15
  289. package/docs/pt/intlayer_with_angular_21.md +9 -9
  290. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  291. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  292. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  293. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  294. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  295. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  296. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  297. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  298. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  299. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  300. package/docs/pt/releases/v9.md +0 -15
  301. package/docs/pt/self_hosting.md +60 -49
  302. package/docs/ru/analytics.md +222 -0
  303. package/docs/ru/autoFill.md +27 -8
  304. package/docs/ru/configuration.md +25 -8
  305. package/docs/ru/dictionary/file.md +3 -1
  306. package/docs/ru/dictionary/nesting.md +64 -205
  307. package/docs/ru/formatters.md +108 -128
  308. package/docs/ru/intlayer_with_angular_21.md +9 -9
  309. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  310. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  311. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  312. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  313. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  314. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  315. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  316. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  317. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  318. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  319. package/docs/ru/releases/v9.md +0 -15
  320. package/docs/ru/self_hosting.md +60 -49
  321. package/docs/tr/analytics.md +222 -0
  322. package/docs/tr/autoFill.md +28 -9
  323. package/docs/tr/configuration.md +25 -8
  324. package/docs/tr/dictionary/file.md +2 -0
  325. package/docs/tr/dictionary/nesting.md +47 -30
  326. package/docs/tr/formatters.md +144 -190
  327. package/docs/tr/intlayer_CMS.md +152 -0
  328. package/docs/tr/intlayer_with_angular_21.md +9 -9
  329. package/docs/tr/intlayer_with_nestjs.md +2 -12
  330. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  331. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  332. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  333. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  334. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  335. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  336. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  337. package/docs/tr/self_hosting.md +47 -50
  338. package/docs/uk/analytics.md +222 -0
  339. package/docs/uk/configuration.md +25 -8
  340. package/docs/uk/dictionary/nesting.md +47 -30
  341. package/docs/uk/formatters.md +128 -185
  342. package/docs/uk/intlayer_CMS.md +152 -0
  343. package/docs/uk/intlayer_with_angular_21.md +9 -9
  344. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  345. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  346. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  347. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  348. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  349. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  350. package/docs/uk/releases/v9.md +0 -15
  351. package/docs/uk/self_hosting.md +60 -50
  352. package/docs/ur/configuration.md +25 -8
  353. package/docs/ur/intlayer_with_angular_21.md +9 -9
  354. package/docs/vi/analytics.md +222 -0
  355. package/docs/vi/configuration.md +24 -8
  356. package/docs/vi/dictionary/nesting.md +37 -184
  357. package/docs/vi/formatters.md +208 -309
  358. package/docs/vi/intlayer_CMS.md +164 -0
  359. package/docs/vi/intlayer_with_angular_21.md +9 -9
  360. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  361. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  362. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  363. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  364. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  365. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  366. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  367. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  368. package/docs/vi/plugins/sync-json.md +6 -6
  369. package/docs/vi/releases/v9.md +12 -0
  370. package/docs/vi/self_hosting.md +61 -50
  371. package/docs/zh/CI_CD.md +4 -0
  372. package/docs/zh/analytics.md +222 -0
  373. package/docs/zh/autoFill.md +28 -9
  374. package/docs/zh/configuration.md +24 -8
  375. package/docs/zh/dictionary/file.md +2 -0
  376. package/docs/zh/dictionary/nesting.md +47 -30
  377. package/docs/zh/formatters.md +140 -188
  378. package/docs/zh/intlayer_CMS.md +164 -0
  379. package/docs/zh/intlayer_with_analog.md +193 -3
  380. package/docs/zh/intlayer_with_angular_19.md +272 -3
  381. package/docs/zh/intlayer_with_angular_21.md +7 -7
  382. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  383. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  384. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  385. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  386. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  387. package/docs/zh/intlayer_with_nuxt.md +182 -7
  388. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  389. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  390. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  391. package/docs/zh/intlayer_with_storybook.md +260 -3
  392. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  393. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  394. package/docs/zh/intlayer_with_tanstack.md +731 -20
  395. package/docs/zh/intlayer_with_vanilla.md +314 -4
  396. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  397. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  398. package/docs/zh/intlayer_with_vite+react.md +324 -45
  399. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  400. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  401. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  402. package/docs/zh/mcp_server.md +3 -9
  403. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  404. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  405. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  406. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  407. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  408. package/docs/zh/releases/v9.md +12 -0
  409. package/docs/zh/self_hosting.md +60 -50
  410. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  411. package/package.json +6 -6
  412. package/src/generated/blog.entry.ts +27 -27
  413. package/src/generated/docs.entry.ts +234 -214
  414. package/src/generated/frequentQuestions.entry.ts +17 -17
  415. package/src/generated/legal.entry.ts +2 -2
@@ -93,9 +93,306 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
93
93
 
94
94
  ---
95
95
 
96
- ### (可选) 8 步:渲染 Markdown HTML 内容
96
+ ## Vite Vanilla JS 应用中设置 Intlayer 的分步指南
97
97
 
98
- Intlayer 支持 `md()` 和 `html()` 内容声明。在纯 JS 中,编译后的输出通过 `innerHTML` 作为原始 HTML 插入。
98
+ <Steps>
99
+
100
+ <Step number={1} title="安装依赖">
101
+
102
+ 使用 npm 安装必要的包:
103
+
104
+ ```bash packageManager="npm"
105
+ npx intlayer init --interactive
106
+ ```
107
+
108
+ ```bash packageManager="pnpm"
109
+ pnpm dlx intlayer@canary init --interactive
110
+ ```
111
+
112
+ ```bash packageManager="yarn"
113
+ yarn dlx intlayer@canary init --interactive
114
+ ```
115
+
116
+ ```bash packageManager="bun"
117
+ bunx intlayer@canary init --interactive
118
+ ```
119
+
120
+ > `--interactive` 标志是可选的。如果你是 AI 代理,请使用 `intlayer-cli init`。
121
+
122
+ > 此命令将检测你的环境并安装所需的包。例如:
123
+
124
+ ```bash packageManager="npm"
125
+ npm install intlayer vanilla-intlayer
126
+ npm install vite-intlayer --save-dev
127
+ ```
128
+
129
+ ```bash packageManager="pnpm"
130
+ pnpm add intlayer vanilla-intlayer
131
+ pnpm add vite-intlayer --save-dev
132
+ ```
133
+
134
+ ```bash packageManager="yarn"
135
+ yarn add intlayer vanilla-intlayer
136
+ yarn add vite-intlayer --save-dev
137
+ ```
138
+
139
+ ```bash packageManager="bun"
140
+ bun add intlayer vanilla-intlayer
141
+ bun add vite-intlayer --dev
142
+ ```
143
+
144
+ - **intlayer**
145
+ 核心包,提供国际化工具,用于配置管理、翻译、[内容声明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)、代码转换和 [CLI 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md)。
146
+
147
+ - **vanilla-intlayer**
148
+ 将 Intlayer 与纯 JavaScript / TypeScript 应用集成的包。它提供一个 pub/sub 单例 (`IntlayerClient`) 和基于回调的辅助函数 (`useIntlayer`、`useLocale` 等),使你的应用的任何部分都可以对语言环境变化做出反应,而无需依赖 UI 框架。
149
+
150
+ - **vite-intlayer**
151
+ 包含用于将 Intlayer 与 [Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production) 集成的 Vite 插件,以及用于检测用户首选语言环境、管理 cookie 和处理 URL 重定向的中间件。
152
+
153
+ </Step>
154
+
155
+ <Step number={2} title="项目配置">
156
+
157
+ 创建一个配置文件以配置应用的语言:
158
+
159
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
160
+ import { Locales, type IntlayerConfig } from "intlayer";
161
+
162
+ const config: IntlayerConfig = {
163
+ internationalization: {
164
+ locales: [
165
+ Locales.ENGLISH,
166
+ Locales.FRENCH,
167
+ Locales.SPANISH,
168
+ // 你的其他语言环境
169
+ ],
170
+ defaultLocale: Locales.ENGLISH,
171
+ },
172
+ };
173
+
174
+ export default config;
175
+ ```
176
+
177
+ > 通过此配置文件,你可以设置本地化 URL、中间件重定向、cookie 名称、内容声明的位置和扩展名、禁用控制台中的 Intlayer 日志等。有关可用参数的完整列表,请参考 [配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
178
+
179
+ </Step>
180
+
181
+ <Step number={3} title="在你的 Vite 配置中集成 Intlayer">
182
+
183
+ 将 intlayer 插件添加到你的配置中。
184
+
185
+ ```typescript fileName="vite.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
186
+ import { defineConfig } from "vite";
187
+ import { intlayer } from "vite-intlayer";
188
+
189
+ // https://vitejs.dev/config/
190
+ export default defineConfig({
191
+ plugins: [
192
+ intlayer({
193
+ proxy: {
194
+ ignore: (req) => req.url?.startsWith("/api"),
195
+ },
196
+ }),
197
+ ],
198
+ });
199
+ ```
200
+
201
+ > `intlayer()` Vite 插件用于将 Intlayer 与 Vite 集成。它确保内容声明文件的构建,并在开发模式下监视它们。它在 Vite 应用中定义 Intlayer 环境变量。此外,它提供别名以优化性能。
202
+
203
+ </Step>
204
+
205
+ <Step number={4} title="在你的入口点引导 Intlayer">
206
+
207
+ 在渲染任何内容**之前**调用 `installIntlayer()`,以便全局语言环境单例已准备好。
208
+
209
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
210
+ import { installIntlayer } from "vanilla-intlayer";
211
+
212
+ // 必须在渲染任何 i18n 内容之前调用。
213
+ installIntlayer();
214
+
215
+ // 导入并运行你的应用模块。
216
+ import "./app.js";
217
+ ```
218
+
219
+ 如果你还使用 `md()` 内容声明(Markdown),请也安装 markdown 渲染器:
220
+
221
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
222
+ import { installIntlayer, installIntlayerMarkdown } from "vanilla-intlayer";
223
+
224
+ installIntlayer();
225
+ installIntlayerMarkdown();
226
+
227
+ import "./app.js";
228
+ ```
229
+
230
+ </Step>
231
+
232
+ <Step number={5} title="声明你的内容">
233
+
234
+ 创建并管理内容声明以存储翻译:
235
+
236
+ ```typescript fileName="src/app.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
237
+ import { insert, t, type Dictionary } from "intlayer";
238
+
239
+ const appContent = {
240
+ key: "app",
241
+ content: {
242
+ title: "Vite + Vanilla",
243
+
244
+ viteLogoLabel: t({
245
+ zh: "Vite 标志",
246
+ en: "Vite Logo",
247
+ fr: "Logo Vite",
248
+ es: "Logo Vite",
249
+ }),
250
+
251
+ count: insert(
252
+ t({
253
+ zh: "计数是 {{count}}",
254
+ en: "count is {{count}}",
255
+ fr: "le compte est {{count}}",
256
+ es: "el recuento es {{count}}",
257
+ })
258
+ ),
259
+
260
+ readTheDocs: t({
261
+ zh: "点击 Vite 标志以了解更多信息",
262
+ en: "Click on the Vite logo to learn more",
263
+ fr: "Cliquez sur le logo Vite pour en savoir plus",
264
+ es: "Haga clic en el logotipo de Vite para obtener más información",
265
+ }),
266
+ },
267
+ } satisfies Dictionary;
268
+
269
+ export default appContent;
270
+ ```
271
+
272
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
273
+ {
274
+ "$schema": "https://intlayer.org/schema.json",
275
+ "key": "app",
276
+ "content": {
277
+ "title": "Vite + Vanilla",
278
+ "viteLogoLabel": {
279
+ "nodeType": "translation",
280
+ "translation": {
281
+ "zh": "Vite 标志",
282
+ "en": "Vite Logo",
283
+ "fr": "Logo Vite",
284
+ "es": "Logo Vite"
285
+ }
286
+ },
287
+ "count": {
288
+ "nodeType": "insertion",
289
+ "insertion": {
290
+ "nodeType": "translation",
291
+ "translation": {
292
+ "zh": "计数是 {{count}}",
293
+ "en": "count is {{count}}",
294
+ "fr": "le compte est {{count}}",
295
+ "es": "el recuento es {{count}}"
296
+ }
297
+ }
298
+ },
299
+ "readTheDocs": {
300
+ "nodeType": "translation",
301
+ "translation": {
302
+ "zh": "点击 Vite 标志以了解更多信息",
303
+ "en": "Click on the Vite logo to learn more",
304
+ "fr": "Cliquez sur le logo Vite pour en savoir plus",
305
+ "es": "Haga clic en el logotipo de Vite para obtener más información"
306
+ }
307
+ }
308
+ }
309
+ }
310
+ ```
311
+
312
+ > 你的内容声明可以在应用的任何地方定义,只要它们包含在 `contentDir` 目录中(默认情况下为 `./src`)。并匹配内容声明文件扩展名(默认为 `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`)。
313
+ >
314
+ > 有关更多详细信息,请参考 [内容声明文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)。
315
+
316
+ </Step>
317
+
318
+ <Step number={6} title="在你的 JavaScript 中使用 Intlayer">
319
+
320
+ `vanilla-intlayer` 镜像了 `react-intlayer` 的表面 API:`useIntlayer(key, locale?)` 直接返回翻译的内容。在结果上链接 `.onChange()` 以订阅语言环境变化 - 这是 React 重新渲染的显式等效物。
321
+
322
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
323
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
324
+
325
+ installIntlayer();
326
+
327
+ // 获取当前语言环境的初始内容。
328
+ // 链接 .onChange() 以在语言环境每次变化时收到通知。
329
+ const content = useIntlayer("app").onChange((newContent) => {
330
+ // 重新渲染或仅修补受影响的 DOM 节点
331
+ document.querySelector<HTMLHeadingElement>("h1")!.textContent = String(
332
+ newContent.title
333
+ );
334
+ document.querySelector<HTMLParagraphElement>(".read-the-docs")!.textContent =
335
+ String(newContent.readTheDocs);
336
+ });
337
+
338
+ // 初始渲染
339
+ document.querySelector<HTMLHeadingElement>("h1")!.textContent = String(
340
+ content.title
341
+ );
342
+ document.querySelector<HTMLParagraphElement>(".read-the-docs")!.textContent =
343
+ String(content.readTheDocs);
344
+ ```
345
+
346
+ > 通过在 `String()` 中包装叶值来将其作为字符串访问,这调用节点的 `toString()` 方法并返回翻译的文本。
347
+ >
348
+ > 当你需要用于原生 HTML 属性的值时(例如 `alt`、`aria-label`),直接使用 `.value`:
349
+ >
350
+ > ```typescript
351
+ > img.alt = content.viteLogoLabel.value;
352
+ > ```
353
+
354
+ </Step>
355
+
356
+ <Step number={7} title="更改你的内容的语言" isOptional={true}>
357
+
358
+ 要更改你的内容的语言,请使用 `useLocale` 公开的 `setLocale` 函数。
359
+
360
+ ```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
361
+ import { getLocaleName } from "intlayer";
362
+ import { useLocale } from "vanilla-intlayer";
363
+
364
+ export function setupLocaleSwitcher(container: HTMLElement): () => void {
365
+ const { locale, availableLocales, setLocale, subscribe } = useLocale();
366
+
367
+ const select = document.createElement("select");
368
+ select.setAttribute("aria-label", "Language");
369
+
370
+ const render = (currentLocale: string) => {
371
+ select.innerHTML = availableLocales
372
+ .map(
373
+ (loc) =>
374
+ `<option value="${loc}"${loc === currentLocale ? " selected" : ""}>
375
+ ${getLocaleName(loc)}
376
+ </option>`
377
+ )
378
+ .join("");
379
+ };
380
+
381
+ render(locale);
382
+ container.appendChild(select);
383
+
384
+ select.addEventListener("change", () => setLocale(select.value as any));
385
+
386
+ // 保持下拉菜单与其他地方的语言环境变化同步
387
+ return subscribe((newLocale) => render(newLocale));
388
+ }
389
+ ```
390
+
391
+ </Step>
392
+
393
+ <Step number={8} title="渲染 Markdown 和 HTML 内容" isOptional={true}>
394
+
395
+ Intlayer 支持 `md()` 和 `html()` 内容声明。在 vanilla JS 中,编译的输出通过 `innerHTML` 作为原始 HTML 插入。
99
396
 
100
397
  ```typescript fileName="src/app.content.ts" contentDeclarationFormat=["typescript", "esm", "cjs"]
101
398
  import { md, t, type Dictionary } from "intlayer";
@@ -106,6 +403,7 @@ const appContent = {
106
403
  // ...
107
404
  editNote: md(
108
405
  t({
406
+ zh: "编辑 `src/main.ts` 并保存以测试 **HMR**",
109
407
  en: "Edit `src/main.ts` and save to test **HMR**",
110
408
  fr: "Modifiez `src/main.ts` et enregistrez pour tester **HMR**",
111
409
  es: "Edite `src/main.ts` y guarde para probar **HMR**",
@@ -138,10 +436,10 @@ document.querySelector<HTMLDivElement>(".edit-note")!.innerHTML =
138
436
  ```
139
437
 
140
438
  > [!TIP]
141
- > `String(content.editNote)` `IntlayerNode` 上调用 `toString()`,该方法返回原始 Markdown 字符串。将其传递给 `compileMarkdown` 以获取 HTML 字符串,然后通过 `innerHTML` 设置它。
439
+ > `String(content.editNote)` 调用 `IntlayerNode` 上的 `toString()`,它返回原始 Markdown 字符串。将其传递给 `compileMarkdown` 以获取 HTML 字符串,然后通过 `innerHTML` 设置它。
142
440
 
143
441
  > [!WARNING]
144
- > 仅对受信任的内容使用 `innerHTML`。如果 Markdown 来自用户输入,请先对其进行消毒(例如使用 DOMPurify)。您可以动态安装消毒渲染器:
442
+ > 仅对受信任的内容使用 `innerHTML`。如果 markdown 来自用户输入,请先进行清理(例如使用 DOMPurify)。你可以动态安装清理渲染器:
145
443
  >
146
444
  > ```typescript
147
445
  > import { installIntlayerMarkdownDynamic } from "vanilla-intlayer";
@@ -152,6 +450,201 @@ document.querySelector<HTMLDivElement>(".edit-note")!.innerHTML =
152
450
  > });
153
451
  > ```
154
452
 
453
+ </Step>
454
+
455
+ <Step number={9} title="向你的应用添加本地化路由" isOptional={true}>
456
+
457
+ 要为每种语言创建唯一的路由(对 SEO 有用),你可以在 Vite 配置中使用 `intlayerProxy` 进行服务器端语言环境检测。
458
+
459
+ 首先,将 `intlayerProxy` 添加到你的 Vite 配置:
460
+
461
+ > 请注意,要在生产中使用 `intlayerProxy`,你需要将 `vite-intlayer` 从 `devDependencies` 移到 `dependencies`。
462
+
463
+ > 从 Intlayer v9 开始,`intlayerProxy()` 直接捆绑到 `intlayer()` 插件中,并通过 `routing.enableProxy` 选项默认启用(默认为 `true`)。单独注册如下所示现在是可选的 — 为了向后兼容和需要控制插件顺序的设置而保留。设置 `routing.enableProxy: false` 以选择退出。有关更多信息,请参见 [v9 发布说明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/releases/v9.md)。
464
+
465
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
466
+ import { defineConfig } from "vite";
467
+ import { intlayer } from "vite-intlayer";
468
+
469
+ export default defineConfig({
470
+ plugins: [
471
+ intlayer({
472
+ proxy: {
473
+ ignore: (req) => req.url?.startsWith("/api"),
474
+ },
475
+ }),
476
+ ],
477
+ });
478
+ ```
479
+
480
+ </Step>
481
+
482
+ <Step number={10} title="当语言环境更改时更改 URL" isOptional={true}>
483
+
484
+ 要在语言环境更改时更新浏览器 URL,请在安装 Intlayer 后调用 `useRewriteURL()`:
485
+
486
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
487
+ import { installIntlayer, useRewriteURL } from "vanilla-intlayer";
488
+
489
+ installIntlayer();
490
+
491
+ // 立即重写 URL,并在随后的每次语言环境更改时重写。
492
+ // 返回一个用于清理的取消订阅函数。
493
+ const stopRewriteURL = useRewriteURL();
494
+ ```
495
+
496
+ </Step>
497
+
498
+ <Step number={11} title="切换 HTML 语言和方向属性" isOptional={true}>
499
+
500
+ 更新 `<html>` 标签的 `lang` 和 `dir` 属性以匹配当前语言环境,以实现可访问性和 SEO。
501
+
502
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
503
+ import { getHTMLTextDir } from "intlayer";
504
+ import { installIntlayer, useLocale } from "vanilla-intlayer";
505
+
506
+ installIntlayer();
507
+
508
+ useLocale({
509
+ onLocaleChange: (locale) => {
510
+ document.documentElement.lang = locale;
511
+ document.documentElement.dir = getHTMLTextDir(locale);
512
+ },
513
+ });
514
+ ```
515
+
516
+ </Step>
517
+
518
+ <Step number={12} title="按语言环境延迟加载字典" isOptional={true}>
519
+
520
+ 对于大型应用,你可能希望将每个语言环境的字典拆分为其自己的块。使用 `useDictionaryDynamic` 以及 Vite 的动态 `import()`:
521
+
522
+ ```typescript fileName="src/app.ts" codeFormat="typescript"
523
+ import { installIntlayer, useDictionaryDynamic } from "vanilla-intlayer";
524
+
525
+ installIntlayer();
526
+
527
+ const unsubscribe = useDictionaryDynamic(
528
+ {
529
+ en: () => import("../.intlayer/dictionaries/en/app.mjs"),
530
+ fr: () => import("../.intlayer/dictionaries/fr/app.mjs"),
531
+ es: () => import("../.intlayer/dictionaries/es/app.mjs"),
532
+ },
533
+ "app"
534
+ ).onChange((content) => {
535
+ document.querySelector("h1")!.textContent = String(content.title);
536
+ });
537
+ ```
538
+
539
+ > 每个语言环境的包仅在该语言环境变为活跃时才被获取,结果被缓存 - 随后对同一语言环境的切换是即时的。
540
+
541
+ </Step>
542
+
543
+ <Step number={13} title="提取你的组件的内容" isOptional={true}>
544
+
545
+ 如果你有现有的 codebase,转换数千个文件可能会耗时。
546
+
547
+ 为了简化此过程,Intlayer 提供了一个 [编译器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) / [提取器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 来转换你的组件并提取内容。
548
+
549
+ 要设置它,你可以在 `intlayer.config.ts` 文件中添加一个 `compiler` 部分:
550
+
551
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
552
+ import { type IntlayerConfig } from "intlayer";
553
+
554
+ const config: IntlayerConfig = {
555
+ // ... 配置的其余部分
556
+ compiler: {
557
+ /**
558
+ * 指示是否应启用编译器。
559
+ */
560
+ enabled: true,
561
+
562
+ /**
563
+ * 定义输出文件路径
564
+ */
565
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
566
+
567
+ /**
568
+ * 指示转换后是否应保存组件。
569
+ *
570
+ * - 如果为 `true`,编译器将在磁盘中重写组件文件。所以转换将是永久的,编译器将跳过下一个过程的转换。这样,编译器可以转换应用,然后可以被移除。
571
+ *
572
+ * - 如果为 `false`,编译器将仅在构建输出中注入 `useIntlayer()` 函数调用,并保持基础 codebase 完整。转换将仅在内存中进行。
573
+ */
574
+ saveComponents: false,
575
+
576
+ /**
577
+ * 字典键前缀
578
+ */
579
+ dictionaryKeyPrefix: "",
580
+ },
581
+ };
582
+
583
+ export default config;
584
+ ```
585
+
586
+ <Tabs>
587
+ <Tab value='Extract command'>
588
+
589
+ 运行提取器来转换你的组件并提取内容
590
+
591
+ ```bash packageManager="npm"
592
+ npx intlayer extract
593
+ ```
594
+
595
+ ```bash packageManager="pnpm"
596
+ pnpm intlayer extract
597
+ ```
598
+
599
+ ```bash packageManager="yarn"
600
+ yarn intlayer extract
601
+ ```
602
+
603
+ ```bash packageManager="bun"
604
+ bun x intlayer extract
605
+ ```
606
+
607
+ </Tab>
608
+ <Tab value='Babel compiler'>
609
+
610
+ > 从 v9 开始,`intlayerCompiler` 包含在 `intlayer` 插件中。所以你不需要手动添加它。
611
+
612
+ 更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
613
+
614
+ ```ts fileName="vite.config.ts"
615
+ import { defineConfig } from "vite";
616
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
617
+
618
+ export default defineConfig({
619
+ plugins: [
620
+ intlayer(),
621
+ intlayerCompiler(), // 添加编译器插件
622
+ ],
623
+ });
624
+ ```
625
+
626
+ ```bash packageManager="npm"
627
+ npm run build # 或 npm run dev
628
+ ```
629
+
630
+ ```bash packageManager="pnpm"
631
+ pnpm run build # 或 pnpm run dev
632
+ ```
633
+
634
+ ```bash packageManager="yarn"
635
+ yarn build # 或 yarn dev
636
+ ```
637
+
638
+ ```bash packageManager="bun"
639
+ bun run build # 或 bun run dev
640
+ ```
641
+
642
+ </Tab>
643
+ </Tabs>
644
+ </Step>
645
+
646
+ </Steps>
647
+
155
648
  ### (可选)站点地图与 robots.txt(构建时生成)
156
649
 
157
650
  Intlayer 提供 `generateSitemap` 与 `getMultilingualUrls`,可将面向爬虫的多语言 `sitemap.xml` 和 `robots.txt` 格式化并自动写入 `public/`。实践中在 Vite **之前**运行小型 Node 脚本(例如 npm 的 `predev` / `prebuild`)即可在构建或开发时生成这些文件。
@@ -252,20 +252,14 @@ bun x intlayer init mcp
252
252
 
253
253
  按照[官方文档](https://modelcontextprotocol.io/quickstart/user)来配置 MCP server 在 Claude Code 中。
254
254
 
255
- ## 通过命令行界面使用 MCP 服务器
255
+ ### 本地服务器 (stdio) (推荐)
256
256
 
257
- 您也可以直接从命令行运行 Intlayer MCP 服务器,用于测试、调试或与其他工具集成。
257
+ 要通过 stdio 将 Intlayer MCP 服务器连接到 Claude Code:
258
258
 
259
259
  ```bash
260
- # 全局安装
261
- npm install -g @intlayer/mcp
262
-
263
- # 或直接使用 npx(推荐)
264
- npx @intlayer/mcp
260
+ claude mcp add intlayer npx -y @intlayer/mcp
265
261
  ```
266
262
 
267
- ---
268
-
269
263
  ### 远程服务器 (Streamable HTTP)
270
264
 
271
265
  要使用 Streamable HTTP (SSE) 将 Intlayer MCP 服务器连接到 Claude Code:
@@ -66,30 +66,32 @@ getLocalizedUrl(
66
66
  - **Type**: `Locales`
67
67
  - **Required**: Yes
68
68
 
69
- ## 参数
70
-
71
- - `url: string`
72
- - **描述**:需要添加语言环境前缀的原始 URL 字符串。
73
- - **类型**:`string`
74
-
75
- - `currentLocale: Locales`
76
- - **描述**:当前正在本地化的语言环境。
77
- - **类型**:`Locales`
78
-
79
- - `locales: Locales[]`
80
- - **描述**:可选的支持语言环境数组。默认情况下,提供项目中配置的语言环境。
81
- - **类型**:`Locales[]`
82
- - **默认值**:[`项目配置`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#middleware)
83
-
84
- - `defaultLocale: Locales`
85
- - **描述**:应用程序的默认语言环境。默认情况下,提供项目中配置的默认语言环境。
86
- - **类型**:`Locales`
87
- - **默认值**:[`项目配置`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#middleware)
88
-
89
- - `prefixDefault: boolean`
90
- - **描述**:是否为默认语言环境的 URL 添加前缀。默认情况下,提供项目中配置的值。
91
- - **类型**:`boolean`
92
- - **默认值**:[`项目配置`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#middleware)
69
+ ### 可选参数
70
+
71
+ - `options?: object`
72
+ - **Description**: URL 本地化行为的配置对象。
73
+ - **Type**: `object`
74
+ - **Required**: No (Optional)
75
+
76
+ - `options.locales?: Locales[]`
77
+ - **Description**: 支持的 locale 数组。如果未提供,将使用项目配置中配置的 locale。
78
+ - **Type**: `Locales[]`
79
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#middleware)
80
+
81
+ - `options.defaultLocale?: Locales`
82
+ - **Description**: 应用程序的默认 locale。如果未提供,将使用项目配置中配置的默认 locale。
83
+ - **Type**: `Locales`
84
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#middleware)
85
+
86
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
87
+ - **Description**: 用于 locale 处理的 URL 路由模式。如果未提供,将使用项目配置中配置的模式。
88
+ - **Type**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
89
+ - **Default**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#middleware)
90
+ - **Modes**:
91
+ - `prefix-no-default`: 默认 locale 无前缀,其他 locale 有前缀
92
+ - `prefix-all`: 所有 locale(包括默认 locale)都有前缀
93
+ - `no-prefix`: URL 中无 locale 前缀
94
+ - `search-params`: 使用查询参数表示 locale(例如 `?locale=fr`)
93
95
 
94
96
  ### 返回值
95
97
 
@@ -50,26 +50,12 @@ getMultilingualUrls(
50
50
 
51
51
  ## 参数
52
52
 
53
- ## 参数
53
+ ### 必需参数
54
54
 
55
55
  - `url: string`
56
- - **描述**:需要添加语言环境前缀的原始 URL 字符串。
57
- - **类型**:`string`
58
-
59
- - `locales: Locales[]`
60
- - **描述**:可选的支持语言环境数组。默认为项目中配置的语言环境。
61
- - **类型**:`Locales[]`
62
- - **默认值**:`localesDefault`
63
-
64
- - `defaultLocale: Locales`
65
- - **描述**:应用的默认语言环境。默认为项目中配置的默认语言环境。
66
- - **类型**:`Locales`
67
- - **默认值**:`defaultLocaleDefault`
68
-
69
- - `prefixDefault: boolean`
70
- - **描述**:是否为默认语言环境添加前缀。默认为项目中配置的值。
71
- - **类型**:`boolean`
72
- - **默认值**:`prefixDefaultDefault`
56
+ - **描述**: 原始 URL 字符串,用于添加区域前缀。
57
+ - **类型**: `string`
58
+ - **必需**: 是
73
59
 
74
60
  ### 可选参数
75
61
 
@@ -37,6 +37,26 @@ npm install vite-intlayer
37
37
 
38
38
  导入:
39
39
 
40
+ ```ts
41
+ import { ... } from "vite-intlayer";
42
+ ```
43
+
44
+ | 导出 | 描述 | 相关文档 |
45
+ | -------------------------- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
46
+ | `intlayer` | 主要 Vite 插件。准备字典、配置别名、启动开发服务器监听器,以及(从 v9 开始)捆绑代理和编译器。 | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayer.md) |
47
+ | `intlayerPlugin` | (**已弃用**) `intlayer` 的别名。 | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayer.md) |
48
+ | `intLayerPlugin` | (**已弃用**) `intlayer` 的别名。 | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayer.md) |
49
+ | `intlayerProxy` | 本地化路由中间件插件(检测、重定向、重写)。从 v9 开始,它捆绑在 `intlayer()` 内部 — 仅在需要时单独注册。 | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerProxy.md) |
50
+ | `intlayerMiddleware` | (**已弃用**) `intlayerProxy` 的别名。 | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerProxy.md) |
51
+ | `intLayerMiddlewarePlugin` | (**已弃用**) `intlayerProxy` 的别名。 | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerProxy.md) |
52
+ | `intlayerCompiler` | 从组件中提取内联内容声明并将其写入字典。从 v9 开始,它捆绑在 `intlayer()` 内部。 | [intlayerCompiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerCompiler.md) |
53
+ | `intlayerPrune` | 从生产 bundle 中树摇未使用的字典字段。 | [intlayerPrune](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerPrune.md) |
54
+ | `intlayerMinify` | 压缩编译后的字典 JSON 文件,并可选地破坏字段名。 | [intlayerMinify](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerMinify.md) |
55
+
56
+ ### 插件
57
+
58
+ 导入:
59
+
40
60
  ```tsx
41
61
  import "vite-intlayer";
42
62
  ```
@@ -48,3 +68,12 @@ import "vite-intlayer";
48
68
  | `intlayerProxy` | 开发时的中间件插件,用于处理语言检测和路由。 | - |
49
69
  | `intlayerMiddleware` | (**已弃用**) `intlayerProxy` 的别名。 | - |
50
70
  | `intlayerPrune` | 用于在构建期间对未使用的字典进行 tree-shake 和修剪的插件。 | [intlayerPrune](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/vite-intlayer/intlayerPrune.md) |
71
+
72
+ ### 类型
73
+
74
+ | 导出 | 描述 |
75
+ | ---------------------------- | -------------------------------------------------------------------------------------------------- |
76
+ | `IntlayerPluginOptions` | `intlayer()` 接受的选项。扩展 `GetConfigurationOptions`,添加 `compatCallers` 和 `proxy`。 |
77
+ | `IntlayerProxyPluginOptions` | `intlayerProxy()` 和 `createIntlayerProxyHandler()` 接受的选项。包括 `ignore` 和 `configOptions`。 |
78
+ | `IntlayerCompilerOptions` | `intlayerCompiler()` 接受的选项。包括 `configOptions` 和 `compilerConfig`。 |
79
+ | `CompatCallerConfig` | 从 `@intlayer/babel` 重新导出。描述用于字段使用分析的 compat-adapter 调用者模式。 |