@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
@@ -94,33 +94,192 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
94
94
 
95
95
  ---
96
96
 
97
- ### 第5步:在您的组件中使用 Intlayer
97
+ ## SvelteKit 应用中设置 Intlayer 的分步指南
98
98
 
99
- 前缀来访问其响应式值(例如,`$content.title`)。
99
+ 查看 GitHub 上的[应用模板](https://github.com/aymericzip/intlayer-sveltekit-template)。
100
+
101
+ 要开始,创建一个新的 SvelteKit 项目。以下是我们将创建的最终结构:
102
+
103
+ ```bash
104
+ .
105
+ ├── intlayer.config.ts
106
+ ├── package.json
107
+ ├── src
108
+ │ ├── app.d.ts
109
+ │ ├── app.html
110
+ │ ├── hooks.server.ts
111
+ │ ├── lib
112
+ │ │ ├── getLocale.ts
113
+ │ │ ├── LocaleSwitcher.svelte
114
+ │ │ └── LocalizedLink.svelte
115
+ │ ├── params
116
+ │ │ └── locale.ts
117
+ │ └── routes
118
+ │ ├── [[locale=locale]]
119
+ │ │ ├── +layout.svelte
120
+ │ │ ├── +layout.ts
121
+ │ │ ├── +page.svelte
122
+ │ │ ├── +page.ts
123
+ │ │ ├── about
124
+ │ │ │ ├── +page.svelte
125
+ │ │ │ ├── +page.ts
126
+ │ │ │ └── page.content.ts
127
+ │ │ ├── Counter.content.ts
128
+ │ │ ├── Counter.svelte
129
+ │ │ ├── Header.content.ts
130
+ │ │ ├── Header.svelte
131
+ │ │ ├── home.content.ts
132
+ │ │ └── layout.content.ts
133
+ │ ├── +layout.svelte
134
+ │ └── layout.css
135
+ ├── static
136
+ │ ├── favicon.svg
137
+ │ └── robots.txt
138
+ ├── svelte.config.js
139
+ ├── tsconfig.json
140
+ └── vite.config.ts
141
+ ```
142
+
143
+ <Steps>
144
+
145
+ <Step number={1} title="安装依赖项">
146
+
147
+ 使用 npm 安装必要的包:
148
+
149
+ ```bash packageManager="npm"
150
+ npx intlayer init --interactive
151
+ ```
152
+
153
+ ```bash packageManager="pnpm"
154
+ pnpm dlx intlayer@canary init --interactive
155
+ ```
156
+
157
+ ```bash packageManager="yarn"
158
+ yarn dlx intlayer@canary init --interactive
159
+ ```
160
+
161
+ ```bash packageManager="bun"
162
+ bunx intlayer@canary init --interactive
163
+ ```
164
+
165
+ > `--interactive` 标志是可选的。如果你是 AI 代理,请使用 `intlayer-cli init`。
166
+
167
+ > 此命令将检测你的环境并安装所需的包。例如:
168
+
169
+ ```bash packageManager="npm"
170
+ npm install intlayer svelte-intlayer
171
+ npm install vite-intlayer --save-dev
172
+ ```
173
+
174
+ ```bash packageManager="pnpm"
175
+ pnpm add intlayer svelte-intlayer
176
+ pnpm add vite-intlayer --save-dev
177
+ ```
178
+
179
+ ```bash packageManager="yarn"
180
+ yarn add intlayer svelte-intlayer
181
+ yarn add vite-intlayer --save-dev
182
+ ```
183
+
184
+ ```bash packageManager="bun"
185
+ bun add intlayer svelte-intlayer
186
+ bun add vite-intlayer --save-dev
187
+ ```
188
+
189
+ - **intlayer**:核心 i18n 包。
190
+ - **svelte-intlayer**:为 Svelte/SvelteKit 提供上下文提供者和 store。
191
+ - **vite-intlayer**:Vite 插件,用于将内容声明与构建过程集成。
192
+
193
+ </Step>
194
+
195
+ <Step number={2} title="配置你的项目">
196
+
197
+ 在项目根目录创建一个配置文件:
198
+
199
+ ```typescript fileName="intlayer.config.ts"
200
+ import { Locales, type IntlayerConfig } from "intlayer";
201
+
202
+ const config: IntlayerConfig = {
203
+ internationalization: {
204
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
205
+ defaultLocale: Locales.ENGLISH,
206
+ },
207
+ };
208
+
209
+ export default config;
210
+ ```
211
+
212
+ </Step>
213
+
214
+ <Step number={3} title="在 Vite 配置中集成 Intlayer">
215
+
216
+ 更新你的 `vite.config.ts` 以包含 Intlayer 插件。此插件处理你的内容文件的转译。
217
+
218
+ ```typescript fileName="vite.config.ts"
219
+ import { sveltekit } from "@sveltejs/kit/vite";
220
+ import { defineConfig } from "vite";
221
+ import { intlayer } from "vite-intlayer";
222
+
223
+ export default defineConfig({
224
+ plugins: [intlayer(), sveltekit()], // 顺序很重要,Intlayer 应放在 SvelteKit 之前
225
+ });
226
+ ```
227
+
228
+ </Step>
229
+
230
+ <Step number={4} title="声明你的内容">
231
+
232
+ 在你的 `src` 文件夹的任何地方创建内容声明文件(例如 `src/lib/content` 或在你的组件旁边)。这些文件使用 `t()` 函数为每个语言环境定义应用的可翻译内容。
233
+
234
+ ```ts fileName="src/features/hero/hero.content.ts" contentDeclarationFormat=["typescript", "esm", "cjs"]
235
+ import { t, type Dictionary } from "intlayer";
236
+
237
+ const heroContent = {
238
+ key: "hero-section",
239
+ content: {
240
+ title: t({
241
+ zh: "欢迎使用 SvelteKit",
242
+ en: "Welcome to SvelteKit",
243
+ fr: "Bienvenue sur SvelteKit",
244
+ es: "Bienvenido a SvelteKit",
245
+ }),
246
+ },
247
+ } satisfies Dictionary;
248
+
249
+ export default heroContent;
250
+ ```
251
+
252
+ </Step>
253
+
254
+ <Step number={5} title="在你的组件中使用 Intlayer">
255
+
256
+ 现在你可以在任何 Svelte 组件中使用 `useIntlayer` 函数。它返回一个响应式 store,在语言环境改变时自动更新。该函数将自动遵守当前的语言环境(在 SSR 和客户端导航期间)。
257
+
258
+ > **注意:** `useIntlayer` 返回一个 Svelte store,因此你需要使用 `$` 前缀来访问其响应式值(例如 `$content.title`)。
100
259
 
101
260
  ```svelte fileName="src/lib/components/Component.svelte"
102
261
  <script lang="ts">
103
262
  import { useIntlayer } from "svelte-intlayer";
104
263
 
105
- // "hero-section" 对应于步骤4中定义的键
264
+ // "hero-section" 对应于第 4 步中定义的 key
106
265
  const content = useIntlayer("hero-section");
107
266
  </script>
108
267
 
109
- <!-- 以简单内容渲染内容 -->
268
+ <!-- 将内容呈现为简单内容 -->
110
269
  <h1>{$content.title}</h1>
111
- <!-- 使用编辑器渲染可编辑内容 -->
270
+ <!-- 使用编辑器呈现可编辑的内容 -->
112
271
  <h1>{@const Title = $content.title}<Title /></h1>
113
- <!-- 以字符串形式渲染内容 -->
272
+ <!-- 将内容呈现为字符串 -->
114
273
  <div aria-label={$content.title.value}></div>
115
274
  <div aria-label={$content.title.toString()}></div>
116
275
  <div aria-label={String($content.title)}></div>
117
276
  ```
118
277
 
119
- <Steps>
278
+ </Step>
120
279
 
121
- <Step number={6} title="设置路由">
280
+ <Step number={6} title="设置路由" isOptional={true}>
122
281
 
123
- 以下步骤展示了如何在 SvelteKit 中设置基于语言环境的路由。这允许您的 URL 包含语言环境前缀(例如 `/en/about`,`/fr/about`),以提升 SEO 和用户体验。
282
+ 以下步骤展示如何在 SvelteKit 中设置基于语言环境的路由。这允许你的 URL 包含语言环境前缀(例如 `/en/about`、`/fr/about`),以获得更好的 SEO 和用户体验。
124
283
 
125
284
  ```bash
126
285
  .
@@ -128,26 +287,241 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
128
287
  ├── app.d.ts # 定义语言环境类型
129
288
  ├── hooks.server.ts # 管理语言环境路由
130
289
  ├── lib
131
-    └── getLocale.ts # 从请求头、cookies 检查语言环境
290
+ └── getLocale.ts # 从 header、cookies 检查语言环境
132
291
  ├── params
133
-    └── locale.ts # 定义语言环境参数
292
+ └── locale.ts # 定义语言环境参数
134
293
  └── routes
135
- ├── [[locale=locale]] # 使用路由组包裹以设置语言环境
136
-    ├── +layout.svelte # 路由的本地布局
137
-    ├── +layout.ts
138
-    ├── +page.svelte
139
-    ├── +page.ts
140
-    └── about
141
-       ├── +page.svelte
142
-       └── +page.ts
143
- └── +layout.svelte # 字体和全局样式的根布局
294
+ ├── [[locale=locale]] # 用路由组包装以设置语言环境
295
+ ├── +layout.svelte # 路由的本地布局
296
+ ├── +layout.ts
297
+ ├── +page.svelte
298
+ ├── +page.ts
299
+ └── about
300
+ ├── +page.svelte
301
+ └── +page.ts
302
+ └── +layout.svelte # 用于字体和全局样式的根布局
144
303
  ```
145
304
 
146
305
  </Step>
147
306
 
148
- <Step number={8} title="国际化链接">
307
+ <Step number={7} title="处理服务器端语言环境检测">
308
+
309
+ 在 SvelteKit 中,服务器需要知道用户的语言环境以在 SSR 期间呈现正确的内容。我们使用 `hooks.server.ts` 从 URL 或 cookies 检测语言环境。
310
+
311
+ 创建或修改 `src/hooks.server.ts`:
312
+
313
+ ```typescript fileName="src/hooks.server.ts"
314
+ import type { Handle } from "@sveltejs/kit";
315
+ import { getLocalizedUrl } from "intlayer";
316
+ import { getLocale } from "$lib/getLocale";
317
+
318
+ export const handle: Handle = async ({ event, resolve }) => {
319
+ const detectedLocale = getLocale(event);
320
+
321
+ // 检查当前路径是否已以语言环境开头(例如 /fr、/en)
322
+ const pathname = event.url.pathname;
323
+ const targetPathname = getLocalizedUrl(pathname, detectedLocale);
324
+
325
+ // 如果 URL 中没有语言环境(例如用户访问 "/"),则重定向他们
326
+ if (targetPathname !== pathname) {
327
+ return new Response(undefined, {
328
+ headers: { Location: targetPathname },
329
+ status: 307, // 临时重定向
330
+ });
331
+ }
332
+
333
+ return resolve(event, {
334
+ transformPageChunk: ({ html }) => html.replace("%lang%", detectedLocale),
335
+ });
336
+ };
337
+ ```
338
+
339
+ 然后,创建一个 helper 来从请求事件获取用户的语言环境:
340
+
341
+ ```typescript fileName="src/lib/getLocale.ts"
342
+ import {
343
+ configuration,
344
+ getLocaleFromStorage,
345
+ localeDetector,
346
+ type Locale,
347
+ } from "intlayer";
348
+ import type { RequestEvent } from "@sveltejs/kit";
349
+
350
+ /**
351
+ * 从请求事件获取用户的语言环境。
352
+ * 此函数在 `src/hooks.server.ts` 中的 `handle` hook 中使用。
353
+ *
354
+ * 它首先尝试从 Intlayer storage(cookies 或自定义 headers)获取语言环境。
355
+ * 如果找不到语言环境,它会回退到浏览器的 "Accept-Language" 协商。
356
+ *
357
+ * @param event - 来自 SvelteKit 的请求事件
358
+ * @returns 用户的语言环境
359
+ */
360
+ export const getLocale = (event: RequestEvent): Locale => {
361
+ const defaultLocale = configuration?.internationalization?.defaultLocale;
362
+
363
+ // 尝试从 Intlayer storage(Cookies 或 headers)获取语言环境
364
+ const storedLocale = getLocaleFromStorage({
365
+ // SvelteKit cookies 访问
366
+ getCookie: (name: string) => event.cookies.get(name) ?? null,
367
+ // SvelteKit headers 访问
368
+ getHeader: (name: string) => event.request.headers.get(name) ?? null,
369
+ });
370
+
371
+ if (storedLocale) {
372
+ return storedLocale;
373
+ }
374
+
375
+ // 回退到浏览器 "Accept-Language" 协商
376
+ const negotiatorHeaders: Record<string, string> = {};
377
+
378
+ // 将 SvelteKit Headers 对象转换为普通的 Record<string, string>
379
+ event.request.headers.forEach((value, key) => {
380
+ negotiatorHeaders[key] = value;
381
+ });
382
+
383
+ // 从 `Accept-Language` header 检查语言环境
384
+ const userFallbackLocale = localeDetector(negotiatorHeaders);
385
+
386
+ if (userFallbackLocale) {
387
+ return userFallbackLocale;
388
+ }
389
+
390
+ // 如果未找到匹配项,返回默认语言环境
391
+ return defaultLocale;
392
+ };
393
+ ```
394
+
395
+ > `getLocaleFromStorage` 将根据你的配置从 header 或 cookie 检查语言环境。有关更多详情,请参阅[配置](https://intlayer.org/doc/configuration)。
396
+
397
+ > `localeDetector` 函数将处理 `Accept-Language` header 并返回最佳匹配。
398
+
399
+ 如果语言环境未配置,我们想返回 404 错误。为了简化这一点,我们可以创建一个 `match` 函数来检查语言环境是否有效:
400
+
401
+ ```ts fileName="/src/params/locale.ts"
402
+ import { defaultLocale, locales, type Locale } from "intlayer";
403
+ export const match = (param: Locale = defaultLocale): boolean =>
404
+ locales.includes(param);
405
+ ```
406
+
407
+ > **注意:** 确保你的 `src/app.d.ts` 包含语言环境定义:
408
+ >
409
+ > ```typescript
410
+ > declare global {
411
+ > namespace App {
412
+ > interface Locals {
413
+ > locale: import("intlayer").Locale;
414
+ > }
415
+ > }
416
+ > }
417
+ > ```
418
+
419
+ 对于 `+layout.svelte` 文件,我们可以删除所有内容,只保留与 i18n 无关的静态内容:
420
+
421
+ ```svelte fileName="src/+layout.svelte"
422
+ <script lang="ts">
423
+ import './layout.css';
424
+
425
+ let { children } = $props();
426
+ </script>
427
+
428
+ <div class="app">
429
+ {@render children()}
430
+ </div>
431
+
432
+ <style>
433
+ .app {
434
+ /* */
435
+ }
436
+ </style>
437
+ ```
149
438
 
150
- 为了SEO,建议在路由前加上语言前缀(例如 `/en/about`,`/fr/about`)。该组件会自动为任何链接添加当前语言的前缀。
439
+ 然后,在 `[[locale=locale]]` 组下创建一个新页面和布局:
440
+
441
+ ```ts fileName="src/routes/[[locale=locale]]/+layout.ts"
442
+ import type { Load } from "@sveltejs/kit";
443
+ import { defaultLocale, type Locale } from "intlayer";
444
+
445
+ export const prerender = true;
446
+
447
+ // 使用通用 Load 类型
448
+ export const load: Load = ({ params }) => {
449
+ const locale: Locale = (params.locale as Locale) ?? defaultLocale;
450
+
451
+ return {
452
+ locale,
453
+ };
454
+ };
455
+ ```
456
+
457
+ ```svelte fileName="src/routes/[[locale=locale]]/+layout.svelte"
458
+ <script lang="ts">
459
+ import type { Snippet } from 'svelte';
460
+ import { useIntlayer, setupIntlayer } from "svelte-intlayer";
461
+ import Header from './Header.svelte';
462
+ import type { LayoutData } from './$types';
463
+
464
+ let { children, data }: { children: Snippet, data: LayoutData } = $props();
465
+
466
+ // 使用路由中的语言环境初始化 Intlayer
467
+ $effect(() => {
468
+ setupIntlayer(data.locale);
469
+ });
470
+ // 使用布局内容字典
471
+ const layoutContent = useIntlayer('layout');
472
+ </script>
473
+
474
+ <Header />
475
+
476
+ <main>
477
+ {@render children()}
478
+ </main>
479
+
480
+ <footer>
481
+ <p>
482
+ {$layoutContent.footer.prefix.value}{' '}
483
+ <a href="https://svelte.dev/docs/kit">{$layoutContent.footer.linkLabel.value}</a>{' '}
484
+ {$layoutContent.footer.suffix.value}
485
+ </p>
486
+ </footer>
487
+
488
+ <style>
489
+ /* */
490
+ </style>
491
+ ```
492
+
493
+ ```ts fileName="src/routes/[[locale=locale]]/+page.ts"
494
+ export const prerender = true;
495
+ ```
496
+
497
+ ```svelte fileName="src/routes/[[locale=locale]]/+page.svelte"
498
+ <script lang="ts">
499
+ import { useIntlayer } from "svelte-intlayer";
500
+
501
+ // 使用 home 内容字典
502
+ const homeContent = useIntlayer('home');
503
+ </script>
504
+
505
+ <svelte:head>
506
+ <title>{$homeContent.title.value}</title>
507
+ </svelte:head>
508
+
509
+ <section>
510
+ <h1>
511
+ {$homeContent.title}
512
+ </h1>
513
+ </section>
514
+
515
+ <style>
516
+ /* */
517
+ </style>
518
+ ```
519
+
520
+ </Step>
521
+
522
+ <Step number={8} title="国际化链接" isOptional={true}>
523
+
524
+ 为了 SEO,建议用语言环境前缀你的路由(例如 `/en/about`、`/fr/about`)。此组件自动用当前语言环境前缀任何链接。
151
525
 
152
526
  ```svelte fileName="src/lib/components/LocalizedLink.svelte"
153
527
  <script lang="ts">
@@ -157,7 +531,7 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
157
531
  let { href = "" } = $props();
158
532
  const { locale } = useLocale();
159
533
 
160
- // 辅助函数:为URL添加当前语言前缀
534
+ // 使用当前语言环境前缀 URL 的 Helper
161
535
  $: localizedHref = getLocalizedUrl(href, $locale);
162
536
  </script>
163
537
 
@@ -166,7 +540,7 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
166
540
  </a>
167
541
  ```
168
542
 
169
- 如果你使用 SvelteKit `goto`,可以用相同的逻辑结合 `getLocalizedUrl` 来跳转到本地化的URL:
543
+ 如果你使用 SvelteKit 中的 `goto`,你可以使用相同的逻辑与 `getLocalizedUrl` 来导航到本地化的 URL:
170
544
 
171
545
  ```typescript
172
546
  import { goto } from "$app/navigation";
@@ -180,7 +554,7 @@ goto(localizedPath); // 根据语言环境导航到 /en/about 或 /fr/about
180
554
 
181
555
  </Step>
182
556
 
183
- <Step number={9} title="语言切换器">
557
+ <Step number={9} title="语言切换器" isOptional={true}>
184
558
 
185
559
  为了允许用户切换语言,更新 URL。
186
560
 
@@ -206,7 +580,7 @@ goto(localizedPath); // 根据语言环境导航到 /en/about 或 /fr/about
206
580
  href={getLocalizedUrl($page.url.pathname, localeEl)}
207
581
  onclick={(e) => {
208
582
  e.preventDefault();
209
- setLocale(localeEl); // 将在存储中设置语言环境并触发 onLocaleChange
583
+ setLocale(localeEl); // 将在 store 中设置语言环境并触发 onLocaleChange
210
584
  }}
211
585
  class:active={$locale === localeEl}
212
586
  >
@@ -223,9 +597,11 @@ goto(localizedPath); // 根据语言环境导航到 /en/about 或 /fr/about
223
597
 
224
598
  </Step>
225
599
 
226
- <Step number={10} title="添加后端代理">
600
+ <Step number={10} title="添加后端代理" isOptional={true}>
227
601
 
228
- 要为您的 SvelteKit 应用添加后端代理,可以使用 `vite-intlayer` 插件提供的 `intlayerProxy` 函数。该插件将根据 URL、Cookie 和浏览器语言偏好自动检测用户的最佳语言环境。
602
+ 要将后端代理添加到你的 SvelteKit 应用,你可以使用 `vite-intlayer` 插件提供的 `intlayerProxy` 函数。此插件将根据 URL、cookies 和浏览器语言首选项自动检测用户的最佳语言环境。
603
+
604
+ > 自 Intlayer v9 起,`intlayerProxy()` 直接捆绑到 `intlayer()` 插件中,并通过 `routing.enableProxy` 选项(默认值为 `true`)默认启用。如下所示单独注册现在是可选的 — 为了向后兼容以及需要控制插件顺序的设置而保留。设置 `routing.enableProxy: false` 来选择不使用。查看 [v9 发布说明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/releases/v9.md)。
229
605
 
230
606
  ```ts fileName="vite.config.ts"
231
607
  import { defineConfig } from "vite";
@@ -241,19 +617,19 @@ export default defineConfig({
241
617
  },
242
618
  }),
243
619
  sveltekit(),
244
- ],],
620
+ ],
245
621
  });
246
622
  ```
247
623
 
248
624
  </Step>
249
625
 
250
- <Step number={11} title="设置 intlayer 编辑器 / CMS">
626
+ <Step number={11} title="设置 intlayer 编辑器 / CMS" isOptional={true}>
251
627
 
252
- 要设置 intlayer 编辑器,您必须遵循 [intlayer 编辑器文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)。
628
+ 要设置 intlayer 编辑器,你必须遵循 [intlayer 编辑器文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)。
253
629
 
254
- 要设置 intlayer CMS,您必须遵循 [intlayer CMS 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)。
630
+ 要设置 intlayer CMS,你必须遵循 [intlayer CMS 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)。
255
631
 
256
- 要能够可视化 intlayer 编辑器选择器,您必须在 intlayer 内容中使用组件语法。
632
+ 为了能够可视化 intlayer 编辑器选择器,你必须在你的 intlayer 内容中使用组件语法。
257
633
 
258
634
  ```svelte fileName="Component.svelte"
259
635
  <script lang="ts">
@@ -264,32 +640,32 @@ export default defineConfig({
264
640
 
265
641
  <div>
266
642
 
267
- <!-- 以简单内容方式渲染内容 -->
643
+ <!-- 将内容呈现为简单内容 -->
268
644
  <h1>{$content.title}</h1>
269
645
 
270
- <!-- 以组件方式渲染内容(编辑器所需) -->
646
+ <!-- 将内容呈现为组件(编辑器需要) -->
271
647
  {@const Component = $content.component}<Component />
272
648
  </div>
273
649
  ```
274
650
 
275
651
  </Step>
276
652
 
277
- <Step number={1} title="提取组件内容" isOptional={true}>
653
+ <Step number={12} title="提取你的组件内容" isOptional={true}>
278
654
 
279
- 如果您有现有的代码库,转换数千个文件可能会非常耗时。
655
+ 如果你有现有的 codebase,转换数千个文件可能很耗时。
280
656
 
281
- 为了简化此过程,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) 来转换您的组件并提取内容。
657
+ 为了简化这个过程,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)来转换你的组件并提取内容。
282
658
 
283
- 要进行设置,您可以在 `intlayer.config.ts` 文件中添加 `compiler` 部分:
659
+ 要设置它,你可以在你的 `intlayer.config.ts` 文件中添加一个 `compiler` 部分:
284
660
 
285
661
  ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
286
662
  import { type IntlayerConfig } from "intlayer";
287
663
 
288
664
  const config: IntlayerConfig = {
289
- // ... 您的其他配置
665
+ // ... 你的配置的其余部分
290
666
  compiler: {
291
667
  /**
292
- * 指示是否应启用编译器。
668
+ * 指示编译器是否应启用。
293
669
  */
294
670
  enabled: true,
295
671
 
@@ -299,12 +675,16 @@ const config: IntlayerConfig = {
299
675
  output: ({ fileName, extension }) => `./${fileName}${extension}`,
300
676
 
301
677
  /**
302
- * 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
678
+ * 指示组件在转换后是否应保存。
679
+ *
680
+ * - 如果为 `true`,编译器将在磁盘中重写组件文件。所以转换将是永久的,编译器将跳过下一个过程的转换。这样,编译器可以转换应用,然后可以将其删除。
681
+ *
682
+ * - 如果为 `false`,编译器将仅在构建输出中注入 `useIntlayer()` 函数调用,并保持基础 codebase 完整。转换将仅在内存中进行。
303
683
  */
304
684
  saveComponents: false,
305
685
 
306
686
  /**
307
- * 字典键前缀
687
+ * 字典 key 前缀
308
688
  */
309
689
  dictionaryKeyPrefix: "",
310
690
  },
@@ -316,7 +696,7 @@ export default config;
316
696
  <Tabs>
317
697
  <Tab value='提取命令'>
318
698
 
319
- 运行提取器以转换组件并提取内容
699
+ 运行提取器来转换你的组件并提取内容
320
700
 
321
701
  ```bash packageManager="npm"
322
702
  npx intlayer extract
@@ -337,9 +717,9 @@ bun x intlayer extract
337
717
  </Tab>
338
718
  <Tab value='Babel 编译器'>
339
719
 
340
- > Since v9, the `intlayerCompiler` is included in the `intlayer` plugin. So you don't need to add it manually.
720
+ > v9 起,`intlayerCompiler` 包含在 `intlayer` 插件中。所以你不需要手动添加它。
341
721
 
342
- 更新您的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
722
+ 更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
343
723
 
344
724
  ```ts fileName="vite.config.ts"
345
725
  import { defineConfig } from "vite";
@@ -348,7 +728,7 @@ import { intlayer, intlayerCompiler } from "vite-intlayer";
348
728
  export default defineConfig({
349
729
  plugins: [
350
730
  intlayer(),
351
- intlayerCompiler(), // Adds the compiler plugin
731
+ intlayerCompiler(), // 添加编译器插件
352
732
  ],
353
733
  });
354
734
  ```
@@ -366,7 +746,7 @@ yarn build # 或 yarn dev
366
746
  ```
367
747
 
368
748
  ```bash packageManager="bun"
369
- bun run build # Or bun run dev
749
+ bun run build # bun run dev
370
750
  ```
371
751
 
372
752
  </Tab>