@intlayer/docs 8.9.7 → 8.10.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (851) hide show
  1. package/README.md +14 -0
  2. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  3. package/blog/en/vue-i18n_vs_intlayer.md +0 -2
  4. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  5. package/blog/id/vue-i18n_vs_intlayer.md +0 -2
  6. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  7. package/blog/pl/vue-i18n_vs_intlayer.md +0 -2
  8. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +0 -2
  9. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  10. package/blog/tr/vue-i18n_vs_intlayer.md +0 -2
  11. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  12. package/blog/uk/vue-i18n_vs_intlayer.md +0 -2
  13. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  14. package/blog/vi/vue-i18n_vs_intlayer.md +0 -2
  15. package/dist/cjs/blog.cjs.map +1 -1
  16. package/dist/cjs/common.cjs.map +1 -1
  17. package/dist/cjs/doc.cjs.map +1 -1
  18. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  19. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  20. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  21. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  22. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  23. package/dist/cjs/legal.cjs.map +1 -1
  24. package/dist/esm/blog.mjs.map +1 -1
  25. package/dist/esm/common.mjs.map +1 -1
  26. package/dist/esm/doc.mjs.map +1 -1
  27. package/dist/esm/frequentQuestions.mjs.map +1 -1
  28. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  29. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  30. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  31. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  32. package/dist/esm/legal.mjs.map +1 -1
  33. package/dist/types/blog.d.ts.map +1 -1
  34. package/dist/types/common.d.ts.map +1 -1
  35. package/dist/types/doc.d.ts.map +1 -1
  36. package/dist/types/frequentQuestions.d.ts.map +1 -1
  37. package/dist/types/legal.d.ts.map +1 -1
  38. package/docs/ar/benchmark/nextjs.md +20 -11
  39. package/docs/ar/benchmark/solid.md +14 -5
  40. package/docs/ar/benchmark/svelte.md +14 -5
  41. package/docs/ar/benchmark/tanstack.md +16 -7
  42. package/docs/ar/benchmark/vue.md +14 -5
  43. package/docs/ar/configuration.md +6 -6
  44. package/docs/ar/custom_domains.md +11 -11
  45. package/docs/ar/dictionary/content_file.md +41 -0
  46. package/docs/ar/interest_of_intlayer.md +0 -2
  47. package/docs/ar/intlayer_with_analog.md +1 -1
  48. package/docs/ar/intlayer_with_angular.md +1 -1
  49. package/docs/ar/intlayer_with_astro.md +1 -1
  50. package/docs/ar/intlayer_with_astro_lit.md +2 -2
  51. package/docs/ar/intlayer_with_astro_preact.md +3 -3
  52. package/docs/ar/intlayer_with_astro_react.md +2 -2
  53. package/docs/ar/intlayer_with_astro_solid.md +3 -3
  54. package/docs/ar/intlayer_with_astro_svelte.md +1 -1
  55. package/docs/ar/intlayer_with_astro_vanilla.md +1 -1
  56. package/docs/ar/intlayer_with_astro_vue.md +1 -1
  57. package/docs/ar/intlayer_with_nextjs_14.md +2 -2
  58. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  59. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  60. package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
  61. package/docs/ar/intlayer_with_nuxt.md +1 -1
  62. package/docs/ar/intlayer_with_react_native+expo.md +2 -2
  63. package/docs/ar/intlayer_with_react_router_v7.md +1 -1
  64. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  65. package/docs/ar/intlayer_with_storybook.md +7 -7
  66. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  67. package/docs/ar/intlayer_with_tanstack+solid.md +1 -1
  68. package/docs/ar/intlayer_with_tanstack.md +1 -1
  69. package/docs/ar/intlayer_with_vanilla.md +2 -2
  70. package/docs/ar/intlayer_with_vite+lit.md +1 -1
  71. package/docs/ar/intlayer_with_vite+preact.md +1 -1
  72. package/docs/ar/intlayer_with_vite+react.md +1 -1
  73. package/docs/ar/intlayer_with_vite+react_compiler.md +1 -1
  74. package/docs/ar/intlayer_with_vite+svelte.md +2 -2
  75. package/docs/ar/intlayer_with_vite+vanilla.md +4 -4
  76. package/docs/ar/intlayer_with_vite+vue.md +1 -1
  77. package/docs/ar/readme.md +13 -0
  78. package/docs/bn/cli/init.md +1 -1
  79. package/docs/bn/configuration.md +6 -6
  80. package/docs/bn/custom_domains.md +11 -11
  81. package/docs/bn/interest_of_intlayer.md +0 -2
  82. package/docs/bn/intlayer_with_storybook.md +7 -7
  83. package/docs/bn/intlayer_with_vanilla.md +2 -2
  84. package/docs/bn/intlayer_with_vite+lit.md +3 -3
  85. package/docs/bn/intlayer_with_vite+vanilla.md +5 -5
  86. package/docs/cs/cli/init.md +1 -1
  87. package/docs/cs/configuration.md +6 -6
  88. package/docs/cs/custom_domains.md +11 -11
  89. package/docs/cs/interest_of_intlayer.md +0 -2
  90. package/docs/cs/intlayer_with_storybook.md +7 -7
  91. package/docs/cs/intlayer_with_vanilla.md +2 -2
  92. package/docs/cs/intlayer_with_vite+lit.md +3 -3
  93. package/docs/cs/intlayer_with_vite+vanilla.md +5 -5
  94. package/docs/de/benchmark/nextjs.md +15 -6
  95. package/docs/de/benchmark/solid.md +14 -5
  96. package/docs/de/benchmark/svelte.md +14 -5
  97. package/docs/de/benchmark/tanstack.md +15 -6
  98. package/docs/de/benchmark/vue.md +14 -5
  99. package/docs/de/configuration.md +6 -6
  100. package/docs/de/custom_domains.md +11 -11
  101. package/docs/de/dictionary/content_file.md +41 -0
  102. package/docs/de/dictionary/markdown.md +36 -1
  103. package/docs/de/interest_of_intlayer.md +0 -2
  104. package/docs/de/intlayer_with_analog.md +1 -1
  105. package/docs/de/intlayer_with_angular.md +1 -1
  106. package/docs/de/intlayer_with_astro.md +1 -1
  107. package/docs/de/intlayer_with_astro_lit.md +2 -2
  108. package/docs/de/intlayer_with_astro_preact.md +3 -3
  109. package/docs/de/intlayer_with_astro_react.md +2 -2
  110. package/docs/de/intlayer_with_astro_solid.md +3 -3
  111. package/docs/de/intlayer_with_astro_svelte.md +1 -1
  112. package/docs/de/intlayer_with_astro_vanilla.md +1 -1
  113. package/docs/de/intlayer_with_astro_vue.md +1 -1
  114. package/docs/de/intlayer_with_nextjs_14.md +2 -2
  115. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  116. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  117. package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
  118. package/docs/de/intlayer_with_nuxt.md +1 -1
  119. package/docs/de/intlayer_with_react_native+expo.md +2 -2
  120. package/docs/de/intlayer_with_react_router_v7.md +1 -1
  121. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -1
  122. package/docs/de/intlayer_with_storybook.md +7 -7
  123. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  124. package/docs/de/intlayer_with_tanstack+solid.md +1 -1
  125. package/docs/de/intlayer_with_tanstack.md +1 -1
  126. package/docs/de/intlayer_with_vanilla.md +2 -2
  127. package/docs/de/intlayer_with_vite+lit.md +2 -2
  128. package/docs/de/intlayer_with_vite+preact.md +2 -2
  129. package/docs/de/intlayer_with_vite+react.md +2 -2
  130. package/docs/de/intlayer_with_vite+react_compiler.md +2 -2
  131. package/docs/de/intlayer_with_vite+solid.md +1 -1
  132. package/docs/de/intlayer_with_vite+svelte.md +3 -3
  133. package/docs/de/intlayer_with_vite+vanilla.md +5 -5
  134. package/docs/de/intlayer_with_vite+vue.md +2 -2
  135. package/docs/de/readme.md +13 -0
  136. package/docs/en/agent_skills.md +2 -2
  137. package/docs/en/benchmark/___nextjs.md +1 -1
  138. package/docs/en/benchmark/___tanstack.md +2 -2
  139. package/docs/en/benchmark/nextjs.md +11 -2
  140. package/docs/en/benchmark/solid.md +10 -1
  141. package/docs/en/benchmark/svelte.md +10 -1
  142. package/docs/en/benchmark/tanstack.md +10 -1
  143. package/docs/en/benchmark/vue.md +10 -1
  144. package/docs/en/configuration.md +7 -7
  145. package/docs/en/custom_domains.md +11 -11
  146. package/docs/en/dictionary/content_file.md +41 -0
  147. package/docs/en/dictionary/markdown.md +38 -1
  148. package/docs/en/interest_of_intlayer.md +0 -2
  149. package/docs/en/intlayer_with_analog.md +1 -1
  150. package/docs/en/intlayer_with_angular.md +1 -1
  151. package/docs/en/intlayer_with_astro.md +1 -1
  152. package/docs/en/intlayer_with_astro_lit.md +4 -4
  153. package/docs/en/intlayer_with_astro_preact.md +3 -3
  154. package/docs/en/intlayer_with_astro_react.md +2 -2
  155. package/docs/en/intlayer_with_astro_solid.md +3 -3
  156. package/docs/en/intlayer_with_astro_svelte.md +1 -1
  157. package/docs/en/intlayer_with_astro_vanilla.md +1 -1
  158. package/docs/en/intlayer_with_astro_vue.md +1 -1
  159. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  160. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  161. package/docs/en/intlayer_with_nextjs_page_router.md +2 -2
  162. package/docs/en/intlayer_with_nuxt.md +1 -1
  163. package/docs/en/intlayer_with_react_native+expo.md +1 -1
  164. package/docs/en/intlayer_with_react_router_v7.md +1 -1
  165. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +1 -1
  166. package/docs/en/intlayer_with_storybook.md +7 -7
  167. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  168. package/docs/en/intlayer_with_tanstack+solid.md +1 -1
  169. package/docs/en/intlayer_with_tanstack.md +1 -1
  170. package/docs/en/intlayer_with_vanilla.md +2 -2
  171. package/docs/en/intlayer_with_vite+lit.md +2 -2
  172. package/docs/en/intlayer_with_vite+preact.md +1 -1
  173. package/docs/en/intlayer_with_vite+react.md +1 -1
  174. package/docs/en/intlayer_with_vite+react_compiler.md +1 -1
  175. package/docs/en/intlayer_with_vite+svelte.md +2 -2
  176. package/docs/en/intlayer_with_vite+vanilla.md +4 -4
  177. package/docs/en/intlayer_with_vite+vue.md +1 -1
  178. package/docs/en/readme.md +13 -0
  179. package/docs/en-GB/agent_skills.md +2 -2
  180. package/docs/en-GB/benchmark/nextjs.md +16 -7
  181. package/docs/en-GB/benchmark/solid.md +14 -5
  182. package/docs/en-GB/benchmark/svelte.md +14 -5
  183. package/docs/en-GB/benchmark/tanstack.md +16 -7
  184. package/docs/en-GB/benchmark/vue.md +14 -5
  185. package/docs/en-GB/cli/init.md +1 -1
  186. package/docs/en-GB/configuration.md +7 -7
  187. package/docs/en-GB/custom_domains.md +11 -11
  188. package/docs/en-GB/dictionary/content_file.md +41 -0
  189. package/docs/en-GB/dictionary/markdown.md +37 -1
  190. package/docs/en-GB/interest_of_intlayer.md +0 -2
  191. package/docs/en-GB/intlayer_with_analog.md +1 -1
  192. package/docs/en-GB/intlayer_with_angular.md +1 -1
  193. package/docs/en-GB/intlayer_with_astro.md +1 -1
  194. package/docs/en-GB/intlayer_with_astro_lit.md +2 -2
  195. package/docs/en-GB/intlayer_with_astro_preact.md +3 -3
  196. package/docs/en-GB/intlayer_with_astro_react.md +2 -2
  197. package/docs/en-GB/intlayer_with_astro_solid.md +3 -3
  198. package/docs/en-GB/intlayer_with_astro_svelte.md +1 -1
  199. package/docs/en-GB/intlayer_with_astro_vanilla.md +1 -1
  200. package/docs/en-GB/intlayer_with_astro_vue.md +1 -1
  201. package/docs/en-GB/intlayer_with_nextjs_14.md +2 -2
  202. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  203. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  204. package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
  205. package/docs/en-GB/intlayer_with_nuxt.md +1 -1
  206. package/docs/en-GB/intlayer_with_react_native+expo.md +2 -2
  207. package/docs/en-GB/intlayer_with_react_router_v7.md +1 -1
  208. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  209. package/docs/en-GB/intlayer_with_storybook.md +7 -7
  210. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  211. package/docs/en-GB/intlayer_with_tanstack+solid.md +1 -1
  212. package/docs/en-GB/intlayer_with_tanstack.md +1 -1
  213. package/docs/en-GB/intlayer_with_vanilla.md +2 -2
  214. package/docs/en-GB/intlayer_with_vite+lit.md +2 -2
  215. package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
  216. package/docs/en-GB/intlayer_with_vite+react.md +1 -1
  217. package/docs/en-GB/intlayer_with_vite+react_compiler.md +1 -1
  218. package/docs/en-GB/intlayer_with_vite+svelte.md +2 -2
  219. package/docs/en-GB/intlayer_with_vite+vanilla.md +4 -4
  220. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  221. package/docs/en-GB/readme.md +13 -0
  222. package/docs/es/agent_skills.md +2 -2
  223. package/docs/es/benchmark/nextjs.md +15 -6
  224. package/docs/es/benchmark/solid.md +14 -5
  225. package/docs/es/benchmark/svelte.md +14 -5
  226. package/docs/es/benchmark/tanstack.md +15 -6
  227. package/docs/es/benchmark/vue.md +14 -5
  228. package/docs/es/configuration.md +1 -1
  229. package/docs/es/custom_domains.md +11 -11
  230. package/docs/es/dictionary/content_file.md +41 -0
  231. package/docs/es/dictionary/markdown.md +36 -1
  232. package/docs/es/interest_of_intlayer.md +0 -2
  233. package/docs/es/intlayer_with_analog.md +1 -1
  234. package/docs/es/intlayer_with_angular.md +1 -1
  235. package/docs/es/intlayer_with_astro.md +1 -1
  236. package/docs/es/intlayer_with_astro_lit.md +2 -2
  237. package/docs/es/intlayer_with_astro_preact.md +3 -3
  238. package/docs/es/intlayer_with_astro_react.md +2 -2
  239. package/docs/es/intlayer_with_astro_solid.md +3 -3
  240. package/docs/es/intlayer_with_astro_svelte.md +1 -1
  241. package/docs/es/intlayer_with_astro_vanilla.md +1 -1
  242. package/docs/es/intlayer_with_astro_vue.md +1 -1
  243. package/docs/es/intlayer_with_nextjs_14.md +2 -2
  244. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  245. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  246. package/docs/es/intlayer_with_nextjs_page_router.md +2 -2
  247. package/docs/es/intlayer_with_nuxt.md +1 -1
  248. package/docs/es/intlayer_with_react_native+expo.md +2 -2
  249. package/docs/es/intlayer_with_react_router_v7.md +1 -1
  250. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +1 -1
  251. package/docs/es/intlayer_with_storybook.md +5 -5
  252. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  253. package/docs/es/intlayer_with_tanstack+solid.md +1 -1
  254. package/docs/es/intlayer_with_tanstack.md +1 -1
  255. package/docs/es/intlayer_with_vanilla.md +2 -2
  256. package/docs/es/intlayer_with_vite+lit.md +2 -2
  257. package/docs/es/intlayer_with_vite+preact.md +2 -2
  258. package/docs/es/intlayer_with_vite+react.md +2 -2
  259. package/docs/es/intlayer_with_vite+react_compiler.md +2 -2
  260. package/docs/es/intlayer_with_vite+solid.md +1 -1
  261. package/docs/es/intlayer_with_vite+svelte.md +3 -3
  262. package/docs/es/intlayer_with_vite+vanilla.md +4 -4
  263. package/docs/es/intlayer_with_vite+vue.md +2 -2
  264. package/docs/es/readme.md +13 -0
  265. package/docs/fr/agent_skills.md +2 -2
  266. package/docs/fr/benchmark/nextjs.md +20 -11
  267. package/docs/fr/benchmark/solid.md +14 -5
  268. package/docs/fr/benchmark/svelte.md +14 -5
  269. package/docs/fr/benchmark/tanstack.md +16 -7
  270. package/docs/fr/benchmark/vue.md +14 -5
  271. package/docs/fr/configuration.md +6 -6
  272. package/docs/fr/custom_domains.md +11 -11
  273. package/docs/fr/dictionary/content_file.md +41 -0
  274. package/docs/fr/dictionary/markdown.md +36 -1
  275. package/docs/fr/interest_of_intlayer.md +0 -2
  276. package/docs/fr/intlayer_with_analog.md +1 -1
  277. package/docs/fr/intlayer_with_angular.md +1 -1
  278. package/docs/fr/intlayer_with_astro.md +1 -1
  279. package/docs/fr/intlayer_with_astro_lit.md +4 -4
  280. package/docs/fr/intlayer_with_astro_preact.md +3 -3
  281. package/docs/fr/intlayer_with_astro_react.md +2 -2
  282. package/docs/fr/intlayer_with_astro_solid.md +3 -3
  283. package/docs/fr/intlayer_with_astro_svelte.md +1 -1
  284. package/docs/fr/intlayer_with_astro_vanilla.md +1 -1
  285. package/docs/fr/intlayer_with_astro_vue.md +1 -1
  286. package/docs/fr/intlayer_with_nextjs_14.md +2 -2
  287. package/docs/fr/intlayer_with_nextjs_15.md +2 -2
  288. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  289. package/docs/fr/intlayer_with_nextjs_page_router.md +2 -2
  290. package/docs/fr/intlayer_with_nuxt.md +1 -1
  291. package/docs/fr/intlayer_with_react_native+expo.md +2 -2
  292. package/docs/fr/intlayer_with_react_router_v7.md +1 -1
  293. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  294. package/docs/fr/intlayer_with_storybook.md +7 -7
  295. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  296. package/docs/fr/intlayer_with_tanstack+solid.md +1 -1
  297. package/docs/fr/intlayer_with_tanstack.md +1 -1
  298. package/docs/fr/intlayer_with_vanilla.md +2 -2
  299. package/docs/fr/intlayer_with_vite+lit.md +3 -3
  300. package/docs/fr/intlayer_with_vite+preact.md +2 -2
  301. package/docs/fr/intlayer_with_vite+react.md +2 -2
  302. package/docs/fr/intlayer_with_vite+react_compiler.md +2 -2
  303. package/docs/fr/intlayer_with_vite+solid.md +1 -1
  304. package/docs/fr/intlayer_with_vite+svelte.md +3 -3
  305. package/docs/fr/intlayer_with_vite+vanilla.md +5 -5
  306. package/docs/fr/intlayer_with_vite+vue.md +2 -2
  307. package/docs/fr/readme.md +15 -0
  308. package/docs/hi/benchmark/nextjs.md +20 -11
  309. package/docs/hi/benchmark/solid.md +14 -5
  310. package/docs/hi/benchmark/svelte.md +14 -5
  311. package/docs/hi/benchmark/tanstack.md +16 -7
  312. package/docs/hi/benchmark/vue.md +14 -5
  313. package/docs/hi/cli/init.md +1 -1
  314. package/docs/hi/configuration.md +6 -6
  315. package/docs/hi/custom_domains.md +11 -11
  316. package/docs/hi/dictionary/content_file.md +41 -0
  317. package/docs/hi/dictionary/markdown.md +36 -1
  318. package/docs/hi/interest_of_intlayer.md +0 -2
  319. package/docs/hi/intlayer_with_analog.md +1 -1
  320. package/docs/hi/intlayer_with_angular.md +1 -1
  321. package/docs/hi/intlayer_with_astro.md +1 -1
  322. package/docs/hi/intlayer_with_astro_lit.md +2 -2
  323. package/docs/hi/intlayer_with_astro_preact.md +3 -3
  324. package/docs/hi/intlayer_with_astro_react.md +2 -2
  325. package/docs/hi/intlayer_with_astro_solid.md +3 -3
  326. package/docs/hi/intlayer_with_astro_svelte.md +1 -1
  327. package/docs/hi/intlayer_with_astro_vanilla.md +1 -1
  328. package/docs/hi/intlayer_with_astro_vue.md +1 -1
  329. package/docs/hi/intlayer_with_nextjs_14.md +2 -2
  330. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  331. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  332. package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
  333. package/docs/hi/intlayer_with_nuxt.md +1 -1
  334. package/docs/hi/intlayer_with_react_native+expo.md +2 -2
  335. package/docs/hi/intlayer_with_react_router_v7.md +1 -1
  336. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  337. package/docs/hi/intlayer_with_storybook.md +7 -7
  338. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  339. package/docs/hi/intlayer_with_tanstack+solid.md +1 -1
  340. package/docs/hi/intlayer_with_tanstack.md +1 -1
  341. package/docs/hi/intlayer_with_vanilla.md +2 -2
  342. package/docs/hi/intlayer_with_vite+lit.md +3 -3
  343. package/docs/hi/intlayer_with_vite+preact.md +2 -2
  344. package/docs/hi/intlayer_with_vite+react.md +2 -2
  345. package/docs/hi/intlayer_with_vite+react_compiler.md +2 -2
  346. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  347. package/docs/hi/intlayer_with_vite+svelte.md +3 -3
  348. package/docs/hi/intlayer_with_vite+vanilla.md +5 -5
  349. package/docs/hi/intlayer_with_vite+vue.md +2 -2
  350. package/docs/hi/readme.md +14 -1
  351. package/docs/id/agent_skills.md +2 -2
  352. package/docs/id/benchmark/nextjs.md +20 -11
  353. package/docs/id/benchmark/solid.md +14 -5
  354. package/docs/id/benchmark/svelte.md +14 -5
  355. package/docs/id/benchmark/tanstack.md +16 -7
  356. package/docs/id/benchmark/vue.md +14 -5
  357. package/docs/id/cli/init.md +1 -1
  358. package/docs/id/configuration.md +6 -6
  359. package/docs/id/custom_domains.md +11 -11
  360. package/docs/id/dictionary/content_file.md +41 -0
  361. package/docs/id/dictionary/markdown.md +36 -1
  362. package/docs/id/interest_of_intlayer.md +0 -2
  363. package/docs/id/intlayer_with_analog.md +1 -1
  364. package/docs/id/intlayer_with_angular.md +1 -1
  365. package/docs/id/intlayer_with_astro.md +1 -1
  366. package/docs/id/intlayer_with_astro_lit.md +2 -2
  367. package/docs/id/intlayer_with_astro_preact.md +3 -3
  368. package/docs/id/intlayer_with_astro_react.md +2 -2
  369. package/docs/id/intlayer_with_astro_solid.md +3 -3
  370. package/docs/id/intlayer_with_astro_svelte.md +1 -1
  371. package/docs/id/intlayer_with_astro_vanilla.md +1 -1
  372. package/docs/id/intlayer_with_astro_vue.md +1 -1
  373. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  374. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  375. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  376. package/docs/id/intlayer_with_nextjs_page_router.md +2 -2
  377. package/docs/id/intlayer_with_nuxt.md +1 -1
  378. package/docs/id/intlayer_with_react_native+expo.md +1 -1
  379. package/docs/id/intlayer_with_react_router_v7.md +1 -1
  380. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +1 -1
  381. package/docs/id/intlayer_with_storybook.md +7 -7
  382. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  383. package/docs/id/intlayer_with_tanstack+solid.md +1 -1
  384. package/docs/id/intlayer_with_tanstack.md +1 -1
  385. package/docs/id/intlayer_with_vanilla.md +2 -2
  386. package/docs/id/intlayer_with_vite+lit.md +2 -2
  387. package/docs/id/intlayer_with_vite+preact.md +1 -1
  388. package/docs/id/intlayer_with_vite+react.md +1 -1
  389. package/docs/id/intlayer_with_vite+react_compiler.md +1 -1
  390. package/docs/id/intlayer_with_vite+svelte.md +2 -2
  391. package/docs/id/intlayer_with_vite+vanilla.md +4 -4
  392. package/docs/id/intlayer_with_vite+vue.md +1 -1
  393. package/docs/id/readme.md +13 -0
  394. package/docs/it/benchmark/nextjs.md +18 -9
  395. package/docs/it/benchmark/solid.md +14 -5
  396. package/docs/it/benchmark/svelte.md +14 -5
  397. package/docs/it/benchmark/tanstack.md +16 -7
  398. package/docs/it/benchmark/vue.md +14 -5
  399. package/docs/it/configuration.md +6 -6
  400. package/docs/it/custom_domains.md +11 -11
  401. package/docs/it/dictionary/content_file.md +41 -0
  402. package/docs/it/dictionary/markdown.md +36 -1
  403. package/docs/it/interest_of_intlayer.md +0 -2
  404. package/docs/it/intlayer_with_analog.md +1 -1
  405. package/docs/it/intlayer_with_angular.md +1 -1
  406. package/docs/it/intlayer_with_astro.md +1 -1
  407. package/docs/it/intlayer_with_astro_lit.md +2 -2
  408. package/docs/it/intlayer_with_astro_preact.md +3 -3
  409. package/docs/it/intlayer_with_astro_react.md +2 -2
  410. package/docs/it/intlayer_with_astro_solid.md +3 -3
  411. package/docs/it/intlayer_with_astro_svelte.md +1 -1
  412. package/docs/it/intlayer_with_astro_vanilla.md +1 -1
  413. package/docs/it/intlayer_with_astro_vue.md +1 -1
  414. package/docs/it/intlayer_with_nextjs_14.md +2 -2
  415. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  416. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  417. package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
  418. package/docs/it/intlayer_with_nuxt.md +1 -1
  419. package/docs/it/intlayer_with_react_native+expo.md +2 -2
  420. package/docs/it/intlayer_with_react_router_v7.md +1 -1
  421. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +1 -1
  422. package/docs/it/intlayer_with_storybook.md +7 -7
  423. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  424. package/docs/it/intlayer_with_tanstack+solid.md +1 -1
  425. package/docs/it/intlayer_with_tanstack.md +1 -1
  426. package/docs/it/intlayer_with_vanilla.md +2 -2
  427. package/docs/it/intlayer_with_vite+lit.md +2 -2
  428. package/docs/it/intlayer_with_vite+preact.md +2 -2
  429. package/docs/it/intlayer_with_vite+react.md +2 -2
  430. package/docs/it/intlayer_with_vite+react_compiler.md +2 -2
  431. package/docs/it/intlayer_with_vite+solid.md +1 -1
  432. package/docs/it/intlayer_with_vite+svelte.md +3 -3
  433. package/docs/it/intlayer_with_vite+vanilla.md +5 -5
  434. package/docs/it/intlayer_with_vite+vue.md +1 -1
  435. package/docs/it/readme.md +13 -0
  436. package/docs/ja/benchmark/nextjs.md +15 -6
  437. package/docs/ja/benchmark/solid.md +10 -1
  438. package/docs/ja/benchmark/svelte.md +10 -1
  439. package/docs/ja/benchmark/tanstack.md +15 -6
  440. package/docs/ja/benchmark/vue.md +10 -1
  441. package/docs/ja/configuration.md +1 -1
  442. package/docs/ja/custom_domains.md +9 -9
  443. package/docs/ja/dictionary/content_file.md +41 -0
  444. package/docs/ja/dictionary/markdown.md +36 -1
  445. package/docs/ja/interest_of_intlayer.md +0 -2
  446. package/docs/ja/intlayer_with_analog.md +1 -1
  447. package/docs/ja/intlayer_with_angular.md +1 -1
  448. package/docs/ja/intlayer_with_astro.md +1 -1
  449. package/docs/ja/intlayer_with_astro_lit.md +2 -2
  450. package/docs/ja/intlayer_with_astro_preact.md +2 -2
  451. package/docs/ja/intlayer_with_astro_react.md +1 -1
  452. package/docs/ja/intlayer_with_astro_solid.md +1 -1
  453. package/docs/ja/intlayer_with_astro_svelte.md +1 -1
  454. package/docs/ja/intlayer_with_astro_vanilla.md +1 -1
  455. package/docs/ja/intlayer_with_astro_vue.md +1 -1
  456. package/docs/ja/intlayer_with_nextjs_14.md +2 -2
  457. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  458. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  459. package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
  460. package/docs/ja/intlayer_with_nuxt.md +1 -1
  461. package/docs/ja/intlayer_with_react_native+expo.md +2 -2
  462. package/docs/ja/intlayer_with_react_router_v7.md +2 -2
  463. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +1 -1
  464. package/docs/ja/intlayer_with_storybook.md +5 -5
  465. package/docs/ja/intlayer_with_svelte_kit.md +1 -1
  466. package/docs/ja/intlayer_with_tanstack+solid.md +1 -1
  467. package/docs/ja/intlayer_with_tanstack.md +1 -1
  468. package/docs/ja/intlayer_with_vanilla.md +2 -2
  469. package/docs/ja/intlayer_with_vite+lit.md +1 -1
  470. package/docs/ja/intlayer_with_vite+preact.md +1 -1
  471. package/docs/ja/intlayer_with_vite+react.md +1 -1
  472. package/docs/ja/intlayer_with_vite+react_compiler.md +1 -1
  473. package/docs/ja/intlayer_with_vite+svelte.md +2 -2
  474. package/docs/ja/intlayer_with_vite+vanilla.md +2 -2
  475. package/docs/ja/intlayer_with_vite+vue.md +1 -1
  476. package/docs/ja/readme.md +13 -0
  477. package/docs/ko/benchmark/nextjs.md +15 -6
  478. package/docs/ko/benchmark/solid.md +13 -4
  479. package/docs/ko/benchmark/svelte.md +13 -4
  480. package/docs/ko/benchmark/tanstack.md +15 -6
  481. package/docs/ko/benchmark/vue.md +13 -4
  482. package/docs/ko/configuration.md +1 -1
  483. package/docs/ko/custom_domains.md +9 -9
  484. package/docs/ko/dictionary/content_file.md +41 -0
  485. package/docs/ko/dictionary/markdown.md +36 -1
  486. package/docs/ko/interest_of_intlayer.md +0 -2
  487. package/docs/ko/intlayer_with_analog.md +1 -1
  488. package/docs/ko/intlayer_with_angular.md +1 -1
  489. package/docs/ko/intlayer_with_astro.md +1 -1
  490. package/docs/ko/intlayer_with_astro_lit.md +2 -2
  491. package/docs/ko/intlayer_with_astro_preact.md +2 -2
  492. package/docs/ko/intlayer_with_astro_react.md +1 -1
  493. package/docs/ko/intlayer_with_astro_solid.md +1 -1
  494. package/docs/ko/intlayer_with_astro_svelte.md +1 -1
  495. package/docs/ko/intlayer_with_astro_vanilla.md +1 -1
  496. package/docs/ko/intlayer_with_astro_vue.md +1 -1
  497. package/docs/ko/intlayer_with_nextjs_14.md +2 -2
  498. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  499. package/docs/ko/intlayer_with_nextjs_16.md +1 -1
  500. package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
  501. package/docs/ko/intlayer_with_nuxt.md +1 -1
  502. package/docs/ko/intlayer_with_react_native+expo.md +2 -2
  503. package/docs/ko/intlayer_with_react_router_v7.md +1 -1
  504. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  505. package/docs/ko/intlayer_with_storybook.md +5 -5
  506. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  507. package/docs/ko/intlayer_with_tanstack+solid.md +1 -1
  508. package/docs/ko/intlayer_with_tanstack.md +1 -1
  509. package/docs/ko/intlayer_with_vanilla.md +2 -2
  510. package/docs/ko/intlayer_with_vite+lit.md +2 -2
  511. package/docs/ko/intlayer_with_vite+preact.md +2 -2
  512. package/docs/ko/intlayer_with_vite+react.md +2 -2
  513. package/docs/ko/intlayer_with_vite+react_compiler.md +2 -2
  514. package/docs/ko/intlayer_with_vite+solid.md +1 -1
  515. package/docs/ko/intlayer_with_vite+svelte.md +3 -3
  516. package/docs/ko/intlayer_with_vite+vanilla.md +3 -3
  517. package/docs/ko/intlayer_with_vite+vue.md +2 -2
  518. package/docs/ko/readme.md +13 -0
  519. package/docs/nl/configuration.md +6 -6
  520. package/docs/nl/custom_domains.md +11 -11
  521. package/docs/nl/interest_of_intlayer.md +0 -2
  522. package/docs/nl/intlayer_with_storybook.md +7 -7
  523. package/docs/nl/intlayer_with_vanilla.md +2 -2
  524. package/docs/nl/intlayer_with_vite+lit.md +2 -2
  525. package/docs/nl/intlayer_with_vite+vanilla.md +4 -4
  526. package/docs/pl/agent_skills.md +2 -2
  527. package/docs/pl/benchmark/nextjs.md +20 -11
  528. package/docs/pl/benchmark/solid.md +15 -6
  529. package/docs/pl/benchmark/svelte.md +15 -6
  530. package/docs/pl/benchmark/tanstack.md +16 -7
  531. package/docs/pl/benchmark/vue.md +16 -7
  532. package/docs/pl/configuration.md +6 -6
  533. package/docs/pl/custom_domains.md +11 -11
  534. package/docs/pl/dictionary/content_file.md +41 -0
  535. package/docs/pl/dictionary/markdown.md +36 -1
  536. package/docs/pl/interest_of_intlayer.md +0 -2
  537. package/docs/pl/intlayer_with_analog.md +1 -1
  538. package/docs/pl/intlayer_with_angular.md +1 -1
  539. package/docs/pl/intlayer_with_astro.md +1 -1
  540. package/docs/pl/intlayer_with_astro_lit.md +2 -2
  541. package/docs/pl/intlayer_with_astro_preact.md +3 -3
  542. package/docs/pl/intlayer_with_astro_react.md +2 -2
  543. package/docs/pl/intlayer_with_astro_solid.md +3 -3
  544. package/docs/pl/intlayer_with_astro_svelte.md +1 -1
  545. package/docs/pl/intlayer_with_astro_vanilla.md +1 -1
  546. package/docs/pl/intlayer_with_astro_vue.md +1 -1
  547. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  548. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  549. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  550. package/docs/pl/intlayer_with_nextjs_page_router.md +2 -2
  551. package/docs/pl/intlayer_with_nuxt.md +1 -1
  552. package/docs/pl/intlayer_with_react_native+expo.md +1 -1
  553. package/docs/pl/intlayer_with_react_router_v7.md +1 -1
  554. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +1 -1
  555. package/docs/pl/intlayer_with_storybook.md +7 -7
  556. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  557. package/docs/pl/intlayer_with_tanstack+solid.md +1 -1
  558. package/docs/pl/intlayer_with_tanstack.md +1 -1
  559. package/docs/pl/intlayer_with_vanilla.md +2 -2
  560. package/docs/pl/intlayer_with_vite+lit.md +3 -3
  561. package/docs/pl/intlayer_with_vite+preact.md +2 -2
  562. package/docs/pl/intlayer_with_vite+react.md +2 -2
  563. package/docs/pl/intlayer_with_vite+react_compiler.md +2 -2
  564. package/docs/pl/intlayer_with_vite+solid.md +1 -1
  565. package/docs/pl/intlayer_with_vite+svelte.md +3 -3
  566. package/docs/pl/intlayer_with_vite+vanilla.md +5 -5
  567. package/docs/pl/intlayer_with_vite+vue.md +2 -2
  568. package/docs/pl/readme.md +13 -0
  569. package/docs/pt/benchmark/nextjs.md +20 -11
  570. package/docs/pt/benchmark/solid.md +14 -5
  571. package/docs/pt/benchmark/svelte.md +14 -5
  572. package/docs/pt/benchmark/tanstack.md +16 -7
  573. package/docs/pt/benchmark/vue.md +14 -5
  574. package/docs/pt/configuration.md +6 -6
  575. package/docs/pt/custom_domains.md +11 -11
  576. package/docs/pt/dictionary/content_file.md +41 -0
  577. package/docs/pt/dictionary/markdown.md +36 -1
  578. package/docs/pt/interest_of_intlayer.md +0 -2
  579. package/docs/pt/intlayer_with_analog.md +1 -1
  580. package/docs/pt/intlayer_with_angular.md +1 -1
  581. package/docs/pt/intlayer_with_astro.md +1 -1
  582. package/docs/pt/intlayer_with_astro_lit.md +1 -1
  583. package/docs/pt/intlayer_with_astro_preact.md +3 -3
  584. package/docs/pt/intlayer_with_astro_react.md +2 -2
  585. package/docs/pt/intlayer_with_astro_solid.md +3 -3
  586. package/docs/pt/intlayer_with_astro_svelte.md +1 -1
  587. package/docs/pt/intlayer_with_astro_vanilla.md +1 -1
  588. package/docs/pt/intlayer_with_astro_vue.md +1 -1
  589. package/docs/pt/intlayer_with_nextjs_14.md +2 -2
  590. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  591. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  592. package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
  593. package/docs/pt/intlayer_with_nuxt.md +1 -1
  594. package/docs/pt/intlayer_with_react_native+expo.md +2 -2
  595. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +1 -1
  596. package/docs/pt/intlayer_with_storybook.md +7 -7
  597. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  598. package/docs/pt/intlayer_with_tanstack+solid.md +1 -1
  599. package/docs/pt/intlayer_with_tanstack.md +1 -1
  600. package/docs/pt/intlayer_with_vanilla.md +2 -2
  601. package/docs/pt/intlayer_with_vite+lit.md +3 -3
  602. package/docs/pt/intlayer_with_vite+preact.md +2 -2
  603. package/docs/pt/intlayer_with_vite+react.md +2 -2
  604. package/docs/pt/intlayer_with_vite+react_compiler.md +2 -2
  605. package/docs/pt/intlayer_with_vite+solid.md +1 -1
  606. package/docs/pt/intlayer_with_vite+svelte.md +3 -3
  607. package/docs/pt/intlayer_with_vite+vanilla.md +5 -5
  608. package/docs/pt/intlayer_with_vite+vue.md +1 -1
  609. package/docs/pt/readme.md +13 -0
  610. package/docs/ru/agent_skills.md +1 -1
  611. package/docs/ru/benchmark/index.md +2 -2
  612. package/docs/ru/benchmark/nextjs.md +28 -19
  613. package/docs/ru/benchmark/solid.md +16 -7
  614. package/docs/ru/benchmark/svelte.md +17 -8
  615. package/docs/ru/benchmark/tanstack.md +20 -11
  616. package/docs/ru/benchmark/vue.md +19 -10
  617. package/docs/ru/bundle_optimization.md +1 -1
  618. package/docs/ru/cli/index.md +23 -23
  619. package/docs/ru/cli/init.md +7 -7
  620. package/docs/ru/cli/standalone.md +5 -5
  621. package/docs/ru/compiler.md +3 -3
  622. package/docs/ru/configuration.md +8 -8
  623. package/docs/ru/custom_domains.md +12 -12
  624. package/docs/ru/dictionary/content_file.md +41 -0
  625. package/docs/ru/dictionary/html.md +6 -6
  626. package/docs/ru/dictionary/markdown.md +42 -7
  627. package/docs/ru/interest_of_intlayer.md +3 -5
  628. package/docs/ru/intlayer_with_analog.md +1 -1
  629. package/docs/ru/intlayer_with_angular.md +1 -1
  630. package/docs/ru/intlayer_with_astro.md +2 -2
  631. package/docs/ru/intlayer_with_astro_lit.md +5 -5
  632. package/docs/ru/intlayer_with_astro_preact.md +4 -4
  633. package/docs/ru/intlayer_with_astro_react.md +3 -3
  634. package/docs/ru/intlayer_with_astro_solid.md +4 -4
  635. package/docs/ru/intlayer_with_astro_svelte.md +2 -2
  636. package/docs/ru/intlayer_with_astro_vanilla.md +2 -2
  637. package/docs/ru/intlayer_with_astro_vue.md +2 -2
  638. package/docs/ru/intlayer_with_fastify.md +1 -1
  639. package/docs/ru/intlayer_with_nextjs_14.md +2 -2
  640. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  641. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  642. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  643. package/docs/ru/intlayer_with_nuxt.md +1 -1
  644. package/docs/ru/intlayer_with_react_native+expo.md +2 -2
  645. package/docs/ru/intlayer_with_react_router_v7.md +1 -1
  646. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +1 -1
  647. package/docs/ru/intlayer_with_storybook.md +10 -10
  648. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  649. package/docs/ru/intlayer_with_tanstack+solid.md +7 -7
  650. package/docs/ru/intlayer_with_tanstack.md +1 -1
  651. package/docs/ru/intlayer_with_vanilla.md +4 -4
  652. package/docs/ru/intlayer_with_vite+lit.md +5 -5
  653. package/docs/ru/intlayer_with_vite+preact.md +2 -2
  654. package/docs/ru/intlayer_with_vite+react.md +2 -2
  655. package/docs/ru/intlayer_with_vite+react_compiler.md +2 -2
  656. package/docs/ru/intlayer_with_vite+solid.md +1 -1
  657. package/docs/ru/intlayer_with_vite+svelte.md +3 -3
  658. package/docs/ru/intlayer_with_vite+vanilla.md +7 -7
  659. package/docs/ru/intlayer_with_vite+vue.md +2 -2
  660. package/docs/ru/readme.md +13 -0
  661. package/docs/tr/benchmark/nextjs.md +16 -7
  662. package/docs/tr/benchmark/solid.md +14 -5
  663. package/docs/tr/benchmark/svelte.md +14 -5
  664. package/docs/tr/benchmark/tanstack.md +16 -7
  665. package/docs/tr/benchmark/vue.md +14 -5
  666. package/docs/tr/configuration.md +6 -6
  667. package/docs/tr/custom_domains.md +11 -11
  668. package/docs/tr/dictionary/content_file.md +41 -0
  669. package/docs/tr/dictionary/markdown.md +36 -1
  670. package/docs/tr/interest_of_intlayer.md +0 -2
  671. package/docs/tr/intlayer_with_analog.md +1 -1
  672. package/docs/tr/intlayer_with_angular.md +1 -1
  673. package/docs/tr/intlayer_with_astro.md +1 -1
  674. package/docs/tr/intlayer_with_astro_lit.md +2 -2
  675. package/docs/tr/intlayer_with_astro_preact.md +3 -3
  676. package/docs/tr/intlayer_with_astro_react.md +2 -2
  677. package/docs/tr/intlayer_with_astro_solid.md +3 -3
  678. package/docs/tr/intlayer_with_astro_svelte.md +1 -1
  679. package/docs/tr/intlayer_with_astro_vanilla.md +1 -1
  680. package/docs/tr/intlayer_with_astro_vue.md +1 -1
  681. package/docs/tr/intlayer_with_nextjs_15.md +2 -2
  682. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  683. package/docs/tr/intlayer_with_nextjs_page_router.md +2 -2
  684. package/docs/tr/intlayer_with_nuxt.md +1 -1
  685. package/docs/tr/intlayer_with_react_native+expo.md +2 -2
  686. package/docs/tr/intlayer_with_react_router_v7.md +1 -1
  687. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  688. package/docs/tr/intlayer_with_storybook.md +7 -7
  689. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  690. package/docs/tr/intlayer_with_tanstack+solid.md +1 -1
  691. package/docs/tr/intlayer_with_tanstack.md +1 -1
  692. package/docs/tr/intlayer_with_vanilla.md +2 -2
  693. package/docs/tr/intlayer_with_vite+lit.md +3 -3
  694. package/docs/tr/intlayer_with_vite+preact.md +2 -2
  695. package/docs/tr/intlayer_with_vite+react.md +2 -2
  696. package/docs/tr/intlayer_with_vite+react_compiler.md +2 -2
  697. package/docs/tr/intlayer_with_vite+solid.md +1 -1
  698. package/docs/tr/intlayer_with_vite+svelte.md +3 -3
  699. package/docs/tr/intlayer_with_vite+vanilla.md +5 -5
  700. package/docs/tr/intlayer_with_vite+vue.md +2 -2
  701. package/docs/tr/readme.md +13 -0
  702. package/docs/uk/agent_skills.md +1 -1
  703. package/docs/uk/benchmark/index.md +2 -2
  704. package/docs/uk/benchmark/nextjs.md +29 -20
  705. package/docs/uk/benchmark/solid.md +16 -7
  706. package/docs/uk/benchmark/svelte.md +17 -8
  707. package/docs/uk/benchmark/tanstack.md +21 -12
  708. package/docs/uk/benchmark/vue.md +20 -11
  709. package/docs/uk/bundle_optimization.md +1 -1
  710. package/docs/uk/cli/index.md +21 -21
  711. package/docs/uk/cli/init.md +9 -9
  712. package/docs/uk/cli/standalone.md +16 -16
  713. package/docs/uk/compiler.md +3 -3
  714. package/docs/uk/configuration.md +8 -8
  715. package/docs/uk/custom_domains.md +12 -12
  716. package/docs/uk/dictionary/content_file.md +41 -0
  717. package/docs/uk/dictionary/markdown.md +36 -1
  718. package/docs/uk/interest_of_intlayer.md +2 -4
  719. package/docs/uk/intlayer_with_analog.md +1 -1
  720. package/docs/uk/intlayer_with_angular.md +1 -1
  721. package/docs/uk/intlayer_with_astro.md +2 -2
  722. package/docs/uk/intlayer_with_astro_lit.md +3 -3
  723. package/docs/uk/intlayer_with_astro_preact.md +4 -4
  724. package/docs/uk/intlayer_with_astro_react.md +3 -3
  725. package/docs/uk/intlayer_with_astro_solid.md +4 -4
  726. package/docs/uk/intlayer_with_astro_svelte.md +2 -2
  727. package/docs/uk/intlayer_with_astro_vanilla.md +2 -2
  728. package/docs/uk/intlayer_with_astro_vue.md +2 -2
  729. package/docs/uk/intlayer_with_fastify.md +1 -1
  730. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  731. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  732. package/docs/uk/intlayer_with_nextjs_16.md +1 -1
  733. package/docs/uk/intlayer_with_nextjs_page_router.md +2 -2
  734. package/docs/uk/intlayer_with_nuxt.md +1 -1
  735. package/docs/uk/intlayer_with_react_native+expo.md +1 -1
  736. package/docs/uk/intlayer_with_react_router_v7.md +1 -1
  737. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +1 -1
  738. package/docs/uk/intlayer_with_storybook.md +9 -9
  739. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  740. package/docs/uk/intlayer_with_tanstack+solid.md +4 -4
  741. package/docs/uk/intlayer_with_tanstack.md +1 -1
  742. package/docs/uk/intlayer_with_vanilla.md +3 -3
  743. package/docs/uk/intlayer_with_vite+lit.md +4 -4
  744. package/docs/uk/intlayer_with_vite+preact.md +2 -2
  745. package/docs/uk/intlayer_with_vite+react.md +2 -2
  746. package/docs/uk/intlayer_with_vite+react_compiler.md +2 -2
  747. package/docs/uk/intlayer_with_vite+solid.md +1 -1
  748. package/docs/uk/intlayer_with_vite+svelte.md +3 -3
  749. package/docs/uk/intlayer_with_vite+vanilla.md +6 -6
  750. package/docs/uk/intlayer_with_vite+vue.md +2 -2
  751. package/docs/uk/readme.md +13 -0
  752. package/docs/ur/cli/init.md +1 -1
  753. package/docs/ur/configuration.md +6 -6
  754. package/docs/ur/custom_domains.md +11 -11
  755. package/docs/ur/interest_of_intlayer.md +0 -2
  756. package/docs/ur/intlayer_with_storybook.md +7 -7
  757. package/docs/ur/intlayer_with_vanilla.md +2 -2
  758. package/docs/ur/intlayer_with_vite+lit.md +2 -2
  759. package/docs/ur/intlayer_with_vite+vanilla.md +4 -4
  760. package/docs/vi/agent_skills.md +2 -2
  761. package/docs/vi/benchmark/nextjs.md +20 -11
  762. package/docs/vi/benchmark/solid.md +14 -5
  763. package/docs/vi/benchmark/svelte.md +14 -5
  764. package/docs/vi/benchmark/tanstack.md +16 -7
  765. package/docs/vi/benchmark/vue.md +14 -5
  766. package/docs/vi/cli/init.md +1 -1
  767. package/docs/vi/configuration.md +6 -6
  768. package/docs/vi/custom_domains.md +11 -11
  769. package/docs/vi/dictionary/content_file.md +41 -0
  770. package/docs/vi/dictionary/markdown.md +36 -1
  771. package/docs/vi/interest_of_intlayer.md +0 -2
  772. package/docs/vi/intlayer_with_analog.md +1 -1
  773. package/docs/vi/intlayer_with_angular.md +1 -1
  774. package/docs/vi/intlayer_with_astro.md +1 -1
  775. package/docs/vi/intlayer_with_astro_lit.md +2 -2
  776. package/docs/vi/intlayer_with_astro_preact.md +3 -3
  777. package/docs/vi/intlayer_with_astro_react.md +2 -2
  778. package/docs/vi/intlayer_with_astro_solid.md +3 -3
  779. package/docs/vi/intlayer_with_astro_svelte.md +1 -1
  780. package/docs/vi/intlayer_with_astro_vanilla.md +1 -1
  781. package/docs/vi/intlayer_with_astro_vue.md +1 -1
  782. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  783. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  784. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  785. package/docs/vi/intlayer_with_nextjs_page_router.md +2 -2
  786. package/docs/vi/intlayer_with_nuxt.md +1 -1
  787. package/docs/vi/intlayer_with_react_native+expo.md +1 -1
  788. package/docs/vi/intlayer_with_react_router_v7.md +1 -1
  789. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  790. package/docs/vi/intlayer_with_storybook.md +7 -7
  791. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  792. package/docs/vi/intlayer_with_tanstack+solid.md +1 -1
  793. package/docs/vi/intlayer_with_tanstack.md +1 -1
  794. package/docs/vi/intlayer_with_vanilla.md +2 -2
  795. package/docs/vi/intlayer_with_vite+lit.md +2 -2
  796. package/docs/vi/intlayer_with_vite+preact.md +1 -1
  797. package/docs/vi/intlayer_with_vite+react.md +1 -1
  798. package/docs/vi/intlayer_with_vite+react_compiler.md +1 -1
  799. package/docs/vi/intlayer_with_vite+svelte.md +2 -2
  800. package/docs/vi/intlayer_with_vite+vanilla.md +4 -4
  801. package/docs/vi/intlayer_with_vite+vue.md +1 -1
  802. package/docs/vi/readme.md +13 -0
  803. package/docs/zh/benchmark/nextjs.md +20 -11
  804. package/docs/zh/benchmark/solid.md +10 -1
  805. package/docs/zh/benchmark/svelte.md +10 -1
  806. package/docs/zh/benchmark/tanstack.md +16 -7
  807. package/docs/zh/benchmark/vue.md +10 -1
  808. package/docs/zh/cli/init.md +1 -1
  809. package/docs/zh/configuration.md +6 -6
  810. package/docs/zh/custom_domains.md +11 -11
  811. package/docs/zh/dictionary/content_file.md +41 -0
  812. package/docs/zh/dictionary/markdown.md +36 -1
  813. package/docs/zh/interest_of_intlayer.md +0 -2
  814. package/docs/zh/intlayer_with_analog.md +1 -1
  815. package/docs/zh/intlayer_with_angular.md +1 -1
  816. package/docs/zh/intlayer_with_astro.md +1 -1
  817. package/docs/zh/intlayer_with_astro_lit.md +2 -2
  818. package/docs/zh/intlayer_with_astro_preact.md +3 -3
  819. package/docs/zh/intlayer_with_astro_react.md +2 -2
  820. package/docs/zh/intlayer_with_astro_solid.md +3 -3
  821. package/docs/zh/intlayer_with_astro_svelte.md +1 -1
  822. package/docs/zh/intlayer_with_astro_vanilla.md +1 -1
  823. package/docs/zh/intlayer_with_astro_vue.md +1 -1
  824. package/docs/zh/intlayer_with_nextjs_14.md +2 -2
  825. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  826. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  827. package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
  828. package/docs/zh/intlayer_with_nuxt.md +1 -1
  829. package/docs/zh/intlayer_with_react_native+expo.md +2 -2
  830. package/docs/zh/intlayer_with_react_router_v7.md +1 -1
  831. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +1 -1
  832. package/docs/zh/intlayer_with_storybook.md +7 -7
  833. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  834. package/docs/zh/intlayer_with_tanstack+solid.md +1 -1
  835. package/docs/zh/intlayer_with_tanstack.md +1 -1
  836. package/docs/zh/intlayer_with_vanilla.md +2 -2
  837. package/docs/zh/intlayer_with_vite+lit.md +2 -2
  838. package/docs/zh/intlayer_with_vite+preact.md +1 -1
  839. package/docs/zh/intlayer_with_vite+react.md +1 -1
  840. package/docs/zh/intlayer_with_vite+react_compiler.md +1 -1
  841. package/docs/zh/intlayer_with_vite+svelte.md +2 -2
  842. package/docs/zh/intlayer_with_vite+vanilla.md +4 -4
  843. package/docs/zh/intlayer_with_vite+vue.md +1 -1
  844. package/docs/zh/readme.md +13 -0
  845. package/docs/zh-TW/interest_of_intlayer.md +0 -2
  846. package/frequent_questions/ru/intlayerNode.md +2 -2
  847. package/frequent_questions/uk/intlayerNode.md +2 -2
  848. package/package.json +7 -7
  849. package/src/blog.ts +4 -1
  850. package/src/frequentQuestions.ts +4 -1
  851. package/src/legal.ts +4 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Лучшее решение i18n для Next.js в 2026 году - Отчет о бенчмарке
5
5
  description: Сравните библиотеки интернационализации (i18n) для Next.js, такие как next-intl, next-i18next и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Добавить сравнение звезд GitHub"
20
23
  - version: 8.7.5
21
24
  date: 2026-01-06
22
25
  changes: "Инициализация бенчмарка"
23
26
  ---
24
27
 
25
- # Библиотеки i18n для Next.js Отчет о бенчмарке 2026
28
+ # Библиотеки i18n для Next.js - Отчет о бенчмарке 2026
26
29
 
27
30
  Эта страница представляет собой отчет о бенчмарке i18n-решений для Next.js.
28
31
 
@@ -57,7 +60,7 @@ style="border:none;"
57
60
 
58
61
  Еще одним последствием использования библиотек i18n является замедление разработки. Превращение компонентов в мультиязычный контент на разных языках отнимает много времени.
59
62
 
60
- Поскольку проблема сложна, существует множество решений одни ориентированы на DX, другие на производительность или масштабируемость и так далее.
63
+ Поскольку проблема сложна, существует множество решений - одни ориентированы на DX, другие на производительность или масштабируемость и так далее.
61
64
 
62
65
  Intlayer пытается оптимизировать все эти аспекты.
63
66
 
@@ -85,17 +88,17 @@ Intlayer пытается оптимизировать все эти аспек
85
88
 
86
89
  **Динамическая загрузка**
87
90
 
88
- Даже если вы объявляете маршруты типа `[locale]/page.tsx`, с Webpack или Turbopack, и даже если определен `generateStaticParams`, сборщик не рассматривает `locale` как статическую константу. Это означает, что он может включить контент для всех языков в каждую страницу. Основной способ ограничить это загружать контент через динамический импорт (например, `import('./locales/${locale}.json')`).
91
+ Даже если вы объявляете маршруты типа `[locale]/page.tsx`, с Webpack или Turbopack, и даже если определен `generateStaticParams`, сборщик не рассматривает `locale` как статическую константу. Это означает, что он может включить контент для всех языков в каждую страницу. Основной способ ограничить это - загружать контент через динамический импорт (например, `import('./locales/${locale}.json')`).
89
92
 
90
93
  На этапе сборки Next.js создает один JS-бандл на локаль (например, `./locales_fr_12345.js`). Когда сайт отправляется клиенту и страница запускается, браузер выполняет дополнительный HTTP-запрос для необходимого JS-файла (например, `./locales_fr_12345.js`).
91
94
 
92
- > Другой способ решения той же проблемы использование `fetch()` для динамической загрузки JSON. Так работает `Tolgee`, когда JSON находится в `/public`, или `next-translate`, который полагается на `getStaticProps` для загрузки контента. Процесс тот же: браузер делает дополнительный HTTP-запрос для загрузки ресурса.
95
+ > Другой способ решения той же проблемы - использование `fetch()` для динамической загрузки JSON. Так работает `Tolgee`, когда JSON находится в `/public`, или `next-translate`, который полагается на `getStaticProps` для загрузки контента. Процесс тот же: браузер делает дополнительный HTTP-запрос для загрузки ресурса.
93
96
 
94
97
  **Разделение контента**
95
98
 
96
99
  Если вы используете синтаксис типа `const t = useTranslation()` + `t('my-object.my-sub-object.my-key')`, весь JSON обычно должен быть в бандле, чтобы библиотека могла его проанализировать и разрешить ключ. Большая часть этого контента попадает в сборку, даже если он не используется на странице.
97
100
 
98
- Чтобы смягчить это, некоторые библиотеки просят вас указывать для каждой страницы, какие пространства имен загружать например, `next-i18next`, `next-intl`, `lingui`, `next-translate`, `next-international`.
101
+ Чтобы смягчить это, некоторые библиотеки просят вас указывать для каждой страницы, какие пространства имен загружать - например, `next-i18next`, `next-intl`, `lingui`, `next-translate`, `next-international`.
99
102
 
100
103
  Напротив, `Paraglide` добавляет дополнительный шаг перед сборкой, чтобы превратить JSON в плоские символы, такие как `const en_my_var = () => 'my value'`. Теоретически это позволяет исключать неиспользуемый контент на странице. Как мы увидим, у этого метода все же есть свои компромиссы.
101
104
 
@@ -140,9 +143,9 @@ Intlayer пытается оптимизировать все эти аспек
140
143
 
141
144
  Я запускал одно и то же мультиязычное приложение в реальном браузере для каждого стека, а затем записывал, что на самом деле передавалось по сети и сколько времени это занимало. Размеры указаны **после обычного веб-сжатия**, так как это ближе к тому, что скачивают пользователи, чем количество исходного кода.
142
145
 
143
- - **Размер библиотеки интернационализации**: После сборки, tree-shaking и минимизации, размер i18n-библиотеки это размер провайдеров (например, `NextIntlClientProvider`) + код хуков (например, `useTranslations`) в пустом компоненте. Это не включает загрузку файлов перевода. Это ответ на вопрос, насколько "дорогая" библиотека сама по себе до добавления вашего контента.
146
+ - **Размер библиотеки интернационализации**: После сборки, tree-shaking и минимизации, размер i18n-библиотеки - это размер провайдеров (например, `NextIntlClientProvider`) + код хуков (например, `useTranslations`) в пустом компоненте. Это не включает загрузку файлов перевода. Это ответ на вопрос, насколько "дорогая" библиотека сама по себе до добавления вашего контента.
144
147
 
145
- - **JavaScript на страницу**: Для каждого маршрута бенчмарка сколько скриптов браузер загружает при посещении, усредненное по страницам в наборе (и по локалям, где отчет их объединяет). Тяжелые страницы это медленные страницы.
148
+ - **JavaScript на страницу**: Для каждого маршрута бенчмарка - сколько скриптов браузер загружает при посещении, усредненное по страницам в наборе (и по локалям, где отчет их объединяет). Тяжелые страницы - это медленные страницы.
146
149
 
147
150
  - **Утечка из других локалей**: Это контент той же страницы, но на другом языке, который ошибочно загружается на проверяемую страницу. Этого контента следует избегать (например, контент страницы `/fr/about` в бандле страницы `/en/about`).
148
151
 
@@ -150,19 +153,25 @@ Intlayer пытается оптимизировать все эти аспек
150
153
 
151
154
  - **Средний размер бандла компонента**: Общие элементы пользовательского интерфейса измеряются **по отдельности**, а не прячутся внутри одного гигантского числа приложения. Это показывает, не раздувает ли интернационализация обычные компоненты. Например, если ваш компонент перерендеривается, он будет загружать все эти данные из памяти. Привязка гигантского JSON-файла к любому компоненту подобна подключению большого хранилища неиспользуемых данных, которое замедлит работу ваших компонентов.
152
155
 
153
- - **Скорость переключения языка**: Я переключаю язык с помощью собственного элемента управления приложения и засекаю время, пока страница явно не переключится то, что заметит посетитель, а не лабораторный микро-шаг.
156
+ - **Скорость переключения языка**: Я переключаю язык с помощью собственного элемента управления приложения и засекаю время, пока страница явно не переключится - то, что заметит посетитель, а не лабораторный микро-шаг.
154
157
 
155
158
  - **Работа по рендерингу после смены языка**: Более узкое наблюдение: сколько усилий потребовалось интерфейсу для перерисовки на новом языке после начала переключения. Полезно, когда "ощущаемое" время и стоимость фреймворка расходятся.
156
159
 
157
160
  - **Время начальной загрузки страницы**: От перехода до того момента, когда браузер считает страницу полностью загруженной для протестированных сценариев. Хорошо для сравнения "холодных стартов".
158
161
 
159
- - **Время гидратации**: Когда приложение предоставляет такие данные сколько времени клиент тратит на превращение серверного HTML в нечто, на что можно нажать. Прочерк в таблицах означает, что данная реализация не предоставила надежных данных по гидратации в этом бенчмарке.
162
+ - **Время гидратации**: Когда приложение предоставляет такие данные - сколько времени клиент тратит на превращение серверного HTML в нечто, на что можно нажать. Прочерк в таблицах означает, что данная реализация не предоставила надежных данных по гидратации в этом бенчмарке.
163
+
164
+ ## Звезды на GitHub
165
+
166
+ Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
167
+
168
+ [![Star History Chart](https://api.star-history.com/chart?repos=i18next%2Fnext-i18next%2Camannn%2Fnext-intl%2Clingui%2Fjs-lingui%2Cvinissimus%2Fnext-translate%2Cinostudio%2Fnext-international%2Copral%2paraglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#i18next/next-i18next&amannn/next-intl&lingui/js-lingui&vinissimus/next-translate&inostudio/next-international&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
160
169
 
161
170
  ## Результаты в деталях
162
171
 
163
- ### 1 Решения, которых следует избегать
172
+ ### 1 - Решения, которых следует избегать
164
173
 
165
- Некоторых решений, таких как `gt-next` или `lingo.dev`, явно лучше избегать. Они сочетают в себе привязку к вендору с загрязнением вашей кодовой базы. Несмотря на многие часы попыток их внедрить, мне так и не удалось заставить их работать ни на TanStack Start, ни на Next.js.
174
+ Некоторых решений, таких как `gt-next` или `lingo.dev`, явно лучше избегать. Они сочетают в себе привязку к вендору с загрязнением вашей кодовой базы. Несмотря на многие часы попыток их внедрить, мне так и не удалось заставить их работать - ни на TanStack Start, ни на Next.js.
166
175
 
167
176
  Встреченные проблемы:
168
177
 
@@ -176,12 +185,12 @@ Intlayer пытается оптимизировать все эти аспек
176
185
 
177
186
  **(Lingo.dev)** (`@lingo.dev/compiler@0.4.0`):
178
187
 
179
- - Квота AI превышена, что полностью блокирует сборку вы не можете отправить приложение в продакшн без оплаты.
188
+ - Квота AI превышена, что полностью блокирует сборку - вы не можете отправить приложение в продакшн без оплаты.
180
189
  - Компилятор пропустил почти 40% переведенного контента. Мне пришлось переписать все вызовы `.map` в плоские блоки компонентов, чтобы это заработало.
181
190
  - Их CLI работает с ошибками и периодически сбрасывает конфигурационный файл без причины.
182
191
  - При сборке он полностью удалял сгенерированные JSON-файлы при добавлении нового контента. В результате несколько ключей могли стереть более 300 существующих ключей.
183
192
 
184
- ### 2 Экспериментальные решения
193
+ ### 2 - Экспериментальные решения
185
194
 
186
195
  **(Wuchale)** (`wuchale@0.22.11`):
187
196
 
@@ -193,9 +202,9 @@ Intlayer пытается оптимизировать все эти аспек
193
202
  Лично мне не нравится необходимость перегенерировать JS-файлы перед каждым пушем, что создает постоянный риск конфликтов слияния в PR. Инструмент также кажется более ориентированным на Vite, чем на Next.js.
194
203
  Наконец, по сравнению с другими решениями, Paraglide не использует хранилище (например, React context) для получения текущей локали для рендеринга контента. Для каждого обрабатываемого узла он запрашивает локаль из localStorage / куки и т.д. Это приводит к выполнению ненужной логики, которая влияет на реактивность компонентов.
195
204
 
196
- > Примечание по paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате показатель 'размер библиотеки' в отчете о бенчмарке практически равен 0. Генерация кода это хорошо, так как используемая функция будет включать только необходимую логику (все префиксы против отсутствия префиксов, куки против хранилища и т.д.). В сравнении с этим, Intlayer выполняет фильтрацию с помощью внедрения переменных окружения в сборку, чтобы заставить сборщик исключить контент в зависимости от логики. Благодаря этому paraglide и intlayer оказываются в 6-10 раз легче, чем i18next или next-intl.
205
+ > Примечание по paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате показатель 'размер библиотеки' в отчете о бенчмарке практически равен 0. Генерация кода - это хорошо, так как используемая функция будет включать только необходимую логику (все префиксы против отсутствия префиксов, куки против хранилища и т.д.). В сравнении с этим, Intlayer выполняет фильтрацию с помощью внедрения переменных окружения в сборку, чтобы заставить сборщик исключить контент в зависимости от логики. Благодаря этому paraglide и intlayer оказываются в 6-10 раз легче, чем i18next или next-intl.
197
206
 
198
- ### 3 Приемлемые решения
207
+ ### 3 - Приемлемые решения
199
208
 
200
209
  **(Tolgee)** (`@tolgee/react@7.0.0`):
201
210
 
@@ -203,7 +212,7 @@ Intlayer пытается оптимизировать все эти аспек
203
212
 
204
213
  **(Next Intl)** (`next-intl@4.9.1`):
205
214
 
206
- `next-intl` самый модный вариант, который чаще всего продвигают AI-агенты, но, на мой взгляд, ошибочно. Начать работу легко. На практике оптимизация для ограничения утечек сложна. Сочетание динамической загрузки + пространств имен + типов TypeScript сильно замедляет разработку. Пакет также довольно тяжелый (~13 КБ для `NextIntlClientProvider` + `useTranslations`, что более чем в 2 раза больше `next-intlayer`). **next-intl** раньше блокировал статический рендеринг страниц Next.js. Он предоставляет помощник под названием `setRequestLocale()`. Кажется, это частично решено для централизованных файлов типа `en.json` / `fr.json`, но статический рендеринг все равно ломается, когда контент разделен на пространства имен, такие как `en/shared.json` / `fr/shared.json` / `es/shared.json`.
215
+ `next-intl` - самый модный вариант, который чаще всего продвигают AI-агенты, но, на мой взгляд, ошибочно. Начать работу легко. На практике оптимизация для ограничения утечек сложна. Сочетание динамической загрузки + пространств имен + типов TypeScript сильно замедляет разработку. Пакет также довольно тяжелый (~13 КБ для `NextIntlClientProvider` + `useTranslations`, что более чем в 2 раза больше `next-intlayer`). **next-intl** раньше блокировал статический рендеринг страниц Next.js. Он предоставляет помощник под названием `setRequestLocale()`. Кажется, это частично решено для централизованных файлов типа `en.json` / `fr.json`, но статический рендеринг все равно ломается, когда контент разделен на пространства имен, такие как `en/shared.json` / `fr/shared.json` / `es/shared.json`.
207
216
 
208
217
  **(Next I18next)** (`next-i18next@16.0.5`):
209
218
 
@@ -219,11 +228,11 @@ Intlayer пытается оптимизировать все эти аспек
219
228
 
220
229
  `Lingui` часто хвалят. Лично мне рабочий процесс с `lingui extract` / `lingui compile` показался более сложным, чем у альтернатив, без явных преимуществ. Я также заметил непоследовательный синтаксис, который путает AI (например, `t()`, `t''`, `i18n.t()`, `<Trans>`).
221
230
 
222
- ### 4 Рекомендации
231
+ ### 4 - Рекомендации
223
232
 
224
233
  **(Next Translate)** (`next-translate@3.1.2`):
225
234
 
226
- `next-translate` моя основная рекомендация, если вам нравится API в стиле `t()`. Он элегантен благодаря `next-translate-plugin`, загружая пространства имен через `getStaticProps` с помощью загрузчика Webpack / Turbopack. Это также самый легкий вариант (~2.5 КБ). Что касается пространств имен, их определение для каждой страницы или маршрута в конфиге хорошо продумано и проще в обслуживании, чем основные альтернативы, такие как **next-intl** или **next-i18next**. В версии `3.1.2` я заметил, что статический рендеринг не работал; Next.js откатывался к динамическому рендерингу.
235
+ `next-translate` - моя основная рекомендация, если вам нравится API в стиле `t()`. Он элегантен благодаря `next-translate-plugin`, загружая пространства имен через `getStaticProps` с помощью загрузчика Webpack / Turbopack. Это также самый легкий вариант (~2.5 КБ). Что касается пространств имен, их определение для каждой страницы или маршрута в конфиге хорошо продумано и проще в обслуживании, чем основные альтернативы, такие как **next-intl** или **next-i18next**. В версии `3.1.2` я заметил, что статический рендеринг не работал; Next.js откатывался к динамическому рендерингу.
227
236
 
228
237
  **(Intlayer)** (`next-intlayer@8.7.12`):
229
238
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Лучшее i18n решение для Solid в 2026 году - Отчет о бенчмарке
5
5
  description: Сравните библиотеки интернационализации (i18n) для Solid, такие как solid-primitives, solid-i18next и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-solid-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Добавить сравнение звезд GitHub"
20
23
  - version: 8.7.12
21
24
  date: 2026-01-06
22
25
  changes: "Инициализация бенчмарка"
23
26
  ---
24
27
 
25
- # Библиотеки i18n для Solid Отчет о бенчмарке 2026
28
+ # Библиотеки i18n для Solid - Отчет о бенчмарке 2026
26
29
 
27
30
  Эта страница представляет собой отчет о бенчмарке i18n-решений для Solid.
28
31
 
@@ -54,7 +57,7 @@ history:
54
57
 
55
58
  На практике в наименее оптимизированных реализациях интернационализированная страница может оказаться в несколько раз тяжелее версии без i18n.
56
59
 
57
- Другой аспект это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
60
+ Другой аспект - это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
58
61
 
59
62
  ## TL;DR
60
63
 
@@ -98,7 +101,7 @@ history:
98
101
  - `solid-i18next` (v17.0.2)
99
102
  - `@inlang/paraglide-js` (v2.17.0)
100
103
 
101
- Фреймворк `Solid` с мультиязычным приложением из **10 страниц** и **10 языков**.
104
+ Фреймворк - `Solid` с мультиязычным приложением из **10 страниц** и **10 языков**.
102
105
 
103
106
  Мы сравнили **четыре стратегии загрузки**:
104
107
 
@@ -114,13 +117,19 @@ history:
114
117
  - **Локальная статическая (Scoped static)**: Позволяет организовать код (логическое разделение) без сложных дополнительных сетевых запросов.
115
118
  - **Локальная динамическая (Scoped dynamic)**: Лучший подход для _разделения кода_ и производительности. Минимизирует использование памяти, загружая только то, что нужно для текущего представления и активной локали.
116
119
 
120
+ ## Звезды на GitHub
121
+
122
+ Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
123
+
124
+ [![Star History Chart](https://api.star-history.com/chart?repos=solidjs-community%2Fsolid-primitives%2Cmbarzda%2Fsolid-i18next%2Copral%2paraglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer)
125
+
117
126
  ## Результаты в деталях
118
127
 
119
- ### 1 Решения, которых следует избегать
128
+ ### 1 - Решения, которых следует избегать
120
129
 
121
130
  > В экосистеме Solid нет однозначных решений, которых следует избегать.
122
131
 
123
- ### 2 Приемлемые решения
132
+ ### 2 - Приемлемые решения
124
133
 
125
134
  **(solid-i18next)** (`solid-i18next@17.0.2`):
126
135
 
@@ -141,7 +150,7 @@ Solid primitive чрезвычайно легкий и эффективный.
141
150
  Лично мне не нравится необходимость регенерировать JS-файлы перед каждым пушем, что создает постоянный риск конфликтов при слиянии в PR.
142
151
  Наконец, по сравнению с другими решениями, Paraglide не использует стор (например, Solid signal) для получения текущей локали для рендеринга. Для каждого обработанного узла он запрашивает локаль из localStorage / куки и т.д. Это приводит к выполнению ненужной логики, что влияет на реактивность компонентов.
143
152
 
144
- ### 3 Рекомендации
153
+ ### 3 - Рекомендации
145
154
 
146
155
  **(Intlayer)** (`solid-intlayer@8.7.12`):
147
156
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Лучшее i18n решение для Svelte в 2026 году - Отчет о бенчмарке
5
5
  description: Сравните библиотеки интернационализации (i18n) для Svelte, такие как svelte-i18n, Paraglide и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-svelte-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Добавить сравнение звезд GitHub"
20
23
  - version: 8.7.12
21
24
  date: 2026-01-06
22
25
  changes: "Инициализация бенчмарка"
23
26
  ---
24
27
 
25
- # Библиотеки i18n для Svelte Отчет о бенчмарке 2026
28
+ # Библиотеки i18n для Svelte - Отчет о бенчмарке 2026
26
29
 
27
30
  Эта страница представляет собой отчет о бенчмарке i18n-решений для Svelte.
28
31
 
@@ -55,7 +58,7 @@ style="border:none;"
55
58
 
56
59
  На практике в наименее оптимизированных реализациях интернационализированная страница может оказаться в несколько раз тяжелее версии без i18n.
57
60
 
58
- Другой аспект это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
61
+ Другой аспект - это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
59
62
 
60
63
  ## TL;DR
61
64
 
@@ -97,7 +100,7 @@ style="border:none;"
97
100
  - `svelte-i18n` (v4.0.1)
98
101
  - `@inlang/paraglide-js` (v2.17.0)
99
102
 
100
- Фреймворк `Svelte` с мультиязычным приложением из **10 страниц** и **10 языков**.
103
+ Фреймворк - `Svelte` с мультиязычным приложением из **10 страниц** и **10 языков**.
101
104
 
102
105
  Мы сравнили **четыре стратегии загрузки**:
103
106
 
@@ -113,13 +116,19 @@ style="border:none;"
113
116
  - **Локальная статическая (Scoped static)**: Позволяет организовать код (логическое разделение) без сложных дополнительных сетевых запросов.
114
117
  - **Локальная динамическая (Scoped dynamic)**: Лучший подход для _разделения кода_ и производительности. Минимизирует использование памяти, загружая только то, что нужно для текущего представления и активной локали.
115
118
 
119
+ ## Звезды на GitHub
120
+
121
+ Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
122
+
123
+ [![Star History Chart](https://api.star-history.com/chart?repos=kaisermann%2Fsvelte-i18n%2Copral%2paraglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&aymericzip/intlayer)
124
+
116
125
  ## Результаты в деталях
117
126
 
118
- ### 1 Решения, которых следует избегать
127
+ ### 1 - Решения, которых следует избегать
119
128
 
120
129
  > В экосистеме Svelte нет однозначных решений, которых следует избегать.
121
130
 
122
- ### 2 Приемлемые решения
131
+ ### 2 - Приемлемые решения
123
132
 
124
133
  **(Paraglide)** (`@inlang/paraglide-js@2.17.0`):
125
134
 
@@ -129,13 +138,13 @@ style="border:none;"
129
138
  Лично мне не нравится необходимость регенерировать JS-файлы перед каждым пушем, что создает постоянный риск конфликтов при слиянии в PR. Инструмент также кажется более ориентированным на Vite, чем на Next.js.
130
139
  Наконец, по сравнению с другими решениями, Paraglide не использует стор (например, Svelte store) для получения поточної локали для рендеринга. Для каждого обработанного узла он запрашивает локаль из localStorage / куки и т.д. Это приводит к выполнению ненужной логики, что влияет на реактивность компонентов.
131
140
 
132
- > Примечание о paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате чего метрика 'размер библиотеки' в отчете бенчмарка практически равна 0. Генерация кода это хорошо, потому что используемая функция будет включать только необходимую логику (полный префикс против отсутствия префикса, куки против хранилища и т. д.). Для сравнения, Intlayer выполняет эту фильтрацию с помощью внедрения переменных окружения во время сборки, чтобы заставить бандлер выполнять tree-shaking контента в зависимости от логики. Благодаря этому paraglide и intlayer в итоге оказываются в 6-10 раз легче, чем i18next или next-intl.
141
+ > Примечание о paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате чего метрика 'размер библиотеки' в отчете бенчмарка практически равна 0. Генерация кода - это хорошо, потому что используемая функция будет включать только необходимую логику (полный префикс против отсутствия префикса, куки против хранилища и т. д.). Для сравнения, Intlayer выполняет эту фильтрацию с помощью внедрения переменных окружения во время сборки, чтобы заставить бандлер выполнять tree-shaking контента в зависимости от логики. Благодаря этому paraglide и intlayer в итоге оказываются в 6-10 раз легче, чем i18next или next-intl.
133
142
 
134
143
  **(svelte-i18n)** (`svelte-i18n@3.4.0`):
135
144
 
136
145
  Это решение отвечает всем потребностям i18n в Svelte-проекте. Но, как и в случае с i18next или другими основными решениями i18n, оно немного тяжеловато (~15.9 КБ, что примерно в 7 раз больше `svelte-intlayer`).
137
146
 
138
- ### 3 Рекомендации
147
+ ### 3 - Рекомендации
139
148
 
140
149
  **(Intlayer)** (`svelte-intlayer@8.7.12`):
141
150
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Лучшее решение i18n для TanStack Start в 2026 году - Отчет о бенчмарке
5
5
  description: Сравните библиотеки интернационализации для TanStack Start, такие как react-i18next, use-intl и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-tanstack-start-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Добавить сравнение звезд GitHub"
20
23
  - version: 8.7.5
21
24
  date: 2026-01-06
22
25
  changes: "Инициализация бенчмарка"
23
26
  ---
24
27
 
25
- # Библиотеки i18n для TanStack Start Отчет о бенчмарке 2026
28
+ # Библиотеки i18n для TanStack Start - Отчет о бенчмарке 2026
26
29
 
27
30
  Эта страница представляет собой отчет о бенчмарке i18n-решений для TanStack Start.
28
31
 
@@ -55,7 +58,7 @@ history:
55
58
 
56
59
  На практике в наименее оптимизированных реализациях интернационализированная страница может оказаться в несколько раз тяжелее версии без i18n.
57
60
 
58
- Другой аспект это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
61
+ Другой аспект - это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
59
62
 
60
63
  ## TL;DR
61
64
 
@@ -105,7 +108,7 @@ history:
105
108
  - `gt-react` (vlatest)
106
109
  - `lingo.dev` (v0.133.9)
107
110
 
108
- Фреймворк `TanStack Start` с мультиязычным приложением из **10 страниц** и **10 языков**.
111
+ Фреймворк - `TanStack Start` с мультиязычным приложением из **10 страниц** и **10 языков**.
109
112
 
110
113
  Мы сравнили **четыре стратегии загрузки**:
111
114
 
@@ -121,9 +124,15 @@ history:
121
124
  - **Локальная статическая (Scoped static)**: Позволяет организовать код (логическое разделение) без сложных дополнительных сетевых запросов.
122
125
  - **Локальная динамическая (Scoped dynamic)**: Лучший подход для _разделения кода_ и производительности. Минимизирует использование памяти, загружая только то, что нужно для текущего представления и активной локали.
123
126
 
127
+ ## Звезды на GitHub
128
+
129
+ Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
130
+
131
+ [![Star History Chart](https://api.star-history.com/chart?repos=formatjs%2Fformatjs%2Ci18next%2Freact-i18next%2Clingui%2Fjs-lingui%2Camannn%2Fnext-intl%2Copral%2paraglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&lingui/js-lingui&amannn/next-intl&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
132
+
124
133
  ## Результаты в деталях
125
134
 
126
- ### 1 Решения, которых следует избегать
135
+ ### 1 - Решения, которых следует избегать
127
136
 
128
137
  Некоторых решений, таких как `gt-react` или `lingo.dev`, явно стоит остерегаться. Они сочетают в себе привязку к вендору с загрязнением вашей кодовой базы. Хуже того: несмотря на многие часы попыток внедрить их, мне так и не удалось заставить их работать должным образом на TanStack Start (аналогично Next.js с `gt-next`).
129
138
 
@@ -145,19 +154,19 @@ history:
145
154
  - При сборке он полностью удалял сгенерированные JSON-файлы, когда добавлялся новый контент. В результате всего несколько ключей могли стереть сотни существующих.
146
155
  - Я столкнулся с проблемами реактивности в этой библиотеке на TanStack Start: при смене локали мне приходилось принудительно перерендеривать провайдер.
147
156
 
148
- ### 2 Экспериментальные решения
157
+ ### 2 - Экспериментальные решения
149
158
 
150
159
  **(Wuchale)** (`wuchale@0.22.11`):
151
160
 
152
161
  Идея `Wuchale` интересна, но это пока не жизнеспособное решение. Я столкнулся с проблемами реактивности в этой библиотеке и был вынужден принудительно перерендеривать провайдер, чтобы приложение заработало на TanStack Start. Документация также довольно неясная, что затрудняет начало работы.
153
162
 
154
- ### 3 Приемлемые решения
163
+ ### 3 - Приемлемые решения
155
164
 
156
165
  **(Paraglide)** (`@inlang/paraglide-js@2.15.1`):
157
166
 
158
167
  `Paraglide` предлагает инновационный, хорошо продуманный подход. Тем не менее, в этом бенчмарке обещанный tree-shaking не сработал ни для моей реализации на Next.js, ни для TanStack Start. Процесс работы и DX также сложнее, чем у других вариантов. Лично я не в восторге от необходимости перегенерировать JS-файлы перед каждым пушем, что создает постоянный риск конфликтов при слиянии в PR.
159
168
 
160
- > Примечание о paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате чего метрика 'размер библиотеки' в отчете бенчмарка практически равна 0. Генерация кода это хорошо, потому что используемая функция будет включать только необходимую логику (полный префикс против отсутствия префикса, куки против хранилища и т. д.). Для сравнения, Intlayer выполняет эту фильтрацию с помощью внедрения переменных окружения в сборку, чтобы заставить бандлер выполнять tree-shaking контента в зависимости от логики. Благодаря этому paraglide и intlayer в итоге оказываются в 6-10 раз легче, чем i18next или next-intl.
169
+ > Примечание о paraglide: решение внедряет код в вашу кодовую базу для импорта, в результате чего метрика 'размер библиотеки' в отчете бенчмарка практически равна 0. Генерация кода - это хорошо, потому что используемая функция будет включать только необходимую логику (полный префикс против отсутствия префикса, куки против хранилища и т. д.). Для сравнения, Intlayer выполняет эту фильтрацию с помощью внедрения переменных окружения в сборку, чтобы заставить бандлер выполнять tree-shaking контента в зависимости от логики. Благодаря этому paraglide и intlayer в итоге оказываются в 6-10 раз легче, чем i18next или next-intl.
161
170
 
162
171
  **(Tolgee)** (`@tolgee/react@7.0.0`):
163
172
 
@@ -167,7 +176,7 @@ history:
167
176
 
168
177
  **(use-intl)** (`use-intl@4.9.1`):
169
178
 
170
- `use-intl` самый модный представитель "intl" в экосистеме React (из того же семейства, что и `next-intl`), который часто продвигают AI-агенты, но, на мой взгляд, ошибочно в контексте производительности. Начать работу довольно просто. На практике процесс оптимизации и ограничения утечек довольно сложен. Аналогично, сочетание динамической загрузки + пространств имен + типов TypeScript сильно замедляет разработку.
179
+ `use-intl` - самый модный представитель "intl" в экосистеме React (из того же семейства, что и `next-intl`), который часто продвигают AI-агенты, но, на мой взгляд, ошибочно в контексте производительности. Начать работу довольно просто. На практике процесс оптимизации и ограничения утечек довольно сложен. Аналогично, сочетание динамической загрузки + пространств имен + типов TypeScript сильно замедляет разработку.
171
180
 
172
181
  На TanStack Start вы избегаете ловушек, специфичных для Next.js (`setRequestLocale`, статический рендеринг), но основная проблема та же: без строгой дисциплины бандл быстро переполняется сообщениями, а обслуживание пространств имен для каждого маршрута становится мучительным.
173
182
 
@@ -185,9 +194,9 @@ history:
185
194
 
186
195
  **(react-intl)** (`react-intl@10.1.1`):
187
196
 
188
- `react-intl` это производительная реализация от команды Format.js. DX остается многословным: `const intl = useIntl()` + `intl.formatMessage({ id: "xx.xx" })` добавляет сложности, лишней работы для JavaScript и привязывает глобальный экземппляр i18n ко многим узлам в дереве React.
197
+ `react-intl` - это производительная реализация от команды Format.js. DX остается многословным: `const intl = useIntl()` + `intl.formatMessage({ id: "xx.xx" })` добавляет сложности, лишней работы для JavaScript и привязывает глобальный экземппляр i18n ко многим узлам в дереве React.
189
198
 
190
- ### 4 Рекомендации
199
+ ### 4 - Рекомендации
191
200
 
192
201
  В этом бенчмарке TanStack Start нет прямого эквивалента `next-translate` (плагин Next.js + `getStaticProps`). Для команд, которые действительно хотят API `t()` со зрелой экосистемой, `react-i18next` и `use-intl` остаются "разумным" выбором, но будьте готовы потратить много времени на оптимизацию, чтобы избежать утечек.
193
202
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Лучшее i18n решение для Vue в 2026 году - Отчет о бенчмарке
5
5
  description: Сравните библиотеки интернационализации (i18n) для Vue, такие как vue-i18n, fluent-vue и Intlayer. Подробный отчет о производительности, размере бандла, утечках и реактивности.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-vue-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Добавить сравнение звезд GitHub"
20
23
  - version: 8.7.12
21
24
  date: 2026-01-06
22
25
  changes: "Инициализация бенчмарка"
23
26
  ---
24
27
 
25
- # Библиотеки i18n для Vue Отчет о бенчмарке 2026
28
+ # Библиотеки i18n для Vue - Отчет о бенчмарке 2026
26
29
 
27
30
  Эта страница представляет собой отчет о бенчмарке i18n-решений для Vue.
28
31
 
@@ -55,7 +58,7 @@ style="border:none;"
55
58
 
56
59
  На практике в наименее оптимизированных реализациях интернационализированная страница может оказаться в несколько раз тяжелее версии без i18n.
57
60
 
58
- Другой аспект это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
61
+ Другой аспект - это опыт разработчика: то, как вы объявляете контент, типы, организацию пространств имен, динамическую загрузку и реактивность при смене локали.
59
62
 
60
63
  ## TL;DR
61
64
 
@@ -97,7 +100,7 @@ style="border:none;"
97
100
  - `vue-i18n` (v11.4.0)
98
101
  - `fluent-vue` (v3.8.2)
99
102
 
100
- Фреймворк `Vue` с мультиязычным приложением из **10 страниц** и **10 языков**.
103
+ Фреймворк - `Vue` с мультиязычным приложением из **10 страниц** и **10 языков**.
101
104
 
102
105
  Мы сравнили **четыре стратегии загрузки**:
103
106
 
@@ -117,9 +120,9 @@ style="border:none;"
117
120
 
118
121
  Я запускал одно и то же мультиязычное приложение в реальном браузере для каждого стека, а затем фиксировал, что на самом деле передавалось по сети и сколько времени это занимало. Размеры указаны **после обычного веб-сжатия**, так как это ближе к тому, что люди реально скачивают.
119
122
 
120
- - **Размер библиотеки интернационализации**: После сборки, tree-shaking и минификации, размер библиотеки i18n это размер кода провайдеров + композиблов (composables) в пустом компоненте. Это не включает загрузку файлов перевода. Это показывает, насколько "дорогая" библиотека еще до появления вашего контента.
123
+ - **Размер библиотеки интернационализации**: После сборки, tree-shaking и минификации, размер библиотеки i18n - это размер кода провайдеров + композиблов (composables) в пустом компоненте. Это не включает загрузку файлов перевода. Это показывает, насколько "дорогая" библиотека еще до появления вашего контента.
121
124
 
122
- - **JavaScript на страницу**: Для каждого тестового маршрута сколько скриптов загружает браузер во время посещения, усреднено по страницам теста (и по локалям). Тяжелые страницы это медленные страницы.
125
+ - **JavaScript на страницу**: Для каждого тестового маршрута - сколько скриптов загружает браузер во время посещения, усреднено по страницам теста (и по локалям). Тяжелые страницы - это медленные страницы.
123
126
 
124
127
  - **Утечка из других локалей (Leakage)**: Это контент той же страницы, но на другом языке, который по ошибке загружается на проверяемую страницу. Этот контент является лишним и его следует избегать (например, контент страницы `/fr/about` в бандле страницы `/en/about`).
125
128
 
@@ -127,7 +130,7 @@ style="border:none;"
127
130
 
128
131
  - **Средний размер бандла компонента**: Отдельные UI-элементы измеряются **по одному**, а не прячутся внутри одного гигантского общего показателя приложения. Это показывает, "раздувает" ли интернационализация обычные компоненты. Например, если ваш компонент перерендерится, он будет загружать все эти данные из памяти. Привязка гигантского JSON к любому компоненту похожа на подключение большого хранилища неиспользуемых данных, что замедляет производительность ваших компонентов.
129
132
 
130
- - **Скорость реакции на переключение языка**: Я переключаю язык через собственный интерфейс приложения и замеряю время до момента, когда страница явно обновилась то, что заметит посетитель.
133
+ - **Скорость реакции на переключение языка**: Я переключаю язык через собственный интерфейс приложения и замеряю время до момента, когда страница явно обновилась - то, что заметит посетитель.
131
134
 
132
135
  - **Работа рендеринга после смены языка**: Более узкий показатель: сколько усилий затратил интерфейс на перерисовку для нового языка после начала переключения. Полезно, когда "ощутимое" время и стоимость работы фреймворка различаются.
133
136
 
@@ -135,13 +138,19 @@ style="border:none;"
135
138
 
136
139
  - **Время гидратации (Hydration)**: Время, которое клиент тратит на превращение HTML от сервера в интерактивный интерфейс. Прочерк в таблицах означает, что данная реализация не предоставила надежных данных о гидратации в этом тесте.
137
140
 
141
+ ## Звезды на GitHub
142
+
143
+ Звезды на GitHub - это сильный индикатор популярности проекта, доверия сообщества и долгосрочной актуальности. Хотя они не являются прямым показателем технического качества, они отражают, сколько разработчиков считают проект полезным, следят за его прогрессом и, вероятно, будут его использовать. Для оценки ценности проекта звезды помогают сравнивать популярность альтернатив и дают представление о росте экосистемы.
144
+
145
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&aymericzip/intlayer)
146
+
138
147
  ## Результаты в деталях
139
148
 
140
- ### 1 Решения, которых следует избегать
149
+ ### 1 - Решения, которых следует избегать
141
150
 
142
151
  > В экосистеме Vue нет однозначных решений, которых следует избегать.
143
152
 
144
- ### 2 Приемлемые решения
153
+ ### 2 - Приемлемые решения
145
154
 
146
155
  **(vue-i18n)** (`vue-i18n@11.4.0`):
147
156
 
@@ -153,7 +162,7 @@ style="border:none;"
153
162
 
154
163
  - **fluent-vue** предлагает попытку инновации через формат .ftl. Организация сообщений отличная, с ней легче начать работу. Но на практике отсутствие типобезопасности повышает риск ошибок и может быстро стать трудозатратным при отладке. Более того, это решение загружает сообщения с помощью плагина vite, который принудительно загружает весь контент на всех языках в каждую страницу. Кроме того, это чрезвычайно тяжелое решение (~92.7 КБ, что примерно в 34 раза больше `vue-intlayer`).
155
164
 
156
- ### 3 Рекомендации
165
+ ### 3 - Рекомендации
157
166
 
158
167
  **(Intlayer)** (`vue-intlayer@8.7.12`):
159
168
 
@@ -35,7 +35,7 @@ history:
35
35
 
36
36
  ## Сканирование бандла
37
37
 
38
- Анализ бандла это первый шаг к выявлению "тяжелых" JSON-файлов и возможностей разделения кода. Эти инструменты генерируют визуальную древовидную карту (treemap) скомпилированного кода вашего приложения, позволяя вам точно увидеть, какие библиотеки занимают больше всего места.
38
+ Анализ бандла - это первый шаг к выявлению "тяжелых" JSON-файлов и возможностей разделения кода. Эти инструменты генерируют визуальную древовидную карту (treemap) скомпилированного кода вашего приложения, позволяя вам точно увидеть, какие библиотеки занимают больше всего места.
39
39
 
40
40
  <Tabs>
41
41
  <Tab value="vite">