@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
@@ -71,9 +71,284 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
71
71
 
72
72
  ---
73
73
 
74
- ### 第5步:在代码中使用 Intlayer
74
+ ## Vite 和 React 应用中分步设置 Intlayer 指南
75
75
 
76
- 在整个应用程序中访问您的内容字典:
76
+ <Tabs defaultTab="video">
77
+ <Tab label="Video" value="video">
78
+
79
+ <iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
80
+
81
+ </Tab>
82
+ <Tab label="Code" value="code">
83
+
84
+ <iframe
85
+ src="https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts"
86
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
87
+ title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
88
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
89
+ loading="lazy"
90
+ />
91
+
92
+ </Tab>
93
+ <Tab label="Demo" value="demo">
94
+
95
+ <iframe
96
+ src="https://intlayer-vite-react-template.vercel.app"
97
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
98
+ title="Demo - intlayer-vite-react-template"
99
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
100
+ loading="lazy"
101
+ />
102
+
103
+ </Tab>
104
+ </Tabs>
105
+
106
+ 在 GitHub 上查看 [应用模板](https://github.com/aymericzip/intlayer-vite-react-template)。
107
+
108
+ <Steps>
109
+
110
+ <Step number={1} title="安装依赖项">
111
+
112
+ 使用 npm 安装必要的包:
113
+
114
+ ```bash packageManager="npm"
115
+ npx intlayer init --interactive
116
+ ```
117
+
118
+ ```bash packageManager="pnpm"
119
+ pnpm dlx intlayer@canary init --interactive
120
+ ```
121
+
122
+ ```bash packageManager="yarn"
123
+ yarn dlx intlayer@canary init --interactive
124
+ ```
125
+
126
+ ```bash packageManager="bun"
127
+ bunx intlayer@canary init --interactive
128
+ ```
129
+
130
+ > `--interactive` 标志是可选的。如果你是 AI 代理,请使用 `intlayer-cli init`。
131
+
132
+ > 此命令将检测你的环境并安装所需的包。例如:
133
+
134
+ ```bash packageManager="npm"
135
+ npm install intlayer react-intlayer
136
+ npm install vite-intlayer --save-dev
137
+ ```
138
+
139
+ ```bash packageManager="pnpm"
140
+ pnpm add intlayer react-intlayer
141
+ pnpm add vite-intlayer --save-dev
142
+ ```
143
+
144
+ ```bash packageManager="yarn"
145
+ yarn add intlayer react-intlayer
146
+ yarn add vite-intlayer --save-dev
147
+ ```
148
+
149
+ ```bash packageManager="bun"
150
+ bun add intlayer react-intlayer
151
+ bun add vite-intlayer --dev
152
+ ```
153
+
154
+ - **intlayer**
155
+ 核心包,为配置管理、翻译、[内容声明](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)提供国际化工具。
156
+
157
+ - **react-intlayer**
158
+ 将 Intlayer 与 React 应用集成的包。它提供用于 React 国际化的上下文提供者和钩子。
159
+
160
+ - **vite-intlayer**
161
+ 包含用于将 Intlayer 与 [Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production) 集成的 Vite 插件,以及用于检测用户首选语言区域、管理 cookie 和处理 URL 重定向的中间件。
162
+
163
+ </Step>
164
+
165
+ <Step number={2} title="配置你的项目">
166
+
167
+ 创建配置文件以配置应用的语言:
168
+
169
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
170
+ import { Locales, type IntlayerConfig } from "intlayer";
171
+
172
+ const config: IntlayerConfig = {
173
+ internationalization: {
174
+ locales: [
175
+ Locales.ENGLISH,
176
+ Locales.FRENCH,
177
+ Locales.SPANISH,
178
+ // 你的其他语言区域
179
+ ],
180
+ defaultLocale: Locales.ENGLISH,
181
+ },
182
+ };
183
+
184
+ export default config;
185
+ ```
186
+
187
+ > 通过此配置文件,你可以设置本地化 URL、中间件重定向、cookie 名称、内容声明的位置和扩展名、禁用控制台中的 Intlayer 日志等。有关可用参数的完整列表,请参阅 [配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
188
+
189
+ </Step>
190
+
191
+ <Step number={3} title="在 Vite 配置中集成 Intlayer">
192
+
193
+ 将 intlayer 插件添加到你的配置中。
194
+
195
+ ```typescript fileName="vite.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
196
+ import { defineConfig } from "vite";
197
+ import react from "@vitejs/plugin-react-swc";
198
+ import { intlayer } from "vite-intlayer";
199
+
200
+ // https://vitejs.dev/config/
201
+ export default defineConfig({
202
+ plugins: [react(), intlayer()],
203
+ });
204
+ ```
205
+
206
+ > `intlayer()` Vite 插件用于将 Intlayer 与 Vite 集成。它确保构建内容声明文件,并在开发模式中监视它们。它在 Vite 应用中定义 Intlayer 环境变量。此外,它提供别名以优化性能。
207
+
208
+ </Step>
209
+
210
+ <Step number={4} title="声明你的内容">
211
+
212
+ 创建和管理你的内容声明以存储翻译:
213
+
214
+ ```tsx fileName="src/app.content.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
215
+ import { t, type Dictionary } from "intlayer";
216
+ import type { ReactNode } from "react";
217
+
218
+ const appContent = {
219
+ key: "app",
220
+ content: {
221
+ viteLogo: t({
222
+ zh: "Vite 徽标",
223
+ en: "Vite logo",
224
+ fr: "Logo Vite",
225
+ es: "Logo Vite",
226
+ }),
227
+ reactLogo: t({
228
+ zh: "React 徽标",
229
+ en: "React logo",
230
+ fr: "Logo React",
231
+ es: "Logo React",
232
+ }),
233
+
234
+ title: "Vite + React",
235
+
236
+ count: t({
237
+ zh: "计数是 ",
238
+ en: "count is ",
239
+ fr: "le compte est ",
240
+ es: "el recuento es ",
241
+ }),
242
+
243
+ edit: t<ReactNode>({
244
+ zh: (
245
+ <>
246
+ 编辑 <code>src/App.tsx</code> 并保存以测试 HMR
247
+ </>
248
+ ),
249
+ en: (
250
+ <>
251
+ Edit <code>src/App.tsx</code> and save to test HMR
252
+ </>
253
+ ),
254
+ fr: (
255
+ <>
256
+ Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
257
+ </>
258
+ ),
259
+ es: (
260
+ <>
261
+ Edita <code>src/App.tsx</code> y guarda para probar HMR
262
+ </>
263
+ ),
264
+ }),
265
+
266
+ readTheDocs: t({
267
+ zh: "点击 Vite 和 React 徽标了解更多信息",
268
+ en: "Click on the Vite and React logos to learn more",
269
+ fr: "Cliquez sur les logos Vite et React pour en savoir plus",
270
+ es: "Haga clic en los logotipos de Vite y React para obtener más información",
271
+ }),
272
+ },
273
+ } satisfies Dictionary;
274
+
275
+ export default appContent;
276
+ ```
277
+
278
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
279
+ {
280
+ "$schema": "https://intlayer.org/schema.json",
281
+ "key": "app",
282
+ "content": {
283
+ "viteLogo": {
284
+ "nodeType": "translation",
285
+ "translation": {
286
+ "zh": "Vite 徽标",
287
+ "en": "Vite logo",
288
+ "fr": "Logo Vite",
289
+ "es": "Logo Vite"
290
+ }
291
+ },
292
+ "reactLogo": {
293
+ "nodeType": "translation",
294
+ "translation": {
295
+ "zh": "React 徽标",
296
+ "en": "React logo",
297
+ "fr": "Logo React",
298
+ "es": "Logo React"
299
+ }
300
+ },
301
+ "title": {
302
+ "nodeType": "translation",
303
+ "translation": {
304
+ "zh": "Vite + React",
305
+ "en": "Vite + React",
306
+ "fr": "Vite + React",
307
+ "es": "Vite + React"
308
+ }
309
+ },
310
+ "count": {
311
+ "nodeType": "translation",
312
+ "translation": {
313
+ "zh": "计数是 ",
314
+ "en": "count is ",
315
+ "fr": "le compte est ",
316
+ "es": "el recuento es "
317
+ }
318
+ },
319
+ "edit": {
320
+ "nodeType": "translation",
321
+ "translation": {
322
+ "zh": "编辑 src/App.tsx 并保存以测试 HMR",
323
+ "en": "Edit src/App.tsx and save to test HMR",
324
+ "fr": "Éditez src/App.tsx et enregistrez pour tester HMR",
325
+ "es": "Edita src/App.tsx y guarda para probar HMR"
326
+ }
327
+ },
328
+ "readTheDocs": {
329
+ "nodeType": "translation",
330
+ "translation": {
331
+ "zh": "点击 Vite 和 React 徽标了解更多信息",
332
+ "en": "Click on the Vite and React logos to learn more",
333
+ "fr": "Cliquez sur les logos Vite et React pour en savoir plus",
334
+ "es": "Haga clic en los logotipos de Vite y React para obtener más información"
335
+ }
336
+ }
337
+ }
338
+ }
339
+ ```
340
+
341
+ > 你的内容声明可以定义在应用的任何地方,只要它们包含在 `contentDir` 目录中(默认为 `./src`)。并匹配内容声明文件扩展名(默认为 `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`)。
342
+
343
+ > 有关更多详细信息,请参阅 [内容声明文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)。
344
+
345
+ > 如果你的内容文件包含 TSX 代码,你应该考虑在内容文件中导入 `import React from "react";`。
346
+
347
+ </Step>
348
+
349
+ <Step number={5} title="在代码中使用 Intlayer">
350
+
351
+ 在整个应用中访问你的内容字典:
77
352
 
78
353
  ```tsx {5,9} fileName="src/App.tsx" codeFormat={["typescript", "esm"]}
79
354
  import { useState, type FC } from "react";
@@ -122,7 +397,7 @@ const App: FC = () => (
122
397
  export default App;
123
398
  ```
124
399
 
125
- > 如果您想在字符串属性中使用内容,例如 `alt`、`title`、`href`、`aria-label` 等,必须调用函数的值,如下所示:
400
+ > 如果你想在 `string` 属性中使用你的内容,例如 `alt`、`title`、`href`、`aria-label` 等,你可以使用函数的值,如下所示:
126
401
 
127
402
  > ```html
128
403
  > <img src="{content.image.src.value}" alt="{content.image.value}" />
@@ -130,15 +405,15 @@ export default App;
130
405
  > <img src="{String(content.image.src)}" alt="{String(content.image)}" />
131
406
  > ```
132
407
 
133
- > 要了解有关 `useIntlayer` 钩子的更多信息,请参阅[文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/react-intlayer/useIntlayer.md)。
408
+ > 要了解更多关于 `useIntlayer` 钩子的信息,请参阅 [文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/react-intlayer/useIntlayer.md)。
134
409
 
135
- > 如果您的应用程序已经存在,您可以结合使用 [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) 在一秒钟内转换成干个组件。
410
+ > 如果你的应用已经存在,你可以使用 [Intlayer 编译器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md)以及 [extract 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md)在瞬间转换数千个组件。
136
411
 
137
- <Steps>
412
+ </Step>
138
413
 
139
- <Step number={6} title="更改内容的语言">
414
+ <Step number={6} title="更改内容的语言" isOptional={true}>
140
415
 
141
- 要更改内容的语言,可以使用 `useLocale` 钩子提供的 `setLocale` 函数。该函数允许您设置应用程序的语言环境并相应地更新内容。
416
+ 要更改内容的语言,你可以使用 `useLocale` 钩子提供的 `setLocale` 函数。此函数允许你设置应用的语言区域并相应地更新内容。
142
417
 
143
418
  ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat={["typescript", "esm"]}
144
419
  import type { FC } from "react";
@@ -149,19 +424,21 @@ const LocaleSwitcher: FC = () => {
149
424
  const { setLocale } = useLocale();
150
425
 
151
426
  return (
152
- <button onClick={() => setLocale(Locales.English)}>切换语言到英语</button>
427
+ <button onClick={() => setLocale(Locales.English)}>
428
+ Change Language to English
429
+ </button>
153
430
  );
154
431
  };
155
432
  ```
156
433
 
157
- > 要了解有关 `useLocale` 钩子的更多信息,请参阅[文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/react-intlayer/useLocale.md)。
434
+ > 要了解更多关于 `useLocale` 钩子的信息,请参阅 [文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/react-intlayer/useLocale.md)。
158
435
 
159
436
  </Step>
160
437
 
161
- <Step number={7} title="为您的应用程序添加本地化路由">
438
+ <Step number={7} title="将本地化路由添加到你的应用" isOptional={true}>
162
439
 
163
- 此步骤的目的是为每种语言创建唯一的路由。这对于 SEO 和 SEO 友好的 URL 非常有用。
164
- 示例:
440
+ 此步骤的目的是为每种语言创建唯一的路由。这对于 SEO 和 SEO 友好的 URL 很有用。
441
+ 例如:
165
442
 
166
443
  ```plaintext
167
444
  - https://example.com/about
@@ -169,31 +446,31 @@ const LocaleSwitcher: FC = () => {
169
446
  - https://example.com/fr/about
170
447
  ```
171
448
 
172
- > 默认情况下,默认语言的路由不会添加前缀。如果您想为默认语言添加前缀,可以在配置中将 `middleware.prefixDefault` 选项设置为 `true`。更多信息请参见[配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
449
+ > 默认情况下,默认语言区域的路由没有前缀。如果你想为默认语言区域加前缀,你可以在配置中设置 `middleware.prefixDefault` 选项为 `true`。有关更多信息,请参阅 [配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
173
450
 
174
- 要为您的应用添加本地化路由,您可以创建一个 `LocaleRouter` 组件,包裹应用的路由并处理基于语言的路由。以下是使用 [React Router](https://reactrouter.com/home) 的示例:
451
+ 要将本地化路由添加到你的应用,你可以创建一个 `LocaleRouter` 组件,该组件包装你应用的路由并处理基于语言区域的路由。以下是使用 [React Router](https://reactrouter.com/home) 的示例:
175
452
 
176
453
  ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat={["typescript", "esm"]}
177
454
  import { localeMap } from "intlayer"; // 来自 'intlayer' 的实用函数和类型
178
- import type { FC, PropsWithChildren } from "react"; // React 中函数组件和属性的类型
179
- import { IntlayerProvider } from "react-intlayer"; // 国际化上下文提供者
180
- import { BrowserRouter, Route, Routes } from "react-router-dom"; // 用于管理导航的路由组件
455
+ import type { FC, PropsWithChildren } from "react"; // React 功能组件和 props 的类型
456
+ import { IntlayerProvider } from "react-intlayer"; // 国际化上下文的提供者
457
+ import { BrowserRouter, Route, Routes } from "react-router-dom"; // 用于管理导航的路由器组件
181
458
 
182
459
  /**
183
- * 一个设置特定语言路由的路由组件。
184
- * 它使用 React Router 来管理导航并渲染本地化组件。
460
+ * 设置特定于语言区域的路由的路由器组件。
461
+ * 它使用 React Router 来管理导航和渲染本地化的组件。
185
462
  */
186
463
  export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
187
464
  <BrowserRouter>
188
465
  <Routes>
189
466
  {localeMap(({ locale, urlPrefix }) => (
190
467
  <Route
191
- // 路由模式用于捕获语言环境(例如 /en/,/fr/)并匹配所有后续路径
468
+ // 路由模式以捕获语言区域(例如 /en/、/fr/)并匹配所有后续路径
192
469
  path={`${urlPrefix}/*`}
193
470
  key={locale}
194
471
  element={
195
472
  <IntlayerProvider locale={locale}>{children}</IntlayerProvider>
196
- } // 使用语言环境管理包装子组件
473
+ } // 用语言区域管理包装子元素
197
474
  />
198
475
  ))}
199
476
  </Routes>
@@ -201,9 +478,9 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
201
478
  );
202
479
  ```
203
480
 
204
- > 注意:如果您使用 `routing.mode: 'no-prefix' | 'search-params'`,您可能不需要使用 `localeMap` 函数。
481
+ > 注意:如果你使用 `routing.mode: 'no-prefix' | 'search-params'`,你可能不需要使用 `localeMap` 函数。
205
482
 
206
- 然后,您可以在应用中使用 `LocaleRouter` 组件:
483
+ 然后,你可以在应用中使用 `LocaleRouter` 组件:
207
484
 
208
485
  ```tsx fileName="src/App.tsx" codeFormat={["typescript", "esm"]}
209
486
  import { LocaleRouter } from "./components/LocaleRouter";
@@ -218,9 +495,11 @@ const App: FC = () => (
218
495
  );
219
496
  ```
220
497
 
221
- 同时,您还可以使用 `intlayerProxy` 为您的应用程序添加服务器端路由。该插件将根据 URL 自动检测当前语言环境并设置相应的语言环境 Cookie。如果未指定语言环境,插件将根据用户浏览器的语言偏好确定最合适的语言环境。如果未检测到任何语言环境,它将重定向到默认语言环境。
498
+ 同时,你还可以使用 `intlayerProxy` 为你的应用添加服务端路由。此插件将根据 URL 自动检测当前语言区域并设置适当的语言区域 cookie。如果未指定语言区域,该插件将根据用户的浏览器语言偏好确定最合适的语言区域。如果未检测到语言区域,它将重定向到默认语言区域。
499
+
500
+ > 注意,要在生产环境中使用 `intlayerProxy`,你需要将 `vite-intlayer` 包从 `devDependencies` 转移到 `dependencies`。
222
501
 
223
- > 请注意,要在生产环境中使用 `intlayerProxy`,您需要将 `vite-intlayer` 包从 `devDependencies` 切换到 `dependencies`。
502
+ > Intlayer v9 开始,`intlayerProxy()` 被直接捆绑到 `intlayer()` 插件中,并通过 `routing.enableProxy` 选项(默认为 `true`)启用。如下所示单独注册现在是可选的 — 为了向后兼容和需要控制插件顺序的设置而保留。设置 `routing.enableProxy: false` 以选择退出。请参阅 [v9 发布说明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/releases/v9.md)。
224
503
 
225
504
  ```typescript {3,7} fileName="vite.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
226
505
  import { defineConfig } from "vite";
@@ -242,9 +521,9 @@ export default defineConfig({
242
521
 
243
522
  </Step>
244
523
 
245
- <Step number={8} title="在语言切换时更改 URL">
524
+ <Step number={8} title="当语言区域改变时改变 URL" isOptional={true}>
246
525
 
247
- 要在语言切换时更改 URL,可以使用 `useLocale` 钩子提供的 `onLocaleChange` 属性。同时,可以使用 `react-router-dom` 中的 `useLocation` 和 `useNavigate` 钩子来更新 URL 路径。
526
+ 要在语言区域改变时改变 URL,你可以使用 `useLocale` 钩子提供的 `onLocaleChange` 属性。同时,你可以使用 `react-router-dom` 中的 `useLocation` 和 `useNavigate` 钩子来更新 URL 路径。
248
527
 
249
528
  ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat={["typescript", "esm"]}
250
529
  import { useLocation, useNavigate } from "react-router-dom";
@@ -258,13 +537,13 @@ import { useLocale } from "react-intlayer";
258
537
  import { type FC } from "react";
259
538
 
260
539
  const LocaleSwitcher: FC = () => {
261
- const { pathname, search } = useLocation(); // 获取当前的 URL 路径。例如:/fr/about?foo=bar
540
+ const { pathname, search } = useLocation(); // 获取当前 URL 路径。例如:/fr/about?foo=bar
262
541
  const navigate = useNavigate();
263
542
 
264
543
  const { locale, availableLocales, setLocale } = useLocale({
265
544
  onLocaleChange: (locale) => {
266
- // 构建带有更新后语言环境的 URL
267
- // 例如: /es/about?foo=bar
545
+ // 使用更新后的语言区域构造 URL
546
+ // 例如:/es/about?foo=bar
268
547
  const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
269
548
 
270
549
  // 更新 URL 路径
@@ -288,19 +567,19 @@ const LocaleSwitcher: FC = () => {
288
567
  key={localeItem}
289
568
  >
290
569
  <span>
291
- {/* 语言环境 - 例如 FR */}
570
+ {/* 语言区域 - 例如 FR */}
292
571
  {localeItem}
293
572
  </span>
294
573
  <span>
295
- {/* 该语言环境中的语言名称 - 例如 Français */}
574
+ {/* 使用其自己的语言区域的语言 - 例如 Français */}
296
575
  {getLocaleName(localeItem, locale)}
297
576
  </span>
298
577
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
299
- {/* 当前语言环境中的语言名称 - 例如当当前语言环境设置为 Locales.SPANISH 时显示 Francés */}
578
+ {/* 使用当前语言区域的语言 - 例如当前语言区域设置为 Locales.SPANISH 时的 Francés */}
300
579
  {getLocaleName(localeItem)}
301
580
  </span>
302
581
  <span dir="ltr" lang={Locales.ENGLISH}>
303
- {/* 英文中的语言名称 - 例如 French */}
582
+ {/* 英文中的语言 - 例如 French */}
304
583
  {getLocaleName(localeItem, Locales.ENGLISH)}
305
584
  </span>
306
585
  </a>
@@ -318,25 +597,25 @@ const LocaleSwitcher: FC = () => {
318
597
  > - [`getLocalizedUrl` 钩子](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/intlayer/getLocalizedUrl.md)
319
598
  > - [`getHTMLTextDir` 钩子](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/intlayer/getHTMLTextDir.md)
320
599
  > - [`hrefLang` 属性](https://developers.google.com/search/docs/specialty/international/localized-versions?hl=fr)
321
- > - [`lang` 属性](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/lang)
322
- > - [`dir` 属性](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/dir)
323
- > - [`aria-current` 属性](https://developer.mozilla.org/zh-CN/docs/Web/Accessibility/ARIA/Attributes/aria-current)
600
+ > - [`lang` 属性](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang)
601
+ > - [`dir` 属性](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir)
602
+ > - [`aria-current` 属性](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)
324
603
 
325
- 以下是更新后的**步骤9**,增加了解释并优化了代码示例:
604
+ 以下是更新的 **步骤 9**,包含添加的解释和精炼的代码示例:
326
605
 
327
606
  ---
328
607
 
329
608
  </Step>
330
609
 
331
- <Step number={9} title="切换HTML的语言和方向属性">
610
+ <Step number={9} title="切换 HTML 语言和方向属性" isOptional={true}>
332
611
 
333
- 当您的应用程序支持多语言时,更新 `<html>` 标签的 `lang` 和 `dir` 属性以匹配当前语言环境非常重要。这样做可以确保:
612
+ 当你的应用支持多种语言时,至关重要的是更新 `<html>` 标签的 `lang` 和 `dir` 属性以匹配当前语言区域。这样做可以确保:
334
613
 
335
- - **无障碍访问**:屏幕阅读器和辅助技术依赖正确的 `lang` 属性来准确发音和解释内容。
336
- - **文本渲染**:`dir`(方向)属性确保文本以正确的顺序呈现(例如,英语为从左到右,阿拉伯语或希伯来语为从右到左),这对于可读性至关重要。
337
- - **搜索引擎优化(SEO)**:搜索引擎使用 `lang` 属性来确定页面的语言,有助于在搜索结果中提供正确的本地化内容。
614
+ - **可访问性**:屏幕阅读器和辅助技术依赖于正确的 `lang` 属性来准确发音和解释内容。
615
+ - **文本渲染**:`dir`(方向)属性确保文本以适当的顺序呈现(例如,英文为从左到右,阿拉伯文或希伯来文为从右到左),这对于可读性至关重要。
616
+ - **SEO**:搜索引擎使用 `lang` 属性来确定你的页面的语言,帮助在搜索结果中提供正确的本地化内容。
338
617
 
339
- 通过在语言环境更改时动态更新这些属性,您可以确保所有支持语言的用户都能获得一致且无障碍的体验。
618
+ 通过在语言区域改变时动态更新这些属性,你可以为所有支持的语言的用户保证一致和可访问的体验。
340
619
 
341
620
  #### 实现该 Hook
342
621