@intlayer/docs 9.5.6 → 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 (601) hide show
  1. package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
  2. package/blog/ar/i18next_vs_intlayer.md +130 -16
  3. package/blog/ar/lingui_vs_intlayer.md +122 -15
  4. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  5. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  6. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  7. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  8. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  9. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  10. package/blog/de/i18next_vs_intlayer.md +128 -14
  11. package/blog/de/lingui_vs_intlayer.md +122 -15
  12. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  13. package/blog/de/next-intl_vs_intlayer.md +125 -15
  14. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  15. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  16. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  17. package/blog/en/i18next_vs_intlayer.md +128 -14
  18. package/blog/en/lingui_vs_intlayer.md +124 -15
  19. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  20. package/blog/en/next-intl_vs_intlayer.md +125 -13
  21. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  22. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  23. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  24. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  25. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  26. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  27. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  28. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  30. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  31. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  32. package/blog/es/i18next_vs_intlayer.md +128 -14
  33. package/blog/es/lingui_vs_intlayer.md +122 -15
  34. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  35. package/blog/es/next-intl_vs_intlayer.md +125 -15
  36. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  37. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  38. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  39. package/blog/fr/i18next_vs_intlayer.md +128 -14
  40. package/blog/fr/lingui_vs_intlayer.md +122 -15
  41. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  42. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  43. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  44. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  45. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  46. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  47. package/blog/hi/i18next_vs_intlayer.md +130 -16
  48. package/blog/hi/lingui_vs_intlayer.md +122 -15
  49. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  50. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  51. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  52. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  53. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  54. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  55. package/blog/id/i18next_vs_intlayer.md +128 -14
  56. package/blog/id/lingui_vs_intlayer.md +122 -15
  57. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  58. package/blog/id/next-intl_vs_intlayer.md +135 -19
  59. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  60. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  61. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  62. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  63. package/blog/it/i18next_vs_intlayer.md +128 -14
  64. package/blog/it/lingui_vs_intlayer.md +122 -15
  65. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/it/next-intl_vs_intlayer.md +125 -15
  67. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  68. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  69. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  70. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  71. package/blog/ja/i18next_vs_intlayer.md +129 -17
  72. package/blog/ja/lingui_vs_intlayer.md +122 -15
  73. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  74. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  75. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  76. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  77. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  78. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  79. package/blog/ko/i18next_vs_intlayer.md +129 -17
  80. package/blog/ko/lingui_vs_intlayer.md +122 -15
  81. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  82. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  83. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  84. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  85. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  86. package/blog/pl/i18next_vs_intlayer.md +128 -14
  87. package/blog/pl/lingui_vs_intlayer.md +122 -15
  88. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  89. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  90. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  91. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  92. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  93. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  94. package/blog/pt/i18next_vs_intlayer.md +128 -14
  95. package/blog/pt/lingui_vs_intlayer.md +122 -15
  96. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  97. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  98. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  99. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  100. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  101. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  102. package/blog/ru/i18next_vs_intlayer.md +130 -16
  103. package/blog/ru/lingui_vs_intlayer.md +122 -15
  104. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  105. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  106. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  107. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  108. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  109. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  110. package/blog/tr/i18next_vs_intlayer.md +128 -14
  111. package/blog/tr/lingui_vs_intlayer.md +122 -15
  112. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  113. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  114. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  115. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  116. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  117. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  118. package/blog/uk/i18next_vs_intlayer.md +130 -16
  119. package/blog/uk/lingui_vs_intlayer.md +122 -15
  120. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  121. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  122. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  123. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  124. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  125. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  126. package/blog/vi/i18next_vs_intlayer.md +128 -14
  127. package/blog/vi/lingui_vs_intlayer.md +122 -15
  128. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  129. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  130. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  131. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  132. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  133. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  134. package/blog/zh/i18next_vs_intlayer.md +128 -14
  135. package/blog/zh/lingui_vs_intlayer.md +122 -15
  136. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  138. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  139. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  140. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  141. package/dist/cjs/generated/docs.entry.cjs +40 -40
  142. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  143. package/dist/cjs/index.cjs +2 -2
  144. package/dist/esm/generated/docs.entry.mjs +40 -40
  145. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  146. package/dist/esm/index.mjs +2 -2
  147. package/dist/types/generated/docs.entry.d.ts +2 -2
  148. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  149. package/docs/ar/benchmark/nextjs.md +13 -13
  150. package/docs/ar/benchmark/solid.md +5 -5
  151. package/docs/ar/benchmark/svelte.md +4 -4
  152. package/docs/ar/benchmark/tanstack.md +14 -13
  153. package/docs/ar/benchmark/vue.md +5 -5
  154. package/docs/ar/chrome_extension.md +130 -0
  155. package/docs/ar/cli/index.md +6 -1
  156. package/docs/ar/cli/infra.md +162 -0
  157. package/docs/ar/cli/init.md +24 -1
  158. package/docs/ar/dictionary/html.md +173 -5
  159. package/docs/ar/dictionary/markdown.md +263 -1
  160. package/docs/ar/intlayer_with_analog.md +23 -1
  161. package/docs/ar/intlayer_with_angular_19.md +24 -1
  162. package/docs/ar/intlayer_with_angular_21.md +24 -1
  163. package/docs/ar/intlayer_with_astro.md +24 -1
  164. package/docs/ar/intlayer_with_astro_lit.md +25 -1
  165. package/docs/ar/intlayer_with_astro_preact.md +26 -1
  166. package/docs/ar/intlayer_with_astro_react.md +26 -1
  167. package/docs/ar/intlayer_with_astro_solid.md +26 -1
  168. package/docs/ar/intlayer_with_astro_svelte.md +25 -1
  169. package/docs/ar/intlayer_with_astro_vue.md +25 -1
  170. package/docs/ar/intlayer_with_remix_3.md +22 -1
  171. package/docs/ar/self_hosting.md +406 -231
  172. package/docs/de/benchmark/nextjs.md +13 -13
  173. package/docs/de/benchmark/solid.md +5 -5
  174. package/docs/de/benchmark/svelte.md +4 -4
  175. package/docs/de/benchmark/tanstack.md +14 -13
  176. package/docs/de/benchmark/vue.md +5 -5
  177. package/docs/de/chrome_extension.md +130 -0
  178. package/docs/de/cli/index.md +6 -1
  179. package/docs/de/cli/infra.md +162 -0
  180. package/docs/de/cli/init.md +24 -1
  181. package/docs/de/dictionary/html.md +173 -5
  182. package/docs/de/dictionary/markdown.md +263 -1
  183. package/docs/de/intlayer_with_analog.md +23 -1
  184. package/docs/de/intlayer_with_angular_19.md +24 -1
  185. package/docs/de/intlayer_with_angular_21.md +24 -1
  186. package/docs/de/intlayer_with_astro.md +24 -1
  187. package/docs/de/intlayer_with_astro_lit.md +25 -1
  188. package/docs/de/intlayer_with_astro_preact.md +26 -1
  189. package/docs/de/intlayer_with_astro_react.md +26 -1
  190. package/docs/de/intlayer_with_astro_solid.md +26 -1
  191. package/docs/de/intlayer_with_astro_svelte.md +25 -1
  192. package/docs/de/intlayer_with_astro_vue.md +25 -1
  193. package/docs/de/intlayer_with_remix_3.md +22 -1
  194. package/docs/de/self_hosting.md +404 -227
  195. package/docs/en/benchmark/nextjs.md +13 -13
  196. package/docs/en/benchmark/solid.md +5 -5
  197. package/docs/en/benchmark/svelte.md +4 -4
  198. package/docs/en/benchmark/tanstack.md +14 -13
  199. package/docs/en/benchmark/vue.md +5 -5
  200. package/docs/en/chrome_extension.md +130 -0
  201. package/docs/en/cli/index.md +6 -1
  202. package/docs/en/cli/infra.md +175 -0
  203. package/docs/en/cli/init.md +25 -1
  204. package/docs/en/dictionary/html.md +173 -5
  205. package/docs/en/dictionary/markdown.md +263 -1
  206. package/docs/en/intlayer_with_analog.md +23 -1
  207. package/docs/en/intlayer_with_angular_19.md +24 -1
  208. package/docs/en/intlayer_with_angular_21.md +24 -1
  209. package/docs/en/intlayer_with_astro.md +24 -1
  210. package/docs/en/intlayer_with_astro_lit.md +25 -1
  211. package/docs/en/intlayer_with_astro_preact.md +26 -1
  212. package/docs/en/intlayer_with_astro_react.md +26 -1
  213. package/docs/en/intlayer_with_astro_solid.md +26 -1
  214. package/docs/en/intlayer_with_astro_svelte.md +25 -1
  215. package/docs/en/intlayer_with_astro_vue.md +25 -1
  216. package/docs/en/intlayer_with_remix_3.md +22 -1
  217. package/docs/en/self_hosting.md +418 -176
  218. package/docs/en-GB/benchmark/nextjs.md +13 -13
  219. package/docs/en-GB/benchmark/solid.md +5 -5
  220. package/docs/en-GB/benchmark/svelte.md +4 -4
  221. package/docs/en-GB/benchmark/tanstack.md +14 -13
  222. package/docs/en-GB/benchmark/vue.md +5 -5
  223. package/docs/en-GB/chrome_extension.md +130 -0
  224. package/docs/en-GB/cli/index.md +6 -1
  225. package/docs/en-GB/cli/infra.md +162 -0
  226. package/docs/en-GB/cli/init.md +24 -1
  227. package/docs/en-GB/dictionary/html.md +173 -5
  228. package/docs/en-GB/dictionary/markdown.md +263 -1
  229. package/docs/en-GB/intlayer_with_analog.md +23 -1
  230. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  231. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  232. package/docs/en-GB/intlayer_with_astro.md +24 -1
  233. package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
  234. package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
  235. package/docs/en-GB/intlayer_with_astro_react.md +26 -1
  236. package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
  237. package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
  238. package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
  239. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  240. package/docs/en-GB/self_hosting.md +381 -206
  241. package/docs/es/benchmark/nextjs.md +13 -13
  242. package/docs/es/benchmark/solid.md +5 -5
  243. package/docs/es/benchmark/svelte.md +4 -4
  244. package/docs/es/benchmark/tanstack.md +14 -13
  245. package/docs/es/benchmark/vue.md +5 -5
  246. package/docs/es/chrome_extension.md +130 -0
  247. package/docs/es/cli/index.md +6 -1
  248. package/docs/es/cli/infra.md +162 -0
  249. package/docs/es/cli/init.md +24 -1
  250. package/docs/es/dictionary/html.md +173 -5
  251. package/docs/es/dictionary/markdown.md +263 -1
  252. package/docs/es/intlayer_with_analog.md +23 -1
  253. package/docs/es/intlayer_with_angular_19.md +24 -1
  254. package/docs/es/intlayer_with_angular_21.md +24 -1
  255. package/docs/es/intlayer_with_astro.md +24 -1
  256. package/docs/es/intlayer_with_astro_lit.md +25 -1
  257. package/docs/es/intlayer_with_astro_preact.md +26 -1
  258. package/docs/es/intlayer_with_astro_react.md +26 -1
  259. package/docs/es/intlayer_with_astro_solid.md +26 -1
  260. package/docs/es/intlayer_with_astro_svelte.md +25 -1
  261. package/docs/es/intlayer_with_astro_vue.md +25 -1
  262. package/docs/es/intlayer_with_remix_3.md +22 -1
  263. package/docs/es/self_hosting.md +400 -223
  264. package/docs/fr/benchmark/nextjs.md +13 -13
  265. package/docs/fr/benchmark/solid.md +5 -5
  266. package/docs/fr/benchmark/svelte.md +4 -4
  267. package/docs/fr/benchmark/tanstack.md +14 -13
  268. package/docs/fr/benchmark/vue.md +5 -5
  269. package/docs/fr/chrome_extension.md +130 -0
  270. package/docs/fr/cli/index.md +6 -1
  271. package/docs/fr/cli/infra.md +162 -0
  272. package/docs/fr/cli/init.md +24 -1
  273. package/docs/fr/dictionary/html.md +173 -5
  274. package/docs/fr/dictionary/markdown.md +265 -4
  275. package/docs/fr/intlayer_with_analog.md +23 -1
  276. package/docs/fr/intlayer_with_angular_19.md +24 -1
  277. package/docs/fr/intlayer_with_angular_21.md +24 -1
  278. package/docs/fr/intlayer_with_astro.md +24 -1
  279. package/docs/fr/intlayer_with_astro_lit.md +25 -1
  280. package/docs/fr/intlayer_with_astro_preact.md +26 -1
  281. package/docs/fr/intlayer_with_astro_react.md +26 -1
  282. package/docs/fr/intlayer_with_astro_solid.md +26 -1
  283. package/docs/fr/intlayer_with_astro_svelte.md +25 -1
  284. package/docs/fr/intlayer_with_astro_vue.md +25 -1
  285. package/docs/fr/intlayer_with_remix_3.md +22 -1
  286. package/docs/fr/self_hosting.md +401 -224
  287. package/docs/hi/benchmark/nextjs.md +13 -13
  288. package/docs/hi/benchmark/solid.md +5 -5
  289. package/docs/hi/benchmark/svelte.md +4 -4
  290. package/docs/hi/benchmark/tanstack.md +14 -13
  291. package/docs/hi/benchmark/vue.md +5 -5
  292. package/docs/hi/chrome_extension.md +130 -0
  293. package/docs/hi/cli/index.md +6 -1
  294. package/docs/hi/cli/infra.md +162 -0
  295. package/docs/hi/cli/init.md +24 -1
  296. package/docs/hi/dictionary/html.md +173 -5
  297. package/docs/hi/dictionary/markdown.md +263 -1
  298. package/docs/hi/intlayer_with_analog.md +23 -1
  299. package/docs/hi/intlayer_with_angular_19.md +24 -1
  300. package/docs/hi/intlayer_with_angular_21.md +24 -1
  301. package/docs/hi/intlayer_with_astro.md +24 -1
  302. package/docs/hi/intlayer_with_astro_lit.md +25 -1
  303. package/docs/hi/intlayer_with_astro_preact.md +26 -1
  304. package/docs/hi/intlayer_with_astro_react.md +26 -1
  305. package/docs/hi/intlayer_with_astro_solid.md +26 -1
  306. package/docs/hi/intlayer_with_astro_svelte.md +25 -1
  307. package/docs/hi/intlayer_with_astro_vue.md +25 -1
  308. package/docs/hi/intlayer_with_remix_3.md +22 -1
  309. package/docs/hi/self_hosting.md +409 -235
  310. package/docs/id/benchmark/nextjs.md +13 -13
  311. package/docs/id/benchmark/solid.md +5 -5
  312. package/docs/id/benchmark/svelte.md +4 -4
  313. package/docs/id/benchmark/tanstack.md +14 -13
  314. package/docs/id/benchmark/vue.md +5 -5
  315. package/docs/id/chrome_extension.md +130 -0
  316. package/docs/id/cli/index.md +6 -1
  317. package/docs/id/cli/infra.md +162 -0
  318. package/docs/id/cli/init.md +24 -1
  319. package/docs/id/dictionary/html.md +173 -5
  320. package/docs/id/dictionary/markdown.md +263 -1
  321. package/docs/id/intlayer_with_analog.md +23 -1
  322. package/docs/id/intlayer_with_angular_19.md +24 -1
  323. package/docs/id/intlayer_with_angular_21.md +24 -1
  324. package/docs/id/intlayer_with_astro.md +24 -1
  325. package/docs/id/intlayer_with_astro_lit.md +25 -1
  326. package/docs/id/intlayer_with_astro_preact.md +26 -1
  327. package/docs/id/intlayer_with_astro_react.md +26 -1
  328. package/docs/id/intlayer_with_astro_solid.md +26 -1
  329. package/docs/id/intlayer_with_astro_svelte.md +25 -1
  330. package/docs/id/intlayer_with_astro_vue.md +25 -1
  331. package/docs/id/intlayer_with_remix_3.md +22 -1
  332. package/docs/id/self_hosting.md +416 -243
  333. package/docs/it/benchmark/nextjs.md +13 -13
  334. package/docs/it/benchmark/solid.md +5 -5
  335. package/docs/it/benchmark/svelte.md +4 -4
  336. package/docs/it/benchmark/tanstack.md +14 -13
  337. package/docs/it/benchmark/vue.md +5 -5
  338. package/docs/it/chrome_extension.md +130 -0
  339. package/docs/it/cli/index.md +6 -1
  340. package/docs/it/cli/infra.md +162 -0
  341. package/docs/it/cli/init.md +24 -1
  342. package/docs/it/dictionary/html.md +173 -5
  343. package/docs/it/dictionary/markdown.md +263 -1
  344. package/docs/it/intlayer_with_analog.md +23 -1
  345. package/docs/it/intlayer_with_angular_19.md +24 -1
  346. package/docs/it/intlayer_with_angular_21.md +24 -1
  347. package/docs/it/intlayer_with_astro.md +24 -1
  348. package/docs/it/intlayer_with_astro_lit.md +25 -1
  349. package/docs/it/intlayer_with_astro_preact.md +26 -1
  350. package/docs/it/intlayer_with_astro_react.md +26 -1
  351. package/docs/it/intlayer_with_astro_solid.md +26 -1
  352. package/docs/it/intlayer_with_astro_svelte.md +25 -1
  353. package/docs/it/intlayer_with_astro_vue.md +25 -1
  354. package/docs/it/intlayer_with_remix_3.md +22 -1
  355. package/docs/it/self_hosting.md +412 -237
  356. package/docs/ja/benchmark/nextjs.md +13 -13
  357. package/docs/ja/benchmark/solid.md +5 -5
  358. package/docs/ja/benchmark/svelte.md +4 -4
  359. package/docs/ja/benchmark/tanstack.md +13 -12
  360. package/docs/ja/benchmark/vue.md +5 -5
  361. package/docs/ja/chrome_extension.md +130 -0
  362. package/docs/ja/cli/index.md +6 -1
  363. package/docs/ja/cli/infra.md +162 -0
  364. package/docs/ja/cli/init.md +24 -1
  365. package/docs/ja/dictionary/html.md +173 -5
  366. package/docs/ja/dictionary/markdown.md +263 -1
  367. package/docs/ja/intlayer_with_analog.md +23 -1
  368. package/docs/ja/intlayer_with_angular_19.md +24 -1
  369. package/docs/ja/intlayer_with_angular_21.md +24 -1
  370. package/docs/ja/intlayer_with_astro.md +24 -1
  371. package/docs/ja/intlayer_with_astro_lit.md +25 -1
  372. package/docs/ja/intlayer_with_astro_preact.md +26 -1
  373. package/docs/ja/intlayer_with_astro_react.md +26 -1
  374. package/docs/ja/intlayer_with_astro_solid.md +26 -1
  375. package/docs/ja/intlayer_with_astro_svelte.md +25 -1
  376. package/docs/ja/intlayer_with_astro_vue.md +25 -1
  377. package/docs/ja/intlayer_with_remix_3.md +22 -1
  378. package/docs/ja/self_hosting.md +398 -223
  379. package/docs/ko/benchmark/nextjs.md +13 -13
  380. package/docs/ko/benchmark/solid.md +5 -5
  381. package/docs/ko/benchmark/svelte.md +4 -4
  382. package/docs/ko/benchmark/tanstack.md +14 -13
  383. package/docs/ko/benchmark/vue.md +5 -5
  384. package/docs/ko/chrome_extension.md +130 -0
  385. package/docs/ko/cli/index.md +6 -1
  386. package/docs/ko/cli/infra.md +162 -0
  387. package/docs/ko/cli/init.md +24 -1
  388. package/docs/ko/dictionary/html.md +173 -5
  389. package/docs/ko/dictionary/markdown.md +263 -1
  390. package/docs/ko/intlayer_with_analog.md +23 -1
  391. package/docs/ko/intlayer_with_angular_19.md +24 -1
  392. package/docs/ko/intlayer_with_angular_21.md +24 -1
  393. package/docs/ko/intlayer_with_astro.md +24 -1
  394. package/docs/ko/intlayer_with_astro_lit.md +25 -1
  395. package/docs/ko/intlayer_with_astro_preact.md +26 -1
  396. package/docs/ko/intlayer_with_astro_react.md +26 -1
  397. package/docs/ko/intlayer_with_astro_solid.md +26 -1
  398. package/docs/ko/intlayer_with_astro_svelte.md +25 -1
  399. package/docs/ko/intlayer_with_astro_vue.md +25 -1
  400. package/docs/ko/intlayer_with_remix_3.md +22 -1
  401. package/docs/ko/self_hosting.md +411 -238
  402. package/docs/pl/benchmark/nextjs.md +13 -13
  403. package/docs/pl/benchmark/solid.md +5 -5
  404. package/docs/pl/benchmark/svelte.md +4 -4
  405. package/docs/pl/benchmark/tanstack.md +14 -13
  406. package/docs/pl/benchmark/vue.md +5 -5
  407. package/docs/pl/chrome_extension.md +130 -0
  408. package/docs/pl/cli/index.md +6 -1
  409. package/docs/pl/cli/infra.md +162 -0
  410. package/docs/pl/cli/init.md +24 -1
  411. package/docs/pl/dictionary/html.md +173 -5
  412. package/docs/pl/dictionary/markdown.md +263 -1
  413. package/docs/pl/intlayer_with_analog.md +23 -1
  414. package/docs/pl/intlayer_with_angular_19.md +24 -1
  415. package/docs/pl/intlayer_with_angular_21.md +24 -1
  416. package/docs/pl/intlayer_with_astro.md +24 -1
  417. package/docs/pl/intlayer_with_astro_lit.md +25 -1
  418. package/docs/pl/intlayer_with_astro_preact.md +26 -1
  419. package/docs/pl/intlayer_with_astro_react.md +26 -1
  420. package/docs/pl/intlayer_with_astro_solid.md +26 -1
  421. package/docs/pl/intlayer_with_astro_svelte.md +25 -1
  422. package/docs/pl/intlayer_with_astro_vue.md +25 -1
  423. package/docs/pl/intlayer_with_remix_3.md +22 -1
  424. package/docs/pl/self_hosting.md +408 -233
  425. package/docs/pt/benchmark/nextjs.md +13 -13
  426. package/docs/pt/benchmark/solid.md +5 -5
  427. package/docs/pt/benchmark/svelte.md +4 -4
  428. package/docs/pt/benchmark/tanstack.md +14 -13
  429. package/docs/pt/benchmark/vue.md +5 -5
  430. package/docs/pt/chrome_extension.md +130 -0
  431. package/docs/pt/cli/index.md +6 -1
  432. package/docs/pt/cli/infra.md +162 -0
  433. package/docs/pt/cli/init.md +24 -1
  434. package/docs/pt/dictionary/html.md +173 -5
  435. package/docs/pt/dictionary/markdown.md +263 -1
  436. package/docs/pt/intlayer_with_analog.md +23 -1
  437. package/docs/pt/intlayer_with_angular_19.md +24 -1
  438. package/docs/pt/intlayer_with_angular_21.md +24 -1
  439. package/docs/pt/intlayer_with_astro.md +24 -1
  440. package/docs/pt/intlayer_with_astro_lit.md +25 -1
  441. package/docs/pt/intlayer_with_astro_preact.md +26 -1
  442. package/docs/pt/intlayer_with_astro_react.md +26 -1
  443. package/docs/pt/intlayer_with_astro_solid.md +26 -1
  444. package/docs/pt/intlayer_with_astro_svelte.md +25 -1
  445. package/docs/pt/intlayer_with_astro_vue.md +25 -1
  446. package/docs/pt/intlayer_with_remix_3.md +22 -1
  447. package/docs/pt/self_hosting.md +399 -224
  448. package/docs/ru/benchmark/nextjs.md +13 -13
  449. package/docs/ru/benchmark/solid.md +5 -5
  450. package/docs/ru/benchmark/svelte.md +4 -4
  451. package/docs/ru/benchmark/tanstack.md +14 -13
  452. package/docs/ru/benchmark/vue.md +5 -5
  453. package/docs/ru/chrome_extension.md +130 -0
  454. package/docs/ru/cli/index.md +6 -1
  455. package/docs/ru/cli/infra.md +162 -0
  456. package/docs/ru/cli/init.md +24 -1
  457. package/docs/ru/dictionary/html.md +173 -5
  458. package/docs/ru/dictionary/markdown.md +263 -1
  459. package/docs/ru/intlayer_with_analog.md +23 -1
  460. package/docs/ru/intlayer_with_angular_19.md +24 -1
  461. package/docs/ru/intlayer_with_angular_21.md +24 -1
  462. package/docs/ru/intlayer_with_astro.md +24 -1
  463. package/docs/ru/intlayer_with_astro_lit.md +25 -1
  464. package/docs/ru/intlayer_with_astro_preact.md +26 -1
  465. package/docs/ru/intlayer_with_astro_react.md +26 -1
  466. package/docs/ru/intlayer_with_astro_solid.md +26 -1
  467. package/docs/ru/intlayer_with_astro_svelte.md +25 -1
  468. package/docs/ru/intlayer_with_astro_vue.md +25 -1
  469. package/docs/ru/intlayer_with_remix_3.md +22 -1
  470. package/docs/ru/self_hosting.md +403 -228
  471. package/docs/tr/benchmark/nextjs.md +13 -13
  472. package/docs/tr/benchmark/solid.md +5 -5
  473. package/docs/tr/benchmark/svelte.md +4 -4
  474. package/docs/tr/benchmark/tanstack.md +14 -13
  475. package/docs/tr/benchmark/vue.md +5 -5
  476. package/docs/tr/chrome_extension.md +130 -0
  477. package/docs/tr/cli/index.md +6 -1
  478. package/docs/tr/cli/infra.md +162 -0
  479. package/docs/tr/cli/init.md +24 -1
  480. package/docs/tr/dictionary/html.md +173 -5
  481. package/docs/tr/dictionary/markdown.md +263 -1
  482. package/docs/tr/intlayer_with_analog.md +23 -1
  483. package/docs/tr/intlayer_with_angular_19.md +24 -1
  484. package/docs/tr/intlayer_with_angular_21.md +24 -1
  485. package/docs/tr/intlayer_with_astro.md +24 -1
  486. package/docs/tr/intlayer_with_astro_lit.md +25 -1
  487. package/docs/tr/intlayer_with_astro_preact.md +26 -1
  488. package/docs/tr/intlayer_with_astro_react.md +26 -1
  489. package/docs/tr/intlayer_with_astro_solid.md +26 -1
  490. package/docs/tr/intlayer_with_astro_svelte.md +25 -1
  491. package/docs/tr/intlayer_with_astro_vue.md +25 -1
  492. package/docs/tr/intlayer_with_remix_3.md +22 -1
  493. package/docs/tr/self_hosting.md +410 -234
  494. package/docs/uk/benchmark/nextjs.md +13 -13
  495. package/docs/uk/benchmark/solid.md +5 -5
  496. package/docs/uk/benchmark/svelte.md +4 -4
  497. package/docs/uk/benchmark/tanstack.md +14 -13
  498. package/docs/uk/benchmark/vue.md +5 -5
  499. package/docs/uk/chrome_extension.md +130 -0
  500. package/docs/uk/cli/index.md +6 -1
  501. package/docs/uk/cli/infra.md +162 -0
  502. package/docs/uk/cli/init.md +24 -1
  503. package/docs/uk/dictionary/html.md +173 -5
  504. package/docs/uk/dictionary/markdown.md +263 -1
  505. package/docs/uk/intlayer_with_analog.md +23 -1
  506. package/docs/uk/intlayer_with_angular_19.md +24 -1
  507. package/docs/uk/intlayer_with_angular_21.md +24 -1
  508. package/docs/uk/intlayer_with_astro.md +24 -1
  509. package/docs/uk/intlayer_with_astro_lit.md +25 -1
  510. package/docs/uk/intlayer_with_astro_preact.md +26 -1
  511. package/docs/uk/intlayer_with_astro_react.md +26 -1
  512. package/docs/uk/intlayer_with_astro_solid.md +26 -1
  513. package/docs/uk/intlayer_with_astro_svelte.md +25 -1
  514. package/docs/uk/intlayer_with_astro_vue.md +25 -1
  515. package/docs/uk/intlayer_with_remix_3.md +22 -1
  516. package/docs/uk/self_hosting.md +413 -238
  517. package/docs/vi/benchmark/nextjs.md +13 -13
  518. package/docs/vi/benchmark/solid.md +5 -5
  519. package/docs/vi/benchmark/svelte.md +4 -4
  520. package/docs/vi/benchmark/tanstack.md +14 -13
  521. package/docs/vi/benchmark/vue.md +5 -5
  522. package/docs/vi/chrome_extension.md +130 -0
  523. package/docs/vi/cli/index.md +6 -1
  524. package/docs/vi/cli/infra.md +162 -0
  525. package/docs/vi/cli/init.md +24 -1
  526. package/docs/vi/dictionary/html.md +173 -5
  527. package/docs/vi/dictionary/markdown.md +263 -1
  528. package/docs/vi/intlayer_with_analog.md +23 -1
  529. package/docs/vi/intlayer_with_angular_19.md +24 -1
  530. package/docs/vi/intlayer_with_angular_21.md +24 -1
  531. package/docs/vi/intlayer_with_astro.md +24 -1
  532. package/docs/vi/intlayer_with_astro_lit.md +25 -1
  533. package/docs/vi/intlayer_with_astro_preact.md +26 -1
  534. package/docs/vi/intlayer_with_astro_react.md +26 -1
  535. package/docs/vi/intlayer_with_astro_solid.md +26 -1
  536. package/docs/vi/intlayer_with_astro_svelte.md +25 -1
  537. package/docs/vi/intlayer_with_astro_vue.md +25 -1
  538. package/docs/vi/intlayer_with_remix_3.md +22 -1
  539. package/docs/vi/self_hosting.md +408 -234
  540. package/docs/zh/benchmark/nextjs.md +13 -13
  541. package/docs/zh/benchmark/solid.md +5 -5
  542. package/docs/zh/benchmark/svelte.md +4 -4
  543. package/docs/zh/benchmark/tanstack.md +14 -13
  544. package/docs/zh/benchmark/vue.md +5 -5
  545. package/docs/zh/chrome_extension.md +130 -0
  546. package/docs/zh/cli/index.md +6 -1
  547. package/docs/zh/cli/infra.md +162 -0
  548. package/docs/zh/cli/init.md +24 -1
  549. package/docs/zh/dictionary/html.md +172 -5
  550. package/docs/zh/dictionary/markdown.md +262 -1
  551. package/docs/zh/intlayer_with_analog.md +23 -1
  552. package/docs/zh/intlayer_with_angular_19.md +24 -1
  553. package/docs/zh/intlayer_with_angular_21.md +24 -1
  554. package/docs/zh/intlayer_with_astro.md +24 -1
  555. package/docs/zh/intlayer_with_astro_lit.md +25 -1
  556. package/docs/zh/intlayer_with_astro_preact.md +26 -1
  557. package/docs/zh/intlayer_with_astro_react.md +26 -1
  558. package/docs/zh/intlayer_with_astro_solid.md +26 -1
  559. package/docs/zh/intlayer_with_astro_svelte.md +25 -1
  560. package/docs/zh/intlayer_with_astro_vue.md +25 -1
  561. package/docs/zh/intlayer_with_remix_3.md +22 -1
  562. package/docs/zh/self_hosting.md +410 -237
  563. package/legal/ar/privacy_notice.md +9 -3
  564. package/legal/de/privacy_notice.md +9 -3
  565. package/legal/en/privacy_notice.md +10 -3
  566. package/legal/en-GB/privacy_notice.md +9 -3
  567. package/legal/es/privacy_notice.md +9 -3
  568. package/legal/fr/privacy_notice.md +9 -3
  569. package/legal/hi/privacy_notice.md +9 -3
  570. package/legal/id/privacy_notice.md +9 -3
  571. package/legal/it/privacy_notice.md +9 -3
  572. package/legal/ja/privacy_notice.md +9 -3
  573. package/legal/ko/privacy_notice.md +9 -3
  574. package/legal/pl/privacy_notice.md +9 -3
  575. package/legal/pt/privacy_notice.md +9 -3
  576. package/legal/ru/privacy_notice.md +9 -3
  577. package/legal/tr/privacy_notice.md +9 -3
  578. package/legal/uk/privacy_notice.md +9 -3
  579. package/legal/vi/privacy_notice.md +9 -3
  580. package/legal/zh/privacy_notice.md +9 -3
  581. package/package.json +1 -1
  582. package/src/generated/docs.entry.ts +40 -40
  583. package/docs/ar/roadmap.md +0 -321
  584. package/docs/de/roadmap.md +0 -322
  585. package/docs/en/intlayer_with_astro_vanilla.md +0 -713
  586. package/docs/en/roadmap.md +0 -325
  587. package/docs/en-GB/roadmap.md +0 -322
  588. package/docs/es/roadmap.md +0 -322
  589. package/docs/fr/roadmap.md +0 -322
  590. package/docs/hi/roadmap.md +0 -322
  591. package/docs/id/roadmap.md +0 -325
  592. package/docs/it/roadmap.md +0 -322
  593. package/docs/ja/roadmap.md +0 -322
  594. package/docs/ko/roadmap.md +0 -322
  595. package/docs/pl/roadmap.md +0 -325
  596. package/docs/pt/roadmap.md +0 -322
  597. package/docs/ru/roadmap.md +0 -322
  598. package/docs/tr/roadmap.md +0 -325
  599. package/docs/uk/roadmap.md +0 -325
  600. package/docs/vi/roadmap.md +0 -325
  601. 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: "vue-i18n vs @intlayer/vue-i18n: Одинаковый API, Разные Bundle"
5
5
  description: Что меняется, когда приложение Vue 3 сохраняет свои вызовы vue-i18n, но обслуживает их через адаптер совместимости @intlayer/vue-i18n. JavaScript на странице, размер runtime, размер компонента и утечки, измеренные на одном коде Vite + Vue, плюс то, что адаптер сохраняет, игнорирует и не может заменить.
6
6
  keywords:
@@ -25,17 +25,19 @@ author: aymericzip
25
25
 
26
26
  # vue-i18n VS @intlayer/vue-i18n | Одинаковый API, Разные Bundle
27
27
 
28
- `@intlayer/vue-i18n` — это адаптер совместимости: он предоставляет API `vue-i18n` (`createI18n`, `useI18n`, `t()`, `d()`, `n()`, `$t`, `v-t`, `i18n.global.locale`...) и обслуживает его из словарей, скомпилированных Intlayer. Ваши файлы `.vue` не изменяются. Только то, к чему привязан `t("footer.github")`, меняется.
28
+ ![Vue i18n library ecosystem](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
29
+
30
+ `@intlayer/vue-i18n`, это адаптер совместимости: он предоставляет API `vue-i18n` (`createI18n`, `useI18n`, `t()`, `d()`, `n()`, `$t`, `v-t`, `i18n.global.locale`...) и обслуживает его из словарей, скомпилированных Intlayer. Ваши файлы `.vue` не изменяются. Только то, к чему привязан `t("footer.github")`, меняется.
29
31
 
30
32
  В этой статье измеряется эта замена в одном и том же приложении Vite + Vue 3, собранном один раз с `vue-i18n` и один раз с адаптером. Цифры взяты из [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom). Для сравнения `vue-i18n` и Intlayer как библиотек прочитайте [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) и [бенчмарк vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer-benchmark). Это о том, какие изменения вносит адаптер, когда вы оставляете свои компоненты как они есть.
31
33
 
32
34
  <TOC/>
33
35
 
34
- > **tl;dr**: На том же приложении Vite + Vue 3 замена `vue-i18n` на `@intlayer/vue-i18n` снизила JavaScript на страницу с **134.9 KB до 47.0 KB** gzip (приложение без i18n весит 41.3 KB), runtime с **24.3 KB до 7.9 KB**, средний компонент с **196 KB до 8.4 KB**, и утечку строк на иностранных страницах с **90% на 0%**, без редактирования файлов `.vue`. `createI18n({ messages })` продолжает работать как fallback; удалите импорты JSON для получения указанных выше значений. SFC блоки `<i18n>` и runtime `setLocaleMessage()` — это два функционала, которые не переносятся.
36
+ > **tl;dr**: На том же приложении Vite + Vue 3 замена `vue-i18n` на `@intlayer/vue-i18n` снизила JavaScript на страницу с **134.9 KB до 47.0 KB** gzip (приложение без i18n весит 41.3 KB), runtime с **24.3 KB до 7.9 KB**, средний компонент с **196 KB до 8.4 KB**, и утечку строк на иностранных страницах с **90% на 0%**, без редактирования файлов `.vue`. `createI18n({ messages })` продолжает работать как fallback; удалите импорты JSON для получения указанных выше значений. SFC блоки `<i18n>` и runtime `setLocaleMessage()`, это два функционала, которые не переносятся.
35
37
 
36
38
  ## Что такое `@intlayer/vue-i18n`
37
39
 
38
- `vue-i18n` — это runtime. `createI18n({ messages: { en, fr, ... } })` создает глобальный экземпляр, содержащий все сообщения для каждой локали; `useI18n()` привязывает каждый компонент к нему; `t("footer.github")` проходит по дереву во время рендеринга. Такой дизайн позволяет использовать SFC `<i18n>` блоки и `setLocaleMessage()`, и он же является причиной того, что граф зависимостей каждого компонента включает все дерево.
40
+ `vue-i18n`, это runtime. `createI18n({ messages: { en, fr, ... } })` создает глобальный экземпляр, содержащий все сообщения для каждой локали; `useI18n()` привязывает каждый компонент к нему; `t("footer.github")` проходит по дереву во время рендеринга. Такой дизайн позволяет использовать SFC `<i18n>` блоки и `setLocaleMessage()`, и он же является причиной того, что граф зависимостей каждого компонента включает все дерево.
39
41
 
40
42
  `@intlayer/vue-i18n` сохраняет API и заменяет дерево:
41
43
 
@@ -105,6 +107,10 @@ const { t } = useI18n(_dicHash_footer);
105
107
 
106
108
  ### Результаты на Vite + Vue 3
107
109
 
110
+ Выберите метрики и библиотеки, которые вас интересуют:
111
+
112
+ <I18nBenchmark framework="vite-vue" vertical/>
113
+
108
114
  | Setup | Strategy | Lib size (gz) | Lib size (min) | Page JS avg (gz) | Locale leak | Page leak | Component avg (gz) | E2E reactivity | Page load |
109
115
  | ------------------------ | -------- | ------------: | -------------: | ---------------: | ----------: | --------: | -----------------: | -------------: | ---------: |
110
116
  | **base** (без i18n) | - | 0.0 KB | 0.0 KB | 41.3 KB | 0.0% | - | 1.1 KB | 1.8 ms | 10.8 ms |
@@ -117,18 +123,31 @@ const { t } = useI18n(_dicHash_footer);
117
123
 
118
124
  **Как это читать**
119
125
 
120
- - **88 KB меньше на страницу, те же компоненты.** `vue-i18n` берет приложение 41.3 KB и доводит его до **134.9 KB**. Адаптер сборки тех же компонентов приземляется на **47.0 KB**, на 5.7 KB больше, чем базовое приложение. Большая часть разницы — это 74.9 KB из `src/locales`, которые `createI18n({ messages })` втягивает на каждую страницу, а адаптер никогда не бундлит как блок.
126
+ - **88 KB меньше на страницу, те же компоненты.** `vue-i18n` берет приложение 41.3 KB и доводит его до **134.9 KB**. Адаптер сборки тех же компонентов приземляется на **47.0 KB**, на 5.7 KB больше, чем базовое приложение. Большая часть разницы, это 74.9 KB из `src/locales`, которые `createI18n({ messages })` втягивает на каждую страницу, а адаптер никогда не бундлит как блок.
121
127
  - **Runtime сжимается в 3 раза.** Пустой компонент, который только импортирует `vue-i18n`, стоит **24.3 KB gzip / 83.2 KB minified**: `@intlify/core-base`, компилятор сообщений и runtime. Адаптер стоит **7.9 KB / 23.2 KB**, большую часть составляет ядро Intlayer плюс поверхность API `vue-i18n`.
122
128
  - **Компоненты: в 23 раза меньше.** Компонент `useI18n()`, скомпилированный изолированно, в среднем занимает **196 KB**, потому что `t` привязана к экземпляру, который содержит каждое сообщение каждой локали. С адаптером тот же компонент в среднем занимает **8.4 KB**: он обращается к собственному словарю.
123
- - **Утечка.** `vue-i18n` поставляет все локали и строки каждой страницы на каждой странице: 50% утечка локали (по двум отпечатанным локалям; при десяти объединённых локалях реальные потери выше), 90% утечка страницы. Адаптер снижает утечку страницы до **0%**, потому что каждый компонент импортирует только свои словари. Утечка локали составляет 15% в этом запуске `static`; `importMode: 'dynamic'` — это параметр, который её устраняет, и эта конфигурация не была частью этого запуска Vue.
129
+ - **Утечка.** `vue-i18n` поставляет все локали и строки каждой страницы на каждой странице: 50% утечка локали (по двум отпечатанным локалям; при десяти объединённых локалях реальные потери выше), 90% утечка страницы. Адаптер снижает утечку страницы до **0%**, потому что каждый компонент импортирует только свои словари. Утечка локали составляет 15% в этом запуске `static`; `importMode: 'dynamic'`, это параметр, который её устраняет, и эта конфигурация не была частью этого запуска Vue.
124
130
  - **Реактивность и загрузка страницы.** Переключение локали дешёво для обоих (1,5-2,8 мс); система реактивности Vue делает это возможным, как только сообщения находятся в памяти. Загрузка страницы уменьшается с 13,6 мс до **9,3 мс**, что соответствует 88 КБ меньше JavaScript для парсинга.
125
- - **О нативных строках.** `vue-intlayer` в этом запуске собрал все локали в режиме `static` и достиг размера 57,1 КБ с runtime в 3,9 КБ; синхронизированные словари адаптера содержали меньше строк иностранных локалей, отсюда и меньший показатель на одну страницу. Нативный runtime остается самым легким из трех, а его модель `.content.ts` — это эквивалент SFC `<i18n>` блоков.
131
+ - **О нативных строках.** `vue-intlayer` в этом запуске собрал все локали в режиме `static` и достиг размера 57,1 КБ с runtime в 3,9 КБ; синхронизированные словари адаптера содержали меньше строк иностранных локалей, отсюда и меньший показатель на одну страницу. Нативный runtime остается самым легким из трех, а его модель `.content.ts`, это эквивалент SFC `<i18n>` блоков.
132
+
133
+ <ClickToOpenIframe
134
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md"
135
+ width="100%"
136
+ height="600px"
137
+ style="border:none;"
138
+ />
139
+
140
+ > Полная таблица, каждая библиотека и каждая стратегия, в [отчете о бенчмарке Vue](https://intlayer.org/ru/doc/benchmark/vue).
126
141
 
127
142
  ## Почему меняются цифры
128
143
 
144
+ ![The Intlayer compiler extracts content from components](https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.webp?raw=true)
145
+
129
146
  Ничего в `src/components/` не изменилось, поэтому улучшения исходят из того, к чему привязан `useI18n`.
130
147
 
131
- **С `vue-i18n`** связывание осуществляется через глобальный экземпляр. `createI18n({ messages: { en, fr, ... } })` — это один импорт, который содержит всё; каждый компонент, вызывающий `useI18n()`, может получить доступ ко всему этому, поэтому bundler не может разделить ниже уровня экземпляра. Оптимизация означает, что _вы_ разделяете `en.json` по маршрутам, вызываете `setLocaleMessage()` в guard маршрутизатора и поддерживаете корректность карты маршрут-к-файлу по мере перемещения компонентов.
148
+ **С `vue-i18n`** связывание осуществляется через глобальный экземпляр. `createI18n({ messages: { en, fr, ... } })`, это один импорт, который содержит всё; каждый компонент, вызывающий `useI18n()`, может получить доступ ко всему этому, поэтому bundler не может разделить ниже уровня экземпляра. Оптимизация означает, что _вы_ разделяете `en.json` по маршрутам, вызываете `setLocaleMessage()` в guard маршрутизатора и поддерживаете корректность карты маршрут-к-файлу по мере перемещения компонентов. Утечки растут сразу по двум осям, страницы и локали:
149
+
150
+ ![Theoretical content leakage by architecture](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
132
151
 
133
152
  ```bash
134
153
  .
@@ -158,7 +177,7 @@ const { t } = useI18n(_dicHash_footer);
158
177
  └── Footer.vue # useI18n(); t("footer.github") ← без изменений
159
178
  ```
160
179
 
161
- Импорт `messages` в `i18n.ts` — это одна строка, которую нужно удалить. Это 88 KB.
180
+ Импорт `messages` в `i18n.ts`, это одна строка, которую нужно удалить. Это 88 KB.
162
181
 
163
182
  ## Миграция в три шага
164
183
 
@@ -235,7 +254,7 @@ import { createI18n } from "vue-i18n";
235
254
  export const i18n = createI18n({ locale: "en" });
236
255
  ```
237
256
 
238
- `vueI18nVitePlugin()` оборачивает `vite-intlayer` (наблюдение за содержимым, компиляция словаря, шаг оптимизации) и создает алиас `vue-i18n` на адаптер. Удаление импорта `messages` — это то, что уменьшает размер на 88 KB; если оставить его, приложение продолжит работать, но будет содержать оба варианта.
257
+ `vueI18nVitePlugin()` оборачивает `vite-intlayer` (наблюдение за содержимым, компиляция словаря, шаг оптимизации) и создает алиас `vue-i18n` на адаптер. Удаление импорта `messages`, это то, что уменьшает размер на 88 KB; если оставить его, приложение продолжит работать, но будет содержать оба варианта.
239
258
 
240
259
  </Step>
241
260
  </Steps>
@@ -251,38 +270,119 @@ export const i18n = createI18n({ locale: "en" });
251
270
 
252
271
  ### Что вы получите кроме сокращения размера
253
272
 
254
- - **Типизированные ключи.** `t("footer.github")` типизируется против скомпилированного словаря `footer`; неправильный путь — это ошибка TypeScript вместо отображения ключа как текста.
273
+ - **Типизированные ключи.** `t("footer.github")` типизируется против скомпилированного словаря `footer`; неправильный путь, это ошибка TypeScript вместо отображения ключа как текста.
255
274
  - **`npx intlayer test`** прерывает CI при отсутствии ключа в любой локали. **`npx intlayer fill`** переводит отсутствующие ключи с помощью вашего поставщика (OpenAI, Anthropic, Mistral, Gemini...) и записывает их обратно в `locales/{locale}.json`.
256
275
  - **Visual Editor и CMS** работают с одним и тем же JSON, поэтому не разработчики могут редактировать через UI, а файлы обновляются автоматически.
257
276
  - **Постепенный переход на `.content.ts`.** Любой компонент может переключиться с `useI18n()` на `useIntlayer("footer")` с сопутствующим файлом контента. JSON и `.content.ts` словари сосуществуют и объединяются.
258
277
 
259
278
  ## Ограничения, которые нужно знать перед началом
260
279
 
261
- - **SFC `<i18n>` блоки не читаются.** Если ваши сообщения находятся внутри компонентов, они должны переместиться в файлы локалей (или в `.content.ts`, что является тем же самым с типами).
262
- - **Загрузка сообщений во время выполнения исчезла.** `setLocaleMessage()` и `mergeLocaleMessage()` выдают предупреждение и возвращают результат. Переводы, полученные из CMS во время выполнения, требуют CMS Intlayer или команд `intlayer pull` / `push`.
263
- - **`messages` — это fallback, не бесплатно.** Сохранение импортов JSON в `createI18n()` оставляет 75 KB в бандле. Удалите их после того, как пройдёт `intlayer test`.
264
- - **Адаптер не является нативным runtime.** 7.9 KB против 3.9 KB для `vue-intlayer`. Как только каждый компонент переместится на `useIntlayer`, удалите его.
280
+ <AccordionGroup>
281
+ <Accordion header="Блоки SFC <i18n> не считываются">
282
+
283
+ Если ваши сообщения находятся внутри компонентов, их необходимо перенести в файлы локалей или в файл `.content.ts`, что является той же идеей со сгенерированными типами.
284
+
285
+ </Accordion>
286
+ <Accordion header="Загрузка сообщений во время выполнения удалена">
287
+
288
+ `setLocaleMessage()` и `mergeLocaleMessage()` выводят предупреждение и завершают работу. Переводы, получаемые из CMS во время выполнения, требуют [Intlayer CMS](https://intlayer.org/ru/doc/concept/cms) или команд `intlayer pull` / `push`.
289
+
290
+ </Accordion>
291
+ <Accordion header="messages является запасным вариантом, но не бесплатным">
292
+
293
+ Сохранение импорта JSON в `createI18n()` оставляет 75 КБ в бандле. Удалите их, как только `intlayer test` пройдет успешно.
294
+
295
+ </Accordion>
296
+ <Accordion header="Адаптер не является нативным рантаймом">
297
+
298
+ 7.9 КБ против 3.9 КБ у `vue-intlayer`. Как только каждый компонент перейдет на `useIntlayer`, удалите его.
299
+
300
+ </Accordion>
301
+ </AccordionGroup>
265
302
 
266
303
  ## Когда что использовать?
267
304
 
268
- - **Оставайтесь на `vue-i18n`**, если ваше приложение зависит от SFC `<i18n>` блоков, от runtime потоков `setLocaleMessage()`, или если 90 KB на странице не являются проблемой для вашей аудитории.
269
- - **Используйте `@intlayer/vue-i18n`**, если вы работаете с `vue-i18n` и хотите снизить размер на 88 KB, иметь компоненты меньше в 23 раза, 0% утечки страниц, типизированные ключи и CI проверки без редактирования файла `.vue`. Это точка входа для существующей `vue-i18n` codebase.
270
- - **Переходите на native (`vue-intlayer`)** для новых проектов или когда адаптер выполнит свою роль. Он имеет самый легкий runtime (3.9 KB) и модель `.content.ts` на компонент, который заменяет `<i18n>` блоки типизированным контентом.
305
+ <AccordionGroup>
306
+ <Accordion header="Остаться на vue-i18n">
307
+
308
+ Ваше приложение зависит от блоков SFC `<i18n>`, от процессов `setLocaleMessage()` во время выполнения, или 90 КБ на страницу не имеют значения для вашей аудитории.
309
+
310
+ </Accordion>
311
+ <Accordion header="Использовать @intlayer/vue-i18n">
312
+
313
+ Вы используете `vue-i18n` и хотите получить экономию 88 КБ, в 23 раза меньшие компоненты, 0% утечки страниц, типизированные ключи и проверки CI без редактирования файлов `.vue`. Это точка входа для существующей кодовой базы `vue-i18n`.
314
+
315
+ </Accordion>
316
+ <Accordion header="Перейти на нативный (vue-intlayer)">
317
+
318
+ Для новых проектов или когда адаптер выполнил свою задачу. Он имеет самый легкий рантайм (3.9 КБ) и модель `.content.ts` для каждого компонента, заменяющую блоки `<i18n>` типизированным содержимым. Начните с [Intlayer с Vue](https://intlayer.org/ru/doc/environment/vite-and-vue) или [с Nuxt](https://intlayer.org/ru/doc/environment/nuxt-and-vue).
319
+
320
+ </Accordion>
321
+ </AccordionGroup>
322
+
323
+ ## Часто задаваемые вопросы
324
+
325
+ <FAQ>
326
+
327
+ <Question title="Нужно ли мне редактировать мои файлы .vue?">
328
+
329
+ Нет. Сборка бенчмарка изменила только `vite.config.ts`, `intlayer.config.ts` и одну строку в `src/i18n.ts`, импорт `messages`. Все вызовы `useI18n()`, `$t`, `v-t` и Options API остались без изменений.
330
+
331
+ </Question>
332
+
333
+ <Question title="Почему размер компонента в 23 раза меньше?">
334
+
335
+ Потому что `useI18n()` больше не обращается к глобальному экземпляру. `createI18n({ messages })` содержит все сообщения всех локалей, поэтому компонент, скомпилированный изолированно, тянет 196 КБ. С адаптером он обращается только к собственному словарю: 8.4 КБ.
336
+
337
+ </Question>
338
+
339
+ <Question title="Что насчет форматирования с помощью d() и n()?">
340
+
341
+ Сохранено. Конфигурации `datetimeFormats` и `numberFormats`, переданные в `createI18n()`, учитываются и поддерживаются нативным `Intl`. См. [форматирование даты, времени и чисел](https://intlayer.org/ru/blog/date-time-number-formatting-locales).
342
+
343
+ </Question>
344
+
345
+ <Question title="Работает ли это с Nuxt?">
346
+
347
+ `@intlayer/vue-i18n` ориентирован на Vite + Vue. Для `@nuxtjs/i18n` используйте [адаптер совместимости Nuxt i18n](https://intlayer.org/ru/doc/compatibility/nuxtjs-i18n) и ознакомьтесь с [Intlayer с Nuxt](https://intlayer.org/ru/doc/environment/nuxt-and-vue) для нативной настройки.
348
+
349
+ </Question>
350
+
351
+ <Question title="Могу ли я мигрировать покомпонентно?">
352
+
353
+ Да. Любой компонент может переключиться с `useI18n()` на `useIntlayer("footer")` с расположенным рядом файлом контента. Словари JSON и `.content.ts` сосуществуют и объединяются.
354
+
355
+ </Question>
356
+
357
+ </FAQ>
271
358
 
272
359
  ## Связанные сравнения
273
360
 
274
- - [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) (возможности и DX)
275
- - [vue-i18n vs Intlayer benchmark](https://intlayer.org/blog/vue-i18n-vs-intlayer-benchmark) (библиотеки, одинаковый benchmark)
276
- - [next-intl vs @intlayer/next-intl](https://intlayer.org/blog/next-intl-vs-intlayer-next-intl) (одна серия адаптеров)
277
- - [i18next vs @intlayer/i18next](https://intlayer.org/blog/i18next-vs-intlayer-i18next) (одна серия адаптеров)
278
- - [Lingui vs @intlayer/lingui](https://intlayer.org/blog/lingui-vs-intlayer-lingui) (одна серия адаптеров)
279
- - [Руководство по миграции: vue-i18n на Intlayer](https://intlayer.org/doc/migration/vue-i18n)
280
- - [Compat adapter reference: vue-i18n](https://intlayer.org/doc/compatibility/vue-i18n), [Nuxt i18n](https://intlayer.org/doc/compatibility/nuxtjs-i18n)
361
+ Та же серия адаптеров:
362
+
363
+ - [next-intl vs @intlayer/next-intl](https://intlayer.org/ru/blog/next-intl-vs-intlayer-next-intl)
364
+ - [i18next vs @intlayer/i18next](https://intlayer.org/ru/blog/i18next-vs-intlayer-i18next)
365
+ - [Lingui vs @intlayer/lingui](https://intlayer.org/ru/blog/lingui-vs-intlayer-lingui)
366
+
367
+ Прямое сравнение библиотек:
368
+
369
+ - [vue-i18n vs Intlayer](https://intlayer.org/ru/blog/vue-i18n-vs-intlayer), функции и DX
370
+ - [vue-i18n vs Intlayer benchmark](https://intlayer.org/ru/blog/vue-i18n-vs-intlayer-benchmark)
371
+ - [Is vue-i18n outdated?](https://intlayer.org/ru/blog/is-vue-i18n-outdated)
372
+ - [How to pick a Vue i18n library](https://intlayer.org/ru/blog/how-to-pick-vue-i18n-library)
373
+
374
+ Справочная документация:
375
+
376
+ - [Compat adapter: vue-i18n](https://intlayer.org/ru/doc/compatibility/vue-i18n) and [Nuxt i18n](https://intlayer.org/ru/doc/compatibility/nuxtjs-i18n)
377
+ - [Руководство по миграции: vue-i18n на Intlayer](https://intlayer.org/ru/doc/migration/vue-i18n)
378
+ - [Отчет о бенчмарке Vue](https://intlayer.org/ru/doc/benchmark/vue)
379
+ - [Оптимизация бандла](https://intlayer.org/ru/doc/concept/bundle-optimization) и [компилятор Intlayer](https://intlayer.org/ru/doc/compiler)
380
+ - [Визуальный редактор](https://intlayer.org/ru/doc/concept/editor), [CMS](https://intlayer.org/ru/doc/concept/cms) и [ИИ-перевод](https://intlayer.org/ru/doc/concept/auto-fill)
281
381
 
282
382
  ## Заключение
283
383
 
284
- `@intlayer/vue-i18n` изменяет то, к чему привязан `useI18n()`: от глобального экземпляра, содержащего все сообщения каждой локали, к словарю, скомпилированному для этого компонента. На том же приложении Vite + Vue 3 это дает **88 KB меньше на странице**, **runtime в 3 раза меньше**, **компоненты в 23 раза меньше** и **0% утечек страницы**, при этом требуя только файл конфигурации, одну строку плагина и одно удаленное импортирование. SFC блоки `<i18n>` и загрузка сообщений во время выполнения — это две вещи, которые он не поддерживает, и native `vue-intlayer` runtime при этом остается вполовину меньше по размеру.
384
+ `@intlayer/vue-i18n` изменяет то, к чему привязан `useI18n()`: от глобального экземпляра, содержащего все сообщения каждой локали, к словарю, скомпилированному для этого компонента. На том же приложении Vite + Vue 3 это дает **88 KB меньше на странице**, **runtime в 3 раза меньше**, **компоненты в 23 раза меньше** и **0% утечек страницы**, при этом требуя только файл конфигурации, одну строку плагина и одно удаленное импортирование. SFC блоки `<i18n>` и загрузка сообщений во время выполнения, это две вещи, которые он не поддерживает, и native `vue-intlayer` runtime при этом остается вполовину меньше по размеру.
285
385
 
286
386
  Все исходные данные, тестовые приложения и сценарии находятся в [репозитории Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom). Запустите его самостоятельно.
287
387
 
288
- Обратитесь к документации ['Почему Intlayer?'](https://intlayer.org/doc/why) для получения дополнительной информации.
388
+ Обратитесь к документации ['Почему Intlayer?'](https://intlayer.org/ru/doc/why) для получения дополнительной информации.