@intlayer/docs 9.5.2 → 9.5.4-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 (1052) hide show
  1. package/README.md +9 -9
  2. package/blog/ar/history_of_i18n.md +54 -54
  3. package/blog/ar/how_to_pick_react_i18n_library.md +548 -0
  4. package/blog/ar/how_to_pick_solid_i18n_library.md +438 -0
  5. package/blog/ar/how_to_pick_svelte_i18n_library.md +454 -0
  6. package/blog/ar/how_to_pick_vue_i18n_library.md +442 -0
  7. package/blog/ar/i18next_vs_intlayer-i18next.md +327 -0
  8. package/blog/ar/i18next_vs_intlayer.md +445 -0
  9. package/blog/ar/is_i18next_outdated.md +6 -2
  10. package/blog/ar/is_next-intl_outdated.md +6 -2
  11. package/blog/ar/is_vue-i18n_outdated.md +8 -2
  12. package/blog/ar/lingui_vs_intlayer-lingui.md +304 -0
  13. package/blog/ar/lingui_vs_intlayer.md +381 -0
  14. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  15. package/blog/ar/next-intl_vs_intlayer-next-intl.md +309 -0
  16. package/blog/ar/next-intl_vs_intlayer.md +397 -0
  17. package/blog/ar/per-component_vs_centralized_i18n.md +9 -4
  18. package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  19. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +286 -0
  20. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +0 -0
  21. package/blog/de/history_of_i18n.md +54 -54
  22. package/blog/de/how_to_pick_react_i18n_library.md +548 -0
  23. package/blog/de/how_to_pick_solid_i18n_library.md +451 -0
  24. package/blog/de/how_to_pick_svelte_i18n_library.md +454 -0
  25. package/blog/de/how_to_pick_vue_i18n_library.md +448 -0
  26. package/blog/de/i18next_vs_intlayer-i18next.md +327 -0
  27. package/blog/de/i18next_vs_intlayer.md +445 -0
  28. package/blog/de/is_i18next_outdated.md +6 -2
  29. package/blog/de/is_next-intl_outdated.md +6 -2
  30. package/blog/de/is_vue-i18n_outdated.md +8 -2
  31. package/blog/de/lingui_vs_intlayer-lingui.md +304 -0
  32. package/blog/de/lingui_vs_intlayer.md +381 -0
  33. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  34. package/blog/de/next-intl_vs_intlayer-next-intl.md +309 -0
  35. package/blog/de/next-intl_vs_intlayer.md +415 -0
  36. package/blog/de/per-component_vs_centralized_i18n.md +9 -4
  37. package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  38. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  39. package/blog/de/vue-i18n_vs_intlayer_benchmark.md +355 -0
  40. package/blog/en/history_of_i18n.md +54 -54
  41. package/blog/en/how_to_pick_react_i18n_library.md +542 -0
  42. package/blog/en/how_to_pick_solid_i18n_library.md +438 -0
  43. package/blog/en/how_to_pick_svelte_i18n_library.md +448 -0
  44. package/blog/en/how_to_pick_vue_i18n_library.md +442 -0
  45. package/blog/en/i18next_vs_intlayer-i18next.md +327 -0
  46. package/blog/en/i18next_vs_intlayer.md +445 -0
  47. package/blog/en/is_i18next_outdated.md +6 -2
  48. package/blog/en/is_next-intl_outdated.md +6 -2
  49. package/blog/en/is_vue-i18n_outdated.md +8 -2
  50. package/blog/en/lingui_vs_intlayer-lingui.md +304 -0
  51. package/blog/en/lingui_vs_intlayer.md +381 -0
  52. package/blog/en/list_i18n_technologies/frameworks/react-router.md +2 -3
  53. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  54. package/blog/en/next-intl_vs_intlayer-next-intl.md +309 -0
  55. package/blog/en/next-intl_vs_intlayer.md +415 -0
  56. package/blog/en/per-component_vs_centralized_i18n.md +9 -4
  57. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  58. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  59. package/blog/en/vue-i18n_vs_intlayer.md +1 -1
  60. package/blog/en/vue-i18n_vs_intlayer_benchmark.md +361 -0
  61. package/blog/en-GB/history_of_i18n.md +54 -54
  62. package/blog/en-GB/how_to_pick_react_i18n_library.md +542 -0
  63. package/blog/en-GB/how_to_pick_solid_i18n_library.md +438 -0
  64. package/blog/en-GB/how_to_pick_svelte_i18n_library.md +448 -0
  65. package/blog/en-GB/how_to_pick_vue_i18n_library.md +448 -0
  66. package/blog/en-GB/i18next_vs_intlayer-i18next.md +327 -0
  67. package/blog/en-GB/i18next_vs_intlayer.md +445 -0
  68. package/blog/en-GB/is_i18next_outdated.md +6 -2
  69. package/blog/en-GB/is_next-intl_outdated.md +6 -2
  70. package/blog/en-GB/is_vue-i18n_outdated.md +8 -2
  71. package/blog/en-GB/lingui_vs_intlayer-lingui.md +304 -0
  72. package/blog/en-GB/lingui_vs_intlayer.md +381 -0
  73. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  74. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +309 -0
  75. package/blog/en-GB/next-intl_vs_intlayer.md +415 -0
  76. package/blog/en-GB/per-component_vs_centralized_i18n.md +9 -4
  77. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  78. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  79. package/blog/en-GB/vue-i18n_vs_intlayer.md +1 -1
  80. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +245 -0
  81. package/blog/es/history_of_i18n.md +54 -54
  82. package/blog/es/how_to_pick_react_i18n_library.md +542 -0
  83. package/blog/es/how_to_pick_solid_i18n_library.md +446 -0
  84. package/blog/es/how_to_pick_svelte_i18n_library.md +448 -0
  85. package/blog/es/how_to_pick_vue_i18n_library.md +442 -0
  86. package/blog/es/i18next_vs_intlayer-i18next.md +327 -0
  87. package/blog/es/i18next_vs_intlayer.md +445 -0
  88. package/blog/es/is_i18next_outdated.md +6 -2
  89. package/blog/es/is_next-intl_outdated.md +6 -2
  90. package/blog/es/is_vue-i18n_outdated.md +8 -2
  91. package/blog/es/lingui_vs_intlayer-lingui.md +304 -0
  92. package/blog/es/lingui_vs_intlayer.md +381 -0
  93. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  94. package/blog/es/next-intl_vs_intlayer-next-intl.md +309 -0
  95. package/blog/es/next-intl_vs_intlayer.md +417 -0
  96. package/blog/es/per-component_vs_centralized_i18n.md +9 -4
  97. package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  98. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  99. package/blog/es/vue-i18n_vs_intlayer_benchmark.md +363 -0
  100. package/blog/fr/history_of_i18n.md +54 -54
  101. package/blog/fr/how_to_pick_react_i18n_library.md +542 -0
  102. package/blog/fr/how_to_pick_solid_i18n_library.md +438 -0
  103. package/blog/fr/how_to_pick_svelte_i18n_library.md +448 -0
  104. package/blog/fr/how_to_pick_vue_i18n_library.md +442 -0
  105. package/blog/fr/i18next_vs_intlayer-i18next.md +327 -0
  106. package/blog/fr/i18next_vs_intlayer.md +445 -0
  107. package/blog/fr/is_i18next_outdated.md +6 -2
  108. package/blog/fr/is_next-intl_outdated.md +6 -2
  109. package/blog/fr/is_vue-i18n_outdated.md +8 -2
  110. package/blog/fr/lingui_vs_intlayer-lingui.md +304 -0
  111. package/blog/fr/lingui_vs_intlayer.md +381 -0
  112. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  113. package/blog/fr/next-intl_vs_intlayer-next-intl.md +309 -0
  114. package/blog/fr/next-intl_vs_intlayer.md +417 -0
  115. package/blog/fr/per-component_vs_centralized_i18n.md +9 -4
  116. package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  117. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +287 -0
  118. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +39 -0
  119. package/blog/hi/history_of_i18n.md +54 -54
  120. package/blog/hi/how_to_pick_react_i18n_library.md +548 -0
  121. package/blog/hi/how_to_pick_solid_i18n_library.md +451 -0
  122. package/blog/hi/how_to_pick_svelte_i18n_library.md +448 -0
  123. package/blog/hi/how_to_pick_vue_i18n_library.md +442 -0
  124. package/blog/hi/i18next_vs_intlayer-i18next.md +327 -0
  125. package/blog/hi/i18next_vs_intlayer.md +445 -0
  126. package/blog/hi/is_i18next_outdated.md +6 -2
  127. package/blog/hi/is_next-intl_outdated.md +6 -2
  128. package/blog/hi/is_vue-i18n_outdated.md +8 -2
  129. package/blog/hi/lingui_vs_intlayer-lingui.md +304 -0
  130. package/blog/hi/lingui_vs_intlayer.md +381 -0
  131. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +8 -4
  132. package/blog/hi/next-intl_vs_intlayer-next-intl.md +309 -0
  133. package/blog/hi/next-intl_vs_intlayer.md +397 -0
  134. package/blog/hi/per-component_vs_centralized_i18n.md +9 -4
  135. package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  136. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  137. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +0 -0
  138. package/blog/id/history_of_i18n.md +54 -54
  139. package/blog/id/how_to_pick_react_i18n_library.md +548 -0
  140. package/blog/id/how_to_pick_solid_i18n_library.md +451 -0
  141. package/blog/id/how_to_pick_svelte_i18n_library.md +454 -0
  142. package/blog/id/how_to_pick_vue_i18n_library.md +442 -0
  143. package/blog/id/i18next_vs_intlayer-i18next.md +327 -0
  144. package/blog/id/i18next_vs_intlayer.md +445 -0
  145. package/blog/id/is_i18next_outdated.md +6 -2
  146. package/blog/id/is_next-intl_outdated.md +6 -2
  147. package/blog/id/is_vue-i18n_outdated.md +8 -2
  148. package/blog/id/lingui_vs_intlayer-lingui.md +304 -0
  149. package/blog/id/lingui_vs_intlayer.md +381 -0
  150. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  151. package/blog/id/next-intl_vs_intlayer-next-intl.md +310 -0
  152. package/blog/id/next-intl_vs_intlayer.md +397 -0
  153. package/blog/id/per-component_vs_centralized_i18n.md +9 -4
  154. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  155. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +36 -0
  156. package/blog/id/vue-i18n_vs_intlayer.md +1 -1
  157. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +41 -0
  158. package/blog/it/history_of_i18n.md +54 -54
  159. package/blog/it/how_to_pick_react_i18n_library.md +549 -0
  160. package/blog/it/how_to_pick_solid_i18n_library.md +451 -0
  161. package/blog/it/how_to_pick_svelte_i18n_library.md +455 -0
  162. package/blog/it/how_to_pick_vue_i18n_library.md +449 -0
  163. package/blog/it/i18next_vs_intlayer-i18next.md +327 -0
  164. package/blog/it/i18next_vs_intlayer.md +445 -0
  165. package/blog/it/is_i18next_outdated.md +6 -2
  166. package/blog/it/is_next-intl_outdated.md +6 -2
  167. package/blog/it/is_vue-i18n_outdated.md +8 -2
  168. package/blog/it/lingui_vs_intlayer-lingui.md +304 -0
  169. package/blog/it/lingui_vs_intlayer.md +381 -0
  170. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  171. package/blog/it/next-intl_vs_intlayer-next-intl.md +309 -0
  172. package/blog/it/next-intl_vs_intlayer.md +418 -0
  173. package/blog/it/per-component_vs_centralized_i18n.md +9 -4
  174. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  175. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  176. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +34 -0
  177. package/blog/ja/history_of_i18n.md +54 -54
  178. package/blog/ja/how_to_pick_react_i18n_library.md +542 -0
  179. package/blog/ja/how_to_pick_solid_i18n_library.md +451 -0
  180. package/blog/ja/how_to_pick_svelte_i18n_library.md +457 -0
  181. package/blog/ja/how_to_pick_vue_i18n_library.md +442 -0
  182. package/blog/ja/i18next_vs_intlayer-i18next.md +327 -0
  183. package/blog/ja/i18next_vs_intlayer.md +447 -0
  184. package/blog/ja/is_i18next_outdated.md +6 -2
  185. package/blog/ja/is_next-intl_outdated.md +6 -2
  186. package/blog/ja/is_vue-i18n_outdated.md +8 -2
  187. package/blog/ja/lingui_vs_intlayer-lingui.md +304 -0
  188. package/blog/ja/lingui_vs_intlayer.md +381 -0
  189. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  190. package/blog/ja/next-intl_vs_intlayer-next-intl.md +310 -0
  191. package/blog/ja/next-intl_vs_intlayer.md +422 -0
  192. package/blog/ja/per-component_vs_centralized_i18n.md +9 -4
  193. package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  194. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  195. package/blog/ja/vue-i18n_vs_intlayer.md +1 -1
  196. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +0 -0
  197. package/blog/ko/history_of_i18n.md +54 -54
  198. package/blog/ko/how_to_pick_react_i18n_library.md +548 -0
  199. package/blog/ko/how_to_pick_solid_i18n_library.md +451 -0
  200. package/blog/ko/how_to_pick_svelte_i18n_library.md +454 -0
  201. package/blog/ko/how_to_pick_vue_i18n_library.md +448 -0
  202. package/blog/ko/i18next_vs_intlayer-i18next.md +327 -0
  203. package/blog/ko/i18next_vs_intlayer.md +447 -0
  204. package/blog/ko/is_i18next_outdated.md +6 -2
  205. package/blog/ko/is_next-intl_outdated.md +6 -2
  206. package/blog/ko/is_vue-i18n_outdated.md +8 -2
  207. package/blog/ko/lingui_vs_intlayer-lingui.md +304 -0
  208. package/blog/ko/lingui_vs_intlayer.md +381 -0
  209. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  210. package/blog/ko/next-intl_vs_intlayer-next-intl.md +309 -0
  211. package/blog/ko/next-intl_vs_intlayer.md +397 -0
  212. package/blog/ko/per-component_vs_centralized_i18n.md +9 -4
  213. package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  214. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  215. package/blog/ko/vue-i18n_vs_intlayer.md +1 -1
  216. package/blog/ko/vue-i18n_vs_intlayer_benchmark.md +366 -0
  217. package/blog/pl/history_of_i18n.md +54 -54
  218. package/blog/pl/how_to_pick_react_i18n_library.md +549 -0
  219. package/blog/pl/how_to_pick_solid_i18n_library.md +438 -0
  220. package/blog/pl/how_to_pick_svelte_i18n_library.md +460 -0
  221. package/blog/pl/how_to_pick_vue_i18n_library.md +442 -0
  222. package/blog/pl/i18next_vs_intlayer-i18next.md +327 -0
  223. package/blog/pl/i18next_vs_intlayer.md +445 -0
  224. package/blog/pl/is_i18next_outdated.md +6 -2
  225. package/blog/pl/is_next-intl_outdated.md +6 -2
  226. package/blog/pl/is_vue-i18n_outdated.md +8 -2
  227. package/blog/pl/lingui_vs_intlayer-lingui.md +304 -0
  228. package/blog/pl/lingui_vs_intlayer.md +381 -0
  229. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  230. package/blog/pl/next-intl_vs_intlayer-next-intl.md +309 -0
  231. package/blog/pl/next-intl_vs_intlayer.md +397 -0
  232. package/blog/pl/per-component_vs_centralized_i18n.md +9 -4
  233. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  234. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +289 -0
  235. package/blog/pl/vue-i18n_vs_intlayer.md +1 -1
  236. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +0 -0
  237. package/blog/pt/history_of_i18n.md +54 -54
  238. package/blog/pt/how_to_pick_react_i18n_library.md +549 -0
  239. package/blog/pt/how_to_pick_solid_i18n_library.md +451 -0
  240. package/blog/pt/how_to_pick_svelte_i18n_library.md +454 -0
  241. package/blog/pt/how_to_pick_vue_i18n_library.md +448 -0
  242. package/blog/pt/i18next_vs_intlayer-i18next.md +327 -0
  243. package/blog/pt/i18next_vs_intlayer.md +445 -0
  244. package/blog/pt/is_i18next_outdated.md +6 -2
  245. package/blog/pt/is_next-intl_outdated.md +6 -2
  246. package/blog/pt/is_vue-i18n_outdated.md +8 -2
  247. package/blog/pt/lingui_vs_intlayer-lingui.md +304 -0
  248. package/blog/pt/lingui_vs_intlayer.md +381 -0
  249. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  250. package/blog/pt/next-intl_vs_intlayer-next-intl.md +309 -0
  251. package/blog/pt/next-intl_vs_intlayer.md +411 -0
  252. package/blog/pt/per-component_vs_centralized_i18n.md +9 -4
  253. package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  254. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  255. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +0 -0
  256. package/blog/ru/history_of_i18n.md +54 -54
  257. package/blog/ru/how_to_pick_react_i18n_library.md +553 -0
  258. package/blog/ru/how_to_pick_solid_i18n_library.md +451 -0
  259. package/blog/ru/how_to_pick_svelte_i18n_library.md +459 -0
  260. package/blog/ru/how_to_pick_vue_i18n_library.md +453 -0
  261. package/blog/ru/i18next_vs_intlayer-i18next.md +327 -0
  262. package/blog/ru/i18next_vs_intlayer.md +445 -0
  263. package/blog/ru/is_i18next_outdated.md +6 -2
  264. package/blog/ru/is_next-intl_outdated.md +6 -2
  265. package/blog/ru/is_vue-i18n_outdated.md +8 -2
  266. package/blog/ru/lingui_vs_intlayer-lingui.md +304 -0
  267. package/blog/ru/lingui_vs_intlayer.md +381 -0
  268. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +9 -5
  269. package/blog/ru/next-intl_vs_intlayer-next-intl.md +309 -0
  270. package/blog/ru/next-intl_vs_intlayer.md +417 -0
  271. package/blog/ru/per-component_vs_centralized_i18n.md +9 -4
  272. package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +5 -1
  273. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  274. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +54 -0
  275. package/blog/tr/history_of_i18n.md +54 -54
  276. package/blog/tr/how_to_pick_react_i18n_library.md +548 -0
  277. package/blog/tr/how_to_pick_solid_i18n_library.md +451 -0
  278. package/blog/tr/how_to_pick_svelte_i18n_library.md +454 -0
  279. package/blog/tr/how_to_pick_vue_i18n_library.md +448 -0
  280. package/blog/tr/i18next_vs_intlayer-i18next.md +327 -0
  281. package/blog/tr/i18next_vs_intlayer.md +445 -0
  282. package/blog/tr/is_i18next_outdated.md +6 -2
  283. package/blog/tr/is_next-intl_outdated.md +6 -2
  284. package/blog/tr/is_vue-i18n_outdated.md +8 -2
  285. package/blog/tr/lingui_vs_intlayer-lingui.md +304 -0
  286. package/blog/tr/lingui_vs_intlayer.md +381 -0
  287. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  288. package/blog/tr/next-intl_vs_intlayer-next-intl.md +309 -0
  289. package/blog/tr/next-intl_vs_intlayer.md +397 -0
  290. package/blog/tr/per-component_vs_centralized_i18n.md +9 -4
  291. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  292. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  293. package/blog/tr/vue-i18n_vs_intlayer.md +1 -1
  294. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +0 -0
  295. package/blog/uk/history_of_i18n.md +54 -54
  296. package/blog/uk/how_to_pick_react_i18n_library.md +542 -0
  297. package/blog/uk/how_to_pick_solid_i18n_library.md +451 -0
  298. package/blog/uk/how_to_pick_svelte_i18n_library.md +448 -0
  299. package/blog/uk/how_to_pick_vue_i18n_library.md +443 -0
  300. package/blog/uk/i18next_vs_intlayer-i18next.md +327 -0
  301. package/blog/uk/i18next_vs_intlayer.md +445 -0
  302. package/blog/uk/is_i18next_outdated.md +6 -2
  303. package/blog/uk/is_next-intl_outdated.md +6 -2
  304. package/blog/uk/is_vue-i18n_outdated.md +8 -2
  305. package/blog/uk/lingui_vs_intlayer-lingui.md +304 -0
  306. package/blog/uk/lingui_vs_intlayer.md +381 -0
  307. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  308. package/blog/uk/next-intl_vs_intlayer-next-intl.md +309 -0
  309. package/blog/uk/next-intl_vs_intlayer.md +397 -0
  310. package/blog/uk/per-component_vs_centralized_i18n.md +9 -4
  311. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  312. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +270 -0
  313. package/blog/uk/vue-i18n_vs_intlayer.md +1 -1
  314. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +0 -0
  315. package/blog/vi/history_of_i18n.md +54 -54
  316. package/blog/vi/how_to_pick_react_i18n_library.md +548 -0
  317. package/blog/vi/how_to_pick_solid_i18n_library.md +438 -0
  318. package/blog/vi/how_to_pick_svelte_i18n_library.md +448 -0
  319. package/blog/vi/how_to_pick_vue_i18n_library.md +442 -0
  320. package/blog/vi/i18next_vs_intlayer-i18next.md +327 -0
  321. package/blog/vi/i18next_vs_intlayer.md +445 -0
  322. package/blog/vi/is_i18next_outdated.md +6 -2
  323. package/blog/vi/is_next-intl_outdated.md +6 -2
  324. package/blog/vi/is_vue-i18n_outdated.md +8 -2
  325. package/blog/vi/lingui_vs_intlayer-lingui.md +304 -0
  326. package/blog/vi/lingui_vs_intlayer.md +381 -0
  327. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  328. package/blog/vi/next-intl_vs_intlayer-next-intl.md +309 -0
  329. package/blog/vi/next-intl_vs_intlayer.md +397 -0
  330. package/blog/vi/per-component_vs_centralized_i18n.md +9 -4
  331. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  332. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  333. package/blog/vi/vue-i18n_vs_intlayer.md +1 -1
  334. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +0 -0
  335. package/blog/zh/history_of_i18n.md +54 -54
  336. package/blog/zh/how_to_pick_react_i18n_library.md +548 -0
  337. package/blog/zh/how_to_pick_solid_i18n_library.md +451 -0
  338. package/blog/zh/how_to_pick_svelte_i18n_library.md +454 -0
  339. package/blog/zh/how_to_pick_vue_i18n_library.md +448 -0
  340. package/blog/zh/i18next_vs_intlayer-i18next.md +327 -0
  341. package/blog/zh/i18next_vs_intlayer.md +445 -0
  342. package/blog/zh/is_i18next_outdated.md +6 -2
  343. package/blog/zh/is_next-intl_outdated.md +6 -2
  344. package/blog/zh/is_vue-i18n_outdated.md +8 -2
  345. package/blog/zh/lingui_vs_intlayer-lingui.md +304 -0
  346. package/blog/zh/lingui_vs_intlayer.md +381 -0
  347. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +10 -6
  348. package/blog/zh/next-intl_vs_intlayer-next-intl.md +309 -0
  349. package/blog/zh/next-intl_vs_intlayer.md +422 -0
  350. package/blog/zh/per-component_vs_centralized_i18n.md +9 -4
  351. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +6 -2
  352. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +288 -0
  353. package/blog/zh/vue-i18n_vs_intlayer.md +1 -1
  354. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +30 -0
  355. package/dist/cjs/generated/blog.entry.cjs +240 -0
  356. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  357. package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
  358. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  359. package/dist/cjs/index.cjs +1 -1
  360. package/dist/esm/generated/blog.entry.mjs +240 -0
  361. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  362. package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
  363. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  364. package/dist/esm/index.mjs +1 -1
  365. package/dist/types/generated/blog.entry.d.ts +12 -0
  366. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  367. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  368. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  369. package/docs/ar/benchmark/nextjs.md +1 -1
  370. package/docs/ar/benchmark/solid.md +1 -1
  371. package/docs/ar/benchmark/svelte.md +1 -1
  372. package/docs/ar/benchmark/tanstack.md +1 -1
  373. package/docs/ar/benchmark/vue.md +1 -1
  374. package/docs/ar/bundle_optimization.md +5 -1
  375. package/docs/ar/how_works_intlayer.md +2 -2
  376. package/docs/ar/interest_of_intlayer.md +7 -7
  377. package/docs/ar/intlayer_CMS.md +1 -1
  378. package/docs/ar/intlayer_with_adonisjs.md +1 -1
  379. package/docs/ar/intlayer_with_analog.md +1 -1
  380. package/docs/ar/intlayer_with_angular_19.md +1 -1
  381. package/docs/ar/intlayer_with_angular_21.md +1 -1
  382. package/docs/ar/intlayer_with_astro.md +1 -1
  383. package/docs/ar/intlayer_with_astro_lit.md +1 -1
  384. package/docs/ar/intlayer_with_astro_preact.md +1 -1
  385. package/docs/ar/intlayer_with_astro_react.md +1 -1
  386. package/docs/ar/intlayer_with_astro_solid.md +1 -1
  387. package/docs/ar/intlayer_with_astro_svelte.md +1 -1
  388. package/docs/ar/intlayer_with_astro_vanilla.md +1 -1
  389. package/docs/ar/intlayer_with_astro_vue.md +1 -1
  390. package/docs/ar/intlayer_with_create_react_app.md +1 -1
  391. package/docs/ar/intlayer_with_express.md +1 -1
  392. package/docs/ar/intlayer_with_hono.md +1 -1
  393. package/docs/ar/intlayer_with_nestjs.md +1 -1
  394. package/docs/ar/intlayer_with_nextjs_14.md +1 -1
  395. package/docs/ar/intlayer_with_nextjs_15.md +1 -1
  396. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  397. package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
  398. package/docs/ar/intlayer_with_react_router_v7.md +1 -1
  399. package/docs/ar/intlayer_with_vite+preact.md +1 -1
  400. package/docs/ar/intlayer_with_vite+react.md +1 -1
  401. package/docs/ar/intlayer_with_vite+vue.md +1 -1
  402. package/docs/ar/introduction.md +0 -1
  403. package/docs/ar/readme.md +8 -8
  404. package/docs/bn/bundle_optimization.md +5 -1
  405. package/docs/bn/interest_of_intlayer.md +22 -22
  406. package/docs/bn/intlayer_CMS.md +1 -1
  407. package/docs/bn/intlayer_with_angular_21.md +1 -1
  408. package/docs/bn/intlayer_with_hono.md +1 -1
  409. package/docs/bn/introduction.md +0 -1
  410. package/docs/cs/bundle_optimization.md +5 -1
  411. package/docs/cs/interest_of_intlayer.md +7 -7
  412. package/docs/cs/intlayer_with_angular_21.md +1 -1
  413. package/docs/cs/intlayer_with_hono.md +1 -1
  414. package/docs/cs/introduction.md +0 -1
  415. package/docs/de/benchmark/nextjs.md +1 -1
  416. package/docs/de/benchmark/solid.md +1 -1
  417. package/docs/de/benchmark/svelte.md +1 -1
  418. package/docs/de/benchmark/tanstack.md +1 -1
  419. package/docs/de/benchmark/vue.md +1 -1
  420. package/docs/de/bundle_optimization.md +5 -1
  421. package/docs/de/how_works_intlayer.md +2 -2
  422. package/docs/de/interest_of_intlayer.md +7 -7
  423. package/docs/de/intlayer_CMS.md +1 -1
  424. package/docs/de/intlayer_with_adonisjs.md +1 -1
  425. package/docs/de/intlayer_with_analog.md +1 -1
  426. package/docs/de/intlayer_with_angular_19.md +1 -1
  427. package/docs/de/intlayer_with_angular_21.md +1 -1
  428. package/docs/de/intlayer_with_astro.md +1 -1
  429. package/docs/de/intlayer_with_astro_lit.md +1 -1
  430. package/docs/de/intlayer_with_astro_preact.md +1 -1
  431. package/docs/de/intlayer_with_astro_react.md +1 -1
  432. package/docs/de/intlayer_with_astro_solid.md +1 -1
  433. package/docs/de/intlayer_with_astro_svelte.md +1 -1
  434. package/docs/de/intlayer_with_astro_vanilla.md +1 -1
  435. package/docs/de/intlayer_with_astro_vue.md +1 -1
  436. package/docs/de/intlayer_with_create_react_app.md +1 -1
  437. package/docs/de/intlayer_with_express.md +1 -1
  438. package/docs/de/intlayer_with_hono.md +1 -1
  439. package/docs/de/intlayer_with_nestjs.md +1 -1
  440. package/docs/de/intlayer_with_nextjs_14.md +1 -1
  441. package/docs/de/intlayer_with_nextjs_15.md +1 -1
  442. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  443. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  444. package/docs/de/intlayer_with_vite+preact.md +1 -1
  445. package/docs/de/intlayer_with_vite+react.md +1 -1
  446. package/docs/de/intlayer_with_vite+vue.md +1 -1
  447. package/docs/de/introduction.md +0 -1
  448. package/docs/de/readme.md +8 -8
  449. package/docs/en/benchmark/nextjs.md +1 -1
  450. package/docs/en/benchmark/solid.md +1 -1
  451. package/docs/en/benchmark/svelte.md +1 -1
  452. package/docs/en/benchmark/tanstack.md +1 -1
  453. package/docs/en/benchmark/vue.md +1 -1
  454. package/docs/en/bundle_optimization.md +5 -1
  455. package/docs/en/how_works_intlayer.md +2 -2
  456. package/docs/en/interest_of_intlayer.md +7 -7
  457. package/docs/en/intlayer_CMS.md +1 -1
  458. package/docs/en/intlayer_with_adonisjs.md +1 -1
  459. package/docs/en/intlayer_with_analog.md +1 -1
  460. package/docs/en/intlayer_with_angular_19.md +1 -1
  461. package/docs/en/intlayer_with_angular_21.md +1 -1
  462. package/docs/en/intlayer_with_astro.md +1 -1
  463. package/docs/en/intlayer_with_astro_lit.md +1 -1
  464. package/docs/en/intlayer_with_astro_preact.md +1 -1
  465. package/docs/en/intlayer_with_astro_react.md +1 -1
  466. package/docs/en/intlayer_with_astro_solid.md +1 -1
  467. package/docs/en/intlayer_with_astro_svelte.md +1 -1
  468. package/docs/en/intlayer_with_astro_vanilla.md +1 -1
  469. package/docs/en/intlayer_with_astro_vue.md +1 -1
  470. package/docs/en/intlayer_with_create_react_app.md +1 -1
  471. package/docs/en/intlayer_with_express.md +1 -1
  472. package/docs/en/intlayer_with_hono.md +1 -1
  473. package/docs/en/intlayer_with_nestjs.md +1 -1
  474. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  475. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  476. package/docs/en/intlayer_with_nextjs_16.md +1 -1
  477. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  478. package/docs/en/intlayer_with_vite+preact.md +1 -1
  479. package/docs/en/intlayer_with_vite+react.md +1 -1
  480. package/docs/en/intlayer_with_vite+vue.md +1 -1
  481. package/docs/en/introduction.md +0 -1
  482. package/docs/en/readme.md +8 -8
  483. package/docs/en-GB/benchmark/nextjs.md +1 -1
  484. package/docs/en-GB/benchmark/solid.md +1 -1
  485. package/docs/en-GB/benchmark/svelte.md +1 -1
  486. package/docs/en-GB/benchmark/tanstack.md +1 -1
  487. package/docs/en-GB/benchmark/vue.md +1 -1
  488. package/docs/en-GB/bundle_optimization.md +5 -1
  489. package/docs/en-GB/how_works_intlayer.md +2 -2
  490. package/docs/en-GB/interest_of_intlayer.md +7 -7
  491. package/docs/en-GB/intlayer_CMS.md +1 -1
  492. package/docs/en-GB/intlayer_with_adonisjs.md +1 -1
  493. package/docs/en-GB/intlayer_with_analog.md +1 -1
  494. package/docs/en-GB/intlayer_with_angular_19.md +1 -1
  495. package/docs/en-GB/intlayer_with_angular_21.md +1 -1
  496. package/docs/en-GB/intlayer_with_astro.md +1 -1
  497. package/docs/en-GB/intlayer_with_astro_lit.md +1 -1
  498. package/docs/en-GB/intlayer_with_astro_preact.md +1 -1
  499. package/docs/en-GB/intlayer_with_astro_react.md +1 -1
  500. package/docs/en-GB/intlayer_with_astro_solid.md +1 -1
  501. package/docs/en-GB/intlayer_with_astro_svelte.md +1 -1
  502. package/docs/en-GB/intlayer_with_astro_vanilla.md +1 -1
  503. package/docs/en-GB/intlayer_with_astro_vue.md +1 -1
  504. package/docs/en-GB/intlayer_with_create_react_app.md +1 -1
  505. package/docs/en-GB/intlayer_with_express.md +1 -1
  506. package/docs/en-GB/intlayer_with_hono.md +1 -1
  507. package/docs/en-GB/intlayer_with_nestjs.md +1 -1
  508. package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
  509. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
  510. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  511. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  512. package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
  513. package/docs/en-GB/intlayer_with_vite+react.md +1 -1
  514. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  515. package/docs/en-GB/introduction.md +0 -1
  516. package/docs/en-GB/readme.md +8 -8
  517. package/docs/es/benchmark/nextjs.md +1 -1
  518. package/docs/es/benchmark/solid.md +1 -1
  519. package/docs/es/benchmark/svelte.md +1 -1
  520. package/docs/es/benchmark/tanstack.md +1 -1
  521. package/docs/es/benchmark/vue.md +1 -1
  522. package/docs/es/bundle_optimization.md +5 -1
  523. package/docs/es/how_works_intlayer.md +2 -2
  524. package/docs/es/interest_of_intlayer.md +7 -7
  525. package/docs/es/intlayer_CMS.md +1 -1
  526. package/docs/es/intlayer_with_adonisjs.md +1 -1
  527. package/docs/es/intlayer_with_analog.md +1 -1
  528. package/docs/es/intlayer_with_angular_19.md +1 -1
  529. package/docs/es/intlayer_with_angular_21.md +1 -1
  530. package/docs/es/intlayer_with_astro.md +1 -1
  531. package/docs/es/intlayer_with_astro_lit.md +1 -1
  532. package/docs/es/intlayer_with_astro_preact.md +1 -1
  533. package/docs/es/intlayer_with_astro_react.md +1 -1
  534. package/docs/es/intlayer_with_astro_solid.md +1 -1
  535. package/docs/es/intlayer_with_astro_svelte.md +1 -1
  536. package/docs/es/intlayer_with_astro_vanilla.md +1 -1
  537. package/docs/es/intlayer_with_astro_vue.md +1 -1
  538. package/docs/es/intlayer_with_create_react_app.md +1 -1
  539. package/docs/es/intlayer_with_express.md +1 -1
  540. package/docs/es/intlayer_with_hono.md +1 -1
  541. package/docs/es/intlayer_with_nestjs.md +1 -1
  542. package/docs/es/intlayer_with_nextjs_14.md +1 -1
  543. package/docs/es/intlayer_with_nextjs_15.md +1 -1
  544. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  545. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  546. package/docs/es/intlayer_with_vite+preact.md +1 -1
  547. package/docs/es/intlayer_with_vite+react.md +1 -1
  548. package/docs/es/intlayer_with_vite+vue.md +1 -1
  549. package/docs/es/introduction.md +0 -1
  550. package/docs/es/readme.md +8 -8
  551. package/docs/fr/benchmark/nextjs.md +1 -1
  552. package/docs/fr/benchmark/solid.md +1 -1
  553. package/docs/fr/benchmark/svelte.md +1 -1
  554. package/docs/fr/benchmark/tanstack.md +1 -1
  555. package/docs/fr/benchmark/vue.md +1 -1
  556. package/docs/fr/bundle_optimization.md +5 -1
  557. package/docs/fr/how_works_intlayer.md +2 -2
  558. package/docs/fr/interest_of_intlayer.md +7 -7
  559. package/docs/fr/intlayer_CMS.md +1 -1
  560. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  561. package/docs/fr/intlayer_with_analog.md +1 -1
  562. package/docs/fr/intlayer_with_angular_19.md +1 -1
  563. package/docs/fr/intlayer_with_angular_21.md +1 -1
  564. package/docs/fr/intlayer_with_astro.md +1 -1
  565. package/docs/fr/intlayer_with_astro_lit.md +1 -1
  566. package/docs/fr/intlayer_with_astro_preact.md +1 -1
  567. package/docs/fr/intlayer_with_astro_react.md +1 -1
  568. package/docs/fr/intlayer_with_astro_solid.md +1 -1
  569. package/docs/fr/intlayer_with_astro_svelte.md +1 -1
  570. package/docs/fr/intlayer_with_astro_vanilla.md +1 -1
  571. package/docs/fr/intlayer_with_astro_vue.md +1 -1
  572. package/docs/fr/intlayer_with_create_react_app.md +1 -1
  573. package/docs/fr/intlayer_with_express.md +1 -1
  574. package/docs/fr/intlayer_with_hono.md +1 -1
  575. package/docs/fr/intlayer_with_nestjs.md +1 -1
  576. package/docs/fr/intlayer_with_nextjs_14.md +1 -1
  577. package/docs/fr/intlayer_with_nextjs_15.md +1 -1
  578. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  579. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  580. package/docs/fr/intlayer_with_react_router_v7.md +2 -2
  581. package/docs/fr/intlayer_with_vite+preact.md +1 -1
  582. package/docs/fr/intlayer_with_vite+react.md +1 -1
  583. package/docs/fr/intlayer_with_vite+vue.md +1 -1
  584. package/docs/fr/introduction.md +0 -1
  585. package/docs/fr/readme.md +8 -8
  586. package/docs/hi/benchmark/nextjs.md +1 -1
  587. package/docs/hi/benchmark/solid.md +1 -1
  588. package/docs/hi/benchmark/svelte.md +1 -1
  589. package/docs/hi/benchmark/tanstack.md +1 -1
  590. package/docs/hi/benchmark/vue.md +1 -1
  591. package/docs/hi/bundle_optimization.md +5 -1
  592. package/docs/hi/how_works_intlayer.md +2 -2
  593. package/docs/hi/interest_of_intlayer.md +7 -7
  594. package/docs/hi/intlayer_CMS.md +1 -1
  595. package/docs/hi/intlayer_with_adonisjs.md +1 -1
  596. package/docs/hi/intlayer_with_analog.md +1 -1
  597. package/docs/hi/intlayer_with_angular_19.md +1 -1
  598. package/docs/hi/intlayer_with_angular_21.md +1 -1
  599. package/docs/hi/intlayer_with_astro.md +1 -1
  600. package/docs/hi/intlayer_with_astro_lit.md +1 -1
  601. package/docs/hi/intlayer_with_astro_preact.md +1 -1
  602. package/docs/hi/intlayer_with_astro_react.md +1 -1
  603. package/docs/hi/intlayer_with_astro_solid.md +1 -1
  604. package/docs/hi/intlayer_with_astro_svelte.md +1 -1
  605. package/docs/hi/intlayer_with_astro_vanilla.md +1 -1
  606. package/docs/hi/intlayer_with_astro_vue.md +1 -1
  607. package/docs/hi/intlayer_with_create_react_app.md +1 -1
  608. package/docs/hi/intlayer_with_express.md +1 -1
  609. package/docs/hi/intlayer_with_hono.md +1 -1
  610. package/docs/hi/intlayer_with_nestjs.md +1 -1
  611. package/docs/hi/intlayer_with_nextjs_14.md +1 -1
  612. package/docs/hi/intlayer_with_nextjs_15.md +1 -1
  613. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  614. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  615. package/docs/hi/intlayer_with_react_router_v7.md +1 -1
  616. package/docs/hi/intlayer_with_vite+preact.md +1 -1
  617. package/docs/hi/intlayer_with_vite+react.md +1 -1
  618. package/docs/hi/intlayer_with_vite+vue.md +1 -1
  619. package/docs/hi/introduction.md +0 -1
  620. package/docs/hi/readme.md +8 -8
  621. package/docs/id/benchmark/nextjs.md +1 -1
  622. package/docs/id/benchmark/solid.md +1 -1
  623. package/docs/id/benchmark/svelte.md +1 -1
  624. package/docs/id/benchmark/tanstack.md +1 -1
  625. package/docs/id/benchmark/vue.md +1 -1
  626. package/docs/id/bundle_optimization.md +5 -1
  627. package/docs/id/how_works_intlayer.md +2 -2
  628. package/docs/id/interest_of_intlayer.md +7 -7
  629. package/docs/id/intlayer_CMS.md +1 -1
  630. package/docs/id/intlayer_with_adonisjs.md +1 -1
  631. package/docs/id/intlayer_with_analog.md +1 -1
  632. package/docs/id/intlayer_with_angular_19.md +1 -1
  633. package/docs/id/intlayer_with_angular_21.md +1 -1
  634. package/docs/id/intlayer_with_astro.md +1 -1
  635. package/docs/id/intlayer_with_astro_lit.md +1 -1
  636. package/docs/id/intlayer_with_astro_preact.md +1 -1
  637. package/docs/id/intlayer_with_astro_react.md +1 -1
  638. package/docs/id/intlayer_with_astro_solid.md +1 -1
  639. package/docs/id/intlayer_with_astro_svelte.md +1 -1
  640. package/docs/id/intlayer_with_astro_vanilla.md +1 -1
  641. package/docs/id/intlayer_with_astro_vue.md +1 -1
  642. package/docs/id/intlayer_with_create_react_app.md +1 -1
  643. package/docs/id/intlayer_with_express.md +1 -1
  644. package/docs/id/intlayer_with_hono.md +1 -1
  645. package/docs/id/intlayer_with_nestjs.md +1 -1
  646. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  647. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  648. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  649. package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
  650. package/docs/id/intlayer_with_react_router_v7.md +1 -1
  651. package/docs/id/intlayer_with_vite+preact.md +1 -1
  652. package/docs/id/intlayer_with_vite+react.md +1 -1
  653. package/docs/id/intlayer_with_vite+vue.md +1 -1
  654. package/docs/id/introduction.md +0 -1
  655. package/docs/id/readme.md +8 -8
  656. package/docs/it/benchmark/nextjs.md +1 -1
  657. package/docs/it/benchmark/solid.md +1 -1
  658. package/docs/it/benchmark/svelte.md +1 -1
  659. package/docs/it/benchmark/tanstack.md +1 -1
  660. package/docs/it/benchmark/vue.md +1 -1
  661. package/docs/it/bundle_optimization.md +5 -1
  662. package/docs/it/how_works_intlayer.md +2 -2
  663. package/docs/it/interest_of_intlayer.md +7 -7
  664. package/docs/it/intlayer_CMS.md +1 -1
  665. package/docs/it/intlayer_with_adonisjs.md +1 -1
  666. package/docs/it/intlayer_with_analog.md +1 -1
  667. package/docs/it/intlayer_with_angular_19.md +1 -1
  668. package/docs/it/intlayer_with_angular_21.md +1 -1
  669. package/docs/it/intlayer_with_astro.md +1 -1
  670. package/docs/it/intlayer_with_astro_lit.md +1 -1
  671. package/docs/it/intlayer_with_astro_preact.md +1 -1
  672. package/docs/it/intlayer_with_astro_react.md +1 -1
  673. package/docs/it/intlayer_with_astro_solid.md +1 -1
  674. package/docs/it/intlayer_with_astro_svelte.md +1 -1
  675. package/docs/it/intlayer_with_astro_vanilla.md +1 -1
  676. package/docs/it/intlayer_with_astro_vue.md +1 -1
  677. package/docs/it/intlayer_with_create_react_app.md +1 -1
  678. package/docs/it/intlayer_with_express.md +1 -1
  679. package/docs/it/intlayer_with_hono.md +1 -1
  680. package/docs/it/intlayer_with_nestjs.md +1 -1
  681. package/docs/it/intlayer_with_nextjs_14.md +1 -1
  682. package/docs/it/intlayer_with_nextjs_15.md +1 -1
  683. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  684. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  685. package/docs/it/intlayer_with_react_router_v7.md +2 -2
  686. package/docs/it/intlayer_with_vite+preact.md +1 -1
  687. package/docs/it/intlayer_with_vite+react.md +1 -1
  688. package/docs/it/intlayer_with_vite+vue.md +1 -1
  689. package/docs/it/introduction.md +0 -1
  690. package/docs/it/readme.md +8 -8
  691. package/docs/ja/benchmark/nextjs.md +1 -1
  692. package/docs/ja/benchmark/solid.md +1 -1
  693. package/docs/ja/benchmark/svelte.md +1 -1
  694. package/docs/ja/benchmark/tanstack.md +1 -1
  695. package/docs/ja/benchmark/vue.md +1 -1
  696. package/docs/ja/bundle_optimization.md +5 -1
  697. package/docs/ja/how_works_intlayer.md +2 -2
  698. package/docs/ja/interest_of_intlayer.md +7 -7
  699. package/docs/ja/intlayer_CMS.md +1 -1
  700. package/docs/ja/intlayer_with_adonisjs.md +1 -1
  701. package/docs/ja/intlayer_with_analog.md +1 -1
  702. package/docs/ja/intlayer_with_angular_19.md +1 -1
  703. package/docs/ja/intlayer_with_angular_21.md +1 -1
  704. package/docs/ja/intlayer_with_astro.md +1 -1
  705. package/docs/ja/intlayer_with_astro_lit.md +1 -1
  706. package/docs/ja/intlayer_with_astro_preact.md +1 -1
  707. package/docs/ja/intlayer_with_astro_react.md +1 -1
  708. package/docs/ja/intlayer_with_astro_solid.md +1 -1
  709. package/docs/ja/intlayer_with_astro_svelte.md +1 -1
  710. package/docs/ja/intlayer_with_astro_vanilla.md +1 -1
  711. package/docs/ja/intlayer_with_astro_vue.md +1 -1
  712. package/docs/ja/intlayer_with_create_react_app.md +1 -1
  713. package/docs/ja/intlayer_with_express.md +1 -1
  714. package/docs/ja/intlayer_with_hono.md +1 -1
  715. package/docs/ja/intlayer_with_nestjs.md +1 -1
  716. package/docs/ja/intlayer_with_nextjs_14.md +1 -1
  717. package/docs/ja/intlayer_with_nextjs_15.md +1 -1
  718. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  719. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  720. package/docs/ja/intlayer_with_vite+preact.md +1 -1
  721. package/docs/ja/intlayer_with_vite+react.md +1 -1
  722. package/docs/ja/intlayer_with_vite+vue.md +1 -1
  723. package/docs/ja/introduction.md +0 -1
  724. package/docs/ja/readme.md +8 -8
  725. package/docs/ko/benchmark/nextjs.md +1 -1
  726. package/docs/ko/benchmark/solid.md +1 -1
  727. package/docs/ko/benchmark/svelte.md +1 -1
  728. package/docs/ko/benchmark/tanstack.md +1 -1
  729. package/docs/ko/benchmark/vue.md +1 -1
  730. package/docs/ko/bundle_optimization.md +5 -1
  731. package/docs/ko/how_works_intlayer.md +2 -2
  732. package/docs/ko/interest_of_intlayer.md +7 -7
  733. package/docs/ko/intlayer_CMS.md +1 -1
  734. package/docs/ko/intlayer_with_adonisjs.md +1 -1
  735. package/docs/ko/intlayer_with_analog.md +1 -1
  736. package/docs/ko/intlayer_with_angular_19.md +1 -1
  737. package/docs/ko/intlayer_with_angular_21.md +1 -1
  738. package/docs/ko/intlayer_with_astro.md +1 -1
  739. package/docs/ko/intlayer_with_astro_lit.md +1 -1
  740. package/docs/ko/intlayer_with_astro_preact.md +1 -1
  741. package/docs/ko/intlayer_with_astro_react.md +1 -1
  742. package/docs/ko/intlayer_with_astro_solid.md +1 -1
  743. package/docs/ko/intlayer_with_astro_svelte.md +1 -1
  744. package/docs/ko/intlayer_with_astro_vanilla.md +1 -1
  745. package/docs/ko/intlayer_with_astro_vue.md +1 -1
  746. package/docs/ko/intlayer_with_create_react_app.md +1 -1
  747. package/docs/ko/intlayer_with_express.md +1 -1
  748. package/docs/ko/intlayer_with_hono.md +1 -1
  749. package/docs/ko/intlayer_with_nestjs.md +1 -1
  750. package/docs/ko/intlayer_with_nextjs_14.md +1 -1
  751. package/docs/ko/intlayer_with_nextjs_15.md +1 -1
  752. package/docs/ko/intlayer_with_nextjs_16.md +1 -1
  753. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  754. package/docs/ko/intlayer_with_react_router_v7.md +2 -2
  755. package/docs/ko/intlayer_with_vite+preact.md +1 -1
  756. package/docs/ko/intlayer_with_vite+react.md +1 -1
  757. package/docs/ko/intlayer_with_vite+vue.md +1 -1
  758. package/docs/ko/introduction.md +0 -1
  759. package/docs/ko/readme.md +8 -8
  760. package/docs/nl/bundle_optimization.md +5 -1
  761. package/docs/nl/interest_of_intlayer.md +7 -7
  762. package/docs/nl/intlayer_with_angular_21.md +1 -1
  763. package/docs/nl/intlayer_with_hono.md +1 -1
  764. package/docs/nl/introduction.md +0 -1
  765. package/docs/pl/benchmark/nextjs.md +1 -1
  766. package/docs/pl/benchmark/solid.md +1 -1
  767. package/docs/pl/benchmark/svelte.md +1 -1
  768. package/docs/pl/benchmark/tanstack.md +1 -1
  769. package/docs/pl/benchmark/vue.md +1 -1
  770. package/docs/pl/bundle_optimization.md +5 -1
  771. package/docs/pl/how_works_intlayer.md +2 -2
  772. package/docs/pl/interest_of_intlayer.md +7 -7
  773. package/docs/pl/intlayer_CMS.md +1 -1
  774. package/docs/pl/intlayer_with_adonisjs.md +1 -1
  775. package/docs/pl/intlayer_with_analog.md +1 -1
  776. package/docs/pl/intlayer_with_angular_19.md +1 -1
  777. package/docs/pl/intlayer_with_angular_21.md +1 -1
  778. package/docs/pl/intlayer_with_astro.md +1 -1
  779. package/docs/pl/intlayer_with_astro_lit.md +1 -1
  780. package/docs/pl/intlayer_with_astro_preact.md +1 -1
  781. package/docs/pl/intlayer_with_astro_react.md +1 -1
  782. package/docs/pl/intlayer_with_astro_solid.md +1 -1
  783. package/docs/pl/intlayer_with_astro_svelte.md +1 -1
  784. package/docs/pl/intlayer_with_astro_vanilla.md +1 -1
  785. package/docs/pl/intlayer_with_astro_vue.md +1 -1
  786. package/docs/pl/intlayer_with_create_react_app.md +1 -1
  787. package/docs/pl/intlayer_with_express.md +1 -1
  788. package/docs/pl/intlayer_with_hono.md +1 -1
  789. package/docs/pl/intlayer_with_nestjs.md +1 -1
  790. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  791. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  792. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  793. package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
  794. package/docs/pl/intlayer_with_react_router_v7.md +2 -2
  795. package/docs/pl/intlayer_with_vite+preact.md +1 -1
  796. package/docs/pl/intlayer_with_vite+react.md +1 -1
  797. package/docs/pl/intlayer_with_vite+vue.md +1 -1
  798. package/docs/pl/introduction.md +0 -1
  799. package/docs/pl/readme.md +8 -8
  800. package/docs/pt/benchmark/nextjs.md +1 -1
  801. package/docs/pt/benchmark/solid.md +1 -1
  802. package/docs/pt/benchmark/svelte.md +1 -1
  803. package/docs/pt/benchmark/tanstack.md +1 -1
  804. package/docs/pt/benchmark/vue.md +1 -1
  805. package/docs/pt/bundle_optimization.md +5 -1
  806. package/docs/pt/how_works_intlayer.md +2 -2
  807. package/docs/pt/interest_of_intlayer.md +7 -7
  808. package/docs/pt/intlayer_CMS.md +1 -1
  809. package/docs/pt/intlayer_with_adonisjs.md +1 -1
  810. package/docs/pt/intlayer_with_analog.md +1 -1
  811. package/docs/pt/intlayer_with_angular_19.md +1 -1
  812. package/docs/pt/intlayer_with_angular_21.md +1 -1
  813. package/docs/pt/intlayer_with_astro.md +1 -1
  814. package/docs/pt/intlayer_with_astro_lit.md +1 -1
  815. package/docs/pt/intlayer_with_astro_preact.md +1 -1
  816. package/docs/pt/intlayer_with_astro_react.md +1 -1
  817. package/docs/pt/intlayer_with_astro_solid.md +1 -1
  818. package/docs/pt/intlayer_with_astro_svelte.md +1 -1
  819. package/docs/pt/intlayer_with_astro_vanilla.md +1 -1
  820. package/docs/pt/intlayer_with_astro_vue.md +1 -1
  821. package/docs/pt/intlayer_with_create_react_app.md +1 -1
  822. package/docs/pt/intlayer_with_express.md +1 -1
  823. package/docs/pt/intlayer_with_hono.md +1 -1
  824. package/docs/pt/intlayer_with_nestjs.md +1 -1
  825. package/docs/pt/intlayer_with_nextjs_14.md +1 -1
  826. package/docs/pt/intlayer_with_nextjs_15.md +1 -1
  827. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  828. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  829. package/docs/pt/intlayer_with_react_router_v7.md +2 -2
  830. package/docs/pt/intlayer_with_vite+preact.md +1 -1
  831. package/docs/pt/intlayer_with_vite+react.md +1 -1
  832. package/docs/pt/intlayer_with_vite+vue.md +1 -1
  833. package/docs/pt/introduction.md +0 -1
  834. package/docs/pt/readme.md +8 -8
  835. package/docs/ru/benchmark/nextjs.md +1 -1
  836. package/docs/ru/benchmark/solid.md +1 -1
  837. package/docs/ru/benchmark/svelte.md +1 -1
  838. package/docs/ru/benchmark/tanstack.md +1 -1
  839. package/docs/ru/benchmark/vue.md +1 -1
  840. package/docs/ru/bundle_optimization.md +5 -1
  841. package/docs/ru/how_works_intlayer.md +2 -2
  842. package/docs/ru/interest_of_intlayer.md +7 -7
  843. package/docs/ru/intlayer_CMS.md +1 -1
  844. package/docs/ru/intlayer_with_adonisjs.md +1 -1
  845. package/docs/ru/intlayer_with_analog.md +1 -1
  846. package/docs/ru/intlayer_with_angular_19.md +1 -1
  847. package/docs/ru/intlayer_with_angular_21.md +1 -1
  848. package/docs/ru/intlayer_with_astro.md +1 -1
  849. package/docs/ru/intlayer_with_astro_lit.md +1 -1
  850. package/docs/ru/intlayer_with_astro_preact.md +1 -1
  851. package/docs/ru/intlayer_with_astro_react.md +1 -1
  852. package/docs/ru/intlayer_with_astro_solid.md +1 -1
  853. package/docs/ru/intlayer_with_astro_svelte.md +1 -1
  854. package/docs/ru/intlayer_with_astro_vanilla.md +1 -1
  855. package/docs/ru/intlayer_with_astro_vue.md +1 -1
  856. package/docs/ru/intlayer_with_create_react_app.md +1 -1
  857. package/docs/ru/intlayer_with_express.md +1 -1
  858. package/docs/ru/intlayer_with_hono.md +1 -1
  859. package/docs/ru/intlayer_with_nestjs.md +1 -1
  860. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  861. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  862. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  863. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  864. package/docs/ru/intlayer_with_react_router_v7.md +2 -2
  865. package/docs/ru/intlayer_with_vite+preact.md +1 -1
  866. package/docs/ru/intlayer_with_vite+react.md +1 -1
  867. package/docs/ru/intlayer_with_vite+vue.md +1 -1
  868. package/docs/ru/introduction.md +0 -1
  869. package/docs/ru/readme.md +8 -8
  870. package/docs/tr/benchmark/nextjs.md +1 -1
  871. package/docs/tr/benchmark/solid.md +1 -1
  872. package/docs/tr/benchmark/svelte.md +1 -1
  873. package/docs/tr/benchmark/tanstack.md +1 -1
  874. package/docs/tr/benchmark/vue.md +1 -1
  875. package/docs/tr/bundle_optimization.md +5 -1
  876. package/docs/tr/how_works_intlayer.md +2 -2
  877. package/docs/tr/interest_of_intlayer.md +7 -7
  878. package/docs/tr/intlayer_CMS.md +1 -1
  879. package/docs/tr/intlayer_with_adonisjs.md +1 -1
  880. package/docs/tr/intlayer_with_analog.md +1 -1
  881. package/docs/tr/intlayer_with_angular_19.md +1 -1
  882. package/docs/tr/intlayer_with_angular_21.md +1 -1
  883. package/docs/tr/intlayer_with_astro.md +1 -1
  884. package/docs/tr/intlayer_with_astro_lit.md +1 -1
  885. package/docs/tr/intlayer_with_astro_preact.md +1 -1
  886. package/docs/tr/intlayer_with_astro_react.md +1 -1
  887. package/docs/tr/intlayer_with_astro_solid.md +1 -1
  888. package/docs/tr/intlayer_with_astro_svelte.md +1 -1
  889. package/docs/tr/intlayer_with_astro_vanilla.md +1 -1
  890. package/docs/tr/intlayer_with_astro_vue.md +1 -1
  891. package/docs/tr/intlayer_with_create_react_app.md +1 -1
  892. package/docs/tr/intlayer_with_express.md +1 -1
  893. package/docs/tr/intlayer_with_hono.md +1 -1
  894. package/docs/tr/intlayer_with_nestjs.md +1 -1
  895. package/docs/tr/intlayer_with_nextjs_14.md +1 -1
  896. package/docs/tr/intlayer_with_nextjs_15.md +1 -1
  897. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  898. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  899. package/docs/tr/intlayer_with_react_router_v7.md +1 -1
  900. package/docs/tr/intlayer_with_vite+preact.md +1 -1
  901. package/docs/tr/intlayer_with_vite+react.md +1 -1
  902. package/docs/tr/intlayer_with_vite+vue.md +1 -1
  903. package/docs/tr/introduction.md +0 -1
  904. package/docs/tr/readme.md +8 -8
  905. package/docs/uk/benchmark/nextjs.md +1 -1
  906. package/docs/uk/benchmark/solid.md +1 -1
  907. package/docs/uk/benchmark/svelte.md +1 -1
  908. package/docs/uk/benchmark/tanstack.md +1 -1
  909. package/docs/uk/benchmark/vue.md +1 -1
  910. package/docs/uk/bundle_optimization.md +5 -1
  911. package/docs/uk/how_works_intlayer.md +2 -2
  912. package/docs/uk/interest_of_intlayer.md +7 -7
  913. package/docs/uk/intlayer_CMS.md +1 -1
  914. package/docs/uk/intlayer_with_adonisjs.md +1 -1
  915. package/docs/uk/intlayer_with_analog.md +1 -1
  916. package/docs/uk/intlayer_with_angular_19.md +1 -1
  917. package/docs/uk/intlayer_with_angular_21.md +1 -1
  918. package/docs/uk/intlayer_with_astro.md +1 -1
  919. package/docs/uk/intlayer_with_astro_lit.md +1 -1
  920. package/docs/uk/intlayer_with_astro_preact.md +1 -1
  921. package/docs/uk/intlayer_with_astro_react.md +1 -1
  922. package/docs/uk/intlayer_with_astro_solid.md +1 -1
  923. package/docs/uk/intlayer_with_astro_svelte.md +1 -1
  924. package/docs/uk/intlayer_with_astro_vanilla.md +1 -1
  925. package/docs/uk/intlayer_with_astro_vue.md +1 -1
  926. package/docs/uk/intlayer_with_create_react_app.md +1 -1
  927. package/docs/uk/intlayer_with_express.md +1 -1
  928. package/docs/uk/intlayer_with_hono.md +1 -1
  929. package/docs/uk/intlayer_with_nestjs.md +1 -1
  930. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  931. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  932. package/docs/uk/intlayer_with_nextjs_16.md +1 -1
  933. package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
  934. package/docs/uk/intlayer_with_react_router_v7.md +1 -1
  935. package/docs/uk/intlayer_with_vite+preact.md +1 -1
  936. package/docs/uk/intlayer_with_vite+react.md +1 -1
  937. package/docs/uk/intlayer_with_vite+vue.md +1 -1
  938. package/docs/uk/introduction.md +0 -1
  939. package/docs/uk/readme.md +8 -8
  940. package/docs/ur/bundle_optimization.md +5 -1
  941. package/docs/ur/interest_of_intlayer.md +7 -7
  942. package/docs/ur/intlayer_with_angular_21.md +1 -1
  943. package/docs/ur/intlayer_with_hono.md +1 -1
  944. package/docs/ur/introduction.md +0 -1
  945. package/docs/vi/benchmark/nextjs.md +1 -1
  946. package/docs/vi/benchmark/solid.md +1 -1
  947. package/docs/vi/benchmark/svelte.md +1 -1
  948. package/docs/vi/benchmark/tanstack.md +1 -1
  949. package/docs/vi/benchmark/vue.md +1 -1
  950. package/docs/vi/bundle_optimization.md +5 -1
  951. package/docs/vi/how_works_intlayer.md +2 -2
  952. package/docs/vi/interest_of_intlayer.md +7 -7
  953. package/docs/vi/intlayer_CMS.md +1 -1
  954. package/docs/vi/intlayer_with_adonisjs.md +1 -1
  955. package/docs/vi/intlayer_with_analog.md +1 -1
  956. package/docs/vi/intlayer_with_angular_19.md +1 -1
  957. package/docs/vi/intlayer_with_angular_21.md +1 -1
  958. package/docs/vi/intlayer_with_astro.md +1 -1
  959. package/docs/vi/intlayer_with_astro_lit.md +1 -1
  960. package/docs/vi/intlayer_with_astro_preact.md +1 -1
  961. package/docs/vi/intlayer_with_astro_react.md +1 -1
  962. package/docs/vi/intlayer_with_astro_solid.md +1 -1
  963. package/docs/vi/intlayer_with_astro_svelte.md +1 -1
  964. package/docs/vi/intlayer_with_astro_vanilla.md +1 -1
  965. package/docs/vi/intlayer_with_astro_vue.md +1 -1
  966. package/docs/vi/intlayer_with_create_react_app.md +1 -1
  967. package/docs/vi/intlayer_with_express.md +1 -1
  968. package/docs/vi/intlayer_with_hono.md +1 -1
  969. package/docs/vi/intlayer_with_nestjs.md +1 -1
  970. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  971. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  972. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  973. package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
  974. package/docs/vi/intlayer_with_vite+preact.md +1 -1
  975. package/docs/vi/intlayer_with_vite+react.md +1 -1
  976. package/docs/vi/intlayer_with_vite+vue.md +1 -1
  977. package/docs/vi/introduction.md +0 -1
  978. package/docs/vi/readme.md +8 -8
  979. package/docs/zh/benchmark/nextjs.md +1 -1
  980. package/docs/zh/benchmark/solid.md +1 -1
  981. package/docs/zh/benchmark/svelte.md +1 -1
  982. package/docs/zh/benchmark/tanstack.md +1 -1
  983. package/docs/zh/benchmark/vue.md +1 -1
  984. package/docs/zh/bundle_optimization.md +5 -1
  985. package/docs/zh/how_works_intlayer.md +2 -2
  986. package/docs/zh/interest_of_intlayer.md +7 -7
  987. package/docs/zh/intlayer_CMS.md +1 -1
  988. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  989. package/docs/zh/intlayer_with_analog.md +1 -1
  990. package/docs/zh/intlayer_with_angular_19.md +1 -1
  991. package/docs/zh/intlayer_with_angular_21.md +1 -1
  992. package/docs/zh/intlayer_with_astro.md +1 -1
  993. package/docs/zh/intlayer_with_astro_lit.md +1 -1
  994. package/docs/zh/intlayer_with_astro_preact.md +1 -1
  995. package/docs/zh/intlayer_with_astro_react.md +1 -1
  996. package/docs/zh/intlayer_with_astro_solid.md +1 -1
  997. package/docs/zh/intlayer_with_astro_svelte.md +1 -1
  998. package/docs/zh/intlayer_with_astro_vanilla.md +1 -1
  999. package/docs/zh/intlayer_with_astro_vue.md +1 -1
  1000. package/docs/zh/intlayer_with_create_react_app.md +1 -1
  1001. package/docs/zh/intlayer_with_express.md +1 -1
  1002. package/docs/zh/intlayer_with_hono.md +1 -1
  1003. package/docs/zh/intlayer_with_nestjs.md +1 -1
  1004. package/docs/zh/intlayer_with_nextjs_14.md +1 -1
  1005. package/docs/zh/intlayer_with_nextjs_15.md +1 -1
  1006. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  1007. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  1008. package/docs/zh/intlayer_with_react_router_v7.md +2 -2
  1009. package/docs/zh/intlayer_with_vite+preact.md +1 -1
  1010. package/docs/zh/intlayer_with_vite+react.md +1 -1
  1011. package/docs/zh/intlayer_with_vite+vue.md +1 -1
  1012. package/docs/zh/introduction.md +0 -1
  1013. package/docs/zh/readme.md +8 -8
  1014. package/docs/zh-TW/bundle_optimization.md +5 -1
  1015. package/docs/zh-TW/interest_of_intlayer.md +7 -7
  1016. package/docs/zh-TW/intlayer_with_angular_21.md +1 -1
  1017. package/docs/zh-TW/introduction.md +0 -1
  1018. package/frequent_questions/ar/claude_code_token_consumption.md +152 -0
  1019. package/frequent_questions/de/claude_code_token_consumption.md +152 -0
  1020. package/frequent_questions/en/claude_code_token_consumption.md +152 -0
  1021. package/frequent_questions/en-GB/claude_code_token_consumption.md +152 -0
  1022. package/frequent_questions/es/claude_code_token_consumption.md +152 -0
  1023. package/frequent_questions/fr/claude_code_token_consumption.md +152 -0
  1024. package/frequent_questions/hi/claude_code_token_consumption.md +152 -0
  1025. package/frequent_questions/id/claude_code_token_consumption.md +152 -0
  1026. package/frequent_questions/it/claude_code_token_consumption.md +152 -0
  1027. package/frequent_questions/ja/claude_code_token_consumption.md +152 -0
  1028. package/frequent_questions/ko/claude_code_token_consumption.md +152 -0
  1029. package/frequent_questions/pl/claude_code_token_consumption.md +152 -0
  1030. package/frequent_questions/pt/claude_code_token_consumption.md +152 -0
  1031. package/frequent_questions/ru/claude_code_token_consumption.md +152 -0
  1032. package/frequent_questions/tr/claude_code_token_consumption.md +152 -0
  1033. package/frequent_questions/uk/claude_code_token_consumption.md +152 -0
  1034. package/frequent_questions/vi/claude_code_token_consumption.md +152 -0
  1035. package/frequent_questions/zh/claude_code_token_consumption.md +152 -0
  1036. package/package.json +8 -7
  1037. package/src/generated/blog.entry.ts +240 -0
  1038. package/src/generated/frequentQuestions.entry.ts +20 -0
  1039. package/blog/en/___per-component_vs_centralized_i18n.md +0 -255
  1040. package/blog/pl/___per-component_vs_centralized_i18n.md +0 -100
  1041. package/docs/en/benchmark/___NOTE.md +0 -101
  1042. package/docs/en/benchmark/___nextjs.md +0 -197
  1043. package/docs/en/benchmark/___solid.md +0 -12
  1044. package/docs/en/benchmark/___svelte.md +0 -16
  1045. package/docs/en/benchmark/___tanstack.md +0 -190
  1046. package/docs/en/benchmark/___vue.md +0 -7
  1047. package/docs/pl/benchmark/___NOTE.md +0 -101
  1048. package/docs/pl/benchmark/___nextjs.md +0 -198
  1049. package/docs/pl/benchmark/___solid.md +0 -36
  1050. package/docs/pl/benchmark/___svelte.md +0 -36
  1051. package/docs/pl/benchmark/___tanstack.md +0 -36
  1052. package/docs/pl/benchmark/___vue.md +0 -36
@@ -0,0 +1,445 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: "i18next против Intlayer: бенчмарк и сравнение 2026"
5
+ description: "react-i18next и next-i18next в сравнении с Intlayer на Next.js и TanStack Start. Размер bundle, утечки контента, скорость переключения локали и опыт разработчика."
6
+ keywords:
7
+ - i18next
8
+ - react-i18next
9
+ - next-i18next
10
+ - Intlayer
11
+ - Интернационализация
12
+ - i18n
13
+ - Бенчмарк
14
+ - Размер bundle
15
+ - Блог
16
+ - Next.js
17
+ - TanStack Start
18
+ - JavaScript
19
+ - React
20
+ slugs:
21
+ - blog
22
+ - i18next-vs-intlayer
23
+ author: aymericzip
24
+ ---
25
+
26
+ # i18next против Intlayer | Бенчмарк интернационализации (i18n) для React и Next.js
27
+
28
+ `i18next` - самый распространенный i18n-фреймворк в экосистеме JavaScript. Через `react-i18next` и `next-i18next` он используется в огромном количестве приложений на React и Next.js. Intlayer представляет собой альтернативу на основе компилятора с изолированной областью видимости для каждого компонента.
29
+
30
+ В этой статье они сравниваются на основе реальных замеров, а не списков возможностей. Данные взяты из [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) - открытого набора тестов, собирающего одно и то же приложение на каждой библиотеке и фиксирующего то, что браузер фактически загружает по сети.
31
+
32
+ <TOC/>
33
+
34
+ > **tl;dr**: `i18next` оказался самым тяжелым runtime в бенчмарке: **+77 KB gzip на страницу** в Next.js при базовой конфигурации, **+22 KB** после полной оптимизации пространств имен и ленивой загрузки. Intlayer добавляет всего **+0.3 KB**. Каждая конфигурация `i18next`, кроме полностью изолированной (scoped), отдает **~90% строк с посторонних страниц**; Intlayer отдает **0%** по умолчанию. Переключение языка с динамической подгрузкой через бэкенд заняло **123-185 ms** в `react-i18next` против **3-4 ms** в Intlayer. Адаптер `@intlayer/next-i18next` сохраняет API `i18next` и продемонстрировал результат **150.7 KB** на страницу против **218.5 KB** в оригинале.
35
+
36
+ ## Вкратце
37
+
38
+ - **i18next / react-i18next / next-i18next** - Зрелый, богатый плагинами, независимый от фреймворка инструмент. Пространства имен, детекторы языка, бэкенды, ICU через плагины, компонент `<Trans>` для сложной разметки. Контент хранится централизованно в `locales/{lng}/{ns}.json`. Мощный, однако каждая оптимизация (разделение пространств имен, постраничная загрузка, типобезопасность) требует ручной настройки и поддержки.
39
+ - **Intlayer** - Модель с упором на компоненты. Словари `.content.ts` располагаются рядом с компонентом, для которого предназначены. Компилятор во время сборки выполняет tree-shaking и загружает их лениво для каждого компонента и языка. Строгие типы TypeScript формируются автоматически, а пропущенные переводы вызывают ошибки сборки. Включает middleware, SEO-утилиты, визуальный редактор / CMS и перевод с помощью ИИ.
40
+
41
+ | Библиотека | Звезды GitHub | Всего коммитов | Последний коммит | Первая версия | Версия NPM | Загрузки NPM |
42
+ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
43
+ | `aymericzip/intlayer` | [![GitHub Repo stars](https://img.shields.io/github/stars/aymericzip/intlayer?style=for-the-badge&label=%E2%AD%90%20stars)](https://github.com/aymericzip/intlayer/stargazers) | [![GitHub commit activity](https://img.shields.io/github/commit-activity/t/aymericzip/intlayer?style=for-the-badge&label=commits)](https://github.com/aymericzip/intlayer/commits) | [![Last Commit](https://img.shields.io/github/last-commit/aymericzip/intlayer?style=for-the-badge)](https://github.com/aymericzip/intlayer/commits) | Апрель 2024 | [![npm](https://img.shields.io/npm/v/intlayer?style=for-the-badge)](https://www.npmjs.com/package/intlayer) | [![npm downloads](https://img.shields.io/npm/dm/intlayer?style=for-the-badge)](https://www.npmjs.com/package/intlayer) |
44
+ | `i18next/i18next` | [![GitHub Repo stars](https://img.shields.io/github/stars/i18next/i18next?style=for-the-badge&label=%E2%AD%90%20stars)](https://github.com/i18next/i18next/stargazers) | [![GitHub commit activity](https://img.shields.io/github/commit-activity/t/i18next/i18next?style=for-the-badge&label=commits)](https://github.com/i18next/i18next/commits) | [![Last Commit](https://img.shields.io/github/last-commit/i18next/i18next?style=for-the-badge)](https://github.com/i18next/i18next/commits) | Январь 2012 | [![npm](https://img.shields.io/npm/v/i18next?style=for-the-badge)](https://www.npmjs.com/package/i18next) | [![npm downloads](https://img.shields.io/npm/dm/i18next?style=for-the-badge)](https://www.npmjs.com/package/i18next) |
45
+ | `i18next/react-i18next` | [![GitHub Repo stars](https://img.shields.io/github/stars/i18next/react-i18next?style=for-the-badge&label=%E2%AD%90%20stars)](https://github.com/i18next/react-i18next/stargazers) | [![GitHub commit activity](https://img.shields.io/github/commit-activity/t/i18next/react-i18next?style=for-the-badge&label=commits)](https://github.com/i18next/react-i18next/commits) | [![Last Commit](https://img.shields.io/github/last-commit/i18next/react-i18next?style=for-the-badge)](https://github.com/i18next/react-i18next/commits) | Декабрь 2015 | [![npm](https://img.shields.io/npm/v/react-i18next?style=for-the-badge)](https://www.npmjs.com/package/react-i18next) | [![npm downloads](https://img.shields.io/npm/dm/react-i18next?style=for-the-badge)](https://www.npmjs.com/package/react-i18next) |
46
+ | `i18next/next-i18next` | [![GitHub Repo stars](https://img.shields.io/github/stars/i18next/next-i18next?style=for-the-badge&label=%E2%AD%90%20stars)](https://github.com/i18next/next-i18next/stargazers) | [![GitHub commit activity](https://img.shields.io/github/commit-activity/t/i18next/next-i18next?style=for-the-badge&label=commits)](https://github.com/i18next/next-i18next/commits) | [![Last Commit](https://img.shields.io/github/last-commit/i18next/next-i18next?style=for-the-badge)](https://github.com/i18next/next-i18next/commits) | Ноябрь 2018 | [![npm](https://img.shields.io/npm/v/next-i18next?style=for-the-badge)](https://www.npmjs.com/package/next-i18next) | [![npm downloads](https://img.shields.io/npm/dm/next-i18next?style=for-the-badge)](https://www.npmjs.com/package/next-i18next) |
47
+
48
+ > Значки обновляются автоматически. Показатели со временем меняются.
49
+
50
+ ## Сравнение возможностей
51
+
52
+ | Возможность | Intlayer (`react-intlayer` / `next-intlayer`) | i18next (`react-i18next` / `next-i18next`) |
53
+ | ---------------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
54
+ | **Переводы рядом с компонентами** | ✅ Да, `.content.ts` располагается рядом с компонентом | ❌ Нет, централизованно в `locales/{lng}/{ns}.json` |
55
+ | **Интеграция с TypeScript** | ✅ Строгие типы создаются автоматически из контента | ⚠️ Базовая; требует расширения `CustomTypeOptions` и описания ресурсов |
56
+ | **Поиск пропущенных переводов** | ✅ Ошибка TypeScript + ошибка/предупреждение при сборке | ⚠️ Заглушка в runtime (`saveMissing`, возврат ключа) |
57
+ | **Сложный контент (JSX / Markdown)** | ✅ Прямая поддержка | ⚠️ `<Trans>` с числовыми индексами |
58
+ | **Поддержка ICU** | ⚠️ В разработке | ⚠️ Через плагин (`i18next-icu`) |
59
+ | **Плюрализация** | ✅ Шаблоны на основе перечислений | ✅ Суффиксы `_one` / `_other` (Intl.PluralRules) |
60
+ | **Форматирование (даты, числа, валюты)** | ✅ `useNumber`, `useDate`, ... (встроенный Intl) | ⚠️ Форматировщики интерполяции или ручной вызов `Intl.*` |
61
+ | **Локализованная маршрутизация и middleware** | ✅ Встроенный прокси/middleware, `getMultilingualUrls` | ⚠️ Не входит в ядро; сторонние библиотеки или собственный код |
62
+ | **SEO-утилиты (hreflang, sitemap, robots)** | ✅ Встроенные помощники | ❌ Вручную |
63
+ | **Синхронные серверные компоненты** | ✅ `useIntlayer` из `next-intlayer/server` доступен в любом серверном компоненте | ⚠️ `getFixedT` на странице и проброс `t` через props |
64
+ | **Tree-shaking (только нужный контент)** | ✅ Для каждого компонента и языка, автоматически компилятором | ⚠️ Вручную: namespaces + список `ns` на страницу + бэкенд |
65
+ | **Lazy loading** | ✅ `importMode: 'dynamic'` (одна строка конфигурации) | ✅ Через плагины бэкенда (`i18next-resources-to-backend`, `i18next-http-backend`) |
66
+ | **Очистка неиспользуемого контента** | ✅ Лишние словари отсекаются на этапе сборки | ❌ Не предусмотрено |
67
+ | **Проверка пропущенных строк (CLI / CI)** | ✅ `npx intlayer content test` | ⚠️ `i18next-parser` / сторонние утилиты |
68
+ | **Перевод с помощью ИИ** | ✅ Встроен, использует ваши собственные API-ключи | ❌ Нет (Locize - отдельный платный сервис) |
69
+ | **Визуальный редактор / CMS** | ✅ Бесплатный Visual Editor + опциональная CMS | ❌ Нет (Locize / внешние системы) |
70
+ | **Сервер MCP и навыки агентов (Agent Skills)** | ✅ Да | ❌ Нет |
71
+ | **Экосистема и сообщество** | ⚠️ Моложе, но быстро развивается | ✅ Самое масштабное и проверенное временем |
72
+
73
+ ## Бенчмарк
74
+
75
+ ### Что измерялось
76
+
77
+ Набор тестов [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) собирает **одно и то же приложение** с каждой библиотекой: **10 страниц** (главная, о нас, блог, вакансии, контакты, FAQ, цены, продукты, настройки, команда), **10 языков** (`en`, `fr`, `es`, `de`, `it`, `pt`, `zh`, `ja`, `ko`, `ru`), одинаковые компоненты и идентичный контент. Страницы замеряются на `en` и `fr`. Каждая библиотека тестируется в рамках четырех **стратегий загрузки**:
78
+
79
+ | Стратегия | Описание | Где применяется |
80
+ | ------------------ | -------------------------------------------------------------------------------------------- | --------------------------------------------- |
81
+ | **static** | Все языки и страницы упакованы вместе (`resources` встроены в `init()`) | Быстрые прототипы, код от ИИ |
82
+ | **dynamic** | Только активный язык загружается через бэкенд, но все пространства имен сразу | Большинство проектов |
83
+ | **scoped-static** | Одно пространство имен на маршрут, все упакованы заранее | Редко |
84
+ | **scoped-dynamic** | Одно пространство имен на маршрут + ленивая загрузка бэкенда. Только текущая страница и язык | Проекты со строгим лимитом производительности |
85
+
86
+ У Intlayer нет варианта "scoped": компилятор изолирует контент **для каждого компонента** автоматически, поэтому строки `static` и `dynamic` уже оптимизированы.
87
+
88
+ Для каждой сборки замеряются:
89
+
90
+ - **Lib size**: gzip-размер пустого компонента, импортирующего только библиотеку i18n. Постоянный вес runtime.
91
+ - **Page JS**: средний объем JavaScript gzip, скачиваемый на страницу, по всем страницам и языкам.
92
+ - **Locale leak %**: доля переведенных строк в JS, относящихся к языку, который пользователь **не** просматривает.
93
+ - **Page leak %**: доля строк в JS, относящихся к страницам, на которых пользователь **не** находится.
94
+ - **Component avg**: средний размер gzip каждого компонента, скомпилированного изолированно.
95
+ - **E2E reactivity**: реальное время между выбором нового языка и обновлением `html[lang]` в DOM (Playwright, 5 итераций).
96
+ - **Hydration**: длительность этапа гидратации React.
97
+
98
+ > Приведенные данные получены в прогоне от **2026-09-12** с версиями `next-i18next` 16.3.0, `react-i18next` 17.0.13 и `intlayer` 9.5.1. Тестовое приложение намеренно компактно (несколько десятков строк на язык), поэтому проценты утечек отражают **тенденцию**: они увеличиваются с ростом контента, тогда как вес runtime остается неизменным.
99
+
100
+ ### Результаты на Next.js (`next-i18next`)
101
+
102
+ | Библиотека | Стратегия | Lib size (gz) | Page JS avg (gz) | Locale leak | Page leak | Component avg (gz) | E2E-реактивность | Гидратация |
103
+ | --------------------------------- | -------------- | ------------: | ---------------: | ----------: | --------: | -----------------: | ---------------: | ---------: |
104
+ | **base** (без i18n) | - | 0.0 KB | 141.0 KB | 0.0% | 0.0% | 0.9 KB | 13.4 ms | 11.8 ms |
105
+ | `next-i18next` | static | 19.7 KB | 218.5 KB | 0.0% | 89.8% | 78.5 KB | 16.4 ms | 15.6 ms |
106
+ | `next-i18next` | dynamic | 19.7 KB | 169.5 KB | 50.0% | 89.8% | 26.1 KB | 15.4 ms | 27.7 ms |
107
+ | `next-i18next` | scoped-static | 19.7 KB | 220.1 KB | 0.0% | 89.8% | 78.9 KB | 16.4 ms | 14.7 ms |
108
+ | `next-i18next` | scoped-dynamic | 19.7 KB | 163.4 KB | 0.0% | 0.0% | 27.1 KB | 15.9 ms | 15.1 ms |
109
+ | **`next-intlayer`** | static | **5.5 KB** | **141.3 KB** | **0.0%** | **0.0%** | **8.5 KB** | **15.5 ms** | 16.9 ms |
110
+ | **`next-intlayer`** | dynamic | **5.5 KB** | **141.3 KB** | **0.0%** | **0.0%** | **6.9 KB** | **15.3 ms** | 15.9 ms |
111
+ | `@intlayer/next-i18next` (compat) | static | 9.4 KB | 150.7 KB | 0.0% | 0.0% | 9.7 KB | 10.7 ms | 11.3 ms |
112
+ | `@intlayer/next-i18next` (compat) | dynamic | 9.4 KB | 150.7 KB | 0.0% | 0.0% | 9.7 KB | 11.9 ms | 10.6 ms |
113
+
114
+ **Как читать результаты**
115
+
116
+ - **Вес runtime.** Ядро `i18next` вместе с `react-i18next` - самый объемный runtime в тесте: **19.7 KB gzip** для пустого компонента против 5.5 KB у `next-intlayer`.
117
+ - **Базовая конфигурация обходится дорого.** Встраивание `resources` в `init()` дает **218.5 KB на страницу**, что на +77.5 KB больше базового приложения. Каждая страница загружает все пространства имен.
118
+ - **Оптимизация требует значительных усилий.** Подключение бэкенда (`dynamic`) экономит 49 KB, но по-прежнему оставляет **90% утечки строк других страниц**, причем в этой конфигурации половина строк принадлежит не тому языку. Добавление разделения пространств имен по маршрутам (`scoped-dynamic`) позволяет достичь 0% утечки при весе **163.4 KB**, что все равно на **+22.4 KB на страницу** больше, чем у Intlayer (141.3 KB), не требовавшего никакой ручной настройки.
119
+ - **Размер компонентов.** Компонент с вызовом `useTranslation()` компилируется в 26-79 KB; тот же компонент с `useIntlayer()` весит 6.9 KB.
120
+ - **Гидратация** возрастает до 27.7 ms в варианте `dynamic`: экземпляр i18next инициализируется и запрашивает бэкенд на стороне клиента до того, как React завершит гидратацию.
121
+
122
+ ### Результаты на TanStack Start (`react-i18next`)
123
+
124
+ То же приложение на TanStack Start со стандартным `react-i18next`, что исключает специфику Next.js из сравнения.
125
+
126
+ | Библиотека | Стратегия | Lib size (gz) | Page JS avg (gz) | Locale leak | Page leak | Component avg (gz) | E2E-реактивность | Гидратация |
127
+ | ------------------- | -------------- | ------------: | ---------------: | ----------: | --------: | -----------------: | ---------------: | ---------: |
128
+ | **base** (без i18n) | - | 0.0 KB | 111.0 KB | 0.0% | 0.0% | 0.7 KB | 8.1 ms | 21.6 ms |
129
+ | `react-i18next` | static | 18.4 KB | 180.3 KB | 50.0% | 89.8% | 24.3 KB | 12.9 ms | 85.1 ms |
130
+ | `react-i18next` | dynamic | 18.4 KB | 136.4 KB | 23.1% | 89.8% | 24.8 KB | 123.1 ms | 32.9 ms |
131
+ | `react-i18next` | scoped-static | 18.4 KB | 184.2 KB | 50.7% | 89.8% | 25.3 KB | 185.1 ms | 25.2 ms |
132
+ | `react-i18next` | scoped-dynamic | 18.4 KB | 127.2 KB | 0.0% | 0.0% | 26.7 KB | 17.6 ms | 11.3 ms |
133
+ | **`intlayer`** | static | **5.0 KB** | **125.8 KB** | 50.0% | **0.0%** | **8.1 KB** | **3.2 ms** | 11.5 ms |
134
+ | **`intlayer`** | dynamic | **5.0 KB** | **118.6 KB** | **0.0%** | **0.0%** | **6.3 KB** | **3.6 ms** | 14.1 ms |
135
+
136
+ **Как читать результаты**
137
+
138
+ - Неоптимизированное приложение на `react-i18next` отдает на **+69 KB на страницу** больше базы, а гидратация занимает **85 ms** (в 4 раза дольше), поскольку дерево ресурсов полностью анализируется и регистрируется на клиенте до первичного рендера.
139
+ - **Смена языка подчеркивает задержку ленивой загрузки.** Если ресурсы загружаются по запросу, смена языка влечет сетевой запрос до обновления `html[lang]`: **123 ms** в `dynamic`, **185 ms** в `scoped-static`. Intlayer обновляет DOM за **3-4 ms** в обоих режимах: переключение выполняется мгновенно и не блокируется сетью.
140
+ - Полностью оптимизированный вариант `scoped-dynamic` достигает 0% утечки при весе 127.2 KB, что все еще на **+8.6 KB** больше строки `dynamic` у Intlayer, при этом потребовав маппинга маршрутов к пространствам имен, бэкенда ресурсов и оберток Suspense.
141
+ - Строка `static` у Intlayer уже дает **0% утечки страниц**, так как в сборку входят только словари, импортированные компонентами этой страницы. Включение `importMode: 'dynamic'` устраняет и утечку языков.
142
+ - **Размер компонентов**: 24-27 KB на компонент в `react-i18next` против 6-8 KB в Intlayer. `useTranslation()` связывает каждый компонент с глобальным экземпляром i18next.
143
+
144
+ ## Причина различий: глобальный экземпляр против скомпилированных словарей
145
+
146
+ `i18next` был создан в 2012 году как runtime: глобальный объект содержит хранилище ресурсов, плагины расширяют его возможности, а `t()` ищет ключи при рендере. Это обеспечивает гибкость (любой фреймворк, бэкенд и формат), но ведет к утяжелению:
147
+
148
+ ```bash
149
+ .
150
+ ├── i18n.ts # createInstance().use(...).use(...).init({...})
151
+ └── src
152
+ ├── locales
153
+ │ ├── en
154
+ │ │ ├── common.json
155
+ │ │ ├── home.json
156
+ │ │ └── about.json
157
+ │ └── fr
158
+ │ ├── common.json
159
+ │ ├── home.json
160
+ │ └── about.json
161
+ ├── components
162
+ │ └── Counter.tsx # useTranslation("about") + t("counter.label")
163
+ └── app
164
+ └── [locale]
165
+ └── about
166
+ └── page.tsx # должна знать, что нужны ["common", "about"]
167
+ ```
168
+
169
+ Экземпляр не может знать заранее, какие ключи понадобятся компоненту, поэтому держит в памяти все загруженные пространства имен. Оптимизация означает, что **вы** делите каталоги, **вы** перечисляете пространства имен для каждой страницы и **вы** вручную обновляете этот список при перемещении компонентов. Как отмечено в [заметках бенчмарка](https://github.com/intlayer-org/benchmark-bloom/blob/main/report/NOTE.md): "поддерживать типобезопасность и точно знать, какое пространство имен подключить к странице - это сущий кошмар".
170
+
171
+ Intlayer отказывается от глобального экземпляра. Контент объявляется рядом с компонентом, а компилятор строит граф зависимостей при сборке:
172
+
173
+ ```bash
174
+ .
175
+ ├── intlayer.config.ts
176
+ └── src
177
+ ├── components
178
+ │ └── Counter
179
+ │ ├── index.tsx # useIntlayer("counter")
180
+ │ └── index.content.ts
181
+ └── app
182
+ └── [locale]
183
+ └── about
184
+ ├── page.tsx
185
+ └── page.content.ts
186
+ ```
187
+
188
+ `@intlayer/swc` / `@intlayer/babel` видит, какой компонент импортирует конкретный словарь, упаковывает только его, исключительно для активной локали, и удаляет неиспользуемое. Модель "scoped-dynamic" становится прямым следствием сборки, а не обременительным регламентом команды.
189
+
190
+ > Чтобы повторить показатели строки `dynamic`, укажите `dictionary.importMode: 'dynamic'` в `intlayer.config.ts`. Подробнее читайте в [документации по оптимизации bundle](https://intlayer.org/ru/doc/concept/bundle-optimization).
191
+
192
+ ## Опыт разработчика
193
+
194
+ ### Настройка
195
+
196
+ **next-i18next (App Router)**
197
+
198
+ ```ts fileName="src/app/i18n/server.ts"
199
+ import { createInstance } from "i18next";
200
+ import { initReactI18next } from "react-i18next/initReactI18next";
201
+ import resourcesToBackend from "i18next-resources-to-backend";
202
+ import { defaultLocale } from "@/i18n.config";
203
+
204
+ const backend = resourcesToBackend(
205
+ (locale: string, namespace: string) =>
206
+ import(`../../locales/${locale}/${namespace}.json`)
207
+ );
208
+
209
+ export const initI18next = async (
210
+ locale: string,
211
+ namespaces: string[] = ["common"]
212
+ ) => {
213
+ const i18n = createInstance();
214
+ await i18n
215
+ .use(initReactI18next)
216
+ .use(backend)
217
+ .init({
218
+ lng: locale,
219
+ fallbackLng: defaultLocale,
220
+ ns: namespaces,
221
+ defaultNS: "common",
222
+ interpolation: { escapeValue: false },
223
+ react: { useSuspense: false },
224
+ });
225
+ return i18n;
226
+ };
227
+ ```
228
+
229
+ Дополнительно требуется клиентский `I18nProvider`, воссоздающий экземпляр с теми же параметрами, `generateStaticParams` и список `namespaces` на каждой странице.
230
+
231
+ **Intlayer**
232
+
233
+ ```ts fileName="intlayer.config.ts"
234
+ import { type IntlayerConfig, Locales } from "intlayer";
235
+
236
+ const config: IntlayerConfig = {
237
+ internationalization: {
238
+ locales: [Locales.ENGLISH, Locales.FRENCH],
239
+ defaultLocale: Locales.ENGLISH,
240
+ },
241
+ };
242
+
243
+ export default config;
244
+ ```
245
+
246
+ ```tsx fileName="src/app/[locale]/layout.tsx"
247
+ import { getHTMLTextDir } from "intlayer";
248
+ import { IntlayerClientProvider, type NextLayoutIntlayer } from "next-intlayer";
249
+
250
+ const LocaleLayout: NextLayoutIntlayer = async ({ children, params }) => {
251
+ const { locale } = await params;
252
+
253
+ return (
254
+ <html lang={locale} dir={getHTMLTextDir(locale)}>
255
+ <body>
256
+ <IntlayerClientProvider locale={locale}>
257
+ {children}
258
+ </IntlayerClientProvider>
259
+ </body>
260
+ </html>
261
+ );
262
+ };
263
+
264
+ export default LocaleLayout;
265
+ ```
266
+
267
+ ### Клиентский компонент
268
+
269
+ **react-i18next**
270
+
271
+ ```json fileName="src/locales/en/about.json"
272
+ {
273
+ "counter": {
274
+ "label": "Counter",
275
+ "increment": "Increment"
276
+ }
277
+ }
278
+ ```
279
+
280
+ ```tsx fileName="src/components/Counter.tsx"
281
+ "use client";
282
+
283
+ import { useState } from "react";
284
+ import { useTranslation } from "react-i18next";
285
+
286
+ export const Counter = () => {
287
+ const { t, i18n } = useTranslation("about");
288
+ const [count, setCount] = useState(0);
289
+ const numberFormat = new Intl.NumberFormat(i18n.language);
290
+
291
+ return (
292
+ <div>
293
+ <p>{numberFormat.format(count)}</p>
294
+ <button
295
+ aria-label={t("counter.label")}
296
+ onClick={() => setCount((c) => c + 1)}
297
+ >
298
+ {t("counter.increment")}
299
+ </button>
300
+ </div>
301
+ );
302
+ };
303
+ ```
304
+
305
+ > Страница, отображающая этот компонент, обязана загрузить пространство имен `about`, а `t("counter.label")` будет обычной строкой без строгой типизации, если не дополнить интерфейс `CustomTypeOptions`.
306
+
307
+ **Intlayer**
308
+
309
+ ```ts fileName="src/components/Counter/index.content.ts"
310
+ import { t, type Dictionary } from "intlayer";
311
+
312
+ const counterContent = {
313
+ key: "counter",
314
+ content: {
315
+ label: t({ en: "Counter", fr: "Compteur" }),
316
+ increment: t({ en: "Increment", fr: "Incrémenter" }),
317
+ },
318
+ } satisfies Dictionary;
319
+
320
+ export default counterContent;
321
+ ```
322
+
323
+ ```tsx fileName="src/components/Counter/index.tsx"
324
+ "use client";
325
+
326
+ import { useState } from "react";
327
+ import { useIntlayer } from "next-intlayer";
328
+ import { useNumber } from "next-intlayer/format";
329
+
330
+ export const Counter = () => {
331
+ const { label, increment } = useIntlayer("counter");
332
+ const number = useNumber();
333
+ const [count, setCount] = useState(0);
334
+
335
+ return (
336
+ <div>
337
+ <p>{number(count)}</p>
338
+ <button aria-label={label} onClick={() => setCount((c) => c + 1)}>
339
+ {increment}
340
+ </button>
341
+ </div>
342
+ );
343
+ };
344
+ ```
345
+
346
+ `label` и `increment` строго типизированы: опечатка в имени вызовет ошибку TypeScript, а отсутствие французского текста остановит сборку.
347
+
348
+ ### Синхронный серверный компонент
349
+
350
+ **next-i18next**
351
+
352
+ ```tsx fileName="src/components/ServerCounter.tsx"
353
+ type ServerCounterProps = {
354
+ t: (key: string) => string;
355
+ locale: string;
356
+ count: number;
357
+ };
358
+
359
+ export const ServerCounter = ({ t, locale, count }: ServerCounterProps) => (
360
+ <div>
361
+ <p>{new Intl.NumberFormat(locale).format(count)}</p>
362
+ <button aria-label={t("counter.label")}>{t("counter.increment")}</button>
363
+ </div>
364
+ );
365
+ ```
366
+
367
+ Страница вызывает `i18n.getFixedT(locale, "about")` и пробрасывает `t` и `locale` вниз через props.
368
+
369
+ **Intlayer**
370
+
371
+ ```tsx fileName="src/components/ServerCounter.tsx"
372
+ import { useIntlayer } from "next-intlayer/server";
373
+ import { useNumber } from "next-intlayer/server/format";
374
+
375
+ export const ServerCounter = ({ count }: { count: number }) => {
376
+ const { label, increment } = useIntlayer("counter");
377
+ const number = useNumber();
378
+
379
+ return (
380
+ <div>
381
+ <p>{number(count)}</p>
382
+ <button aria-label={label}>{increment}</button>
383
+ </div>
384
+ );
385
+ };
386
+ ```
387
+
388
+ ## Сохраните API i18next, получите производительность Intlayer
389
+
390
+ Вам не нужно переписывать компоненты, чтобы получить показатели из бенчмарка выше. `@intlayer/i18next`, `@intlayer/react-i18next` и `@intlayer/next-i18next` являются готовыми адаптерами: `useTranslation`, `t()`, `<Trans>`, `{{interpolation}}`, формы множественного числа `_one` / `_other`, суффиксы контекста и `returnObjects` продолжают работать, получая данные из скомпилированных словарей Intlayer.
391
+
392
+ ```ts fileName="next.config.ts"
393
+ import type { NextConfig } from "next";
394
+ import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin";
395
+
396
+ const withIntlayer = createNextI18nPlugin();
397
+
398
+ const nextConfig: NextConfig = {};
399
+
400
+ export default withIntlayer(nextConfig);
401
+ ```
402
+
403
+ ```ts fileName="vite.config.ts"
404
+ import { defineConfig } from "vite";
405
+ import { reactI18nextVitePlugin } from "@intlayer/react-i18next/plugin";
406
+
407
+ export default defineConfig({
408
+ plugins: [reactI18nextVitePlugin()],
409
+ });
410
+ ```
411
+
412
+ В бенчмарке адаптерная версия того же приложения Next.js уменьшилась с **218.5 KB до 150.7 KB** на страницу, с **78.5 KB до 9.7 KB** на компонент, утечка упала с **~90% до 0%**, а гидратация ускорилась с 15.6 ms до 11.3 ms при полностью неизменном коде компонентов. Ваши существующие файлы `locales/{lng}/{ns}.json` могут оставаться источником данных через плагин синхронизации JSON.
413
+
414
+ Смотрите руководства по миграции: [i18next](https://intlayer.org/ru/doc/migration/i18next), [react-i18next](https://intlayer.org/ru/doc/migration/react-i18next), [next-i18next](https://intlayer.org/ru/doc/migration/next-i18next).
415
+
416
+ ## Что и когда выбирать?
417
+
418
+ - **Выбирайте i18next**, если вам необходима его экосистема плагинов (детекторы, бэкенды, ICU, Locize), вы локализуете решения вне React (сервисы Node, чистый JS, другие фреймворки), у команды уже есть практический опыт или переводческая платформа ожидает формат `locales/{lng}/{ns}.json`. Заложите время на организацию пространств имен, настройку бэкенда и ручную поддержку карты маршрутов, если важна скорость.
419
+ - **Выбирайте Intlayer**, если вам нужны **контент внутри компонентов**, **строгий TypeScript**, **ошибки сборки при нехватке строк**, **автоматический tree-shaking и lazy loading**, мгновенное переключение языка, синхронные серверные компоненты и встроенные редакционные инструменты (Visual Editor, CMS, перевод через ИИ, сервер MCP). Идеально подходит для модульных кодовых баз и дизайн-систем.
420
+ - **Выбирайте адаптеры `@intlayer/*-i18next`**, если вы уже используете i18next и хотите получить экономию в размере бандла и прирост скорости без масштабного рефакторинга.
421
+
422
+ ## Похожие сравнения
423
+
424
+ - [next-intl против Intlayer](https://intlayer.org/ru/blog/next-intl-vs-intlayer) (тот же бенчмарк)
425
+ - [Lingui против Intlayer](https://intlayer.org/ru/blog/lingui-vs-intlayer) (тот же бенчмарк)
426
+ - [vue-i18n против Intlayer: бенчмарк](https://intlayer.org/ru/blog/vue-i18n-vs-intlayer-benchmark) (тот же бенчмарк)
427
+ - [next-i18next против next-intl и Intlayer](https://intlayer.org/ru/blog/next-i18next-vs-next-intl-vs-intlayer)
428
+ - [react-i18next против react-intl и Intlayer](https://intlayer.org/ru/blog/react-i18next-vs-react-intl-vs-intlayer)
429
+ - [Устарел ли i18next?](https://intlayer.org/ru/blog/is-i18next-outdated)
430
+
431
+ ## Звезды на GitHub
432
+
433
+ Звезды на GitHub наглядно демонстрируют популярность проекта, доверие разработчиков и перспективы его развития. Хотя они не являются прямой оценкой качества кода, они показывают заинтересованность сообщества и готовность к внедрению.
434
+
435
+ [![График динамики звезд](https://api.star-history.com/chart?repos=i18next%2Fi18next%2Ci18next%2Freact-i18next%2Ci18next%2Fnext-i18next%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#i18next/i18next&i18next/react-i18next&i18next/next-i18next&aymericzip/intlayer)
436
+
437
+ ## Заключение
438
+
439
+ `i18next` по праву занял лидирующие позиции: он поддерживается на любых платформах, располагает плагинами под любые сценарии и развивается более десяти лет. Бенчмарк наглядно раскрывает цену архитектуры, завязанной на runtime. Типичная сборка большинства команд добавляет **+70-77 KB gzip на страницу**, передает **~90% контента с других страниц**, а смена языка с ленивой загрузкой занимает **свыше 100 ms**. Добиться 0% утечки возможно, однако это требует бэкенда, ручной разбивки на namespaces по маршрутам, и все равно оставляет вес на **+9-22 KB** больше, чем у Intlayer.
440
+
441
+ Intlayer переносит всю эту нагрузку на компилятор. Словари для компонентов, ленивая подгрузка по языкам и удаление неиспользуемых текстов являются прямым результатом сборки. На том же приложении: **+0.3 KB на страницу**, **0% утечек**, компоненты **в 3-10 раз меньше**, а язык переключается за **3-4 ms**.
442
+
443
+ Все исходные замеры, тестовые приложения и скрипты опубликованы в [репозитории Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom). Запустите их и убедитесь сами.
444
+
445
+ Подробности смотрите в материале ['Почему Intlayer?'](https://intlayer.org/ru/doc/why).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-02
3
- updatedAt: 2026-09-02
3
+ updatedAt: 2026-09-16
4
4
  title: Устарел ли i18next в 2026 году?
5
5
  description: i18next используется на миллионах сайтов, но его runtime-архитектура 2011 года устаревает. Анализ раздувания бандла, ограничений tree-shaking и замедления инноваций.
6
6
  keywords:
@@ -70,7 +70,7 @@ author: aymericzip
70
70
  | `i18next` core | 2 626 | **259** | Небольшие патчи |
71
71
  | Intlayer | 7 156 | **4 343** | Компилятор, инструменты IDE и движок ИИ |
72
72
 
73
- [![Star History Chart](https://api.star-history.com/chart?repos=i18next%2Fi18next%2Ci18next%2Freact-i18next%2Ci18next%2Fnext-i18next%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#i18next/i18next&i18next/react-i18next&i18next/next-i18next&aymericzip/intlayer)
73
+ [![Star History Chart](https://api.star-history.com/chart?repos=i18next%2Fi18next%2Ci18next%2Freact-i18next%2Ci18next%2Fnext-i18next%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#i18next/i18next&i18next/react-i18next&i18next/next-i18next&aymericzip/intlayer)
74
74
 
75
75
  Компактная библиотека может быть стабильной, но инструменты локализации не стоят на месте: сборщики удаляют неиспользуемый контент во время сборки, языковые модели переводят прямо в CI, а среды разработки используют Language Server (LSP) и ИИ-агентов. Ограниченная временем выполнения архитектура i18next затрудняет внедрение этих инноваций.
76
76
 
@@ -125,6 +125,10 @@ style="border:none;"
125
125
 
126
126
  По умолчанию почти **90% текста**, отправляемого на страницу, относится к другим маршрутам. Ручное разделение на неймспейсы сложно поддерживать без ошибок.
127
127
 
128
+ График ниже оценивает объём контента для теоретического приложения, в котором от 1 до 10 страниц и от 1 до 10 языков, примерно по 30 КБ текста на страницу. Динамическая загрузка по локали убирает ось языков, ограничение контента компонентом или маршрутом убирает ось страниц, и только их сочетание сохраняет объём стабильным.
129
+
130
+ ![Теоретическая утечка контента по архитектуре](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
131
+
128
132
  **Задержка гидратации:**
129
133
 
130
134
  Компоненты с `react-i18next` гидратировались **85 мс** против **24 мс** у Intlayer. Передача объемных структур JSON клиенту замедляет взаимодействие.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-02
3
- updatedAt: 2026-09-02
3
+ updatedAt: 2026-09-16
4
4
  title: Устарел ли next-intl в 2026 году?
5
5
  description: next-intl стал популярным решением для Next.js App Router. Но он по-прежнему создает оверхед в клиентском бандле и требует ручной организации неймспейсов.
6
6
  keywords:
@@ -66,7 +66,7 @@ author: aymericzip
66
66
  - `amannn/next-intl`: **187 коммитов** (обновления зависимостей и небольшие патчи).
67
67
  - `aymericzip/intlayer`: **4 343 коммита** (активная работа над компилятором, плагинами для IDE, MCP-серверами и алгоритмами перевода).
68
68
 
69
- [![Star History Chart](https://api.star-history.com/chart?repos=amannn%2Fnext-intl%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#amannn/next-intl&aymericzip/intlayer)
69
+ [![Star History Chart](https://api.star-history.com/chart?repos=amannn%2Fnext-intl%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#amannn/next-intl&aymericzip/intlayer)
70
70
 
71
71
  Стабильная библиотека полезна, но подходы к i18n изменились: компиляторы удаляют неиспользуемые строки при сборке, нейросети переводят тексты в CI, а среды разработки подключают LSP и ИИ-помощников. Архитектура, сосредоточенная на времени выполнения, с трудом использует эти возможности.
72
72
 
@@ -127,6 +127,10 @@ export default async function RootLayout({ children, params }) {
127
127
 
128
128
  Частично это решается делением на неймспейсы. Но ручное отслеживание привязки текстов к маршрутам трудоемко и часто приводит к сбоям.
129
129
 
130
+ График ниже оценивает объём контента для теоретического приложения, в котором от 1 до 10 страниц и от 1 до 10 языков, примерно по 30 КБ текста на страницу. Динамическая загрузка по локали убирает ось языков, ограничение контента компонентом или маршрутом убирает ось страниц, и только их сочетание сохраняет объём стабильным.
131
+
132
+ ![Теоретическая утечка контента по архитектуре](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
133
+
130
134
  Intlayer решает эту задачу с помощью статического анализа: [компилятор Intlayer](https://intlayer.org/ru/doc/compiler) бандлит исключительно те строки, которые задействованы на конкретном маршруте, снижая утечку до **0.0%**.
131
135
 
132
136
  ## Почему next-intl не поддается tree-shaking
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-02
3
- updatedAt: 2026-09-02
3
+ updatedAt: 2026-09-16
4
4
  title: Устарел ли vue-i18n в 2026 году?
5
5
  description: vue-i18n был стандартом для Vue и Nuxt целое десятилетие. Однако в наших бенчмарках он оказался самым тяжелым runtime i18n в вебе. Разбираем причины.
6
6
  keywords:
@@ -64,7 +64,7 @@ author: aymericzip
64
64
  - `intlify/vue-i18n`: **259 коммитов** (плановые исправления для Vue 3 и Nuxt).
65
65
  - `aymericzip/intlayer`: **4 343 коммита** (развитие компилятора, LSP-утилит и интеграций с ИИ-агентами).
66
66
 
67
- [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
67
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
68
68
 
69
69
  Зрелая библиотека гарантирует стабильность. Но современные фронтенды используют AST-преобразования при сборке, удаление мертвого кода и автоматический перевод нейросетями. Системе, работающей исключительно во время выполнения, сложно использовать эти новшества.
70
70
 
@@ -116,6 +116,12 @@ Runtime `vue-i18n` весит **24.3 КБ gzipped**, что сопоставим
116
116
 
117
117
  Компоненты с локальными областями видимости занимали в среднем 196 КБ в `vue-i18n` из-за дублирования каталогов против **6.5 КБ** в Intlayer.
118
118
 
119
+ **Как растёт утечка:**
120
+
121
+ График ниже оценивает объём контента для теоретического приложения, в котором от 1 до 10 страниц и от 1 до 10 языков, примерно по 30 КБ текста на страницу. Динамическая загрузка по локали убирает ось языков, ограничение контента компонентом или маршрутом убирает ось страниц, и только их сочетание сохраняет объём стабильным.
122
+
123
+ ![Теоретическая утечка контента по архитектуре](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
124
+
119
125
  ## Почему vue-i18n тяжелый?
120
126
 
121
127
  ### Парсер AST в браузере