@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,288 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: "vue-i18n vs @intlayer/vue-i18n: Одинаковый API, Разные Bundle"
5
+ description: Что меняется, когда приложение Vue 3 сохраняет свои вызовы vue-i18n, но обслуживает их через адаптер совместимости @intlayer/vue-i18n. JavaScript на странице, размер runtime, размер компонента и утечки, измеренные на одном коде Vite + Vue, плюс то, что адаптер сохраняет, игнорирует и не может заменить.
6
+ keywords:
7
+ - vue-i18n
8
+ - "@intlayer/vue-i18n"
9
+ - Intlayer
10
+ - Compat adapter
11
+ - Migration
12
+ - Internationalization
13
+ - i18n
14
+ - Benchmark
15
+ - Bundle size
16
+ - Blog
17
+ - Vue
18
+ - Nuxt
19
+ - Vite
20
+ slugs:
21
+ - blog
22
+ - vue-i18n-vs-intlayer-vue-i18n
23
+ author: aymericzip
24
+ ---
25
+
26
+ # vue-i18n VS @intlayer/vue-i18n | Одинаковый API, Разные Bundle
27
+
28
+ `@intlayer/vue-i18n` — это адаптер совместимости: он предоставляет API `vue-i18n` (`createI18n`, `useI18n`, `t()`, `d()`, `n()`, `$t`, `v-t`, `i18n.global.locale`...) и обслуживает его из словарей, скомпилированных Intlayer. Ваши файлы `.vue` не изменяются. Только то, к чему привязан `t("footer.github")`, меняется.
29
+
30
+ В этой статье измеряется эта замена в одном и том же приложении Vite + Vue 3, собранном один раз с `vue-i18n` и один раз с адаптером. Цифры взяты из [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom). Для сравнения `vue-i18n` и Intlayer как библиотек прочитайте [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) и [бенчмарк vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer-benchmark). Это о том, какие изменения вносит адаптер, когда вы оставляете свои компоненты как они есть.
31
+
32
+ <TOC/>
33
+
34
+ > **tl;dr**: На том же приложении Vite + Vue 3 замена `vue-i18n` на `@intlayer/vue-i18n` снизила JavaScript на страницу с **134.9 KB до 47.0 KB** gzip (приложение без i18n весит 41.3 KB), runtime с **24.3 KB до 7.9 KB**, средний компонент с **196 KB до 8.4 KB**, и утечку строк на иностранных страницах с **90% на 0%**, без редактирования файлов `.vue`. `createI18n({ messages })` продолжает работать как fallback; удалите импорты JSON для получения указанных выше значений. SFC блоки `<i18n>` и runtime `setLocaleMessage()` — это два функционала, которые не переносятся.
35
+
36
+ ## Что такое `@intlayer/vue-i18n`
37
+
38
+ `vue-i18n` — это runtime. `createI18n({ messages: { en, fr, ... } })` создает глобальный экземпляр, содержащий все сообщения для каждой локали; `useI18n()` привязывает каждый компонент к нему; `t("footer.github")` проходит по дереву во время рендеринга. Такой дизайн позволяет использовать SFC `<i18n>` блоки и `setLocaleMessage()`, и он же является причиной того, что граф зависимостей каждого компонента включает все дерево.
39
+
40
+ `@intlayer/vue-i18n` сохраняет API и заменяет дерево:
41
+
42
+ 1. **Import aliasing.** `vueI18nVitePlugin()` из `@intlayer/vue-i18n/plugin` обертывает `vite-intlayer` и добавляет `resolve.alias`, так что `vue-i18n` разрешается на `@intlayer/vue-i18n`. Никакой импорт не переименовывается.
43
+ 2. **JSON как источник истины.** Плагин `syncJSON` читает ваш существующий файл `locales/{locale}.json` с `format: "vue-i18n"` (чтобы интерполяция `{name}`, `{0}` и множественные формы `"car | cars"` через pipe анализировались корректно) и записывает переводы обратно, когда CLI или CMS их обновляют.
44
+ 3. **Привязка к месту вызова.** Оптимизирующий проход Intlayer переписывает места вызова `useI18n()` так, чтобы компонент получал словари своих ключей на активном языке в виде импортов, которые bundler может отследить и разделить.
45
+
46
+ ```vue fileName="src/components/Footer.vue"
47
+ <!-- Ваш код, без изменений -->
48
+ <script setup lang="ts">
49
+ import { useI18n } from "vue-i18n";
50
+
51
+ const { t } = useI18n();
52
+ </script>
53
+
54
+ <template>
55
+ <a href="https://github.com/intlayer-org/benchmark-bloom">{{
56
+ t("footer.github")
57
+ }}</a>
58
+ </template>
59
+ ```
60
+
61
+ ```ts fileName="Что компилятор выдает (упрощено)"
62
+ import _dicHash_footer from "../.intlayer/dictionaries/footer.mjs";
63
+ import { useDictionary as useI18n } from "@intlayer/vue-i18n";
64
+
65
+ const { t } = useI18n(_dicHash_footer);
66
+ ```
67
+
68
+ Компонент больше не обращается к глобальному дереву сообщений. Он обращается только к `footer`. Вот почему столбец размера компонента ниже снижается с 196 KB до 8 KB.
69
+
70
+ ## Что адаптер сохраняет, игнорирует и не заменяет
71
+
72
+ | `vue-i18n` API | С `@intlayer/vue-i18n` |
73
+ | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
74
+ | `useI18n()` → `{ t, d, n, te, tm, rt, locale, availableLocales }` | ✅ Сохранено. Ключи `t` типизированы в соответствии с вашими словарями |
75
+ | `t("key", { name })`, `t("key", [a, b])`, `t("key", count)` | ✅ Сохранено. `{name}`, `{0}` и разделённые точками с запятой множественные числа разрешаются как раньше |
76
+ | `d(date, "long")`, `n(value, "currency")` | ✅ Сохранено. `datetimeFormats` / `numberFormats` из `createI18n()` учитываются, поддерживаемые встроенным `Intl` |
77
+ | `i18n.global.locale.value = "fr"` | ✅ Сохранено. `WritableComputedRef` поддерживается Intlayer's client; реактивность работает как раньше |
78
+ | `$t`, `$tc`, `$te`, `$tm`, `$rt`, `$d`, `$n`, `$i18n` (Options API) | ✅ Сохранено. Зарегистрировано в `app.config.globalProperties` с помощью `app.use(i18n)` |
79
+ | `v-t` directive | ✅ Сохранено |
80
+ | `legacy: true` | ✅ Принято |
81
+ | `createI18n({ messages })` | ⚠️ `messages` используются как **резервный вариант во время выполнения** с предупреждением при разработке. Удалите импорты JSON для получения выгоды в размере пакета |
82
+ | `setLocaleMessage()`, `mergeLocaleMessage()` | ❌ Предупреждение и ничего не делать. Загрузка сообщений во время выполнения заменена встроенными словарями |
83
+ | SFC `<i18n>` пользовательские блоки | ❌ Не прочитано. Переместите эти сообщения в JSON локали (или `.content.ts` рядом с компонентом) |
84
+ | `@nuxtjs/i18n` | ⚠️ Отдельный адаптер, см. [документацию совместимости Nuxt](https://intlayer.org/doc/compatibility/nuxtjs-i18n) |
85
+
86
+ ## Бенчмарк
87
+
88
+ ### Что измерялось
89
+
90
+ [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) suite создает **одно и то же приложение Vite + Vue 3** с каждой конфигурацией: **10 страниц** (home, about, blog, careers, contact, FAQ, pricing, products, settings, team), **10 локалей** (`en`, `fr`, `es`, `de`, `it`, `pt`, `zh`, `ja`, `ko`, `ru`), идентичные компоненты и идентичное содержимое. Страницы измеряются на `en` и `fr`.
91
+
92
+ Обе были собраны в **статической** конфигурации, той, которую отправляют большинство проектов Vue: для `vue-i18n` каждый JSON локали импортируется и передается в `createI18n({ messages })`; для адаптера используются те же компоненты с измененными `vite.config.ts` и `intlayer.config.ts` и удаленным импортом `messages`. Встроенный `vue-intlayer` включен для справки.
93
+
94
+ Для каждой сборки suite записывает:
95
+
96
+ - **Lib size**: размер gzip (и минифицированный) пустого компонента, который только импортирует библиотеку i18n.
97
+ - **Page JS**: объем загруженного gzip JavaScript на страницу, усреднённый по всем страницам и локалям.
98
+ - **Locale leak %**: доля переведённых строк в загруженном JS, которые принадлежат локали, которую пользователь **не** просматривает.
99
+ - **Page leak %**: доля переведённых строк в загруженном JS, которые принадлежат странице, на которой пользователь **не** находится.
100
+ - **Component avg**: средний размер gzip каждого компонента, скомпилированного изолированно.
101
+ - **E2E reactivity**: время настенных часов между выбором новой локали и обновлением `html[lang]` в DOM (Playwright, 5 итераций).
102
+ - **Page load**: `PerformanceNavigationTiming.duration`.
103
+
104
+ > Приведённые ниже числа получены из запуска от **2026-09-12** с `vue-i18n` 11.4.0 и `@intlayer/vue-i18n` 9.5.1. Тестовое приложение намеренно небольшого размера (несколько десятков строк на язык), поэтому процентили утечки описывают **закономерность**: они растут с вашим контентом, в то время как стоимость выполнения остаётся неизменной.
105
+
106
+ ### Результаты на Vite + Vue 3
107
+
108
+ | Setup | Strategy | Lib size (gz) | Lib size (min) | Page JS avg (gz) | Locale leak | Page leak | Component avg (gz) | E2E reactivity | Page load |
109
+ | ------------------------ | -------- | ------------: | -------------: | ---------------: | ----------: | --------: | -----------------: | -------------: | ---------: |
110
+ | **base** (без i18n) | - | 0.0 KB | 0.0 KB | 41.3 KB | 0.0% | - | 1.1 KB | 1.8 ms | 10.8 ms |
111
+ | `vue-i18n` | static | 24.3 KB | 83.2 KB | 134.9 KB | 50.0% | 90.0% | 196.0 KB | 2.8 ms | 13.6 ms |
112
+ | **`@intlayer/vue-i18n`** | static | **7.9 KB** | **23.2 KB** | **47.0 KB** | **15.0%** | **0.0%** | **8.4 KB** | **1.5 ms** | **9.3 ms** |
113
+ | `vue-intlayer` (native) | static | 3.9 KB | 11.1 KB | 57.1 KB | 56.8% | 0.0% | 7.7 KB | 4.5 ms | 13.8 ms |
114
+ | `vue-intlayer` (native) | dynamic | 3.9 KB | 11.1 KB | 59.8 KB | 50.0% | 0.0% | 6.5 KB | 4.0 ms | 15.8 ms |
115
+
116
+ > Столбец page-leak базового приложения остается пустым: без библиотеки i18n сканирование отпечатков подхватывает жестко кодированные строки в общих чанках, и число не имеет смысла.
117
+
118
+ **Как это читать**
119
+
120
+ - **88 KB меньше на страницу, те же компоненты.** `vue-i18n` берет приложение 41.3 KB и доводит его до **134.9 KB**. Адаптер сборки тех же компонентов приземляется на **47.0 KB**, на 5.7 KB больше, чем базовое приложение. Большая часть разницы — это 74.9 KB из `src/locales`, которые `createI18n({ messages })` втягивает на каждую страницу, а адаптер никогда не бундлит как блок.
121
+ - **Runtime сжимается в 3 раза.** Пустой компонент, который только импортирует `vue-i18n`, стоит **24.3 KB gzip / 83.2 KB minified**: `@intlify/core-base`, компилятор сообщений и runtime. Адаптер стоит **7.9 KB / 23.2 KB**, большую часть составляет ядро Intlayer плюс поверхность API `vue-i18n`.
122
+ - **Компоненты: в 23 раза меньше.** Компонент `useI18n()`, скомпилированный изолированно, в среднем занимает **196 KB**, потому что `t` привязана к экземпляру, который содержит каждое сообщение каждой локали. С адаптером тот же компонент в среднем занимает **8.4 KB**: он обращается к собственному словарю.
123
+ - **Утечка.** `vue-i18n` поставляет все локали и строки каждой страницы на каждой странице: 50% утечка локали (по двум отпечатанным локалям; при десяти объединённых локалях реальные потери выше), 90% утечка страницы. Адаптер снижает утечку страницы до **0%**, потому что каждый компонент импортирует только свои словари. Утечка локали составляет 15% в этом запуске `static`; `importMode: 'dynamic'` — это параметр, который её устраняет, и эта конфигурация не была частью этого запуска Vue.
124
+ - **Реактивность и загрузка страницы.** Переключение локали дешёво для обоих (1,5-2,8 мс); система реактивности Vue делает это возможным, как только сообщения находятся в памяти. Загрузка страницы уменьшается с 13,6 мс до **9,3 мс**, что соответствует 88 КБ меньше JavaScript для парсинга.
125
+ - **О нативных строках.** `vue-intlayer` в этом запуске собрал все локали в режиме `static` и достиг размера 57,1 КБ с runtime в 3,9 КБ; синхронизированные словари адаптера содержали меньше строк иностранных локалей, отсюда и меньший показатель на одну страницу. Нативный runtime остается самым легким из трех, а его модель `.content.ts` — это эквивалент SFC `<i18n>` блоков.
126
+
127
+ ## Почему меняются цифры
128
+
129
+ Ничего в `src/components/` не изменилось, поэтому улучшения исходят из того, к чему привязан `useI18n`.
130
+
131
+ **С `vue-i18n`** связывание осуществляется через глобальный экземпляр. `createI18n({ messages: { en, fr, ... } })` — это один импорт, который содержит всё; каждый компонент, вызывающий `useI18n()`, может получить доступ ко всему этому, поэтому bundler не может разделить ниже уровня экземпляра. Оптимизация означает, что _вы_ разделяете `en.json` по маршрутам, вызываете `setLocaleMessage()` в guard маршрутизатора и поддерживаете корректность карты маршрут-к-файлу по мере перемещения компонентов.
132
+
133
+ ```bash
134
+ .
135
+ ├── locales
136
+ │ ├── en.json # строки всех страниц
137
+ │ └── fr.json
138
+ └── src
139
+ ├── i18n.ts # createI18n({ messages: { en, fr, ... } })
140
+ ├── main.ts # app.use(i18n)
141
+ └── components
142
+ └── Footer.vue # useI18n(); t("footer.github")
143
+ ```
144
+
145
+ **С `@intlayer/vue-i18n`**, привязка осуществляется к словарю. `syncJSON` превращает каждый ключ верхнего уровня `en.json` в словарь; проход оптимизации предоставляет компоненту нужные ему ключи, импортируя их так, чтобы bundler мог отследить и разделить их по страницам.
146
+
147
+ ```bash
148
+ .
149
+ ├── intlayer.config.ts # syncJSON({ format: "vue-i18n", source: ... })
150
+ ├── locales
151
+ │ ├── en.json # без изменений, остаётся источником истины
152
+ │ └── fr.json
153
+ ├── .intlayer/ # сгенерировано: один словарь на ключ верхнего уровня, на локаль
154
+ └── src
155
+ ├── i18n.ts # createI18n({}) ← импорт messages удалён
156
+ ├── main.ts # app.use(i18n) ← без изменений
157
+ └── components
158
+ └── Footer.vue # useI18n(); t("footer.github") ← без изменений
159
+ ```
160
+
161
+ Импорт `messages` в `i18n.ts` — это одна строка, которую нужно удалить. Это 88 KB.
162
+
163
+ ## Миграция в три шага
164
+
165
+ <Steps>
166
+ <Step number={1} title="Установка">
167
+
168
+ ```bash packageManager="npm"
169
+ npx intlayer init --interactive
170
+ ```
171
+
172
+ ```bash packageManager="pnpm"
173
+ pnpm dlx intlayer init --interactive
174
+ ```
175
+
176
+ ```bash packageManager="yarn"
177
+ yarn dlx intlayer init --interactive
178
+ ```
179
+
180
+ ```bash packageManager="bun"
181
+ bunx intlayer init --interactive
182
+ ```
183
+
184
+ Команда обнаруживает `vue-i18n`, устанавливает `intlayer`, `vue-intlayer`, `@intlayer/vue-i18n` и `@intlayer/sync-json-plugin`, и предварительно заполняет `intlayer.config.ts`. Оставьте `vue-i18n` установленным: это peer dependency и предоставляет типы.
185
+
186
+ </Step>
187
+ <Step number={2} title="Укажите Intlayer на файлы локалей">
188
+
189
+ ```ts fileName="intlayer.config.ts"
190
+ import { Locales, type IntlayerConfig } from "intlayer";
191
+ import { syncJSON } from "@intlayer/sync-json-plugin";
192
+
193
+ const config: IntlayerConfig = {
194
+ internationalization: {
195
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
196
+ defaultLocale: Locales.ENGLISH,
197
+ },
198
+ dictionary: {
199
+ // "static" упаковывает все локали; "dynamic" загружает активную по требованию
200
+ importMode: "dynamic",
201
+ format: "vue-i18n",
202
+ },
203
+ plugins: [
204
+ syncJSON({
205
+ // диалект vue-i18n: {name}, {0}, "car | cars"
206
+ format: "vue-i18n",
207
+ source: ({ locale }) => `./locales/${locale}.json`,
208
+ location: "locales",
209
+ }),
210
+ ],
211
+ };
212
+
213
+ export default config;
214
+ ```
215
+
216
+ `locales/{locale}.json` остаётся на месте. Каждый top-level key (`footer`, `hero`...) становится словарём.
217
+
218
+ </Step>
219
+ <Step number={3} title="Добавьте плагин и удалите импорт сообщений">
220
+
221
+ ```ts fileName="vite.config.ts"
222
+ import { defineConfig } from "vite";
223
+ import vue from "@vitejs/plugin-vue";
224
+ import { vueI18nVitePlugin } from "@intlayer/vue-i18n/plugin";
225
+
226
+ export default defineConfig({
227
+ plugins: [vue(), vueI18nVitePlugin()],
228
+ });
229
+ ```
230
+
231
+ ```ts fileName="src/i18n.ts"
232
+ import { createI18n } from "vue-i18n";
233
+
234
+ // До: createI18n({ locale: "en", messages: { en, fr, es } })
235
+ export const i18n = createI18n({ locale: "en" });
236
+ ```
237
+
238
+ `vueI18nVitePlugin()` оборачивает `vite-intlayer` (наблюдение за содержимым, компиляция словаря, шаг оптимизации) и создает алиас `vue-i18n` на адаптер. Удаление импорта `messages` — это то, что уменьшает размер на 88 KB; если оставить его, приложение продолжит работать, но будет содержать оба варианта.
239
+
240
+ </Step>
241
+ </Steps>
242
+
243
+ ### Что можно удалить впоследствии
244
+
245
+ | Файл / паттерн | Причина |
246
+ | -------------------------------------------------- | ------------------------------------------------------------------------------------ |
247
+ | `import en from "./locales/en.json"` и аналогичные | Используется только как fallback адаптером. Именно отсюда взялись 88 KB |
248
+ | `setLocaleMessage()` в router guards | No-op. Загрузка для каждого маршрута теперь работает через компилятор |
249
+ | `@intlify/unplugin-vue-i18n` | Не требуется: он предкомпилирует сообщения и блоки SFC, которые адаптер не читает |
250
+ | SFC блоки `<i18n>` | Не читаются; переместите их в locale JSON или в `.content.ts` для каждого компонента |
251
+
252
+ ### Что вы получите кроме сокращения размера
253
+
254
+ - **Типизированные ключи.** `t("footer.github")` типизируется против скомпилированного словаря `footer`; неправильный путь — это ошибка TypeScript вместо отображения ключа как текста.
255
+ - **`npx intlayer test`** прерывает CI при отсутствии ключа в любой локали. **`npx intlayer fill`** переводит отсутствующие ключи с помощью вашего поставщика (OpenAI, Anthropic, Mistral, Gemini...) и записывает их обратно в `locales/{locale}.json`.
256
+ - **Visual Editor и CMS** работают с одним и тем же JSON, поэтому не разработчики могут редактировать через UI, а файлы обновляются автоматически.
257
+ - **Постепенный переход на `.content.ts`.** Любой компонент может переключиться с `useI18n()` на `useIntlayer("footer")` с сопутствующим файлом контента. JSON и `.content.ts` словари сосуществуют и объединяются.
258
+
259
+ ## Ограничения, которые нужно знать перед началом
260
+
261
+ - **SFC `<i18n>` блоки не читаются.** Если ваши сообщения находятся внутри компонентов, они должны переместиться в файлы локалей (или в `.content.ts`, что является тем же самым с типами).
262
+ - **Загрузка сообщений во время выполнения исчезла.** `setLocaleMessage()` и `mergeLocaleMessage()` выдают предупреждение и возвращают результат. Переводы, полученные из CMS во время выполнения, требуют CMS Intlayer или команд `intlayer pull` / `push`.
263
+ - **`messages` — это fallback, не бесплатно.** Сохранение импортов JSON в `createI18n()` оставляет 75 KB в бандле. Удалите их после того, как пройдёт `intlayer test`.
264
+ - **Адаптер не является нативным runtime.** 7.9 KB против 3.9 KB для `vue-intlayer`. Как только каждый компонент переместится на `useIntlayer`, удалите его.
265
+
266
+ ## Когда что использовать?
267
+
268
+ - **Оставайтесь на `vue-i18n`**, если ваше приложение зависит от SFC `<i18n>` блоков, от runtime потоков `setLocaleMessage()`, или если 90 KB на странице не являются проблемой для вашей аудитории.
269
+ - **Используйте `@intlayer/vue-i18n`**, если вы работаете с `vue-i18n` и хотите снизить размер на 88 KB, иметь компоненты меньше в 23 раза, 0% утечки страниц, типизированные ключи и CI проверки без редактирования файла `.vue`. Это точка входа для существующей `vue-i18n` codebase.
270
+ - **Переходите на native (`vue-intlayer`)** для новых проектов или когда адаптер выполнит свою роль. Он имеет самый легкий runtime (3.9 KB) и модель `.content.ts` на компонент, который заменяет `<i18n>` блоки типизированным контентом.
271
+
272
+ ## Связанные сравнения
273
+
274
+ - [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) (возможности и DX)
275
+ - [vue-i18n vs Intlayer benchmark](https://intlayer.org/blog/vue-i18n-vs-intlayer-benchmark) (библиотеки, одинаковый benchmark)
276
+ - [next-intl vs @intlayer/next-intl](https://intlayer.org/blog/next-intl-vs-intlayer-next-intl) (одна серия адаптеров)
277
+ - [i18next vs @intlayer/i18next](https://intlayer.org/blog/i18next-vs-intlayer-i18next) (одна серия адаптеров)
278
+ - [Lingui vs @intlayer/lingui](https://intlayer.org/blog/lingui-vs-intlayer-lingui) (одна серия адаптеров)
279
+ - [Руководство по миграции: vue-i18n на Intlayer](https://intlayer.org/doc/migration/vue-i18n)
280
+ - [Compat adapter reference: vue-i18n](https://intlayer.org/doc/compatibility/vue-i18n), [Nuxt i18n](https://intlayer.org/doc/compatibility/nuxtjs-i18n)
281
+
282
+ ## Заключение
283
+
284
+ `@intlayer/vue-i18n` изменяет то, к чему привязан `useI18n()`: от глобального экземпляра, содержащего все сообщения каждой локали, к словарю, скомпилированному для этого компонента. На том же приложении Vite + Vue 3 это дает **88 KB меньше на странице**, **runtime в 3 раза меньше**, **компоненты в 23 раза меньше** и **0% утечек страницы**, при этом требуя только файл конфигурации, одну строку плагина и одно удаленное импортирование. SFC блоки `<i18n>` и загрузка сообщений во время выполнения — это две вещи, которые он не поддерживает, и native `vue-intlayer` runtime при этом остается вполовину меньше по размеру.
285
+
286
+ Все исходные данные, тестовые приложения и сценарии находятся в [репозитории Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom). Запустите его самостоятельно.
287
+
288
+ Обратитесь к документации ['Почему Intlayer?'](https://intlayer.org/doc/why) для получения дополнительной информации.
@@ -0,0 +1,54 @@
1
+ ---
2
+ createdAt: 2026-09-13
3
+ updatedAt: 2026-09-13
4
+ title: "vue-i18n vs Intlayer: Бенчмарк 2026"
5
+ description: vue-i18n и Intlayer измерены на одном приложении Vite + Vue 3. Размер библиотеки, JavaScript на странице, утечка контента, размер компонента и реактивность переключения локали, с объяснением цифр.
6
+ keywords:
7
+ - vue-i18n
8
+ - Intlayer
9
+ - Internationalization
10
+ - i18n
11
+ - Benchmark
12
+ - Bundle size
13
+ - Blog
14
+ - Vue
15
+ - Nuxt
16
+ - Vite
17
+ - JavaScript
18
+ slugs:
19
+ - blog
20
+ - vue-i18n-vs-intlayer-benchmark
21
+ author: aymericzip
22
+ ---
23
+
24
+ # vue-i18n VS Intlayer | Бенчмарк интернационализации Vue (i18n)
25
+
26
+ `vue-i18n` — справочная библиотека i18n для Vue. Intlayer — альтернатива на основе компилятора с областью действия компонента и интеграцией Vue (`vue-intlayer`). Мы уже сравнивали их [функции и опыт разработчика](https://intlayer.org/blog/vue-i18n-vs-intlayer). Эта статья рассматривает, во что обходится каждый из них после сборки приложения.
27
+
28
+ Данные получены из [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom), открытого набора, который собирает одно и то же приложение с каждой библиотекой и записывает то, что браузер фактически загружает и выполняет.
29
+
30
+ <TOC/>
31
+
32
+ > **tl;dr**: На том же приложении Vite + Vue 3 `vue-i18n` отправляет **134.9 KB** сжатого JavaScript на страницу по сравнению с **41.3 KB** для приложения без i18n. Intlayer отправляет **57.1 KB**. Сам runtime `vue-i18n` весит **24.3 KB gzip** (в 6 раз больше, чем **3.9 KB** Intlayer), каждая страница содержит **90% строк иностранных страниц**, и компонент, скомпилированный в изоляции, притягивает **196 KB**, потому что он привязан к глобальному дереву сообщений. Адаптер `@intlayer/vue-i18n` сохраняет API `vue-i18n` и измеряется **47.0 KB** на страницу.
33
+
34
+ ## Вкратце
35
+
36
+ - **vue-i18n** - Библиотека i18n де-факто для Vue 2 / Vue 3 и ядро `@nuxtjs/i18n`. ICU-style сообщения, SFC блоки `<i18n>`, директива `v-t`, форматеры `d()` / `n()`, большая экосистема. Сообщения регистрируются на глобальном экземпляре в `createI18n()`; ленивая загрузка по локали — это ручной паттерн `setLocaleMessage()`, а разделение по маршрутам вы строите сами.
37
+ - **Intlayer** - Компонент-центричная модель контента. Словари `.content.ts` находятся рядом с компонентом, который они обслуживают, компилятор времени сборки (`vite-intlayer`) удаляет неиспользуемый код и выполняет ленивую загрузку по компоненту и по локали, строгие типы TypeScript генерируются из вашего контента, и отсутствующие переводы приводят к ошибке на этапе сборки. Поставляется с помощниками маршрутизатора / SEO, Visual Editor / CMS и AI-ассистентом перевода.
38
+
39
+ | Библиотека | GitHub звёзд | Всего коммитов | Последний коммит | Первая версия | NPM версия | Загрузки NPM |
40
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
41
+ | `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) |
42
+ | `intlify/vue-i18n` | [![GitHub Repo stars](https://img.shields.io/github/stars/intlify/vue-i18n?style=for-the-badge&label=%E2%AD%90%20stars)](https://github.com/intlify/vue-i18n/stargazers) | [![GitHub commit activity](https://img.shields.io/github/commit-activity/t/intlify/vue-i18n?style=for-the-badge&label=commits)](https://github.com/intlify/vue-i18n/commits) | [![Last Commit](https://img.shields.io/github/last-commit/intlify/vue-i18n?style=for-the-badge)](https://github.com/intlify/vue-i18n/commits) | Дек 2016 | [![npm](https://img.shields.io/npm/v/vue-i18n?style=for-the-badge)](https://www.npmjs.com/package/vue-i18n) | [![npm downloads](https://img.shields.io/npm/dm/vue-i18n?style=for-the-badge)](https://www.npmjs.com/package/vue-i18n) |
43
+
44
+ > Значки обновляются автоматически. Снимки будут отличаться со временем.
45
+
46
+ ## Сравнение функций рядом
47
+
48
+ | Функция | `vue-intlayer` (Intlayer) | `vue-i18n` |
49
+ | ---------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
50
+ | **Переводы рядом с компонентами** | ✅ Да, `.content.ts` расположен вместе с каждым компонентом | ✅ Через блоки SFC `<i18n>` (опционально); глобальные каталоги — это обычная настройка |
51
+ | **Интеграция TypeScript** | ✅ Строгие типы автоматически генерируются из контента | ✅ Хорошая типизация; строгая безопасность ключей требует типизации схемы и дисциплины |
52
+ | **Обнаружение отсутствующих переводов** | ✅ Ошибка TypeScript + ошибка/предупреждение во время сборки | ⚠️ Fallback во время выполнения + предупреждение в консоли |
53
+ | **Богатое содержимое (компоненты / Markdown)** | ✅ Прямая поддержка | ⚠️ Интерполяция компонента `<i18n-t>`; Markdown через внешние плагины |
54
+ | **Поддержка ICU** | ⚠️ WIP | ✅ Да |
@@ -49,7 +49,7 @@ Bu soru, JavaScript i18n ekosistemini on yılı aşkın bir süre boyunca şekil
49
49
 
50
50
  Bu makale, 2011'den 2026'ya uzanan bu süreci ele almaktadır: her araç neslinin çözmeye çalıştığı sorunlar, nelerin işe yaradığı, nelerin yetersiz kaldığı ve modern frontend mimarilerinin günümüz i18n çözümlerini nasıl etkilediği.
51
51
 
52
- ![JavaScript Uluslararasılaştırma Kütüphaneleri Ekosistemi](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.png?raw=true)
52
+ ![JavaScript Uluslararasılaştırma Kütüphaneleri Ekosistemi](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
53
53
 
54
54
  ## İçindekiler
55
55
 
@@ -149,87 +149,87 @@ Aşağıdaki sekmeler, farklı ekosistemlerin bu gereksinimlere nasıl yanıt ve
149
149
 
150
150
  <Tab label="Core JavaScript" value="javascript">
151
151
 
152
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
153
- | ------------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
154
- | Ocak 2012 | `i18next` | Tarayıcı ve Node.js için herhangi bir çatıya bağımlı olmadan çalışma zamanı sözlük aramasını standartlaştırmak. | Çekirdek çeviri motorunu yükleyicilerden, dil algılayıcılardan ve önbellekten ayıran modüler eklenti mimarisi. |
155
- | Şubat 2021 | `typesafe-i18n` | Tiplenmemiş metin anahtarlarından kaynaklanan sessiz çalışma zamanı hatalarını ve bozuk değişken yerleşimlerini engellemek. | Çeviri nesnelerinden doğrudan üretilen, çalışma zamanı bağımlılığı olmayan tam tipli çeviri fonksiyonları. |
156
- | Ekim 2023 | `paraglide` (`@inlang/paraglide-js`) | Çalışma zamanı sözlük aramalarını, ağır ayrıştırıcıları ve gereksiz paket şişkinliğini ortadan kaldırmak. | Mesajları doğrudan tree-shaking uyumlu saf ECMAScript modüllerine ve JavaScript fonksiyonlarına derlemek. |
157
- | Nisan 2024 | `intlayer` | Yönetimi güç isim alanlarını kaldırmak, sayfalar arası metin sızıntısını önlemek, git çakışmalarını azaltmak ve TypeScript tipi. | `.content` dosyalarını doğrudan bileşenlerin yanına konumlandırma, otomatik tip üretimi, dahili görsel CMS ve yapay zeka CLI çeviri araçları. |
158
- | Haziran 2025 | `wuchale` | Geliştirme esnasında metinleri elle çıkarma ve yapay çeviri anahtarları tanımlama külfetini ortadan kaldırmak. | Satır içi metinleri algılayıp build esnasında ek kod sarmalayıcısı olmadan yerelleştirilmiş fonksiyonlara dönüştüren AST ön işlemcisi. |
152
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
153
+ | ------------ | ------------------------------------ | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
154
+ | Ocak 2012 | `i18next` | Jan Mühlemann (`@jamuhl`) | Tarayıcı ve Node.js için herhangi bir çatıya bağımlı olmadan çalışma zamanı sözlük aramasını standartlaştırmak. | Çekirdek çeviri motorunu yükleyicilerden, dil algılayıcılardan ve önbellekten ayıran modüler eklenti mimarisi. |
155
+ | Şubat 2021 | `typesafe-i18n` | Ivan Hofer (`@ivanhofer`) | Tiplenmemiş metin anahtarlarından kaynaklanan sessiz çalışma zamanı hatalarını ve bozuk değişken yerleşimlerini engellemek. | Çeviri nesnelerinden doğrudan üretilen, çalışma zamanı bağımlılığı olmayan tam tipli çeviri fonksiyonları. |
156
+ | Ekim 2023 | `paraglide` (`@inlang/paraglide-js`) | Samuel Stroschein (`@samuelstroschein`) / Inlang (`@inlang`) | Çalışma zamanı sözlük aramalarını, ağır ayrıştırıcıları ve gereksiz paket şişkinliğini ortadan kaldırmak. | Mesajları doğrudan tree-shaking uyumlu saf ECMAScript modüllerine ve JavaScript fonksiyonlarına derlemek. |
157
+ | Ağustos 2024 | `intlayer` | Aymeric Pineau (`@aymericzip`) | Yönetimi güç isim alanlarını kaldırmak, sayfalar arası metin sızıntısını önlemek, git çakışmalarını azaltmak ve TypeScript tipi. | `.content` dosyalarını doğrudan bileşenlerin yanına konumlandırma, otomatik tip üretimi, dahili görsel CMS ve yapay zeka CLI çeviri araçları. |
158
+ | Haziran 2025 | `wuchale` | Kidus Adugna (`@K1DV5`) | Geliştirme esnasında metinleri elle çıkarma ve yapay çeviri anahtarları tanımlama külfetini ortadan kaldırmak. | Satır içi metinleri algılayıp build esnasında ek kod sarmalayıcısı olmadan yerelleştirilmiş fonksiyonlara dönüştüren AST ön işlemcisi. |
159
159
 
160
160
  </Tab>
161
161
 
162
162
  <Tab label="React" value="react">
163
163
 
164
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
165
- | ------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
166
- | Haziran 2014 | `react-intl` | React içinde sayı, tarih, para birimi ve karmaşık çoğul ifadelerin biçimlendirilmesini standartlaştırmak. | ICU MessageFormat ve ECMA-402 standartlarını hayata geçiren bildirimsel bileşenler (`<FormattedMessage>`, `<FormattedDate>`). |
167
- | Aralık 2015 | `react-i18next` | React için reaktif arayüz güncellemelerini destekleyen doğal bir `i18next` entegrasyonu sunmak. | React ile birlikte gelişim: Higher-Order Components yapısından `<Trans>` JSX interpolasyonuna ve `useTranslation` kancasına geçiş. |
168
- | Ocak 2018 | `@lingui/react` | Çalışma zamanında çalışan ICU ayrıştırıcılarının paket boyutuna getirdiği yükü hafifletmek. | `<Trans>` ve `t` yapılarını derleme sırasında kompakt indeksli dizilere dönüştüren Babel/SWC makroları. |
169
- | Aralık 2020 | `use-intl` | Geleneksel React i18n kütüphanelerine kıyasla hafif, kanca odaklı ve tip güvenli bir alternatif sağlamak. | Derin TypeScript entegrasyonuna sahip ergonomik `useTranslations` ve `useFormatter` kancaları. |
170
- | Şubat 2021 | `@tolgee/react` | Geliştiriciler, çevirmenler ve tasarımcılar arasındaki geri bildirim sürecini hızlandırmak. | Kullanıcıların Alt tuşuyla metne tıklayıp yerinde düzenleme yapmasına ve anlık ekran görüntüsü almasına olanak tanıyan tarayıcı içi düzenleme. |
171
- | Nisan 2024 | `react-intlayer` | Merkezi JSON dosyaları ve karmaşık isim alanları olmadan React yaşam döngüsüne özel yüksek performanslı bir çözüm sunmak. | React render süreçlerine optimize `useIntlayer` kancası, otomatik TypeScript tipleri, bileşen bazlı tree-shaking ve doğrudan görsel CMS eşitlemesi. |
172
- | Temmuz 2024 | `gt-react` | Manuel dosya dışa aktarımlarını ve çeviri bakım süreçlerini otomatikleştirmek. | Bulut tabanlı çeviri süreçleriyle doğrudan React bileşenleri içerisinde otomatik yapay zeka yerelleştirmesi. |
173
- | Ağustos 2025 | `@wuchale/jsx` | JSX yazarken elle anahtar tanımlama ve yinelenen kancalar kullanma ihtiyacını ortadan kaldırmak. | Ham JSX metin düğümlerini otomatik olarak çıkarıp yerelleştirilmiş karşılıklarına dönüştüren AST dönüşümü. |
164
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
165
+ | ------------ | ---------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
166
+ | Haziran 2014 | `react-intl` | Yahoo! / FormatJS | React içinde sayı, tarih, para birimi ve karmaşık çoğul ifadelerin biçimlendirilmesini standartlaştırmak. | ICU MessageFormat ve ECMA-402 standartlarını hayata geçiren bildirimsel bileşenler (`<FormattedMessage>`, `<FormattedDate>`). |
167
+ | Aralık 2015 | `react-i18next` | Jan Mühlemann (`@jamuhl`) | React için reaktif arayüz güncellemelerini destekleyen doğal bir `i18next` entegrasyonu sunmak. | React ile birlikte gelişim: Higher-Order Components yapısından `<Trans>` JSX interpolasyonuna ve `useTranslation` kancasına geçiş. |
168
+ | Ocak 2018 | `@lingui/react` | Tomáš Ehrlich (`@tricoder42`) | Çalışma zamanında çalışan ICU ayrıştırıcılarının paket boyutuna getirdiği yükü hafifletmek. | `<Trans>` ve `t` yapılarını derleme sırasında kompakt indeksli dizilere dönüştüren Babel/SWC makroları. |
169
+ | Aralık 2020 | `use-intl` | Jan Amann (`@amannn`) | Geleneksel React i18n kütüphanelerine kıyasla hafif, kanca odaklı ve tip güvenli bir alternatif sağlamak. | Derin TypeScript entegrasyonuna sahip ergonomik `useTranslations` ve `useFormatter` kancaları. |
170
+ | Şubat 2021 | `@tolgee/react` | Jan Cizmar (`@jcizmar`) | Geliştiriciler, çevirmenler ve tasarımcılar arasındaki geri bildirim sürecini hızlandırmak. | Kullanıcıların Alt tuşuyla metne tıklayıp yerinde düzenleme yapmasına ve anlık ekran görüntüsü almasına olanak tanıyan tarayıcı içi düzenleme. |
171
+ | Ağustos 2024 | `react-intlayer` | Aymeric Pineau (`@aymericzip`) | Merkezi JSON dosyaları ve karmaşık isim alanları olmadan React yaşam döngüsüne özel yüksek performanslı bir çözüm sunmak. | React render süreçlerine optimize `useIntlayer` kancası, otomatik TypeScript tipleri, bileşen bazlı tree-shaking ve doğrudan görsel CMS eşitlemesi. |
172
+ | Temmuz 2024 | `gt-react` | Ernest McCarter (`@eoinest`) | Manuel dosya dışa aktarımlarını ve çeviri bakım süreçlerini otomatikleştirmek. | Bulut tabanlı çeviri süreçleriyle doğrudan React bileşenleri içerisinde otomatik yapay zeka yerelleştirmesi. |
173
+ | Haziran 2025 | `@wuchale/jsx` | Kidus Adugna (`@K1DV5`) | JSX yazarken elle anahtar tanımlama ve yinelenen kancalar kullanma ihtiyacını ortadan kaldırmak. | Ham JSX metin düğümlerini otomatik olarak çıkarıp yerelleştirilmiş karşılıklarına dönüştüren AST dönüşümü. |
174
174
 
175
175
  </Tab>
176
176
 
177
177
  <Tab label="Next.js" value="nextjs">
178
178
 
179
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
180
- | ----------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
- | Kasım 2018 | `next-i18next` | Next.js Pages Router üzerinde istemci tarafında istek zincirleri yaratmadan `i18next` ile SSR ve SSG desteği sağlamak. | Yerelleştirilmiş isim alanlarını sayfa proplarına aktaran `serverSideTranslations` ve `appWithTranslation` fonksiyonları. |
182
- | Aralık 2019 | `next-translate` | Pages Router projelerinde yapılandırmayı basitleştirmek ve paket boyutunu düşürmek. | Yalnızca ilgili sayfanın ihtiyaç duyduğu çeviri isim alanlarını otomatik olarak enjekte eden Webpack loader eklentisi. |
183
- | Kasım 2020 | `next-intl` | Uluslararasılaştırmayı App Router, React Server Components (RSC) ve akışlı (streaming) SSR mimarisine göre yeniden kurmak. | İstemci tarafında zorunlu JavaScript çalıştırmadan Next.js App Router middleware, Server Actions ve asenkron Server Components ile doğrudan entegrasyon. |
184
- | Temmuz 2022 | `next-international` | Next.js için istemci paketine minimum yük getirerek TypeScript tip güvenliğini en üst düzeye çıkarmak. | App Router ve Pages Router için hafif adaptörlerle birlikte kapsamı sınırlandırılmış anahtarlar için katı tip üretimi. |
185
- | Nisan 2024 | `paraglide-next` (`@inlang/paraglide-next`) | Next.js App Router ve Pages Router için çalışma zamanı kütüphanesi gerektirmeyen derlenmiş mesajlar sunmak. | RSC ve istemci paketlerinde çalışma zamanı JSON ayrıştırmasını önleyen, tree-shaking uyumlu mesaj fonksiyonlarıyla eşleştirilmiş middleware yönlendirmesi. |
186
- | Nisan 2024 | `next-intlayer` | `t()` fonksiyonlarını veya sözlükleri bileşenler arasında prop olarak aktarma zorunluluğunu ortadan kaldırmak. | Prop-drilling yapmadan senkron Server Components içinde doğrudan `useIntlayer` çağrısı, gecikmesiz sunucu render'ı, rotalama ara yazılımı ve canlı CMS. |
187
- | Eylül 2024 | `gt-next` | Yapay zeka ile Next.js projelerinde çok dilli içerik üretimini ve dinamik rota yönetimini otomatikleştirmek. | Bulut tabanlı makine çevirisini Next.js edge ara yazılımı ve önbellek katmanlarıyla birleştiren App Router entegrasyonu. |
179
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
180
+ | ------------ | ------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | Kasım 2018 | `next-i18next` | Isaac Hinman (`@isaachinman`) | Next.js Pages Router üzerinde istemci tarafında istek zincirleri yaratmadan `i18next` ile SSR ve SSG desteği sağlamak. | Yerelleştirilmiş isim alanlarını sayfa proplarına aktaran `serverSideTranslations` ve `appWithTranslation` fonksiyonları. |
182
+ | Aralık 2020 | `next-translate` | Arvin Wiyono (`@arvinn`) / Vinissimus (`@vinissimus`) | Pages Router projelerinde yapılandırmayı basitleştirmek ve paket boyutunu düşürmek. | Yalnızca ilgili sayfanın ihtiyaç duyduğu çeviri isim alanlarını otomatik olarak enjekte eden Webpack loader eklentisi. |
183
+ | Aralık 2020 | `next-intl` | Jan Amann (`@amannn`) | Uluslararasılaştırmayı App Router, React Server Components (RSC) ve akışlı (streaming) SSR mimarisine göre yeniden kurmak. | İstemci tarafında zorunlu JavaScript çalıştırmadan Next.js App Router middleware, Server Actions ve asenkron Server Components ile doğrudan entegrasyon. |
184
+ | Temmuz 2022 | `next-international` | Tom Dussaix (`@tom-dussaix`) | Next.js için istemci paketine minimum yük getirerek TypeScript tip güvenliğini en üst düzeye çıkarmak. | App Router ve Pages Router için hafif adaptörlerle birlikte kapsamı sınırlandırılmış anahtarlar için katı tip üretimi. |
185
+ | Ekim 2023 | `paraglide-next` (`@inlang/paraglide-next`) | Samuel Stroschein (`@samuelstroschein`) / Inlang (`@inlang`) | Next.js App Router ve Pages Router için çalışma zamanı kütüphanesi gerektirmeyen derlenmiş mesajlar sunmak. | RSC ve istemci paketlerinde çalışma zamanı JSON ayrıştırmasını önleyen, tree-shaking uyumlu mesaj fonksiyonlarıyla eşleştirilmiş middleware yönlendirmesi. |
186
+ | Ağustos 2024 | `next-intlayer` | Aymeric Pineau (`@aymericzip`) | `t()` fonksiyonlarını veya sözlükleri bileşenler arasında prop olarak aktarma zorunluluğunu ortadan kaldırmak. | Prop-drilling yapmadan senkron Server Components içinde doğrudan `useIntlayer` çağrısı, gecikmesiz sunucu render'ı, rotalama ara yazılımı ve canlı CMS. |
187
+ | Temmuz 2024 | `gt-next` | Ernest McCarter (`@eoinest`) | Yapay zeka ile Next.js projelerinde çok dilli içerik üretimini ve dinamik rota yönetimini otomatikleştirmek. | Bulut tabanlı makine çevirisini Next.js edge ara yazılımı ve önbellek katmanlarıyla birleştiren App Router entegrasyonu. |
188
188
 
189
189
  </Tab>
190
190
 
191
191
  <Tab label="Vue & Nuxt" value="vue">
192
192
 
193
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
194
- | ------------ | -------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
195
- | Mayıs 2014 | `vue-i18n` | Vue uygulamaları için doğal ve reaktif bir uluslararasılaştırma deneyimi sunmak. | Vue reaktivite sistemine tam uyum, şablon direktifleri (`v-t`), `$t` yardımcıları ve Single-File Component içinde `<i18n>` özel blokları. |
196
- | Kasım 2017 | `@nuxt/i18n` | Nuxt üzerinde yerelleştirilmiş URL rotaları, SEO hreflang etiketleri ve SSR hidrasyonunu yönetmek. | Yerelleştirilmiş rotaları (önek, alan adı) üreten, SEO meta etiketlerini yöneten ve dil parçalarını tembel (lazy) yükleyen tam kapsamlı yönlendirme modülü. |
197
- | Ağustos 2019 | `fluent-vue` | Vue projelerinde karmaşık gramer cinsiyetlerini, durum eklerini ve asimetrik dil yapılarını desteklemek. | Dildeki incelikler için karmaşık koşullu mantıklar yazma zorunluluğunu ortadan kaldıran Mozilla Project Fluent sözdizimi entegrasyonu. |
198
- | Nisan 2025 | `vue-intlayer` | Vue 3 Composition API ve Nuxt için küresel kapsamı kirletmeden çalışan yerel bir Intlayer entegrasyonu sunmak. | Vue 3 reaktivite takibine uygun `useIntlayer` composable'ı, bileşen bazlı izolasyon, eksiksiz TypeScript otomatik tamamlama ve görsel editör uyumluluğu. |
193
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
194
+ | ------------ | -------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
195
+ | Mayıs 2014 | `vue-i18n` | Kazupon (`@kazupon`) | Vue uygulamaları için doğal ve reaktif bir uluslararasılaştırma deneyimi sunmak. | Vue reaktivite sistemine tam uyum, şablon direktifleri (`v-t`), `$t` yardımcıları ve Single-File Component içinde `<i18n>` özel blokları. |
196
+ | Kasım 2017 | `@nuxt/i18n` | Nuxt Topluluğu | Nuxt üzerinde yerelleştirilmiş URL rotaları, SEO hreflang etiketleri ve SSR hidrasyonunu yönetmek. | Yerelleştirilmiş rotaları (önek, alan adı) üreten, SEO meta etiketlerini yöneten ve dil parçalarını tembel (lazy) yükleyen tam kapsamlı yönlendirme modülü. |
197
+ | Ağustos 2020 | `fluent-vue` | Mozilla (`@mozilla`) / Demivan (`@demivan`) | Vue projelerinde karmaşık gramer cinsiyetlerini, durum eklerini ve asimetrik dil yapılarını desteklemek. | Dildeki incelikler için karmaşık koşullu mantıklar yazma zorunluluğunu ortadan kaldıran Mozilla Project Fluent sözdizimi entegrasyonu. |
198
+ | Ocak 2025 | `vue-intlayer` | Aymeric Pineau (`@aymericzip`) | Vue 3 Composition API ve Nuxt için küresel kapsamı kirletmeden çalışan yerel bir Intlayer entegrasyonu sunmak. | Vue 3 reaktivite takibine uygun `useIntlayer` composable'ı, bileşen bazlı izolasyon, eksiksiz TypeScript otomatik tamamlama ve görsel editör uyumluluğu. |
199
199
 
200
200
  </Tab>
201
201
 
202
202
  <Tab label="Angular" value="angular">
203
203
 
204
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
205
- | ----------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
206
- | Şubat 2017 | `ngx-translate` | Her dil için ayrı paketler derlemeden Angular üzerinde çalışma zamanında dinamik çeviri desteği sağlamak. | Dinamik dil yükleme ve anlık geçiş imkanı veren `TranslateService` servisi ve `translate` boru hattı (pipe). |
207
- | Temmuz 2019 | `@ngneat/transloco` | Önceki Angular i18n kütüphanelerindeki performans tıkanıklıklarını, yetersiz kapsam yönetimini ve eksik özellikleri aşmak. | Yapısal direktif (`*transloco`), tembel yüklenen modüller için ayrılmış çeviriler, SSR desteği ve metin çıkarma CLI aracı. |
208
- | Eylül 2019 | `@angular/localize` | Her dil için TypeScript kodunu yeniden derlemeyi önlemek üzere Angular'ın yerleşik i18n sistemini modernleştirmek. | Ivy derleyicisinde hızlı bir derleme sonrası adım olarak işlenen etiketli şablon dizgileri (`$localize`). |
209
- | Şubat 2021 | `@tolgee/ngx` | Arayüz bağlamında ortaklaşa çeviri yapmayı ve ekran görüntüsü almayı Angular süreçlerine dahil etmek. | Doğrudan tarayıcıda metin düzenleme olanağı sunan ve Tolgee ile bağlantılı çalışan Angular pipe ve direktifleri. |
210
- | Nisan 2025 | `angular-intlayer` | Modern Angular (Signals, standalone bileşenler ve SSR) için yerel bir Intlayer çözümü sunmak. | Angular değişiklik algılama mekanizmasına uygun Signal tabanlı reaktif içerik yönetimi, standalone bağımlılık enjeksiyonu ve doğrudan CMS entegrasyonu. |
204
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
205
+ | ----------- | ------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
206
+ | Şubat 2017 | `ngx-translate` | Olivier Combe (`@ocombe`) | Her dil için ayrı paketler derlemeden Angular üzerinde çalışma zamanında dinamik çeviri desteği sağlamak. | Dinamik dil yükleme ve anlık geçiş imkanı veren `TranslateService` servisi ve `translate` boru hattı (pipe). |
207
+ | Temmuz 2019 | `@ngneat/transloco` | Netanel Basal (`@NetanelBasal`) & Shahar Kazaz (`@shahar_k`) | Önceki Angular i18n kütüphanelerindeki performans tıkanıklıklarını, yetersiz kapsam yönetimini ve eksik özellikleri aşmak. | Yapısal direktif (`*transloco`), tembel yüklenen modüller için ayrılmış çeviriler, SSR desteği ve metin çıkarma CLI aracı. |
208
+ | Eylül 2019 | `@angular/localize` | Angular Ekibi (@angular) | Her dil için TypeScript kodunu yeniden derlemeyi önlemek üzere Angular'ın yerleşik i18n sistemini modernleştirmek. | Ivy derleyicisinde hızlı bir derleme sonrası adım olarak işlenen etiketli şablon dizgileri (`$localize`). |
209
+ | Şubat 2021 | `@tolgee/ngx` | Jan Cizmar (`@jcizmar`) | Arayüz bağlamında ortaklaşa çeviri yapmayı ve ekran görüntüsü almayı Angular süreçlerine dahil etmek. | Doğrudan tarayıcıda metin düzenleme olanağı sunan ve Tolgee ile bağlantılı çalışan Angular pipe ve direktifleri. |
210
+ | Mart 2026 | `angular-intlayer` | Aymeric Pineau (`@aymericzip`) | Modern Angular (Signals, standalone bileşenler ve SSR) için yerel bir Intlayer çözümü sunmak. | Angular değişiklik algılama mekanizmasına uygun Signal tabanlı reaktif içerik yönetimi, standalone bağımlılık enjeksiyonu ve doğrudan CMS entegrasyonu. |
211
211
 
212
212
  </Tab>
213
213
 
214
214
  <Tab label="Svelte & SvelteKit" value="svelte">
215
215
 
216
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
217
- | ----------- | ----------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
218
- | Temmuz 2018 | `svelte-i18n` | Svelte store mekanizmasına uygun, reaktif bir uluslararasılaştırma kütüphanesi sağlamak. | Dil değiştiğinde DOM üzerinde noktasal güncellemeler sağlayan store tabanlı `$t` fonksiyonu. |
219
- | Aralık 2021 | `sveltekit-i18n` | SvelteKit projelerinde SSR ve rotaya dayalı çeviri yüklemelerini düzenli biçimde yönetmek. | Yalnızca aktif rota için gereken çevirileri ve biçimlendiricileri getiren modüler yükleyici mimarisi. |
220
- | Kasım 2021 | `@tolgee/svelte` | Svelte uygulamalarında arayüz içi yerelleştirme deneyimi sunmak. | Tolgee arayüz katmanıyla entegre çalışan Svelte store bağlamları ve otomatik ekran görüntüsü üretimi. |
221
- | Nisan 2025 | `svelte-intlayer` | Svelte 5 ve SvelteKit için özel olarak geliştirilmiş yüksek performanslı bir Intlayer uyarlaması sunmak. | Svelte 5 Runes (`$state`) yapısına uygun reaktif bağlar, bileşen düzeyinde `.content` tanımları, sıfır yapılandırmalı build eklentileri ve görsel CMS. |
222
- | Temmuz 2025 | `@wuchale/svelte` | Svelte bileşenlerinde sözlük tanımlama ve `$t` fonksiyonlarını içe aktarma tekrarını ortadan kaldırmak. | Şablonları derleme sırasında inceleyen ve metin düğümlerini ek sarmalayıcı olmadan yerelleştirilmiş çıktılara dönüştüren Svelte ön işlemcisi. |
216
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
217
+ | ----------- | ----------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
218
+ | Temmuz 2018 | `svelte-i18n` | Kaisermann (`@kaisermann`) | Svelte store mekanizmasına uygun, reaktif bir uluslararasılaştırma kütüphanesi sağlamak. | Dil değiştiğinde DOM üzerinde noktasal güncellemeler sağlayan store tabanlı `$t` fonksiyonu. |
219
+ | Aralık 2021 | `sveltekit-i18n` | Ivan Fevrier (`@ivanfevrier`) | SvelteKit projelerinde SSR ve rotaya dayalı çeviri yüklemelerini düzenli biçimde yönetmek. | Yalnızca aktif rota için gereken çevirileri ve biçimlendiricileri getiren modüler yükleyici mimarisi. |
220
+ | Kasım 2021 | `@tolgee/svelte` | Jan Cizmar (`@jcizmar`) | Svelte uygulamalarında arayüz içi yerelleştirme deneyimi sunmak. | Tolgee arayüz katmanıyla entegre çalışan Svelte store bağlamları ve otomatik ekran görüntüsü üretimi. |
221
+ | Ekim 2025 | `svelte-intlayer` | Aymeric Pineau (`@aymericzip`) | Svelte 5 ve SvelteKit için özel olarak geliştirilmiş yüksek performanslı bir Intlayer uyarlaması sunmak. | Svelte 5 Runes (`$state`) yapısına uygun reaktif bağlar, bileşen düzeyinde `.content` tanımları, sıfır yapılandırmalı build eklentileri ve görsel CMS. |
222
+ | Temmuz 2025 | `@wuchale/svelte` | Kidus Adugna (`@K1DV5`) | Svelte bileşenlerinde sözlük tanımlama ve `$t` fonksiyonlarını içe aktarma tekrarını ortadan kaldırmak. | Şablonları derleme sırasında inceleyen ve metin düğümlerini ek sarmalayıcı olmadan yerelleştirilmiş çıktılara dönüştüren Svelte ön işlemcisi. |
223
223
 
224
224
  </Tab>
225
225
 
226
226
  <Tab label="SolidJS" value="solid">
227
227
 
228
- | İlk Çıkış | Kütüphane | Çözmeyi Amaçladığı Problem | Temel Yenilik |
229
- | ------------ | ------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
230
- | Eylül 2021 | `@solid-primitives/i18n` | SolidJS'in ince taneli reaktivite yapısıyla örtüşen doğal bir i18n ilkesi sunmak. | Sanal DOM veya gereksiz render olmadan DOM düğümlerini güncelleyen Signal tabanlı çeviri çözücü. |
231
- | Nisan 2025 | `solid-intlayer` | SolidJS ve SolidStart için özel olarak geliştirilmiş performans odaklı bir Intlayer çözümü sunmak. | Sanal DOM yükü olmadan çalışan Signal uyumlu bağlar, tam TypeScript şema tamamlama desteği ve görsel editör entegrasyonu. |
232
- | Haziran 2026 | `@lingui/solid` | Derleme zamanında makro metin çıkarımını ve ICU MessageFormat desteğini SolidJS dünyasına taşımak. | Solid'in reaktif yapısına uyarlanan ve iletileri çalışma zamanı için kompakt yapılara dönüştüren makro dönüşümleri. |
228
+ | İlk Çıkış | Kütüphane | Yazar | Çözmeyi Amaçladığı Problem | Temel Yenilik |
229
+ | ------------ | ------------------------ | ------------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
230
+ | Eylül 2021 | `@solid-primitives/i18n` | SolidJS Topluluğu | SolidJS'in ince taneli reaktivite yapısıyla örtüşen doğal bir i18n ilkesi sunmak. | Sanal DOM veya gereksiz render olmadan DOM düğümlerini güncelleyen Signal tabanlı çeviri çözücü. |
231
+ | Temmuz 2025 | `solid-intlayer` | Aymeric Pineau (`@aymericzip`) | SolidJS ve SolidStart için özel olarak geliştirilmiş performans odaklı bir Intlayer çözümü sunmak. | Sanal DOM yükü olmadan çalışan Signal uyumlu bağlar, tam TypeScript şema tamamlama desteği ve görsel editör entegrasyonu. |
232
+ | Haziran 2026 | `@lingui/solid` | Tomáš Ehrlich (`@tricoder42`) | Derleme zamanında makro metin çıkarımını ve ICU MessageFormat desteğini SolidJS dünyasına taşımak. | Solid'in reaktif yapısına uyarlanan ve iletileri çalışma zamanı için kompakt yapılara dönüştüren makro dönüşümleri. |
233
233
 
234
234
  </Tab>
235
235
 
@@ -237,7 +237,7 @@ Aşağıdaki sekmeler, farklı ekosistemlerin bu gereksinimlere nasıl yanıt ve
237
237
 
238
238
  ## JavaScript i18n Alanında Dört Mimari Dönem
239
239
 
240
- ![JavaScript i18n Kütüphanelerinin Tarihi](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.png?raw=true)
240
+ ![JavaScript i18n Kütüphanelerinin Tarihi](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.webp?raw=true)
241
241
 
242
242
  On beş yıllık gelişimi incelediğimizde JavaScript uluslararasılaştırma tarihini dört belirgin mimari döneme ayırabiliriz:
243
243
 
@@ -287,7 +287,7 @@ Ticari platformlar on yılı aşkın bir süre boyunca gelir modellerini bu manu
287
287
 
288
288
  Büyük Dil Modelleri çeviri maliyetlerini çok düşük seviyelere çekerken dilsel doğruluğu artırdıkça bu alanda yeni araçlar belirdi:
289
289
 
290
- - Paraglide ile **linguo.dev** veya **General Translation** (`gt-react`, `gt-next`) gibi platformlar tescilli abonelik paketleri ve bulut aracıları sundu.
290
+ - **lingo.dev** veya **General Translation** (`gt-react`, `gt-next`) gibi platformlar tescilli abonelik paketleri ve bulut aracıları sundu.
291
291
  - Buna karşılık **Intlayer**, CLI aracılığıyla doğrudan yapay zeka çeviri desteği sunarak ekiplerin kendi API anahtarlarını (OpenAI, Anthropic, Mistral veya Google Gemini) bağlamalarına olanak tanır. Aracı komisyonu veya platform bağımlılığı olmadan, yalnızca seçtiğiniz yapay zeka sağlayıcısının doğrudan işlem maliyetiyle çalışırsınız.
292
292
 
293
293
  ### i18n'den Fazlası: Kapsamlı Çok Dilli İçerik Yönetimi