@intlayer/docs 9.5.5 → 9.5.7

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 (920) hide show
  1. package/README.md +0 -1
  2. package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
  3. package/blog/ar/i18next_vs_intlayer.md +130 -16
  4. package/blog/ar/lingui_vs_intlayer.md +122 -15
  5. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  6. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  7. package/blog/ar/transform_existing_vite_react_app_using_compiler.md +4 -2
  8. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  9. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  10. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  11. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  12. package/blog/de/i18next_vs_intlayer.md +128 -14
  13. package/blog/de/lingui_vs_intlayer.md +122 -15
  14. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  15. package/blog/de/next-intl_vs_intlayer.md +125 -15
  16. package/blog/de/transform_existing_vite_react_app_using_compiler.md +4 -2
  17. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  18. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  19. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  20. package/blog/en/i18next_vs_intlayer.md +128 -14
  21. package/blog/en/lingui_vs_intlayer.md +124 -15
  22. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  23. package/blog/en/next-intl_vs_intlayer.md +125 -13
  24. package/blog/en/transform_existing_vite_react_app_using_compiler.md +4 -2
  25. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  26. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  27. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  28. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  29. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  30. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  31. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  32. package/blog/en-GB/transform_existing_vite_react_app_using_compiler.md +4 -2
  33. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  34. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  35. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  36. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  37. package/blog/es/i18next_vs_intlayer.md +128 -14
  38. package/blog/es/lingui_vs_intlayer.md +122 -15
  39. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  40. package/blog/es/next-intl_vs_intlayer.md +125 -15
  41. package/blog/es/transform_existing_vite_react_app_using_compiler.md +4 -2
  42. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  43. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  44. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  45. package/blog/fr/i18next_vs_intlayer.md +128 -14
  46. package/blog/fr/lingui_vs_intlayer.md +122 -15
  47. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  48. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  49. package/blog/fr/transform_existing_vite_react_app_using_compiler.md +4 -2
  50. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  51. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  52. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  53. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  54. package/blog/hi/i18next_vs_intlayer.md +130 -16
  55. package/blog/hi/lingui_vs_intlayer.md +122 -15
  56. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  57. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  58. package/blog/hi/transform_existing_vite_react_app_using_compiler.md +4 -2
  59. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  60. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  61. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  62. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  63. package/blog/id/i18next_vs_intlayer.md +128 -14
  64. package/blog/id/lingui_vs_intlayer.md +122 -15
  65. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/id/next-intl_vs_intlayer.md +135 -19
  67. package/blog/id/transform_existing_vite_react_app_using_compiler.md +4 -2
  68. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  69. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  70. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  71. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  72. package/blog/it/i18next_vs_intlayer.md +128 -14
  73. package/blog/it/lingui_vs_intlayer.md +122 -15
  74. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  75. package/blog/it/next-intl_vs_intlayer.md +125 -15
  76. package/blog/it/transform_existing_vite_react_app_using_compiler.md +4 -2
  77. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  78. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  79. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  80. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  81. package/blog/ja/i18next_vs_intlayer.md +129 -17
  82. package/blog/ja/lingui_vs_intlayer.md +122 -15
  83. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  84. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  85. package/blog/ja/transform_existing_vite_react_app_using_compiler.md +4 -2
  86. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  87. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  88. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  89. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  90. package/blog/ko/i18next_vs_intlayer.md +129 -17
  91. package/blog/ko/lingui_vs_intlayer.md +122 -15
  92. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  93. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  94. package/blog/ko/transform_existing_vite_react_app_using_compiler.md +4 -2
  95. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  96. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  97. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  98. package/blog/pl/i18next_vs_intlayer.md +128 -14
  99. package/blog/pl/lingui_vs_intlayer.md +122 -15
  100. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  101. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  102. package/blog/pl/transform_existing_vite_react_app_using_compiler.md +4 -2
  103. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  104. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  105. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  106. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  107. package/blog/pt/i18next_vs_intlayer.md +128 -14
  108. package/blog/pt/lingui_vs_intlayer.md +122 -15
  109. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  110. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  111. package/blog/pt/transform_existing_vite_react_app_using_compiler.md +4 -2
  112. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  113. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  114. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  115. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  116. package/blog/ru/i18next_vs_intlayer.md +130 -16
  117. package/blog/ru/lingui_vs_intlayer.md +122 -15
  118. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  119. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  120. package/blog/ru/transform_existing_vite_react_app_using_compiler.md +4 -2
  121. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  122. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  123. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  124. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  125. package/blog/tr/i18next_vs_intlayer.md +128 -14
  126. package/blog/tr/lingui_vs_intlayer.md +122 -15
  127. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  128. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  129. package/blog/tr/transform_existing_vite_react_app_using_compiler.md +4 -2
  130. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  131. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  132. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  133. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  134. package/blog/uk/i18next_vs_intlayer.md +130 -16
  135. package/blog/uk/lingui_vs_intlayer.md +122 -15
  136. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  138. package/blog/uk/transform_existing_vite_react_app_using_compiler.md +4 -2
  139. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  140. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  141. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  142. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  143. package/blog/vi/i18next_vs_intlayer.md +128 -14
  144. package/blog/vi/lingui_vs_intlayer.md +122 -15
  145. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  146. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  147. package/blog/vi/transform_existing_vite_react_app_using_compiler.md +4 -2
  148. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  149. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  150. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  151. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  152. package/blog/zh/i18next_vs_intlayer.md +128 -14
  153. package/blog/zh/lingui_vs_intlayer.md +122 -15
  154. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  155. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  156. package/blog/zh/transform_existing_vite_react_app_using_compiler.md +4 -2
  157. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  158. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  159. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  160. package/dist/cjs/generated/docs.entry.cjs +40 -40
  161. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  162. package/dist/cjs/index.cjs +2 -2
  163. package/dist/esm/generated/docs.entry.mjs +40 -40
  164. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  165. package/dist/esm/index.mjs +2 -2
  166. package/dist/types/generated/docs.entry.d.ts +2 -2
  167. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  168. package/docs/ar/benchmark/nextjs.md +13 -13
  169. package/docs/ar/benchmark/solid.md +5 -5
  170. package/docs/ar/benchmark/svelte.md +4 -4
  171. package/docs/ar/benchmark/tanstack.md +14 -13
  172. package/docs/ar/benchmark/vue.md +5 -5
  173. package/docs/ar/chrome_extension.md +130 -0
  174. package/docs/ar/cli/index.md +6 -1
  175. package/docs/ar/cli/infra.md +162 -0
  176. package/docs/ar/cli/init.md +24 -1
  177. package/docs/ar/dictionary/html.md +173 -5
  178. package/docs/ar/dictionary/markdown.md +263 -1
  179. package/docs/ar/intlayer_with_analog.md +23 -1
  180. package/docs/ar/intlayer_with_angular_19.md +24 -1
  181. package/docs/ar/intlayer_with_angular_21.md +24 -1
  182. package/docs/ar/intlayer_with_astro.md +42 -32
  183. package/docs/ar/intlayer_with_astro_lit.md +56 -36
  184. package/docs/ar/intlayer_with_astro_preact.md +57 -36
  185. package/docs/ar/intlayer_with_astro_react.md +57 -36
  186. package/docs/ar/intlayer_with_astro_solid.md +57 -36
  187. package/docs/ar/intlayer_with_astro_svelte.md +56 -36
  188. package/docs/ar/intlayer_with_astro_vue.md +56 -36
  189. package/docs/ar/intlayer_with_react_router_v7.md +12 -1
  190. package/docs/ar/intlayer_with_remix_3.md +22 -1
  191. package/docs/ar/intlayer_with_solid_start.md +14 -7
  192. package/docs/ar/intlayer_with_svelte_kit.md +12 -1
  193. package/docs/ar/intlayer_with_tanstack+solid.md +13 -2
  194. package/docs/ar/intlayer_with_tanstack.md +13 -6
  195. package/docs/ar/intlayer_with_vite+lit.md +75 -3
  196. package/docs/ar/intlayer_with_vite+preact.md +27 -19
  197. package/docs/ar/intlayer_with_vite+react.md +27 -19
  198. package/docs/ar/intlayer_with_vite+solid.md +27 -19
  199. package/docs/ar/intlayer_with_vite+svelte.md +27 -19
  200. package/docs/ar/intlayer_with_vite+vanilla.md +16 -3
  201. package/docs/ar/intlayer_with_vite+vue.md +27 -19
  202. package/docs/ar/introduction.md +0 -1
  203. package/docs/ar/readme.md +0 -1
  204. package/docs/ar/releases/v8.md +1 -5
  205. package/docs/ar/self_hosting.md +406 -231
  206. package/docs/bn/intlayer_with_vite+lit.md +75 -3
  207. package/docs/bn/intlayer_with_vite+vanilla.md +16 -3
  208. package/docs/bn/introduction.md +0 -1
  209. package/docs/cs/intlayer_with_vite+lit.md +75 -3
  210. package/docs/cs/intlayer_with_vite+vanilla.md +16 -3
  211. package/docs/cs/introduction.md +0 -1
  212. package/docs/de/benchmark/nextjs.md +13 -13
  213. package/docs/de/benchmark/solid.md +5 -5
  214. package/docs/de/benchmark/svelte.md +4 -4
  215. package/docs/de/benchmark/tanstack.md +14 -13
  216. package/docs/de/benchmark/vue.md +5 -5
  217. package/docs/de/chrome_extension.md +130 -0
  218. package/docs/de/cli/index.md +6 -1
  219. package/docs/de/cli/infra.md +162 -0
  220. package/docs/de/cli/init.md +24 -1
  221. package/docs/de/dictionary/html.md +173 -5
  222. package/docs/de/dictionary/markdown.md +263 -1
  223. package/docs/de/intlayer_with_analog.md +23 -1
  224. package/docs/de/intlayer_with_angular_19.md +24 -1
  225. package/docs/de/intlayer_with_angular_21.md +24 -1
  226. package/docs/de/intlayer_with_astro.md +35 -25
  227. package/docs/de/intlayer_with_astro_lit.md +47 -27
  228. package/docs/de/intlayer_with_astro_preact.md +48 -27
  229. package/docs/de/intlayer_with_astro_react.md +48 -27
  230. package/docs/de/intlayer_with_astro_solid.md +48 -27
  231. package/docs/de/intlayer_with_astro_svelte.md +47 -27
  232. package/docs/de/intlayer_with_astro_vue.md +47 -27
  233. package/docs/de/intlayer_with_react_router_v7.md +12 -1
  234. package/docs/de/intlayer_with_remix_3.md +22 -1
  235. package/docs/de/intlayer_with_solid_start.md +14 -7
  236. package/docs/de/intlayer_with_svelte_kit.md +12 -1
  237. package/docs/de/intlayer_with_tanstack+solid.md +13 -2
  238. package/docs/de/intlayer_with_tanstack.md +13 -6
  239. package/docs/de/intlayer_with_vite+lit.md +75 -3
  240. package/docs/de/intlayer_with_vite+preact.md +16 -3
  241. package/docs/de/intlayer_with_vite+react.md +16 -3
  242. package/docs/de/intlayer_with_vite+solid.md +16 -3
  243. package/docs/de/intlayer_with_vite+svelte.md +16 -3
  244. package/docs/de/intlayer_with_vite+vanilla.md +16 -3
  245. package/docs/de/intlayer_with_vite+vue.md +16 -3
  246. package/docs/de/introduction.md +0 -1
  247. package/docs/de/readme.md +0 -1
  248. package/docs/de/releases/v8.md +1 -5
  249. package/docs/de/self_hosting.md +404 -227
  250. package/docs/en/benchmark/nextjs.md +13 -13
  251. package/docs/en/benchmark/solid.md +5 -5
  252. package/docs/en/benchmark/svelte.md +4 -4
  253. package/docs/en/benchmark/tanstack.md +14 -13
  254. package/docs/en/benchmark/vue.md +5 -5
  255. package/docs/en/chrome_extension.md +130 -0
  256. package/docs/en/cli/index.md +6 -1
  257. package/docs/en/cli/infra.md +175 -0
  258. package/docs/en/cli/init.md +25 -1
  259. package/docs/en/dictionary/html.md +173 -5
  260. package/docs/en/dictionary/markdown.md +263 -1
  261. package/docs/en/intlayer_with_analog.md +23 -1
  262. package/docs/en/intlayer_with_angular_19.md +24 -1
  263. package/docs/en/intlayer_with_angular_21.md +24 -1
  264. package/docs/en/intlayer_with_astro.md +29 -21
  265. package/docs/en/intlayer_with_astro_lit.md +46 -26
  266. package/docs/en/intlayer_with_astro_preact.md +47 -26
  267. package/docs/en/intlayer_with_astro_react.md +47 -26
  268. package/docs/en/intlayer_with_astro_solid.md +47 -26
  269. package/docs/en/intlayer_with_astro_svelte.md +46 -26
  270. package/docs/en/intlayer_with_astro_vue.md +46 -26
  271. package/docs/en/intlayer_with_react_router_v7.md +12 -1
  272. package/docs/en/intlayer_with_remix_3.md +22 -1
  273. package/docs/en/intlayer_with_solid_start.md +14 -7
  274. package/docs/en/intlayer_with_svelte_kit.md +12 -1
  275. package/docs/en/intlayer_with_tanstack+solid.md +13 -2
  276. package/docs/en/intlayer_with_tanstack.md +12 -5
  277. package/docs/en/intlayer_with_vite+lit.md +75 -3
  278. package/docs/en/intlayer_with_vite+preact.md +16 -3
  279. package/docs/en/intlayer_with_vite+react.md +16 -3
  280. package/docs/en/intlayer_with_vite+solid.md +16 -3
  281. package/docs/en/intlayer_with_vite+svelte.md +16 -3
  282. package/docs/en/intlayer_with_vite+vanilla.md +16 -3
  283. package/docs/en/intlayer_with_vite+vue.md +16 -3
  284. package/docs/en/introduction.md +0 -1
  285. package/docs/en/readme.md +0 -1
  286. package/docs/en/releases/v8.md +1 -5
  287. package/docs/en/self_hosting.md +418 -176
  288. package/docs/en-GB/benchmark/nextjs.md +13 -13
  289. package/docs/en-GB/benchmark/solid.md +5 -5
  290. package/docs/en-GB/benchmark/svelte.md +4 -4
  291. package/docs/en-GB/benchmark/tanstack.md +14 -13
  292. package/docs/en-GB/benchmark/vue.md +5 -5
  293. package/docs/en-GB/chrome_extension.md +130 -0
  294. package/docs/en-GB/cli/index.md +6 -1
  295. package/docs/en-GB/cli/infra.md +162 -0
  296. package/docs/en-GB/cli/init.md +24 -1
  297. package/docs/en-GB/dictionary/html.md +173 -5
  298. package/docs/en-GB/dictionary/markdown.md +263 -1
  299. package/docs/en-GB/intlayer_with_analog.md +23 -1
  300. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  301. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  302. package/docs/en-GB/intlayer_with_astro.md +35 -25
  303. package/docs/en-GB/intlayer_with_astro_lit.md +47 -27
  304. package/docs/en-GB/intlayer_with_astro_preact.md +48 -27
  305. package/docs/en-GB/intlayer_with_astro_react.md +48 -27
  306. package/docs/en-GB/intlayer_with_astro_solid.md +48 -27
  307. package/docs/en-GB/intlayer_with_astro_svelte.md +47 -27
  308. package/docs/en-GB/intlayer_with_astro_vue.md +47 -27
  309. package/docs/en-GB/intlayer_with_react_router_v7.md +12 -1
  310. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  311. package/docs/en-GB/intlayer_with_solid_start.md +14 -7
  312. package/docs/en-GB/intlayer_with_svelte_kit.md +12 -1
  313. package/docs/en-GB/intlayer_with_tanstack+solid.md +13 -2
  314. package/docs/en-GB/intlayer_with_tanstack.md +13 -6
  315. package/docs/en-GB/intlayer_with_vite+lit.md +75 -3
  316. package/docs/en-GB/intlayer_with_vite+preact.md +16 -3
  317. package/docs/en-GB/intlayer_with_vite+react.md +16 -3
  318. package/docs/en-GB/intlayer_with_vite+solid.md +25 -15
  319. package/docs/en-GB/intlayer_with_vite+svelte.md +16 -3
  320. package/docs/en-GB/intlayer_with_vite+vanilla.md +16 -3
  321. package/docs/en-GB/intlayer_with_vite+vue.md +16 -3
  322. package/docs/en-GB/introduction.md +0 -1
  323. package/docs/en-GB/readme.md +0 -1
  324. package/docs/en-GB/releases/v8.md +1 -5
  325. package/docs/en-GB/self_hosting.md +381 -206
  326. package/docs/es/benchmark/nextjs.md +13 -13
  327. package/docs/es/benchmark/solid.md +5 -5
  328. package/docs/es/benchmark/svelte.md +4 -4
  329. package/docs/es/benchmark/tanstack.md +14 -13
  330. package/docs/es/benchmark/vue.md +5 -5
  331. package/docs/es/chrome_extension.md +130 -0
  332. package/docs/es/cli/index.md +6 -1
  333. package/docs/es/cli/infra.md +162 -0
  334. package/docs/es/cli/init.md +24 -1
  335. package/docs/es/dictionary/html.md +173 -5
  336. package/docs/es/dictionary/markdown.md +263 -1
  337. package/docs/es/intlayer_with_analog.md +23 -1
  338. package/docs/es/intlayer_with_angular_19.md +24 -1
  339. package/docs/es/intlayer_with_angular_21.md +24 -1
  340. package/docs/es/intlayer_with_astro.md +35 -25
  341. package/docs/es/intlayer_with_astro_lit.md +47 -27
  342. package/docs/es/intlayer_with_astro_preact.md +48 -27
  343. package/docs/es/intlayer_with_astro_react.md +48 -27
  344. package/docs/es/intlayer_with_astro_solid.md +48 -27
  345. package/docs/es/intlayer_with_astro_svelte.md +47 -27
  346. package/docs/es/intlayer_with_astro_vue.md +47 -27
  347. package/docs/es/intlayer_with_react_router_v7.md +12 -1
  348. package/docs/es/intlayer_with_remix_3.md +22 -1
  349. package/docs/es/intlayer_with_solid_start.md +14 -7
  350. package/docs/es/intlayer_with_svelte_kit.md +12 -1
  351. package/docs/es/intlayer_with_tanstack+solid.md +13 -2
  352. package/docs/es/intlayer_with_tanstack.md +13 -6
  353. package/docs/es/intlayer_with_vite+lit.md +75 -3
  354. package/docs/es/intlayer_with_vite+preact.md +16 -3
  355. package/docs/es/intlayer_with_vite+react.md +16 -3
  356. package/docs/es/intlayer_with_vite+solid.md +16 -3
  357. package/docs/es/intlayer_with_vite+svelte.md +16 -3
  358. package/docs/es/intlayer_with_vite+vanilla.md +16 -3
  359. package/docs/es/intlayer_with_vite+vue.md +16 -3
  360. package/docs/es/introduction.md +0 -1
  361. package/docs/es/readme.md +0 -1
  362. package/docs/es/releases/v8.md +1 -5
  363. package/docs/es/self_hosting.md +400 -223
  364. package/docs/fr/benchmark/nextjs.md +13 -13
  365. package/docs/fr/benchmark/solid.md +5 -5
  366. package/docs/fr/benchmark/svelte.md +4 -4
  367. package/docs/fr/benchmark/tanstack.md +14 -13
  368. package/docs/fr/benchmark/vue.md +5 -5
  369. package/docs/fr/chrome_extension.md +130 -0
  370. package/docs/fr/cli/index.md +6 -1
  371. package/docs/fr/cli/infra.md +162 -0
  372. package/docs/fr/cli/init.md +24 -1
  373. package/docs/fr/dictionary/html.md +173 -5
  374. package/docs/fr/dictionary/markdown.md +265 -4
  375. package/docs/fr/intlayer_with_analog.md +23 -1
  376. package/docs/fr/intlayer_with_angular_19.md +24 -1
  377. package/docs/fr/intlayer_with_angular_21.md +24 -1
  378. package/docs/fr/intlayer_with_astro.md +36 -26
  379. package/docs/fr/intlayer_with_astro_lit.md +48 -28
  380. package/docs/fr/intlayer_with_astro_preact.md +49 -28
  381. package/docs/fr/intlayer_with_astro_react.md +49 -28
  382. package/docs/fr/intlayer_with_astro_solid.md +49 -28
  383. package/docs/fr/intlayer_with_astro_svelte.md +48 -28
  384. package/docs/fr/intlayer_with_astro_vue.md +48 -28
  385. package/docs/fr/intlayer_with_react_router_v7.md +15 -4
  386. package/docs/fr/intlayer_with_remix_3.md +22 -1
  387. package/docs/fr/intlayer_with_solid_start.md +14 -7
  388. package/docs/fr/intlayer_with_svelte_kit.md +15 -4
  389. package/docs/fr/intlayer_with_tanstack+solid.md +15 -4
  390. package/docs/fr/intlayer_with_tanstack.md +13 -6
  391. package/docs/fr/intlayer_with_vite+lit.md +75 -3
  392. package/docs/fr/intlayer_with_vite+preact.md +19 -6
  393. package/docs/fr/intlayer_with_vite+react.md +19 -6
  394. package/docs/fr/intlayer_with_vite+solid.md +19 -6
  395. package/docs/fr/intlayer_with_vite+svelte.md +19 -6
  396. package/docs/fr/intlayer_with_vite+vanilla.md +19 -6
  397. package/docs/fr/intlayer_with_vite+vue.md +19 -6
  398. package/docs/fr/introduction.md +0 -1
  399. package/docs/fr/readme.md +0 -1
  400. package/docs/fr/releases/v8.md +1 -5
  401. package/docs/fr/self_hosting.md +401 -224
  402. package/docs/hi/benchmark/nextjs.md +13 -13
  403. package/docs/hi/benchmark/solid.md +5 -5
  404. package/docs/hi/benchmark/svelte.md +4 -4
  405. package/docs/hi/benchmark/tanstack.md +14 -13
  406. package/docs/hi/benchmark/vue.md +5 -5
  407. package/docs/hi/chrome_extension.md +130 -0
  408. package/docs/hi/cli/index.md +6 -1
  409. package/docs/hi/cli/infra.md +162 -0
  410. package/docs/hi/cli/init.md +24 -1
  411. package/docs/hi/dictionary/html.md +173 -5
  412. package/docs/hi/dictionary/markdown.md +263 -1
  413. package/docs/hi/intlayer_with_analog.md +23 -1
  414. package/docs/hi/intlayer_with_angular_19.md +24 -1
  415. package/docs/hi/intlayer_with_angular_21.md +24 -1
  416. package/docs/hi/intlayer_with_astro.md +38 -31
  417. package/docs/hi/intlayer_with_astro_lit.md +50 -33
  418. package/docs/hi/intlayer_with_astro_preact.md +51 -33
  419. package/docs/hi/intlayer_with_astro_react.md +51 -33
  420. package/docs/hi/intlayer_with_astro_solid.md +51 -33
  421. package/docs/hi/intlayer_with_astro_svelte.md +50 -33
  422. package/docs/hi/intlayer_with_astro_vue.md +50 -33
  423. package/docs/hi/intlayer_with_react_router_v7.md +20 -12
  424. package/docs/hi/intlayer_with_remix_3.md +22 -1
  425. package/docs/hi/intlayer_with_solid_start.md +14 -7
  426. package/docs/hi/intlayer_with_svelte_kit.md +20 -12
  427. package/docs/hi/intlayer_with_tanstack+solid.md +13 -2
  428. package/docs/hi/intlayer_with_tanstack.md +21 -17
  429. package/docs/hi/intlayer_with_vite+lit.md +75 -3
  430. package/docs/hi/intlayer_with_vite+preact.md +24 -14
  431. package/docs/hi/intlayer_with_vite+react.md +24 -14
  432. package/docs/hi/intlayer_with_vite+solid.md +24 -14
  433. package/docs/hi/intlayer_with_vite+svelte.md +24 -14
  434. package/docs/hi/intlayer_with_vite+vanilla.md +16 -3
  435. package/docs/hi/intlayer_with_vite+vue.md +24 -14
  436. package/docs/hi/introduction.md +0 -1
  437. package/docs/hi/readme.md +0 -1
  438. package/docs/hi/releases/v8.md +1 -5
  439. package/docs/hi/self_hosting.md +409 -235
  440. package/docs/id/benchmark/nextjs.md +13 -13
  441. package/docs/id/benchmark/solid.md +5 -5
  442. package/docs/id/benchmark/svelte.md +4 -4
  443. package/docs/id/benchmark/tanstack.md +14 -13
  444. package/docs/id/benchmark/vue.md +5 -5
  445. package/docs/id/chrome_extension.md +130 -0
  446. package/docs/id/cli/index.md +6 -1
  447. package/docs/id/cli/infra.md +162 -0
  448. package/docs/id/cli/init.md +24 -1
  449. package/docs/id/dictionary/html.md +173 -5
  450. package/docs/id/dictionary/markdown.md +263 -1
  451. package/docs/id/intlayer_with_analog.md +23 -1
  452. package/docs/id/intlayer_with_angular_19.md +24 -1
  453. package/docs/id/intlayer_with_angular_21.md +24 -1
  454. package/docs/id/intlayer_with_astro.md +35 -25
  455. package/docs/id/intlayer_with_astro_lit.md +47 -27
  456. package/docs/id/intlayer_with_astro_preact.md +48 -27
  457. package/docs/id/intlayer_with_astro_react.md +48 -27
  458. package/docs/id/intlayer_with_astro_solid.md +48 -27
  459. package/docs/id/intlayer_with_astro_svelte.md +47 -27
  460. package/docs/id/intlayer_with_astro_vue.md +47 -27
  461. package/docs/id/intlayer_with_react_router_v7.md +12 -1
  462. package/docs/id/intlayer_with_remix_3.md +22 -1
  463. package/docs/id/intlayer_with_solid_start.md +14 -7
  464. package/docs/id/intlayer_with_svelte_kit.md +12 -1
  465. package/docs/id/intlayer_with_tanstack+solid.md +13 -2
  466. package/docs/id/intlayer_with_tanstack.md +13 -6
  467. package/docs/id/intlayer_with_vite+lit.md +75 -3
  468. package/docs/id/intlayer_with_vite+preact.md +16 -3
  469. package/docs/id/intlayer_with_vite+react.md +16 -3
  470. package/docs/id/intlayer_with_vite+solid.md +16 -3
  471. package/docs/id/intlayer_with_vite+svelte.md +16 -3
  472. package/docs/id/intlayer_with_vite+vanilla.md +16 -3
  473. package/docs/id/intlayer_with_vite+vue.md +16 -3
  474. package/docs/id/introduction.md +0 -1
  475. package/docs/id/readme.md +0 -1
  476. package/docs/id/releases/v8.md +1 -5
  477. package/docs/id/self_hosting.md +416 -243
  478. package/docs/it/benchmark/nextjs.md +13 -13
  479. package/docs/it/benchmark/solid.md +5 -5
  480. package/docs/it/benchmark/svelte.md +4 -4
  481. package/docs/it/benchmark/tanstack.md +14 -13
  482. package/docs/it/benchmark/vue.md +5 -5
  483. package/docs/it/chrome_extension.md +130 -0
  484. package/docs/it/cli/index.md +6 -1
  485. package/docs/it/cli/infra.md +162 -0
  486. package/docs/it/cli/init.md +24 -1
  487. package/docs/it/dictionary/html.md +173 -5
  488. package/docs/it/dictionary/markdown.md +263 -1
  489. package/docs/it/intlayer_with_analog.md +23 -1
  490. package/docs/it/intlayer_with_angular_19.md +24 -1
  491. package/docs/it/intlayer_with_angular_21.md +24 -1
  492. package/docs/it/intlayer_with_astro.md +35 -25
  493. package/docs/it/intlayer_with_astro_lit.md +47 -27
  494. package/docs/it/intlayer_with_astro_preact.md +48 -27
  495. package/docs/it/intlayer_with_astro_react.md +48 -27
  496. package/docs/it/intlayer_with_astro_solid.md +48 -27
  497. package/docs/it/intlayer_with_astro_svelte.md +47 -27
  498. package/docs/it/intlayer_with_astro_vue.md +47 -27
  499. package/docs/it/intlayer_with_react_router_v7.md +12 -1
  500. package/docs/it/intlayer_with_remix_3.md +22 -1
  501. package/docs/it/intlayer_with_solid_start.md +14 -7
  502. package/docs/it/intlayer_with_svelte_kit.md +12 -1
  503. package/docs/it/intlayer_with_tanstack+solid.md +13 -2
  504. package/docs/it/intlayer_with_tanstack.md +13 -6
  505. package/docs/it/intlayer_with_vite+lit.md +75 -3
  506. package/docs/it/intlayer_with_vite+preact.md +16 -3
  507. package/docs/it/intlayer_with_vite+react.md +16 -3
  508. package/docs/it/intlayer_with_vite+solid.md +16 -3
  509. package/docs/it/intlayer_with_vite+svelte.md +16 -3
  510. package/docs/it/intlayer_with_vite+vanilla.md +16 -3
  511. package/docs/it/intlayer_with_vite+vue.md +16 -3
  512. package/docs/it/introduction.md +0 -1
  513. package/docs/it/readme.md +0 -1
  514. package/docs/it/releases/v8.md +1 -5
  515. package/docs/it/self_hosting.md +412 -237
  516. package/docs/ja/benchmark/nextjs.md +13 -13
  517. package/docs/ja/benchmark/solid.md +5 -5
  518. package/docs/ja/benchmark/svelte.md +4 -4
  519. package/docs/ja/benchmark/tanstack.md +13 -12
  520. package/docs/ja/benchmark/vue.md +5 -5
  521. package/docs/ja/chrome_extension.md +130 -0
  522. package/docs/ja/cli/index.md +6 -1
  523. package/docs/ja/cli/infra.md +162 -0
  524. package/docs/ja/cli/init.md +24 -1
  525. package/docs/ja/dictionary/html.md +173 -5
  526. package/docs/ja/dictionary/markdown.md +263 -1
  527. package/docs/ja/intlayer_with_analog.md +23 -1
  528. package/docs/ja/intlayer_with_angular_19.md +24 -1
  529. package/docs/ja/intlayer_with_angular_21.md +24 -1
  530. package/docs/ja/intlayer_with_astro.md +35 -25
  531. package/docs/ja/intlayer_with_astro_lit.md +47 -27
  532. package/docs/ja/intlayer_with_astro_preact.md +48 -27
  533. package/docs/ja/intlayer_with_astro_react.md +48 -27
  534. package/docs/ja/intlayer_with_astro_solid.md +48 -27
  535. package/docs/ja/intlayer_with_astro_svelte.md +47 -27
  536. package/docs/ja/intlayer_with_astro_vue.md +47 -27
  537. package/docs/ja/intlayer_with_react_router_v7.md +12 -1
  538. package/docs/ja/intlayer_with_remix_3.md +22 -1
  539. package/docs/ja/intlayer_with_solid_start.md +14 -7
  540. package/docs/ja/intlayer_with_svelte_kit.md +21 -15
  541. package/docs/ja/intlayer_with_tanstack+solid.md +13 -2
  542. package/docs/ja/intlayer_with_tanstack.md +13 -6
  543. package/docs/ja/intlayer_with_vite+lit.md +75 -3
  544. package/docs/ja/intlayer_with_vite+preact.md +16 -3
  545. package/docs/ja/intlayer_with_vite+react.md +16 -3
  546. package/docs/ja/intlayer_with_vite+solid.md +16 -3
  547. package/docs/ja/intlayer_with_vite+svelte.md +16 -3
  548. package/docs/ja/intlayer_with_vite+vanilla.md +16 -3
  549. package/docs/ja/intlayer_with_vite+vue.md +16 -3
  550. package/docs/ja/introduction.md +0 -1
  551. package/docs/ja/readme.md +0 -1
  552. package/docs/ja/releases/v8.md +1 -5
  553. package/docs/ja/self_hosting.md +398 -223
  554. package/docs/ko/benchmark/nextjs.md +13 -13
  555. package/docs/ko/benchmark/solid.md +5 -5
  556. package/docs/ko/benchmark/svelte.md +4 -4
  557. package/docs/ko/benchmark/tanstack.md +14 -13
  558. package/docs/ko/benchmark/vue.md +5 -5
  559. package/docs/ko/chrome_extension.md +130 -0
  560. package/docs/ko/cli/index.md +6 -1
  561. package/docs/ko/cli/infra.md +162 -0
  562. package/docs/ko/cli/init.md +24 -1
  563. package/docs/ko/dictionary/html.md +173 -5
  564. package/docs/ko/dictionary/markdown.md +263 -1
  565. package/docs/ko/intlayer_with_analog.md +23 -1
  566. package/docs/ko/intlayer_with_angular_19.md +24 -1
  567. package/docs/ko/intlayer_with_angular_21.md +24 -1
  568. package/docs/ko/intlayer_with_astro.md +29 -21
  569. package/docs/ko/intlayer_with_astro_lit.md +47 -27
  570. package/docs/ko/intlayer_with_astro_preact.md +48 -27
  571. package/docs/ko/intlayer_with_astro_react.md +48 -27
  572. package/docs/ko/intlayer_with_astro_solid.md +48 -27
  573. package/docs/ko/intlayer_with_astro_svelte.md +47 -27
  574. package/docs/ko/intlayer_with_astro_vue.md +47 -27
  575. package/docs/ko/intlayer_with_react_router_v7.md +12 -1
  576. package/docs/ko/intlayer_with_remix_3.md +22 -1
  577. package/docs/ko/intlayer_with_solid_start.md +14 -7
  578. package/docs/ko/intlayer_with_svelte_kit.md +12 -1
  579. package/docs/ko/intlayer_with_tanstack+solid.md +13 -2
  580. package/docs/ko/intlayer_with_tanstack.md +13 -6
  581. package/docs/ko/intlayer_with_vite+lit.md +75 -3
  582. package/docs/ko/intlayer_with_vite+preact.md +16 -3
  583. package/docs/ko/intlayer_with_vite+react.md +16 -3
  584. package/docs/ko/intlayer_with_vite+solid.md +26 -16
  585. package/docs/ko/intlayer_with_vite+svelte.md +16 -3
  586. package/docs/ko/intlayer_with_vite+vanilla.md +16 -3
  587. package/docs/ko/intlayer_with_vite+vue.md +16 -3
  588. package/docs/ko/introduction.md +0 -1
  589. package/docs/ko/readme.md +0 -1
  590. package/docs/ko/releases/v8.md +1 -5
  591. package/docs/ko/self_hosting.md +411 -238
  592. package/docs/nl/intlayer_with_vite+lit.md +75 -3
  593. package/docs/nl/intlayer_with_vite+vanilla.md +16 -3
  594. package/docs/nl/introduction.md +0 -1
  595. package/docs/pl/benchmark/nextjs.md +13 -13
  596. package/docs/pl/benchmark/solid.md +5 -5
  597. package/docs/pl/benchmark/svelte.md +4 -4
  598. package/docs/pl/benchmark/tanstack.md +14 -13
  599. package/docs/pl/benchmark/vue.md +5 -5
  600. package/docs/pl/chrome_extension.md +130 -0
  601. package/docs/pl/cli/index.md +6 -1
  602. package/docs/pl/cli/infra.md +162 -0
  603. package/docs/pl/cli/init.md +24 -1
  604. package/docs/pl/dictionary/html.md +173 -5
  605. package/docs/pl/dictionary/markdown.md +263 -1
  606. package/docs/pl/intlayer_with_analog.md +23 -1
  607. package/docs/pl/intlayer_with_angular_19.md +24 -1
  608. package/docs/pl/intlayer_with_angular_21.md +24 -1
  609. package/docs/pl/intlayer_with_astro.md +29 -21
  610. package/docs/pl/intlayer_with_astro_lit.md +47 -27
  611. package/docs/pl/intlayer_with_astro_preact.md +48 -27
  612. package/docs/pl/intlayer_with_astro_react.md +48 -27
  613. package/docs/pl/intlayer_with_astro_solid.md +48 -27
  614. package/docs/pl/intlayer_with_astro_svelte.md +47 -27
  615. package/docs/pl/intlayer_with_astro_vue.md +47 -27
  616. package/docs/pl/intlayer_with_react_router_v7.md +12 -1
  617. package/docs/pl/intlayer_with_remix_3.md +22 -1
  618. package/docs/pl/intlayer_with_solid_start.md +14 -7
  619. package/docs/pl/intlayer_with_svelte_kit.md +12 -1
  620. package/docs/pl/intlayer_with_tanstack+solid.md +13 -2
  621. package/docs/pl/intlayer_with_tanstack.md +13 -6
  622. package/docs/pl/intlayer_with_vite+lit.md +75 -3
  623. package/docs/pl/intlayer_with_vite+preact.md +16 -3
  624. package/docs/pl/intlayer_with_vite+react.md +16 -3
  625. package/docs/pl/intlayer_with_vite+solid.md +16 -3
  626. package/docs/pl/intlayer_with_vite+svelte.md +16 -3
  627. package/docs/pl/intlayer_with_vite+vanilla.md +16 -3
  628. package/docs/pl/intlayer_with_vite+vue.md +16 -3
  629. package/docs/pl/introduction.md +0 -1
  630. package/docs/pl/readme.md +0 -1
  631. package/docs/pl/releases/v8.md +1 -5
  632. package/docs/pl/self_hosting.md +408 -233
  633. package/docs/pt/benchmark/nextjs.md +13 -13
  634. package/docs/pt/benchmark/solid.md +5 -5
  635. package/docs/pt/benchmark/svelte.md +4 -4
  636. package/docs/pt/benchmark/tanstack.md +14 -13
  637. package/docs/pt/benchmark/vue.md +5 -5
  638. package/docs/pt/chrome_extension.md +130 -0
  639. package/docs/pt/cli/index.md +6 -1
  640. package/docs/pt/cli/infra.md +162 -0
  641. package/docs/pt/cli/init.md +24 -1
  642. package/docs/pt/dictionary/html.md +173 -5
  643. package/docs/pt/dictionary/markdown.md +263 -1
  644. package/docs/pt/intlayer_with_analog.md +23 -1
  645. package/docs/pt/intlayer_with_angular_19.md +24 -1
  646. package/docs/pt/intlayer_with_angular_21.md +24 -1
  647. package/docs/pt/intlayer_with_astro.md +29 -21
  648. package/docs/pt/intlayer_with_astro_lit.md +47 -27
  649. package/docs/pt/intlayer_with_astro_preact.md +48 -27
  650. package/docs/pt/intlayer_with_astro_react.md +48 -27
  651. package/docs/pt/intlayer_with_astro_solid.md +48 -27
  652. package/docs/pt/intlayer_with_astro_svelte.md +47 -27
  653. package/docs/pt/intlayer_with_astro_vue.md +47 -27
  654. package/docs/pt/intlayer_with_react_router_v7.md +12 -1
  655. package/docs/pt/intlayer_with_remix_3.md +22 -1
  656. package/docs/pt/intlayer_with_solid_start.md +14 -7
  657. package/docs/pt/intlayer_with_svelte_kit.md +12 -1
  658. package/docs/pt/intlayer_with_tanstack+solid.md +13 -2
  659. package/docs/pt/intlayer_with_tanstack.md +13 -6
  660. package/docs/pt/intlayer_with_vite+lit.md +75 -3
  661. package/docs/pt/intlayer_with_vite+preact.md +16 -3
  662. package/docs/pt/intlayer_with_vite+react.md +16 -3
  663. package/docs/pt/intlayer_with_vite+solid.md +16 -3
  664. package/docs/pt/intlayer_with_vite+svelte.md +16 -3
  665. package/docs/pt/intlayer_with_vite+vanilla.md +16 -3
  666. package/docs/pt/intlayer_with_vite+vue.md +16 -3
  667. package/docs/pt/introduction.md +0 -1
  668. package/docs/pt/readme.md +0 -1
  669. package/docs/pt/releases/v8.md +1 -5
  670. package/docs/pt/self_hosting.md +399 -224
  671. package/docs/ru/benchmark/nextjs.md +13 -13
  672. package/docs/ru/benchmark/solid.md +5 -5
  673. package/docs/ru/benchmark/svelte.md +4 -4
  674. package/docs/ru/benchmark/tanstack.md +14 -13
  675. package/docs/ru/benchmark/vue.md +5 -5
  676. package/docs/ru/chrome_extension.md +130 -0
  677. package/docs/ru/cli/index.md +6 -1
  678. package/docs/ru/cli/infra.md +162 -0
  679. package/docs/ru/cli/init.md +24 -1
  680. package/docs/ru/dictionary/html.md +173 -5
  681. package/docs/ru/dictionary/markdown.md +263 -1
  682. package/docs/ru/intlayer_with_analog.md +23 -1
  683. package/docs/ru/intlayer_with_angular_19.md +24 -1
  684. package/docs/ru/intlayer_with_angular_21.md +24 -1
  685. package/docs/ru/intlayer_with_astro.md +35 -25
  686. package/docs/ru/intlayer_with_astro_lit.md +47 -27
  687. package/docs/ru/intlayer_with_astro_preact.md +48 -27
  688. package/docs/ru/intlayer_with_astro_react.md +48 -27
  689. package/docs/ru/intlayer_with_astro_solid.md +48 -27
  690. package/docs/ru/intlayer_with_astro_svelte.md +47 -27
  691. package/docs/ru/intlayer_with_astro_vue.md +47 -27
  692. package/docs/ru/intlayer_with_react_router_v7.md +12 -1
  693. package/docs/ru/intlayer_with_remix_3.md +22 -1
  694. package/docs/ru/intlayer_with_solid_start.md +14 -7
  695. package/docs/ru/intlayer_with_svelte_kit.md +12 -1
  696. package/docs/ru/intlayer_with_tanstack+solid.md +13 -2
  697. package/docs/ru/intlayer_with_tanstack.md +13 -6
  698. package/docs/ru/intlayer_with_vite+lit.md +75 -3
  699. package/docs/ru/intlayer_with_vite+preact.md +16 -3
  700. package/docs/ru/intlayer_with_vite+react.md +16 -3
  701. package/docs/ru/intlayer_with_vite+solid.md +16 -3
  702. package/docs/ru/intlayer_with_vite+svelte.md +16 -3
  703. package/docs/ru/intlayer_with_vite+vanilla.md +16 -3
  704. package/docs/ru/intlayer_with_vite+vue.md +16 -3
  705. package/docs/ru/introduction.md +0 -1
  706. package/docs/ru/readme.md +0 -1
  707. package/docs/ru/releases/v8.md +1 -5
  708. package/docs/ru/self_hosting.md +403 -228
  709. package/docs/tr/benchmark/nextjs.md +13 -13
  710. package/docs/tr/benchmark/solid.md +5 -5
  711. package/docs/tr/benchmark/svelte.md +4 -4
  712. package/docs/tr/benchmark/tanstack.md +14 -13
  713. package/docs/tr/benchmark/vue.md +5 -5
  714. package/docs/tr/chrome_extension.md +130 -0
  715. package/docs/tr/cli/index.md +6 -1
  716. package/docs/tr/cli/infra.md +162 -0
  717. package/docs/tr/cli/init.md +24 -1
  718. package/docs/tr/dictionary/html.md +173 -5
  719. package/docs/tr/dictionary/markdown.md +263 -1
  720. package/docs/tr/intlayer_with_analog.md +23 -1
  721. package/docs/tr/intlayer_with_angular_19.md +24 -1
  722. package/docs/tr/intlayer_with_angular_21.md +24 -1
  723. package/docs/tr/intlayer_with_astro.md +35 -25
  724. package/docs/tr/intlayer_with_astro_lit.md +48 -28
  725. package/docs/tr/intlayer_with_astro_preact.md +49 -28
  726. package/docs/tr/intlayer_with_astro_react.md +49 -28
  727. package/docs/tr/intlayer_with_astro_solid.md +49 -28
  728. package/docs/tr/intlayer_with_astro_svelte.md +48 -28
  729. package/docs/tr/intlayer_with_astro_vue.md +48 -28
  730. package/docs/tr/intlayer_with_react_router_v7.md +12 -1
  731. package/docs/tr/intlayer_with_remix_3.md +22 -1
  732. package/docs/tr/intlayer_with_solid_start.md +14 -7
  733. package/docs/tr/intlayer_with_svelte_kit.md +12 -1
  734. package/docs/tr/intlayer_with_tanstack+solid.md +13 -2
  735. package/docs/tr/intlayer_with_tanstack.md +13 -6
  736. package/docs/tr/intlayer_with_vite+lit.md +75 -3
  737. package/docs/tr/intlayer_with_vite+preact.md +16 -3
  738. package/docs/tr/intlayer_with_vite+react.md +16 -3
  739. package/docs/tr/intlayer_with_vite+solid.md +16 -3
  740. package/docs/tr/intlayer_with_vite+svelte.md +16 -3
  741. package/docs/tr/intlayer_with_vite+vanilla.md +16 -3
  742. package/docs/tr/intlayer_with_vite+vue.md +16 -3
  743. package/docs/tr/introduction.md +0 -1
  744. package/docs/tr/readme.md +0 -1
  745. package/docs/tr/releases/v8.md +1 -5
  746. package/docs/tr/self_hosting.md +410 -234
  747. package/docs/uk/benchmark/nextjs.md +13 -13
  748. package/docs/uk/benchmark/solid.md +5 -5
  749. package/docs/uk/benchmark/svelte.md +4 -4
  750. package/docs/uk/benchmark/tanstack.md +14 -13
  751. package/docs/uk/benchmark/vue.md +5 -5
  752. package/docs/uk/chrome_extension.md +130 -0
  753. package/docs/uk/cli/index.md +6 -1
  754. package/docs/uk/cli/infra.md +162 -0
  755. package/docs/uk/cli/init.md +24 -1
  756. package/docs/uk/dictionary/html.md +173 -5
  757. package/docs/uk/dictionary/markdown.md +263 -1
  758. package/docs/uk/intlayer_with_analog.md +23 -1
  759. package/docs/uk/intlayer_with_angular_19.md +24 -1
  760. package/docs/uk/intlayer_with_angular_21.md +24 -1
  761. package/docs/uk/intlayer_with_astro.md +35 -25
  762. package/docs/uk/intlayer_with_astro_lit.md +47 -27
  763. package/docs/uk/intlayer_with_astro_preact.md +48 -27
  764. package/docs/uk/intlayer_with_astro_react.md +48 -27
  765. package/docs/uk/intlayer_with_astro_solid.md +48 -27
  766. package/docs/uk/intlayer_with_astro_svelte.md +47 -27
  767. package/docs/uk/intlayer_with_astro_vue.md +47 -27
  768. package/docs/uk/intlayer_with_react_router_v7.md +12 -1
  769. package/docs/uk/intlayer_with_remix_3.md +22 -1
  770. package/docs/uk/intlayer_with_solid_start.md +14 -7
  771. package/docs/uk/intlayer_with_svelte_kit.md +12 -1
  772. package/docs/uk/intlayer_with_tanstack+solid.md +13 -2
  773. package/docs/uk/intlayer_with_tanstack.md +13 -6
  774. package/docs/uk/intlayer_with_vite+lit.md +75 -3
  775. package/docs/uk/intlayer_with_vite+preact.md +16 -3
  776. package/docs/uk/intlayer_with_vite+react.md +16 -3
  777. package/docs/uk/intlayer_with_vite+solid.md +16 -3
  778. package/docs/uk/intlayer_with_vite+svelte.md +16 -3
  779. package/docs/uk/intlayer_with_vite+vanilla.md +16 -3
  780. package/docs/uk/intlayer_with_vite+vue.md +16 -3
  781. package/docs/uk/introduction.md +0 -1
  782. package/docs/uk/readme.md +0 -1
  783. package/docs/uk/releases/v8.md +1 -5
  784. package/docs/uk/self_hosting.md +413 -238
  785. package/docs/ur/intlayer_with_vite+lit.md +75 -3
  786. package/docs/ur/intlayer_with_vite+vanilla.md +16 -3
  787. package/docs/ur/introduction.md +0 -1
  788. package/docs/vi/benchmark/nextjs.md +13 -13
  789. package/docs/vi/benchmark/solid.md +5 -5
  790. package/docs/vi/benchmark/svelte.md +4 -4
  791. package/docs/vi/benchmark/tanstack.md +14 -13
  792. package/docs/vi/benchmark/vue.md +5 -5
  793. package/docs/vi/chrome_extension.md +130 -0
  794. package/docs/vi/cli/index.md +6 -1
  795. package/docs/vi/cli/infra.md +162 -0
  796. package/docs/vi/cli/init.md +24 -1
  797. package/docs/vi/dictionary/html.md +173 -5
  798. package/docs/vi/dictionary/markdown.md +263 -1
  799. package/docs/vi/intlayer_with_analog.md +23 -1
  800. package/docs/vi/intlayer_with_angular_19.md +24 -1
  801. package/docs/vi/intlayer_with_angular_21.md +24 -1
  802. package/docs/vi/intlayer_with_astro.md +35 -25
  803. package/docs/vi/intlayer_with_astro_lit.md +47 -27
  804. package/docs/vi/intlayer_with_astro_preact.md +48 -27
  805. package/docs/vi/intlayer_with_astro_react.md +48 -27
  806. package/docs/vi/intlayer_with_astro_solid.md +48 -27
  807. package/docs/vi/intlayer_with_astro_svelte.md +47 -27
  808. package/docs/vi/intlayer_with_astro_vue.md +47 -27
  809. package/docs/vi/intlayer_with_react_router_v7.md +12 -1
  810. package/docs/vi/intlayer_with_remix_3.md +22 -1
  811. package/docs/vi/intlayer_with_solid_start.md +14 -7
  812. package/docs/vi/intlayer_with_svelte_kit.md +12 -1
  813. package/docs/vi/intlayer_with_tanstack+solid.md +13 -2
  814. package/docs/vi/intlayer_with_tanstack.md +13 -6
  815. package/docs/vi/intlayer_with_vite+lit.md +75 -3
  816. package/docs/vi/intlayer_with_vite+preact.md +16 -3
  817. package/docs/vi/intlayer_with_vite+react.md +16 -3
  818. package/docs/vi/intlayer_with_vite+solid.md +16 -3
  819. package/docs/vi/intlayer_with_vite+svelte.md +16 -3
  820. package/docs/vi/intlayer_with_vite+vanilla.md +16 -3
  821. package/docs/vi/intlayer_with_vite+vue.md +16 -3
  822. package/docs/vi/introduction.md +0 -1
  823. package/docs/vi/readme.md +0 -1
  824. package/docs/vi/releases/v8.md +1 -5
  825. package/docs/vi/self_hosting.md +408 -234
  826. package/docs/zh/benchmark/nextjs.md +13 -13
  827. package/docs/zh/benchmark/solid.md +5 -5
  828. package/docs/zh/benchmark/svelte.md +4 -4
  829. package/docs/zh/benchmark/tanstack.md +14 -13
  830. package/docs/zh/benchmark/vue.md +5 -5
  831. package/docs/zh/chrome_extension.md +130 -0
  832. package/docs/zh/cli/index.md +6 -1
  833. package/docs/zh/cli/infra.md +162 -0
  834. package/docs/zh/cli/init.md +24 -1
  835. package/docs/zh/dictionary/html.md +172 -5
  836. package/docs/zh/dictionary/markdown.md +262 -1
  837. package/docs/zh/intlayer_with_analog.md +23 -1
  838. package/docs/zh/intlayer_with_angular_19.md +24 -1
  839. package/docs/zh/intlayer_with_angular_21.md +24 -1
  840. package/docs/zh/intlayer_with_astro.md +29 -21
  841. package/docs/zh/intlayer_with_astro_lit.md +47 -27
  842. package/docs/zh/intlayer_with_astro_preact.md +48 -27
  843. package/docs/zh/intlayer_with_astro_react.md +48 -27
  844. package/docs/zh/intlayer_with_astro_solid.md +48 -27
  845. package/docs/zh/intlayer_with_astro_svelte.md +47 -27
  846. package/docs/zh/intlayer_with_astro_vue.md +47 -27
  847. package/docs/zh/intlayer_with_react_router_v7.md +12 -1
  848. package/docs/zh/intlayer_with_remix_3.md +22 -1
  849. package/docs/zh/intlayer_with_solid_start.md +14 -7
  850. package/docs/zh/intlayer_with_svelte_kit.md +12 -1
  851. package/docs/zh/intlayer_with_tanstack+solid.md +13 -2
  852. package/docs/zh/intlayer_with_tanstack.md +13 -6
  853. package/docs/zh/intlayer_with_vite+lit.md +75 -3
  854. package/docs/zh/intlayer_with_vite+preact.md +16 -3
  855. package/docs/zh/intlayer_with_vite+react.md +16 -3
  856. package/docs/zh/intlayer_with_vite+solid.md +16 -3
  857. package/docs/zh/intlayer_with_vite+svelte.md +16 -3
  858. package/docs/zh/intlayer_with_vite+vanilla.md +16 -3
  859. package/docs/zh/intlayer_with_vite+vue.md +16 -3
  860. package/docs/zh/introduction.md +0 -1
  861. package/docs/zh/readme.md +0 -1
  862. package/docs/zh/releases/v8.md +1 -5
  863. package/docs/zh/self_hosting.md +410 -237
  864. package/docs/zh-TW/introduction.md +0 -1
  865. package/legal/ar/privacy_notice.md +9 -3
  866. package/legal/de/privacy_notice.md +9 -3
  867. package/legal/en/privacy_notice.md +10 -3
  868. package/legal/en-GB/privacy_notice.md +9 -3
  869. package/legal/es/privacy_notice.md +9 -3
  870. package/legal/fr/privacy_notice.md +9 -3
  871. package/legal/hi/privacy_notice.md +9 -3
  872. package/legal/id/privacy_notice.md +9 -3
  873. package/legal/it/privacy_notice.md +9 -3
  874. package/legal/ja/privacy_notice.md +9 -3
  875. package/legal/ko/privacy_notice.md +9 -3
  876. package/legal/pl/privacy_notice.md +9 -3
  877. package/legal/pt/privacy_notice.md +9 -3
  878. package/legal/ru/privacy_notice.md +9 -3
  879. package/legal/tr/privacy_notice.md +9 -3
  880. package/legal/uk/privacy_notice.md +9 -3
  881. package/legal/vi/privacy_notice.md +9 -3
  882. package/legal/zh/privacy_notice.md +9 -3
  883. package/package.json +6 -6
  884. package/src/generated/docs.entry.ts +40 -40
  885. package/docs/ar/intlayer_with_astro_vanilla.md +0 -709
  886. package/docs/ar/roadmap.md +0 -321
  887. package/docs/de/intlayer_with_astro_vanilla.md +0 -705
  888. package/docs/de/roadmap.md +0 -322
  889. package/docs/en/intlayer_with_astro_vanilla.md +0 -706
  890. package/docs/en/roadmap.md +0 -325
  891. package/docs/en-GB/intlayer_with_astro_vanilla.md +0 -709
  892. package/docs/en-GB/roadmap.md +0 -322
  893. package/docs/es/intlayer_with_astro_vanilla.md +0 -701
  894. package/docs/es/roadmap.md +0 -322
  895. package/docs/fr/intlayer_with_astro_vanilla.md +0 -701
  896. package/docs/fr/roadmap.md +0 -322
  897. package/docs/hi/intlayer_with_astro_vanilla.md +0 -720
  898. package/docs/hi/roadmap.md +0 -322
  899. package/docs/id/intlayer_with_astro_vanilla.md +0 -705
  900. package/docs/id/roadmap.md +0 -325
  901. package/docs/it/intlayer_with_astro_vanilla.md +0 -705
  902. package/docs/it/roadmap.md +0 -322
  903. package/docs/ja/intlayer_with_astro_vanilla.md +0 -708
  904. package/docs/ja/roadmap.md +0 -322
  905. package/docs/ko/intlayer_with_astro_vanilla.md +0 -720
  906. package/docs/ko/roadmap.md +0 -322
  907. package/docs/pl/intlayer_with_astro_vanilla.md +0 -705
  908. package/docs/pl/roadmap.md +0 -325
  909. package/docs/pt/intlayer_with_astro_vanilla.md +0 -705
  910. package/docs/pt/roadmap.md +0 -322
  911. package/docs/ru/intlayer_with_astro_vanilla.md +0 -716
  912. package/docs/ru/roadmap.md +0 -322
  913. package/docs/tr/intlayer_with_astro_vanilla.md +0 -705
  914. package/docs/tr/roadmap.md +0 -325
  915. package/docs/uk/intlayer_with_astro_vanilla.md +0 -705
  916. package/docs/uk/roadmap.md +0 -325
  917. package/docs/vi/intlayer_with_astro_vanilla.md +0 -705
  918. package/docs/vi/roadmap.md +0 -325
  919. package/docs/zh/intlayer_with_astro_vanilla.md +0 -704
  920. package/docs/zh/roadmap.md +0 -322
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-13
3
- updatedAt: 2026-09-13
3
+ updatedAt: 2026-09-22
4
4
  title: "i18next vs Intlayer: 2026年基准测试与深度对比"
5
5
  description: "在 Next.js 和 TanStack Start 上对比评测 react-i18next、next-i18next 与 Intlayer。涵盖打包体积、多余内容泄露、语言切换响应速度及开发体验。"
6
6
  keywords:
@@ -25,6 +25,8 @@ author: aymericzip
25
25
 
26
26
  # i18next VS Intlayer | React & Next.js 国际化 (i18n) 基准测试对比
27
27
 
28
+ ![i18next VS Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18next-next-intl-intlayer.webp?raw=true)
29
+
28
30
  `i18next` 是 JavaScript 生态中最广泛使用的国际化(i18n)框架。通过 `react-i18next` 和 `next-i18next`,它为大量的 React 和 Next.js 应用提供支持。Intlayer 则是基于编译器、按组件作用域划分的现代化替代方案。
29
31
 
30
32
  本文基于实测数据而非功能清单进行对比。所有数据均来自 [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom),这是一个开源基准测试套件,它使用每个库构建完全相同的应用,并精确记录浏览器实际下载的内容。
@@ -99,6 +101,10 @@ Intlayer 无需独立的 "scoped" 策略: 编译器会自动**以组件为粒度
99
101
 
100
102
  ### Next.js 平台测试结果 (`next-i18next`)
101
103
 
104
+ 选择您关注的指标和库:
105
+
106
+ <I18nBenchmark framework="nextjs" vertical/>
107
+
102
108
  | 方案 | 策略 | 库体积 (gz) | 页面平均 JS (gz) | 语言泄露率 | 页面泄露率 | 组件平均体积 (gz) | 端到端响应时间 | 水合耗时 |
103
109
  | --------------------------------- | -------------- | ----------: | ---------------: | ---------: | ---------: | ----------------: | -------------: | -------: |
104
110
  | **base** (无 i18n) | - | 0.0 KB | 141.0 KB | 0.0% | 0.0% | 0.9 KB | 13.4 ms | 11.8 ms |
@@ -119,6 +125,15 @@ Intlayer 无需独立的 "scoped" 策略: 编译器会自动**以组件为粒度
119
125
  - **组件级打包体积**: 调用 `useTranslation()` 的组件打包体积在 26 到 79 KB 之间;而使用 `useIntlayer()` 的相同组件仅需 6.9 KB。
120
126
  - **水合延迟**: 在 `dynamic` 配置下,水合耗时飙升至 27.7 ms,这是因为客户端在 React 启动水合之前,i18next 实例必须完成初始化并解析后端。
121
127
 
128
+ <ClickToOpenIframe
129
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-nextjs.md"
130
+ width="100%"
131
+ height="600px"
132
+ style="border:none;"
133
+ />
134
+
135
+ > 完整表格及各库、各策略数据,请参阅 [Next.js 性能基准测试报告](https://intlayer.org/zh/doc/benchmark/nextjs)。
136
+
122
137
  ### TanStack Start 平台测试结果 (`react-i18next`)
123
138
 
124
139
  为了排除 Next.js 平台特有机制的影响,在 TanStack Start 上直接运行纯粹的 `react-i18next`:
@@ -141,8 +156,19 @@ Intlayer 无需独立的 "scoped" 策略: 编译器会自动**以组件为粒度
141
156
  - Intlayer 的 `static` 策略已默认具备 **0% 页面泄露**,因为仅打包当前页面组件显式导入的字典。若开启 `importMode: 'dynamic'`,更可彻底杜绝语言层面的泄露。
142
157
  - **组件体积差异**: `react-i18next` 单组件占用 24-27 KB,而 Intlayer 仅为 6-8 KB。因为 `useTranslation()` 会将每个组件与全局 i18next 实例绑定。
143
158
 
159
+ <ClickToOpenIframe
160
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md"
161
+ width="100%"
162
+ height="600px"
163
+ style="border:none;"
164
+ />
165
+
166
+ > 完整表格请参阅 [TanStack Start 性能基准测试报告](https://intlayer.org/zh/doc/benchmark/tanstack)。
167
+
144
168
  ## 为什么差距如此悬殊?全局实例模式 vs 编译时字典
145
169
 
170
+ ![Centralized catalogs versus per-component dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/assets/project_stucture_18n_vs_intlayer.png?raw=true)
171
+
146
172
  `i18next` 最初于 2012 年设计为纯运行时架构: 全局单一实例维护资源仓库,各种插件对其进行扩展,并在组件渲染时通过 `t()` 查找键名。这种设计赋予了它极高的通用性(支持任何框架、后端与文件格式),但也是其性能开销的根源:
147
173
 
148
174
  ```bash
@@ -166,7 +192,13 @@ Intlayer 无需独立的 "scoped" 策略: 编译器会自动**以组件为粒度
166
192
  └── page.tsx # 必须明确知道该页面依赖 ["common", "about"]
167
193
  ```
168
194
 
169
- 全局实例在运行时无法预知某个组件到底会请求哪些键,因此只能加载开发者预先指定的整个命名空间。优化意味着**开发者必须**手动拆分翻译文件为命名空间、**必须**在每个页面手动枚举所需命名空间,并且在组件移动或重构时**必须**手动同步这一映射清单。正如[基准测试总结](https://github.com/intlayer-org/benchmark-bloom/blob/main/report/NOTE.md)所言: “在保证类型安全的同时,精确维护每个页面需要哪些命名空间简直是一场噩梦”。
195
+ 全局实例在运行时无法预知某个组件到底会请求哪些键,因此只能加载开发者预先指定的整个命名空间。优化意味着**开发者必须**手动拆分翻译文件为命名空间、**必须**在每个页面手动枚举所需命名空间,并且在组件移动或重构时**必须**手动同步这一映射清单。
196
+
197
+ 资源开销在页面与语言两个维度上成倍激增:
198
+
199
+ ![Theoretical content leakage by architecture](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
200
+
201
+ 正如 [基准测试总结](https://github.com/intlayer-org/benchmark-bloom/blob/main/report/NOTE.md)所言: “在保证类型安全的同时,精确维护每个页面需要哪些命名空间简直是一场噩梦”。
170
202
 
171
203
  Intlayer 彻底抛弃了全局实例模式。翻译内容直接声明在组件同级,编译器在构建阶段直接解析依赖图谱:
172
204
 
@@ -193,7 +225,8 @@ Intlayer 彻底抛弃了全局实例模式。翻译内容直接声明在组件
193
225
 
194
226
  ### 初始化配置
195
227
 
196
- **next-i18next (App Router)**
228
+ <Tabs defaultTab="intlayer" group="techno">
229
+ <Tab label="next-i18next" value="i18next">
197
230
 
198
231
  ```ts fileName="src/app/i18n/server.ts"
199
232
  import { createInstance } from "i18next";
@@ -228,7 +261,8 @@ export const initI18next = async (
228
261
 
229
262
  此外还需要编写客户端 `I18nProvider`,配置 `generateStaticParams`,并在每个页面显式指定 `namespaces` 数组。
230
263
 
231
- **Intlayer**
264
+ </Tab>
265
+ <Tab label="Intlayer" value="intlayer">
232
266
 
233
267
  ```ts fileName="intlayer.config.ts"
234
268
  import { type IntlayerConfig, Locales } from "intlayer";
@@ -264,9 +298,13 @@ const LocaleLayout: NextLayoutIntlayer = async ({ children, params }) => {
264
298
  export default LocaleLayout;
265
299
  ```
266
300
 
301
+ </Tab>
302
+ </Tabs>
303
+
267
304
  ### 客户端组件开发
268
305
 
269
- **react-i18next**
306
+ <Tabs defaultTab="intlayer" group="techno">
307
+ <Tab label="react-i18next" value="i18next">
270
308
 
271
309
  ```json fileName="src/locales/en/about.json"
272
310
  {
@@ -304,7 +342,8 @@ export const Counter = () => {
304
342
 
305
343
  > 渲染该组件的页面必须确保预加载了 `about` 命名空间,且除非扩展 `CustomTypeOptions`,否则 `t("counter.label")` 只是无类型保护的普通字符串。
306
344
 
307
- **Intlayer**
345
+ </Tab>
346
+ <Tab label="Intlayer" value="intlayer">
308
347
 
309
348
  ```ts fileName="src/components/Counter/index.content.ts"
310
349
  import { t, type Dictionary } from "intlayer";
@@ -345,9 +384,13 @@ export const Counter = () => {
345
384
 
346
385
  `label` 和 `increment` 拥有完全严格的自动类型推导;输错字段名会直接触发 TypeScript 编译报错,如果缺少法语翻译则会在构建时立即拦截。
347
386
 
387
+ </Tab>
388
+ </Tabs>
389
+
348
390
  ### 同步服务端组件 (RSC)
349
391
 
350
- **next-i18next**
392
+ <Tabs defaultTab="intlayer" group="techno">
393
+ <Tab label="next-i18next" value="i18next">
351
394
 
352
395
  ```tsx fileName="src/components/ServerCounter.tsx"
353
396
  type ServerCounterProps = {
@@ -366,7 +409,8 @@ export const ServerCounter = ({ t, locale, count }: ServerCounterProps) => (
366
409
 
367
410
  顶层页面必须先调用 `i18n.getFixedT(locale, "about")`,然后通过 Props 将 `t` 和 `locale` 逐层传递给子组件。
368
411
 
369
- **Intlayer**
412
+ </Tab>
413
+ <Tab label="Intlayer" value="intlayer">
370
414
 
371
415
  ```tsx fileName="src/components/ServerCounter.tsx"
372
416
  import { useIntlayer } from "next-intlayer/server";
@@ -385,6 +429,9 @@ export const ServerCounter = ({ count }: { count: number }) => {
385
429
  };
386
430
  ```
387
431
 
432
+ </Tab>
433
+ </Tabs>
434
+
388
435
  ## 保留 i18next API,直接享受 Intlayer 的极致性能
389
436
 
390
437
  你不必重写所有组件也能享受上述基准测试中的性能红利。`@intlayer/i18next`、`@intlayer/react-i18next` 和 `@intlayer/next-i18next` 提供了即插即用的兼容适配器: 代码中现有的 `useTranslation`、`t()`、`<Trans>`、`{{interpolation}}`、复数形式与上下文后缀均可无缝工作,底层则由 Intlayer 编译器自动优化并按需分发字典。
@@ -415,18 +462,85 @@ export default defineConfig({
415
462
 
416
463
  ## 如何做出选择?
417
464
 
418
- - **选择 i18next**: 如果你的应用极度依赖其庞大的插件生态(特定语言检测器、特殊后端、ICU、Locize 等),需要在 React 之外(如 Node.js 后端服务、原生 JS 或其他前端框架)统一国际化方案,团队成员已有深度积累,或者外部翻译平台硬性要求使用 `locales/{lng}/{ns}.json` 目录结构。若追求性能,需预留充足精力维护命名空间与页面加载清单。
419
- - **选择 Intlayer**: 如果你追求**就近组织组件文本**、**严苛的 TypeScript 类型安全**、**构建期漏翻即时报错**、**零配置自动 Tree-shaking 与按需懒加载**、瞬时语言切换、原生同步服务端组件支持以及开箱即用的可视化编辑器 / CMS / AI 翻译工具流。在大型复杂模块化项目及设计系统中表现尤为出色。
420
- - **选择 `@intlayer/*-i18next` 适配器**: 如果你已经在运行大型 i18next 项目,并希望零成本获取打包体积缩减与响应速度提升。
465
+ <AccordionGroup>
466
+ <Accordion header="选择 i18next">
467
+
468
+ 如果你的应用极度依赖其庞大的插件生态(特定语言检测器、特殊后端、ICU、Locize 等),需要在 React 之外(如 Node.js 后端服务、原生 JS 或其他前端框架)统一国际化方案,团队成员已有深度积累,或者外部翻译平台硬性要求使用 `locales/{lng}/{ns}.json` 目录结构。若追求性能,需预留充足精力维护命名空间与页面加载清单。
469
+
470
+ </Accordion>
471
+ <Accordion header="选择 Intlayer">
472
+
473
+ 您希望获得**组件级内容管理**、**严格的 TypeScript 类型提示**、**构建期漏译检测**、**零心智负担的 Tree-shaking 与按需懒加载**、毫秒级语言切换、同步服务端组件支持以及开箱即用的内容编辑套件([可视化编辑器](https://intlayer.org/zh/doc/concept/editor)、[CMS](https://intlayer.org/zh/doc/concept/cms)、[AI 自动翻译](https://intlayer.org/zh/doc/concept/auto-fill)、[MCP 服务端](https://intlayer.org/zh/doc/mcp-server))。特别适用于大型、模块化代码库与设计系统。
474
+
475
+ </Accordion>
476
+ <Accordion header="选择 @intlayer/*-i18next 适配层">
477
+
478
+ 您现有项目已深度依赖 i18next,希望在完全不重构组件代码的前提下,立即获取包体积缩减与极致响应速度。您的 `locales/{lng}/{ns}.json` 文件继续作为唯一事实来源。在 [i18next vs @intlayer/i18next](https://intlayer.org/zh/blog/i18next-vs-intlayer-i18next) 中进行了同台实测。
479
+
480
+ </Accordion>
481
+ </AccordionGroup>
482
+
483
+ ## 常见问题解答 (FAQ)
484
+
485
+ <FAQ>
486
+
487
+ <Question title="为什么 i18next 的体积比其他现代国际化库大得多?">
488
+
489
+ 它最初被设计为跨框架的通用运行时:全局单例实例、插件执行管道、资源存储库、键名解析器。这种高灵活性全部被编译进了每个客户端包中。一个仅引入该库的空组件在 `next-i18next` 下需要 **19.7 KB gzip**,而 `next-intlayer` 仅需 **5.5 KB**,且这一基准开销在每个页面都必须无差别承担。
490
+
491
+ </Question>
492
+
493
+ <Question title="通过后端加载插件(Lazy Loading)能否彻底解决开销问题?">
494
+
495
+ 它仅优化了下载字节数,却牺牲了交互延迟。采用 `i18next-resources-to-backend` 每页节省了 ~49 KB,但在切换语言时增加了网络往返延迟:在 `dynamic` 配置下为 **123 ms**,在 `scoped-static` 下为 **185 ms**,而 Intlayer 仅需 **3-4 ms**。客户端水合耗时也激增至 27.7 ms,因为实例必须在 React 水合前完成远程解析。
496
+
497
+ </Question>
498
+
499
+ <Question title="使用 i18next 能否达到 0% 内容泄漏?">
500
+
501
+ 可以,通过 `scoped-dynamic` 方案:为每个路由划分独立的命名空间、配置资源后端并人工维护页面与命名空间的映射表。这使 Next.js 页面体积降至 163.4 KB,但仍比零配置的 Intlayer(141.3 KB)多出 **+22 KB**。请参阅[包体积优化指南](https://intlayer.org/zh/doc/concept/bundle-optimization)。
502
+
503
+ </Question>
504
+
505
+ <Question title="迁移到 Intlayer 是否需要彻底重写我的现有组件?">
506
+
507
+ 不需要。`@intlayer/i18next`、`@intlayer/react-i18next` 和 `@intlayer/next-i18next` 完整保留了 `useTranslation`、`t()`、`<Trans>`、`{{interpolation}}`、`_one` / `_other` 复数规则、上下文后缀及 `returnObjects`。仅需在 `next.config.ts` 或 `vite.config.ts` 中配置一行插件即可。详见 [next-i18next 迁移指南](https://intlayer.org/zh/doc/migration/next-i18next)。
508
+
509
+ </Question>
510
+
511
+ <Question title="我原有的 i18next 插件会受到什么影响?">
512
+
513
+ 后端加载器与语言探测器依然会被接收但处于空转状态:运行时不再需要加载或探测任何内容。语言探测被 Intlayer 的原生路由策略(URL 前缀、Cookie、Header)接管。若您的应用依赖请求期从 CMS 动态获取翻译,请改用 [Intlayer CMS](https://intlayer.org/zh/doc/concept/cms) 或 `intlayer pull` / `push` 指令。
514
+
515
+ </Question>
516
+
517
+ </FAQ>
421
518
 
422
519
  ## 相关对比
423
520
 
424
- - [next-intl vs Intlayer](https://intlayer.org/zh/blog/next-intl-vs-intlayer) (同一基准测试)
425
- - [Lingui vs Intlayer](https://intlayer.org/zh/blog/lingui-vs-intlayer) (同一基准测试)
426
- - [vue-i18n vs Intlayer 评测](https://intlayer.org/zh/blog/vue-i18n-vs-intlayer-benchmark) (同一基准测试)
521
+ 同类基准测试,其他国际化库:
522
+
523
+ - [next-intl vs Intlayer](https://intlayer.org/zh/blog/next-intl-vs-intlayer)
524
+ - [Lingui vs Intlayer](https://intlayer.org/zh/blog/lingui-vs-intlayer)
525
+ - [vue-i18n vs Intlayer benchmark](https://intlayer.org/zh/blog/vue-i18n-vs-intlayer-benchmark)
427
526
  - [next-i18next vs next-intl vs Intlayer](https://intlayer.org/zh/blog/next-i18next-vs-next-intl-vs-intlayer)
428
527
  - [react-i18next vs react-intl vs Intlayer](https://intlayer.org/zh/blog/react-i18next-vs-react-intl-vs-intlayer)
528
+
529
+ 深入探索 i18next 与 Intlayer:
530
+
531
+ - [i18next vs @intlayer/i18next](https://intlayer.org/zh/blog/i18next-vs-intlayer-i18next),在相同应用下的适配器性能实测
429
532
  - [i18next 已经过时了吗?](https://intlayer.org/zh/blog/is-i18next-outdated)
533
+ - [在 i18next 中使用 Intlayer](https://intlayer.org/zh/blog/intlayer-with-i18next) 以及[在 react-i18next 中使用](https://intlayer.org/zh/blog/intlayer-with-react-i18next)
534
+ - [如何使用 next-i18next 实现 Next.js 应用国际化](https://intlayer.org/zh/blog/nextjs-internationalization-using-next-i18next)
535
+
536
+ 核心参考文档:
537
+
538
+ - [Next.js 基准测试报告](https://intlayer.org/zh/doc/benchmark/nextjs) 与 [TanStack Start 基准测试报告](https://intlayer.org/zh/doc/benchmark/tanstack)
539
+ - 兼容适配器:[i18next](https://intlayer.org/zh/doc/compatibility/i18next)、[react-i18next](https://intlayer.org/zh/doc/compatibility/react-i18next)、[next-i18next](https://intlayer.org/zh/doc/compatibility/next-i18next)
540
+ - 迁移指南:[i18next](https://intlayer.org/zh/doc/migration/i18next)、[react-i18next](https://intlayer.org/zh/doc/migration/react-i18next)、[next-i18next](https://intlayer.org/zh/doc/migration/next-i18next)
541
+ - [包体积优化](https://intlayer.org/zh/doc/concept/bundle-optimization) 与 [Intlayer 编译器](https://intlayer.org/zh/doc/compiler)
542
+ - [组件级 vs 集中式 i18n](https://intlayer.org/zh/blog/per-component-vs-centralized-i18n)
543
+ - [编译器驱动 vs 声明式 i18n](https://intlayer.org/zh/blog/compiler-vs-declarative-i18n)
430
544
 
431
545
  ## GitHub 关注度趋势 (STARs)
432
546
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-13
3
- updatedAt: 2026-09-13
3
+ updatedAt: 2026-09-22
4
4
  title: "Lingui vs Intlayer:2026 年基准测试与深度对比"
5
5
  description: "在 Next.js 和 TanStack Start 上实测的两款基于编译器的 i18n 库。打包体积、内容泄漏、组件大小、水合性能、语言切换响应速度及开发者体验全面对比。"
6
6
  keywords:
@@ -24,6 +24,8 @@ author: aymericzip
24
24
 
25
25
  # Lingui VS Intlayer | React & Next.js 国际化 (i18n) 基准测试对比
26
26
 
27
+ ![JavaScript i18n library ecosystem](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
28
+
27
29
  Lingui 和 Intlayer 是本次基准测试中仅有的两个依赖**编译器**而非纯运行时的国际化库。Lingui 在构建时从宏中提取消息,并为每个语言环境编译目录。Intlayer 按组件编译字典,并按语言环境进行 Tree-shaking。理论上它们的表现应当十分接近,但实际测试数据揭示了它们在哪方面走向了分歧。
28
30
 
29
31
  测试数据来源于 [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom),这是一个开源基准测试套件,它使用每个库构建完全相同的应用程序,并记录浏览器实际下载和执行的代码细节。
@@ -96,6 +98,10 @@ Intlayer 无需单独的 "scoped" 变体:编译器自动**按组件维度**界
96
98
 
97
99
  ### Next.js 测试结果
98
100
 
101
+ 选择您关注的指标和库:
102
+
103
+ <I18nBenchmark framework="nextjs" vertical/>
104
+
99
105
  | 库 | 策略 | 库体积 (gz) | 页面 JS 平均 (gz) | 语言泄漏 | 页面泄漏 | 组件平均体积 (gz) | E2E 响应耗时 | 水合耗时 |
100
106
  | ------------------- | -------------- | ----------: | ----------------: | -------: | -------: | ----------------: | -----------: | -------: |
101
107
  | **base** (无 i18n) | - | 0.0 KB | 141.0 KB | 0.0% | 0.0% | 0.9 KB | 13.4 ms | 11.8 ms |
@@ -114,6 +120,15 @@ Intlayer 无需单独的 "scoped" 变体:编译器自动**按组件维度**界
114
120
  - **源语言回退导致的固有泄漏。** 即便在最佳配置下,**仍有 3-15% 的英文原文字符串被打包到法语页面中**。这是因为 Lingui 宏保留了原文字符串作为运行时安全回退。Intlayer 在构建期便彻底解决了回退关系,客户端仅传输目标语言。
115
121
  - **`scoped-dynamic` 下组件体积急剧放大。** 隔离编译下的单个组件平均体积暴增至 **152.6 KB**,因为通过导入引用,该组件将所有路由目录全都牵连了进来。而在 Intlayer 中,同样的组件使用 `useIntlayer()` 平均仅有 **6.9 KB**。
116
122
 
123
+ <ClickToOpenIframe
124
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-nextjs.md"
125
+ width="100%"
126
+ height="600px"
127
+ style="border:none;"
128
+ />
129
+
130
+ > 完整表格、所有库和策略请参阅 [Next.js 基准测试报告](https://intlayer.org/zh/doc/benchmark/nextjs)。
131
+
117
132
  ### TanStack Start 测试结果
118
133
 
119
134
  | 库 | 策略 | 库体积 (gz) | 页面 JS 平均 (gz) | 语言泄漏 | 页面泄漏 | 组件平均体积 (gz) | E2E 响应耗时 | 水合耗时 |
@@ -135,8 +150,19 @@ Intlayer 无需单独的 "scoped" 变体:编译器自动**按组件维度**界
135
150
  - **Intlayer 的 `static` 模式已天然具备 0% 页面泄漏**,因为打包器只打包当前页面所渲染组件显式导入的字典。仅需增加一行配置(`importMode: 'dynamic'`)即可同时消除语言泄漏。
136
151
  - **`@intlayer/lingui`** 允许开发者继续沿用 Lingui 宏语法,底层由 Intlayer 字典直接服务。它牺牲了少许整页体积(由于宏运行时驻留,为 137 KB),换取了大幅缩小的单组件(12.8 KB)和显著加快的水合速度。对于既有项目而言是非常理想的平滑升级通道。
137
152
 
153
+ <ClickToOpenIframe
154
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-tanstack.md"
155
+ width="100%"
156
+ height="600px"
157
+ style="border:none;"
158
+ />
159
+
160
+ > 完整表格请参阅 [TanStack Start 基准测试报告](https://intlayer.org/zh/doc/benchmark/tanstack)。
161
+
138
162
  ## 根本成因剖析:两个编译器,两种不同的工作单元
139
163
 
164
+ ![The Intlayer compiler extracts content from components](https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.webp?raw=true)
165
+
140
166
  两款库都引入了编译阶段。核心差异在于它们究竟**在编译什么**。
141
167
 
142
168
  **Lingui 编译的是目录(Catalogs)。** 源代码中的宏被提取到单语言的 `.po` 文件中,继而被编译为单语言的 JS 模块。它的工作单元是**语言环境整体(Locale)**。若想进一步细分(按路由或组件),就必须创建多个目录,并在 `lingui.config.ts` 中精细配置规则,手动控制每个路由的加载行为。其 `I18n` 实例是全局唯一的,每一个 `useLingui()` 都会将组件牢牢绑定在这个全局实例上。
@@ -176,7 +202,9 @@ Intlayer 无需单独的 "scoped" 变体:编译器自动**按组件维度**界
176
202
  └── about.content.ts
177
203
  ```
178
204
 
179
- 这也是为什么 `scoped-dynamic` 模式在 Intlayer 中是自动生成的底层产物,而在 Lingui 中则是一项复杂的工程配置项目。
205
+ 这也是为什么 `scoped-dynamic` 模式在 Intlayer 中是自动生成的底层产物,而在 Lingui 中则是一项复杂的工程配置项目. 差距在页面和语言两个维度上同时拉大:
206
+
207
+ ![Theoretical content leakage by architecture](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
180
208
 
181
209
  > 若要复现 `dynamic` 行的性能指标,只需在 `intlayer.config.ts` 中声明 `dictionary.importMode: 'dynamic'`。详见 [打包优化文档](https://intlayer.org/zh/doc/concept/bundle-optimization)。
182
210
 
@@ -184,7 +212,8 @@ Intlayer 无需单独的 "scoped" 变体:编译器自动**按组件维度**界
184
212
 
185
213
  ### 基础初始化
186
214
 
187
- **Lingui**
215
+ <Tabs defaultTab="intlayer" group="techno">
216
+ <Tab label="Lingui" value="lingui">
188
217
 
189
218
  ```ts fileName="lingui.config.ts"
190
219
  import { defineConfig } from "@lingui/cli";
@@ -215,7 +244,8 @@ export const loadCatalog = async (locale: string) => {
215
244
 
216
245
  随后需在打包器中接入 `@lingui/babel-plugin-lingui-macro`(或 `@lingui/swc-plugin`),在源码更改后运行 `lingui extract`,在应用构建前运行 `lingui compile`,并使用 `<I18nProvider i18n={i18n}>` 嵌套根视图。
217
246
 
218
- **Intlayer**
247
+ </Tab>
248
+ <Tab label="Intlayer" value="intlayer">
219
249
 
220
250
  ```ts fileName="intlayer.config.ts"
221
251
  import { type IntlayerConfig, Locales } from "intlayer";
@@ -232,9 +262,12 @@ export default config;
232
262
 
233
263
  在 `vite.config.ts` 中加入 `intlayer()`(在 Next.js 中使用 `withIntlayer()`),再用 `<IntlayerProvider>` 包裹组件树。无需独立的提取或编译命令行操作:启动打包器时字典自动完成编译。
234
264
 
265
+ </Tab>
266
+ </Tabs>
235
267
  ### 组件内编写
236
268
 
237
- **Lingui**
269
+ <Tabs defaultTab="intlayer" group="techno">
270
+ <Tab label="Lingui" value="lingui">
238
271
 
239
272
  ```tsx fileName="src/components/Counter.tsx"
240
273
  import { useState } from "react";
@@ -258,7 +291,8 @@ export const Counter = () => {
258
291
 
259
292
  英文文本直接书写在组件内;法语翻译由 `lingui extract` 提取到 `src/locales/fr/messages.po` 的哈希键下。如果开发者遗漏了提取或编译步骤,界面将静默显示英文原文。
260
293
 
261
- **Intlayer**
294
+ </Tab>
295
+ <Tab label="Intlayer" value="intlayer">
262
296
 
263
297
  ```ts fileName="src/components/Counter/index.content.ts"
264
298
  import { t, type Dictionary } from "intlayer";
@@ -297,11 +331,14 @@ export const Counter = () => {
297
331
 
298
332
  各语言配置统一存放在组件同级的单文件内。缺少 `fr` 内容会引发编译阻断,输入错误键名会立刻收到 TypeScript 的错误提示。
299
333
 
334
+ </Tab>
335
+ </Tabs>
300
336
  ### 组件树之外的环境
301
337
 
302
338
  如路由元数据、加载器(loaders)、服务端执行函数等非 React 树环境。
303
339
 
304
- **Lingui**
340
+ <Tabs defaultTab="intlayer" group="techno">
341
+ <Tab label="Lingui" value="lingui">
305
342
 
306
343
  ```ts fileName="src/routes/$locale/about.tsx"
307
344
  import { setupI18n } from "@lingui/core";
@@ -324,7 +361,8 @@ export const loader = async ({ params }: { params: { locale: string } }) => {
324
361
 
325
362
  每次调用都需重新实例化 `I18n`,手动导入正确的目录,并必须采用 `msg` + `i18n._()` 而不能直接写 `t`。正如 [基准测试记录](https://github.com/intlayer-org/benchmark-bloom/blob/main/report/NOTE.md) 所指出的,判断何时该使用 `t`、`` t` ` ``、`i18n.t()`、`msg` 还是 `<Trans>`,非常不够直观。
326
363
 
327
- **Intlayer**
364
+ </Tab>
365
+ <Tab label="Intlayer" value="intlayer">
328
366
 
329
367
  ```ts fileName="src/routes/$locale/about.tsx"
330
368
  import { getIntlayer } from "intlayer";
@@ -336,6 +374,9 @@ export const loader = async ({ params }: { params: { locale: string } }) => {
336
374
  };
337
375
  ```
338
376
 
377
+ </Tab>
378
+ </Tabs>
379
+
339
380
  ## 保留 Lingui 宏,接入 Intlayer 字典
340
381
 
341
382
  `@intlayer/lingui` 是针对 `@lingui/core` 和 `@lingui/react` 的无缝兼容适配器。宏依然照常编译,底层调用的 `i18n._()` 直接由 Intlayer 字典提供支撑,同时配套的 `.po` 同步插件依然将现有目录视作单一事实来源。ICU 复数与条件分支渲染效果完全一致。
@@ -353,16 +394,82 @@ export default defineConfig({
353
394
 
354
395
  ## 该如何做出选型抉择?
355
396
 
356
- - **选择 Lingui 的场景**:如果你深度依赖 **ICU MessageFormat** 与强类型宏,翻译团队已高度绑定于基于 **`.po`** 的专业 TMS 协作管线,喜欢在 JSX 内直接编写源码字符串,且团队有成熟能力自管提取、编译和目录拆分工作流。配置好延迟加载后,其单页体积具备极佳的竞争力。
357
- - **选择 Intlayer 的场景**:如果你追求**组件级内聚内容**、**严格的 TypeScript 约束**、**构建期未翻译键自动报错**、**零配置全自动 Tree-shaking 与按需加载**、轻巧的单组件体积、闪电般的水合响应、瞬时语言切换,以及一整套现代内置协作套件(Visual Editor、CMS、AI 辅助翻译、MCP 服务端)。在大型模块化项目和设计系统中优势格外显著。
358
- - **选择 `@intlayer/lingui` 的场景**:如果你已有庞大的 Lingui 项目,并希望在不重构既有宏代码的前提下,平滑、渐进式地拥抱 Intlayer 字典架构。
397
+ <AccordionGroup>
398
+ <Accordion header="选择 Lingui">
399
+
400
+ 如果您想要带有类型化宏的 **ICU MessageFormat**,您的翻译人员在已有 TMS 流程中使用 **`.po`** 文件,您喜欢在 JSX 中就近书写源语言字符串,并且您的团队乐于掌控提取 / 编译 / 目录拆分的工作流。配置好懒加载后,其每页 JS 体积非常有竞争力。
401
+
402
+ </Accordion>
403
+ <Accordion header="选择 Intlayer">
404
+
405
+ 如果您想要**组件级作用域内容**、**严格的 TypeScript**、**构建期缺失键报错**、**零成本 tree-shaking 与懒加载**、微小的组件体积、快速注水、即时语言切换以及内置编辑工具([可视化编辑器](https://intlayer.org/zh/doc/concept/editor)、[CMS](https://intlayer.org/zh/doc/concept/cms)、[AI 翻译](https://intlayer.org/zh/doc/concept/auto-fill)、[MCP 服务器](https://intlayer.org/zh/doc/mcp-server))。特别适用于大型、模块化代码库与设计系统。
406
+
407
+ </Accordion>
408
+ <Accordion header="选择 @intlayer/lingui">
409
+
410
+ 如果您已在使用 Lingui,并希望在无需修改宏代码的情况下渐进式迁移到 Intlayer 字典。您的 `.po` 目录通过 [PO 同步插件](https://intlayer.org/zh/doc/compatibility/lingui) 仍然保持为唯一事实来源。在 [Lingui vs @intlayer/lingui](https://intlayer.org/zh/blog/lingui-vs-intlayer-lingui) 中并排测试。
411
+
412
+ </Accordion>
413
+ </AccordionGroup>
414
+
415
+ ## 常见问题
416
+
417
+ <FAQ>
418
+
419
+ <Question title="Lingui 也会编译,为什么输出差异如此之大?">
420
+
421
+ 因为编译的单元不同。Lingui **按语言编译单一目录**:其之下的细分(按路由分包、懒加载、将 fallback 排除在 bundle 之外)全部需要繁琐配置。Intlayer **按组件编译字典**,因此路由级作用域自然由构建器生成。这就是为什么单独编译一个 Lingui 组件体积高达 58-153 KB,而 Intlayer 仅为 6-8 KB。
422
+
423
+ </Question>
424
+
425
+ <Question title="为什么 Lingui 的语言泄漏率永远无法达到 0%?">
426
+
427
+ 宏会将源码中的原始消息保留为运行时兜底(fallback),因此英文文本会紧随翻译内容一同打包。基准测试在所有优化方案中均测得 `fr` 页面中含有 **3-15% 的 `en` 文本**。Intlayer 在构建期解析 fallback,并且只打包当前激活的语言。
428
+
429
+ </Question>
430
+
431
+ <Question title="Lingui 的每页 JS 体积真的很有竞争力吗?">
432
+
433
+ 是的,在 TanStack Start 上它甚至微弱胜出:`dynamic` 模式下为 115.2 KB(Intlayer 为 118.6 KB)。采用哈希 ID 的编译目录非常紧凑。但开销体现在其他方面:注水耗时 28-34 ms(Intlayer 为 11-14 ms),在 `scoped-dynamic` 配置下语言切换耗时高达 **42 ms**。
434
+
435
+ </Question>
436
+
437
+ <Question title="迁移需要放弃宏吗?">
438
+
439
+ 不需要。`@intlayer/lingui` 让 `` t`...` ``、`<Trans>`、`msg`、`plural`、`select` 和 `selectOrdinal` 保持原样编译;仅仅是 `i18n._()` 底层解析的数据来源发生了改变。在构建中保留 `@lingui/babel-plugin-lingui-macro` 或 `@lingui/swc-plugin` 即可。参见 [Lingui 兼容性文档](https://intlayer.org/zh/doc/compatibility/lingui)。
440
+
441
+ </Question>
442
+
443
+ <Question title="提取和编译步骤怎么处理?">
444
+
445
+ 宏代码继续保留这两个步骤,但对于 Intlayer 自身的内容则完全不需要。`.content.ts` 字典在打包器运行时自动生成,无需单独的 CLI 命令,并且 [`intlayer test`](https://intlayer.org/zh/doc/concept/cli) 会在缺失键时直接让 CI 报错,而不是静默回退到源文本。
446
+
447
+ </Question>
448
+
449
+ </FAQ>
359
450
 
360
451
  ## 相关对比评测
361
452
 
362
- - [next-intl vs Intlayer](https://intlayer.org/zh/blog/next-intl-vs-intlayer)(同一基准测试)
363
- - [i18next vs Intlayer](https://intlayer.org/zh/blog/i18next-vs-intlayer)(同一基准测试)
364
- - [vue-i18n vs Intlayer](https://intlayer.org/zh/blog/vue-i18n-vs-intlayer-benchmark)(同一基准测试)
365
- - [编译器型与声明式 i18n 理念对比](https://intlayer.org/zh/blog/compiler-vs-declarative-i18n)
453
+ 相同基准测试,其他库:
454
+
455
+ - [next-intl vs Intlayer](https://intlayer.org/zh/blog/next-intl-vs-intlayer)
456
+ - [i18next vs Intlayer](https://intlayer.org/zh/blog/i18next-vs-intlayer)
457
+ - [vue-i18n vs Intlayer benchmark](https://intlayer.org/zh/blog/vue-i18n-vs-intlayer-benchmark)
458
+ - [next-i18next vs next-intl vs Intlayer](https://intlayer.org/zh/blog/next-i18next-vs-next-intl-vs-intlayer)
459
+ - [react-i18next vs react-intl vs Intlayer](https://intlayer.org/zh/blog/react-i18next-vs-react-intl-vs-intlayer)
460
+
461
+ 深入了解:
462
+
463
+ - [Lingui vs @intlayer/lingui](https://intlayer.org/zh/blog/lingui-vs-intlayer-lingui), 在同一应用上实测的适配器
464
+ - [Compiler-driven vs declarative i18n](https://intlayer.org/zh/blog/compiler-vs-declarative-i18n)
465
+ - [Per-component vs centralized i18n](https://intlayer.org/zh/blog/per-component-vs-centralized-i18n)
466
+ - [ICU message format explained](https://intlayer.org/zh/blog/icu-message-format)
467
+
468
+ 参考文档:
469
+
470
+ - [Next.js 基准测试报告](https://intlayer.org/zh/doc/benchmark/nextjs) 与 [TanStack Start 基准测试报告](https://intlayer.org/zh/doc/benchmark/tanstack)
471
+ - [Compat adapter: Lingui](https://intlayer.org/zh/doc/compatibility/lingui)
472
+ - [包体积优化](https://intlayer.org/zh/doc/concept/bundle-optimization) 与 [Intlayer 编译器](https://intlayer.org/zh/doc/compiler)
366
473
 
367
474
  ## GitHub 星标发展历程
368
475