@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 compat adapterを通じてそれらをサーブする場合の変更点。同じ Vite + Vue コード上での、ページごとのJavaScript、ランタイムサイズ、コンポーネントサイズとリークの測定、およびアダプターが保持、無視、および置き換えることができないものの説明。
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` は互換性アダプター:vue-i18n API (`createI18n`、`useI18n`、`t()`、`d()`、`n()`、`$t`、`v-t`、`i18n.global.locale`...) を公開し、Intlayer によってコンパイルされたディクショナリから提供します。`.vue` ファイルは変わりません。`t("footer.github")` がバインドされるものが変わるだけです。
29
+
30
+ この記事では、同じVite + Vue 3アプリケーションでこのスワップを測定します。このアプリケーションは`vue-i18n`で1回、アダプターで1回ビルドされました。数値は[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 benchmark](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)、ランタイムが **24.3 KB から 7.9 KB**、平均コンポーネントが **196 KB から 8.4 KB**、他言語ページの文字列漏洩が **90% から 0%** に改善され、`.vue` ファイルは一切編集していません。`createI18n({ messages })` はフォールバックとして動作し続けます。JSON のインポートを削除すると上記の数値が得られます。SFC `<i18n>` ブロックとランタイム `setLocaleMessage()` は、引き継がれない 2 つの機能です。
35
+
36
+ ## `@intlayer/vue-i18n` とは
37
+
38
+ `vue-i18n` はランタイムです。`createI18n({ messages: { en, fr, ... } })` はすべてのロケールのすべてのメッセージを保持するグローバルインスタンスを構築します。`useI18n()` は各コンポーネントをそれにバインドします。`t("footer.github")` はレンダリング時にツリーをウォークします。この設計により、SFC `<i18n>` ブロックと `setLocaleMessage()` が可能になり、各コンポーネントの依存グラフがツリー全体を含む理由でもあります。
39
+
40
+ `@intlayer/vue-i18n` はAPIを保持し、ツリーを置き換えます:
41
+
42
+ 1. **インポートエイリアシング。** `@intlayer/vue-i18n/plugin` の `vueI18nVitePlugin()` は `vite-intlayer` をラップし、`vue-i18n` が `@intlayer/vue-i18n` に解決されるように `resolve.alias` を追加します。インポートは名前変更されません。
43
+ 2. **JSONを真実のソースとする。** `syncJSON` プラグインは、既存の `locales/{locale}.json` を `format: "vue-i18n"` で読み込み(`{name}`、`{0}` リスト補間、`"car | cars"` パイプ複数形が正しく解析されます)、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="What the compiler emits (simplified)"
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")` | ✅ 保持。`createI18n()` の `datetimeFormats` / `numberFormats` は尊重され、ネイティブ `Intl` によってサポートされます |
77
+ | `i18n.global.locale.value = "fr"` | ✅ 保持。Intlayerのクライアントに支えられた`WritableComputedRef`。リアクティビティは以前と同じように動作します |
78
+ | `$t`, `$tc`, `$te`, `$tm`, `$rt`, `$d`, `$n`, `$i18n` (Options API) | ✅ 保持。`app.use(i18n)`によって`app.config.globalProperties`に登録されます |
79
+ | `v-t` ディレクティブ | ✅ 保持 |
80
+ | `legacy: true` | ✅ 受け入れられます |
81
+ | `createI18n({ messages })` | ⚠️ `messages` は **ランタイムフォールバック** として使用されます(開発警告付き)。バンドル削減のため JSON インポートを削除してください |
82
+ | `setLocaleMessage()`, `mergeLocaleMessage()` | ❌ 警告を表示して何もしません。ランタイムメッセージ読み込みはビルド時辞書に置き換わります |
83
+ | SFC `<i18n>` カスタムブロック | ❌ 読み込まれません。これらのメッセージをロケール JSON(またはコンポーネント隣の `.content.ts`)に移動してください |
84
+ | `@nuxtjs/i18n` | ⚠️ 別のアダプター、[Nuxt compat ドキュメント](https://intlayer.org/doc/compatibility/nuxtjs-i18n)を参照してください |
85
+
86
+ ## ベンチマーク
87
+
88
+ ### 測定内容
89
+
90
+ [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) スイートは、**同じ 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
+ どちらも **static** 設定でビルドされています。これは Vue プロジェクトが最も一般的に使用する設定です: `vue-i18n` では、すべてのロケールの JSON をインポートして `createI18n({ messages })` に渡されます。アダプターでは、同じコンポーネントで `vite.config.ts` と `intlayer.config.ts` を変更し、`messages` インポートを削除しています。参照用に、ネイティブな `vue-intlayer` が含まれています。
93
+
94
+ 各ビルドについて、スイートは以下を記録します:
95
+
96
+ - **Lib size**: i18nライブラリのみをインポートする空のコンポーネントのgzip(および縮小)サイズ。
97
+ - **Page JS**: ページあたりにダウンロードされるgzip JavaScript、すべてのページとlocaleの平均。
98
+ - **Locale leak %**: ユーザーが**表示していない** localeに属する、ダウンロードされたJS内の翻訳文字列のシェア。
99
+ - **Page leak %**: ユーザーが**いないページ**に属する、ダウンロードされたJS内の翻訳文字列のシェア。
100
+ - **Component avg**: 個別にコンパイルされた各コンポーネントの平均gzipサイズ。
101
+ - **E2E reactivity**: 新しいlocaleを選択してからDOM内の`html[lang]`が更新されるまでの実経過時間(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** (no 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多くなります。差異のほとんどは、`createI18n({ messages })`が毎ページに引き込む74.9 KBの`src/locales`とアダプタがブロックとしてバンドルしない部分です。
121
+ - **ランタイムが3倍縮小します。** `vue-i18n` のみをインポートするコンポーネントは **24.3 KB gzip / 83.2 KB minified** かかります: `@intlify/core-base`、メッセージコンパイラーと実行時です。アダプターは **7.9 KB / 23.2 KB** かかります。ほとんどが Intlayer のコアと `vue-i18n` API サーフェスです。
122
+ - **コンポーネント: 23倍小さくなります。** 単独でコンパイルされた `useI18n()` コンポーネントは平均 **196 KB** です。これは `t` が全ロケールの全メッセージを保持するインスタンスにバインドされているためです。アダプターの場合、同じコンポーネントは平均 **8.4 KB** です: 独自の辞書に到達します。
123
+ - **リーク.** `vue-i18n`はすべてのロケールとすべてのページの文字列をすべてのページに含めます:50%のロケールリーク(2つのフィンガープリント付きロケール上;10個のロケールがバンドルされている場合、実際の無駄はさらに高い)、90%のページリーク。アダプターは、各コンポーネントがその辞書のみをインポートするため、ページリークを**0%**に削減します。このロケールリークはこの`static`実行で15%です;`importMode: 'dynamic'`はそれを削除する設定であり、その設定はこのVue実行の一部ではありませんでした。
124
+ - **リアクティビティとページ読み込み.** ロケール切り替えは両者にとって安価です(1.5~2.8 ms);Vueのリアクティビティシステムは、メッセージがメモリ内にあれば可能にします。ページ読み込みは13.6 msから**9.3 ms**に短縮され、88 KBのJavaScriptのパースが減少することと一致しています。
125
+ - **ネイティブ行について。** このrun で、`vue-intlayer` は `static` モードですべてのロケールをバンドルし、57.1 KB に到達し、3.9 KB のランタイムを実装しました。アダプタの同期辞書は外国語ロケール文字列が少なかったため、ページごとの数値が低くなりました。ネイティブランタイムは 3 つの中で最も軽量のままであり、その `.content.ts` モデルは SFC `<i18n>` ブロックが同等のものを見つける場所です。
126
+
127
+ ## 数値が移動する理由
128
+
129
+ `src/components/` の何も変わっていないため、ゲインは `useI18n` がバインドされているものから来ています。
130
+
131
+ **`vue-i18n`を使用する場合**、バインディングはグローバルインスタンスです。`createI18n({ messages: { en, fr, ... } })`は everything を保持する1つのインポートであり、`useI18n()`を呼び出すすべてのコンポーネントはそのすべてにアクセスできるため、bundler はインスタンス以下で分割できません。最適化とは、_あなたが_`en.json`をルートごとに分割し、router guard で`setLocaleMessage()`を呼び出し、コンポーネントが移動するときにルートからファイルへのマップを正確に保つことを意味します。
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
+ `i18n.ts`の`messages`インポートは削除する1行です。それが88 KBです。
162
+
163
+ ## 3つのステップでの移行
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`をインストールしたままにしておいてください。これはピア依存関係であり、型を提供します。
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`はそのままの場所に保持されます。各トップレベルキー(`footer`、`hero`など)はdictionaryになります。
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"` およびそれらの関連ファイル | アダプターによるフォールバックとしてのみ使用される。88 KBはここから来ていた |
248
+ | ルーターガード内の `setLocaleMessage()` | 何もしない。ルートごとのロードはコンパイラーの仕事になった |
249
+ | `@intlify/unplugin-vue-i18n` | 不要:メッセージをプリコンパイルし、SFCブロックはアダプターが読み取らない |
250
+ | SFC `<i18n>` ブロック | 読み込まれない;これらをロケール 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
+ - **ビジュアルエディターと CMS** は同じ JSON で動作するため、開発者以外は UI を通じて編集でき、ファイルが更新されます。
257
+ - **`.content.ts` への段階的な移行。** 任意のコンポーネントは、co-located content ファイルを使用して `useI18n()` から `useIntlayer("footer")` に切り替えることができます。JSON と `.content.ts` の辞書は共存し、マージされます。
258
+
259
+ ## 始める前に知っておくべき制限事項
260
+
261
+ - **SFC `<i18n>` ブロックは読み込まれません。** メッセージがコンポーネント内に存在する場合、それらをロケールファイル(または `.content.ts`、これは型付きの同じ概念)に移動する必要があります。
262
+ - **ランタイムメッセージロードは廃止されました。** `setLocaleMessage()` と `mergeLocaleMessage()` は警告を出して返されます。実行時に CMS から取得した翻訳には、Intlayer の CMS、または `intlayer pull` / `push` コマンドが必要です。
263
+ - **`messages` はフォールバックであり、無料ではありません。** `createI18n()` で JSON import を保持すると、bundle に 75 KB が保持されます。`intlayer test` がパスしたら削除してください。
264
+ - **アダプターはネイティブランタイムではありません。** `vue-intlayer` の 3.9 KB に対して 7.9 KB です。すべてのコンポーネントが `useIntlayer` に移行したら、削除してください。
265
+
266
+ ## どのような場合にどちらを使うか?
267
+
268
+ - **`vue-i18n` に留まる** アプリが SFC `<i18n>` ブロック、ランタイム `setLocaleMessage()` フロー、または 90 KB/ページがオーディエンスにとって問題でない場合。
269
+ - **`@intlayer/vue-i18n` を使用する** `vue-i18n` を使用しており、88 KB の削減、コンポーネント 23 倍小型化、0% ページリーク、型付きキー、`.vue` ファイル編集なしの CI チェックが必要な場合。これは既存の `vue-i18n` コードベースのエントリーポイントです。
270
+ - **ネイティブ (`vue-intlayer`) に移行する** 新規プロジェクト、またはアダプターが役目を果たした後。最軽量のランタイム (3.9 KB) と、`<i18n>` ブロックを型付きコンテンツで置き換える、コンポーネント単位の `.content.ts` モデルを備えています。
271
+
272
+ ## 関連する比較
273
+
274
+ - [vue-i18n vs Intlayer](https://intlayer.org/blog/vue-i18n-vs-intlayer) (機能とDX)
275
+ - [vue-i18n vs Intlayer ベンチマーク](https://intlayer.org/blog/vue-i18n-vs-intlayer-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 to Intlayer](https://intlayer.org/doc/migration/vue-i18n)
280
+ - [互換性アダプターリファレンス: 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削減**、**3倍小さいランタイム**、**23倍小さいコンポーネント** および **0% ページリーク** を実現し、設定ファイル、プラグインの一行、削除されたインポートのみで実装できます。SFC `<i18n>` ブロックとランタイムメッセージ読み込みの 2 つは実装されておらず、ネイティブ `vue-intlayer` ランタイムのサイズは引き続き半分です。
285
+
286
+ すべてのrawデータ、テストアプリ、スクリプトは[Benchmark Bloomリポジトリ](https://github.com/intlayer-org/benchmark-bloom)にあります。自分で実行してみてください。
287
+
288
+ 詳細については、['Intlayerについて'ドキュメント](https://intlayer.org/doc/why)を参照してください。
@@ -235,7 +235,7 @@ const { greeting } = useIntlayer("component-example");
235
235
 
236
236
  GitHub のスターは、プロジェクトの人気度、コミュニティの信頼、および長期的な関連性の強力な指標です。技術的品質の直接的な尺度ではありませんが、多くの開発者がプロジェクトを有用であると認識し、その進行状況をフォローし、採用する可能性があることを反映しています。プロジェクトの価値を見積もるために、スターは代替案間の牽引力を比較し、エコシステムの成長に関する洞察を提供するのに役立ちます。
237
237
 
238
- [![Star History Chart](https://api.star-history.com/svg?repos=intlify/vue-i18n&repos=aymericzip/intlayer&type=Date)](https://www.star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
238
+ [![Star History Chart](https://api.star-history.com/svg?repos=intlify/vue-i18n&repos=aymericzip/intlayer&type=Date)](https://star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
239
239
 
240
240
  ## 結論
241
241
 
File without changes
@@ -49,7 +49,7 @@ author: aymericzip
49
49
 
50
50
  이 글에서는 2011년부터 2026년까지의 진화 과정을 정리합니다. 각 세대의 도구들이 해결하고자 했던 과제, 성공 요인과 한계, 그리고 프론트엔드 아키텍처의 발전이 오늘날 우리가 i18n을 다루는 방식에 미친 영향을 살펴봅니다.
51
51
 
52
- ![JavaScript 국제화 라이브러리 생태계 변천사](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.png?raw=true)
52
+ ![JavaScript 국제화 라이브러리 생태계 변천사](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
53
53
 
54
54
  ## 목차
55
55
 
@@ -149,87 +149,87 @@ Jan Mühlemann은 고차 컴포넌트(`withTranslation`)와 React Context를 도
149
149
 
150
150
  <Tab label="Core JavaScript" value="javascript">
151
151
 
152
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
153
- | ----------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
154
- | 2012년 1월 | `i18next` | 특정 프레임워크 종속 없이 브라우저와 Node.js 환경에서 런타임 사전 조회를 표준화. | 핵심 번역 엔진과 로더, 감지기, 캐시 계층을 분리하는 유연한 플러그인 런타임 아키텍처. |
155
- | 2021년 2월 | `typesafe-i18n` | 타입이 지정되지 않은 문자열 키로 인한 런타임 무응답 오류 및 잘못된 변수 보간 방지. | 번역 객체로부터 직접 자동 생성되며 런타임 의존성이 전혀 없는 완전한 타입 세이프 번역 함수. |
156
- | 2023년 10월 | `paraglide` (`@inlang/paraglide-js`) | 런타임 사전 검색, 무거운 구문 파서, 클라이언트 번들 비대화 제거. | 메시지를 Tree-shaking이 가능한 순수 ECMAScript 모듈 및 일반 JavaScript 함수로 컴파일. |
157
- | 2024년 4월 | `intlayer` | 관리가 힘든 대형 네임스페이스 대체, 페이지 간 문구 유출 방지, Git 충돌 감소 및 TypeScript 기반의 엄격한 타입 안정성 확보. | `.content` 파일을 컴포넌트 옆에 배치하여 정밀하게 분할하고, TypeScript 타입을 자동 생성하며, 비주얼 CMS 및 AI 기반 CLI 번역 도구 제공. |
158
- | 2025년 6월 | `wuchale` | 개발 도중 텍스트를 수작업으로 추출하고 인위적인 번역 키를 짓는 번거로움 해소. | AST 레벨에서 인라인 텍스트를 자동 감지하여 빌드 타임에 별도 래퍼 없는 로컬라이즈드 함수로 직접 컴파일. |
152
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
153
+ | ----------- | ------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
154
+ | 2012년 1월 | `i18next` | Jan Mühlemann (`@jamuhl`) | 특정 프레임워크 종속 없이 브라우저와 Node.js 환경에서 런타임 사전 조회를 표준화. | 핵심 번역 엔진과 로더, 감지기, 캐시 계층을 분리하는 유연한 플러그인 런타임 아키텍처. |
155
+ | 2021년 2월 | `typesafe-i18n` | Ivan Hofer (`@ivanhofer`) | 타입이 지정되지 않은 문자열 키로 인한 런타임 무응답 오류 및 잘못된 변수 보간 방지. | 번역 객체로부터 직접 자동 생성되며 런타임 의존성이 전혀 없는 완전한 타입 세이프 번역 함수. |
156
+ | 2023년 10월 | `paraglide` (`@inlang/paraglide-js`) | Samuel Stroschein (`@samuelstroschein`) / Inlang (`@inlang`) | 런타임 사전 검색, 무거운 구문 파서, 클라이언트 번들 비대화 제거. | 메시지를 Tree-shaking이 가능한 순수 ECMAScript 모듈 및 일반 JavaScript 함수로 컴파일. |
157
+ | 2024년 8월 | `intlayer` | Aymeric Pineau (`@aymericzip`) | 관리가 힘든 대형 네임스페이스 대체, 페이지 간 문구 유출 방지, Git 충돌 감소 및 TypeScript 기반의 엄격한 타입 안정성 확보. | `.content` 파일을 컴포넌트 옆에 배치하여 정밀하게 분할하고, TypeScript 타입을 자동 생성하며, 비주얼 CMS 및 AI 기반 CLI 번역 도구 제공. |
158
+ | 2025년 6월 | `wuchale` | Kidus Adugna (`@K1DV5`) | 개발 도중 텍스트를 수작업으로 추출하고 인위적인 번역 키를 짓는 번거로움 해소. | AST 레벨에서 인라인 텍스트를 자동 감지하여 빌드 타임에 별도 래퍼 없는 로컬라이즈드 함수로 직접 컴파일. |
159
159
 
160
160
  </Tab>
161
161
 
162
162
  <Tab label="React" value="react">
163
163
 
164
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
165
- | ----------- | ---------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
166
- | 2014년 6월 | `react-intl` | React 환경에서 숫자, 날짜, 통화 및 복잡한 복수형 서식화를 표준화. | ICU MessageFormat 및 ECMA-402 규격을 지원하는 선언적 컴포넌트(`<FormattedMessage>`, `<FormattedDate>`). |
167
- | 2015년 12월 | `react-i18next` | React에 적합한 선언적 문법과 반응형 재렌더링을 지원하는 `i18next` 바인딩 제공. | 고차 컴포넌트(HOC)에서 `<Trans>` JSX 보간 및 `useTranslation` 훅 체계로 React의 패러다임과 함께 지속 진화. |
168
- | 2018년 1월 | `@lingui/react` | 런타임 ICU 파서가 클라이언트 번들 크기에 미치는 부담을 최소화. | 빌드 타임에 Babel/SWC 매크로를 활용해 `<Trans>`와 `t`를 컴팩트한 인덱스 배열로 사전 컴파일. |
169
- | 2020년 12월 | `use-intl` | 기존 라이브러리를 대체할 가볍고 훅 중심적이며 타입 안전한 React 전용 대안 제시. | 깊이 있는 TypeScript 통합을 지원하는 인체공학적인 `useTranslations` 및 `useFormatter` 훅. |
170
- | 2021년 2월 | `@tolgee/react` | 개발자, 번역가, 디자이너 간의 커뮤니케이션 지연을 단축. | 브라우저 화면에서 Alt 클릭으로 문구를 즉시 수정하고 화면 캡처를 동기화하는 인컨텍스트 편집 기능. |
171
- | 2024년 4월 | `react-intlayer` | 중앙집중식 JSON 파일과 비대한 네임스페이스 없이 React 컴포넌트 수명주기에 최적화된 고성능 환경 제공. | React 렌더링에 최적화된 `useIntlayer` 훅, 자동 생성되는 정밀 타입, 컴포넌트 단위 Tree-shaking 및 컨텍스트 보일러플레이트 없는 비주얼 CMS 실시간 연동. |
172
- | 2024년 7월 | `gt-react` | 번역 파일의 수동 추출과 인수인계, 유지보수 작업을 자동화. | 클라우드 기반 기계 번역 파이프라인을 통해 React 컴포넌트 내부에서 AI 자동 로컬라이제이션을 수행. |
173
- | 2025년 8월 | `@wuchale/jsx` | JSX 작성 시 불필요한 번역 키 작명과 반복적인 훅 호출을 제거. | AST 변환을 통해 JSX 내부의 원본 텍스트 노드를 감지하고 로컬라이즈된 동등 코드로 컴파일. |
164
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
165
+ | ----------- | ---------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
166
+ | 2014년 6월 | `react-intl` | Yahoo! / FormatJS | React 환경에서 숫자, 날짜, 통화 및 복잡한 복수형 서식화를 표준화. | ICU MessageFormat 및 ECMA-402 규격을 지원하는 선언적 컴포넌트(`<FormattedMessage>`, `<FormattedDate>`). |
167
+ | 2015년 12월 | `react-i18next` | Jan Mühlemann (`@jamuhl`) | React에 적합한 선언적 문법과 반응형 재렌더링을 지원하는 `i18next` 바인딩 제공. | 고차 컴포넌트(HOC)에서 `<Trans>` JSX 보간 및 `useTranslation` 훅 체계로 React의 패러다임과 함께 지속 진화. |
168
+ | 2018년 1월 | `@lingui/react` | Tomáš Ehrlich (`@tricoder42`) | 런타임 ICU 파서가 클라이언트 번들 크기에 미치는 부담을 최소화. | 빌드 타임에 Babel/SWC 매크로를 활용해 `<Trans>`와 `t`를 컴팩트한 인덱스 배열로 사전 컴파일. |
169
+ | 2020년 12월 | `use-intl` | Jan Amann (`@amannn`) | 기존 라이브러리를 대체할 가볍고 훅 중심적이며 타입 안전한 React 전용 대안 제시. | 깊이 있는 TypeScript 통합을 지원하는 인체공학적인 `useTranslations` 및 `useFormatter` 훅. |
170
+ | 2021년 2월 | `@tolgee/react` | Jan Cizmar (`@jcizmar`) | 개발자, 번역가, 디자이너 간의 커뮤니케이션 지연을 단축. | 브라우저 화면에서 Alt 클릭으로 문구를 즉시 수정하고 화면 캡처를 동기화하는 인컨텍스트 편집 기능. |
171
+ | 2024년 8월 | `react-intlayer` | Aymeric Pineau (`@aymericzip`) | 중앙집중식 JSON 파일과 비대한 네임스페이스 없이 React 컴포넌트 수명주기에 최적화된 고성능 환경 제공. | React 렌더링에 최적화된 `useIntlayer` 훅, 자동 생성되는 정밀 타입, 컴포넌트 단위 Tree-shaking 및 컨텍스트 보일러플레이트 없는 비주얼 CMS 실시간 연동. |
172
+ | 2024년 7월 | `gt-react` | Ernest McCarter (`@eoinest`) | 번역 파일의 수동 추출과 인수인계, 유지보수 작업을 자동화. | 클라우드 기반 기계 번역 파이프라인을 통해 React 컴포넌트 내부에서 AI 자동 로컬라이제이션을 수행. |
173
+ | 2025년 6월 | `@wuchale/jsx` | Kidus Adugna (`@K1DV5`) | JSX 작성 시 불필요한 번역 키 작명과 반복적인 훅 호출을 제거. | AST 변환을 통해 JSX 내부의 원본 텍스트 노드를 감지하고 로컬라이즈된 동등 코드로 컴파일. |
174
174
 
175
175
  </Tab>
176
176
 
177
177
  <Tab label="Next.js" value="nextjs">
178
178
 
179
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
180
- | ----------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
- | 2018년 11월 | `next-i18next` | Next.js Pages Router에서 클라이언트 폭포수(waterfall) 요청 없이 `i18next` 기반 SSR 및 SSG 지원. | 페이지 Props를 통해 지역화된 네임스페이스를 전달하는 `serverSideTranslations` 및 `appWithTranslation`. |
182
- | 2019년 12월 | `next-translate` | Pages Router 기반 애플리케이션의 설정 복잡도를 낮추고 번들 크기를 축소. | 페이지별로 실제 필요한 번역 네임스페이스만 빌드 시점에 선별 주입하는 Webpack 로더 플러그인. |
183
- | 2020년 11월 | `next-intl` | Next.js App Router, React Server Components (RSC), 스트리밍 SSR 패러다임에 맞춘 국제화 재설계. | 클라이언트 JS를 전송하지 않고도 Next.js App Router 미들웨어, Server Actions, 비동기 Server Components와 자연스럽게 결합. |
184
- | 2022년 7월 | `next-international` | 클라이언트 번들 오버헤드를 최소화하면서 Next.js에 엄격한 TypeScript 타입 안정성 제공. | 스코프가 지정된 번역 키에 대한 정밀한 타입 생성과 App Router 및 Pages Router용 초경량 어댑터. |
185
- | 2024년 4월 | `paraglide-next` (`@inlang/paraglide-next`) | 런타임 라이브러리가 필요 없는 사전 컴파일 메시지를 Next.js App Router 및 Pages Router에 도입. | 미들웨어 라우팅과 Tree-shaking 가능한 함수를 결합하여 RSC 및 클라이언트 번들에서 런타임 JSON 파싱을 완전히 배제. |
186
- | 2024년 4월 | `next-intlayer` | 컴포넌트 간 `t()` 함수나 번역 사전을 Props로 연쇄 전달(Prop-drilling)해야 하는 불편함 해소. | 동기 Server Components에서 Prop-drilling 없이 `useIntlayer`를 직접 호출 가능. 지연 없는 서버 렌더링, 전용 라우팅 미들웨어, 실시간 비주얼 CMS 동기화 지원. |
187
- | 2024년 9월 | `gt-next` | AI 기술을 활용하여 Next.js의 다국어 콘텐츠 생성과 동적 로컬라이즈드 라우팅을 자동화. | 클라우드 기반 기계 번역과 Next.js 엣지 미들웨어 및 캐시 계층을 결합한 App Router 통합. |
179
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
180
+ | ----------- | ------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | 2018년 11월 | `next-i18next` | Isaac Hinman (`@isaachinman`) | Next.js Pages Router에서 클라이언트 폭포수(waterfall) 요청 없이 `i18next` 기반 SSR 및 SSG 지원. | 페이지 Props를 통해 지역화된 네임스페이스를 전달하는 `serverSideTranslations` 및 `appWithTranslation`. |
182
+ | 2020년 12월 | `next-translate` | Arvin Wiyono (`@arvinn`) / Vinissimus (`@vinissimus`) | Pages Router 기반 애플리케이션의 설정 복잡도를 낮추고 번들 크기를 축소. | 페이지별로 실제 필요한 번역 네임스페이스만 빌드 시점에 선별 주입하는 Webpack 로더 플러그인. |
183
+ | 2020년 12월 | `next-intl` | Jan Amann (`@amannn`) | Next.js App Router, React Server Components (RSC), 스트리밍 SSR 패러다임에 맞춘 국제화 재설계. | 클라이언트 JS를 전송하지 않고도 Next.js App Router 미들웨어, Server Actions, 비동기 Server Components와 자연스럽게 결합. |
184
+ | 2022년 7월 | `next-international` | Tom Dussaix (`@tom-dussaix`) | 클라이언트 번들 오버헤드를 최소화하면서 Next.js에 엄격한 TypeScript 타입 안정성 제공. | 스코프가 지정된 번역 키에 대한 정밀한 타입 생성과 App Router 및 Pages Router용 초경량 어댑터. |
185
+ | 2023년 10월 | `paraglide-next` (`@inlang/paraglide-next`) | Samuel Stroschein (`@samuelstroschein`) / Inlang (`@inlang`) | 런타임 라이브러리가 필요 없는 사전 컴파일 메시지를 Next.js App Router 및 Pages Router에 도입. | 미들웨어 라우팅과 Tree-shaking 가능한 함수를 결합하여 RSC 및 클라이언트 번들에서 런타임 JSON 파싱을 완전히 배제. |
186
+ | 2024년 8월 | `next-intlayer` | Aymeric Pineau (`@aymericzip`) | 컴포넌트 간 `t()` 함수나 번역 사전을 Props로 연쇄 전달(Prop-drilling)해야 하는 불편함 해소. | 동기 Server Components에서 Prop-drilling 없이 `useIntlayer`를 직접 호출 가능. 지연 없는 서버 렌더링, 전용 라우팅 미들웨어, 실시간 비주얼 CMS 동기화 지원. |
187
+ | 2024년 7월 | `gt-next` | Ernest McCarter (`@eoinest`) | AI 기술을 활용하여 Next.js의 다국어 콘텐츠 생성과 동적 로컬라이즈드 라우팅을 자동화. | 클라우드 기반 기계 번역과 Next.js 엣지 미들웨어 및 캐시 계층을 결합한 App Router 통합. |
188
188
 
189
189
  </Tab>
190
190
 
191
191
  <Tab label="Vue & Nuxt" value="vue">
192
192
 
193
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
194
- | ----------- | -------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
195
- | 2014년 5월 | `vue-i18n` | Vue 생태계의 철학에 부합하는 직관적이고 반응형 중심의 국제화 환경 구축. | Vue 반응성 시스템과의 일체화, 템플릿 디렉티브(`v-t`), `$t` 헬퍼, 단일 파일 컴포넌트(SFC) 전용 `<i18n>` 커스텀 블록 제공. |
196
- | 2017년 11월 | `@nuxt/i18n` | Nuxt 기반 프로젝트의 지역화된 URL 라우팅, SEO hreflang 태그, SSR 하이드레이션 무결성 관리. | 접두사 및 도메인 기반의 라우트 자동 생성, SEO 메타 헤더 제어, 언어 청크 지연 로딩을 아우르는 풀스택 라우팅 모듈. |
197
- | 2019년 8월 | `fluent-vue` | Vue 내에서 복잡한 문법적 성별, 격 변화, 비대칭적 자연어 구조를 매끄럽게 지원. | Mozilla의 Project Fluent 문법을 Vue에 통합하여 미묘한 언어적 차이를 위한 복잡한 조건문 작성을 방지. |
198
- | 2025년 4월 | `vue-intlayer` | 전역 네임스페이스 오염 없이 Vue 3 Composition API 및 Nuxt에 최적화된 네이티브 Intlayer 지원. | Vue 3 반응성 추적에 맞춤 설계된 `useIntlayer` Composable, 명확한 컴포넌트 스코프 분리, 완벽한 TypeScript 자동완성 및 비주얼 에디터 지원. |
193
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
194
+ | ----------- | -------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
195
+ | 2014년 5월 | `vue-i18n` | Kazupon (`@kazupon`) | Vue 생태계의 철학에 부합하는 직관적이고 반응형 중심의 국제화 환경 구축. | Vue 반응성 시스템과의 일체화, 템플릿 디렉티브(`v-t`), `$t` 헬퍼, 단일 파일 컴포넌트(SFC) 전용 `<i18n>` 커스텀 블록 제공. |
196
+ | 2017년 11월 | `@nuxt/i18n` | Nuxt 커뮤니티 | Nuxt 기반 프로젝트의 지역화된 URL 라우팅, SEO hreflang 태그, SSR 하이드레이션 무결성 관리. | 접두사 및 도메인 기반의 라우트 자동 생성, SEO 메타 헤더 제어, 언어 청크 지연 로딩을 아우르는 풀스택 라우팅 모듈. |
197
+ | 2020년 8월 | `fluent-vue` | Mozilla (`@mozilla`) / Demivan (`@demivan`) | Vue 내에서 복잡한 문법적 성별, 격 변화, 비대칭적 자연어 구조를 매끄럽게 지원. | Mozilla의 Project Fluent 문법을 Vue에 통합하여 미묘한 언어적 차이를 위한 복잡한 조건문 작성을 방지. |
198
+ | 2025年 1월 | `vue-intlayer` | Aymeric Pineau (`@aymericzip`) | 전역 네임스페이스 오염 없이 Vue 3 Composition API 및 Nuxt에 최적화된 네이티브 Intlayer 지원. | Vue 3 반응성 추적에 맞춤 설계된 `useIntlayer` Composable, 명확한 컴포넌트 스코프 분리, 완벽한 TypeScript 자동완성 및 비주얼 에디터 지원. |
199
199
 
200
200
  </Tab>
201
201
 
202
202
  <Tab label="Angular" value="angular">
203
203
 
204
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
205
- | ---------- | ------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
206
- | 2017년 2월 | `ngx-translate` | 언어별로 빌드 결과물을 별도 분리하지 않고 Angular 런타임에서 동적 번역 제공. | 동적 번역 로딩과 실시간 언어 전환을 가능하게 하는 `TranslateService` 및 `translate` 파이프. |
207
- | 2019년 7월 | `@ngneat/transloco` | 구형 Angular i18n 라이브러리들의 성능 저하, 스코프 격리 부재, 편의 기능 미비를 개선. | 구조적 디렉티브(`*transloco`), 지연 로딩 모듈을 위한 번역 스코프 격리, SSR 지원 및 텍스트 추출 CLI. |
208
- | 2019년 9월 | `@angular/localize` | 언어마다 TypeScript 전체를 재컴파일하는 낭비를 줄이고 내장 i18n 시스템을 현대화. | 빌드 후처리 단계에서 Ivy 컴파일러가 신속하게 치환하는 태그 템플릿 리터럴 `$localize`. |
209
- | 2021년 2월 | `@tolgee/ngx` | 인터페이스 상에서의 실시간 번역 협업과 스크린샷 저장을 Angular 워크플로에 도입. | Tolgee 플랫폼과 직접 연동되어 브라우저 상에서 텍스트를 즉시 편집할 수 있는 Angular 파이프 및 디렉티브. |
210
- | 2025년 4월 | `angular-intlayer` | 모던 Angular(Signals, Standalone 컴포넌트, SSR)에 특화된 네이티브 Intlayer 환경 구축. | Angular 변경 감지 시스템에 최적화된 Signal 기반 반응형 바인딩, Standalone DI 호환, 비주얼 CMS 실시간 동기화 지원. |
204
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
205
+ | ---------- | ------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
206
+ | 2017년 2월 | `ngx-translate` | Olivier Combe (`@ocombe`) | 언어별로 빌드 결과물을 별도 분리하지 않고 Angular 런타임에서 동적 번역 제공. | 동적 번역 로딩과 실시간 언어 전환을 가능하게 하는 `TranslateService` 및 `translate` 파이프. |
207
+ | 2019년 7월 | `@ngneat/transloco` | Netanel Basal (`@NetanelBasal`) & Shahar Kazaz (`@shahar_k`) | 구형 Angular i18n 라이브러리들의 성능 저하, 스코프 격리 부재, 편의 기능 미비를 개선. | 구조적 디렉티브(`*transloco`), 지연 로딩 모듈을 위한 번역 스코프 격리, SSR 지원 및 텍스트 추출 CLI. |
208
+ | 2019년 9월 | `@angular/localize` | Angular 팀 (@angular) | 언어마다 TypeScript 전체를 재컴파일하는 낭비를 줄이고 내장 i18n 시스템을 현대화. | 빌드 후처리 단계에서 Ivy 컴파일러가 신속하게 치환하는 태그 템플릿 리터럴 `$localize`. |
209
+ | 2021년 2월 | `@tolgee/ngx` | Jan Cizmar (`@jcizmar`) | 인터페이스 상에서의 실시간 번역 협업과 스크린샷 저장을 Angular 워크플로에 도입. | Tolgee 플랫폼과 직접 연동되어 브라우저 상에서 텍스트를 즉시 편집할 수 있는 Angular 파이프 및 디렉티브. |
210
+ | 2026년 3월 | `angular-intlayer` | Aymeric Pineau (`@aymericzip`) | 모던 Angular(Signals, Standalone 컴포넌트, SSR)에 특화된 네이티브 Intlayer 환경 구축. | Angular 변경 감지 시스템에 최적화된 Signal 기반 반응형 바인딩, Standalone DI 호환, 비주얼 CMS 실시간 동기화 지원. |
211
211
 
212
212
  </Tab>
213
213
 
214
214
  <Tab label="Svelte & SvelteKit" value="svelte">
215
215
 
216
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
217
- | ----------- | ----------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
218
- | 2018년 7월 | `svelte-i18n` | Svelte의 반응형 Store 철학에 어울리는 선언적 다국어 라이브러리 제공. | Store 기반의 `$t` 조회를 통해 언어가 변경될 때 대상 DOM만 정밀하고 기민하게 업데이트. |
219
- | 2021년 12월 | `sveltekit-i18n` | SvelteKit 애플리케이션에서 SSR과 라우트 기반 번역 파일 로딩을 깔끔하게 처리. | 활성화된 라우트에 실제로 필요한 텍스트 및 포맷터만 선별하여 가져오는 모듈식 로더 아키텍처. |
220
- | 2021년 11월 | `@tolgee/svelte` | Svelte 환경에서 실제 화면 컨텍스트를 보며 작업하는 인컨텍스트 번역 구현. | Tolgee 인컨텍스트 오버레이 및 자동 스크린샷 캡처 기능과 직결된 Svelte Store 바인딩. |
221
- | 2025년 4월 | `svelte-intlayer` | Svelte 5의 Runes 문법 및 SvelteKit에 최적화된 고성능 Intlayer 구현체 제공. | Svelte 5 Runes(`$state`)에 맞춘 반응형 바인딩, 컴포넌트 단위의 `.content` 선언, 무설정 빌드 플러그인, 비주얼 CMS 지원. |
222
- | 2025년 7월 | `@wuchale/svelte` | Svelte 컴포넌트에서 사전을 별도 선언하고 `$t` 함수를 반복적으로 임포트하는 수고를 배제. | 빌드 타임에 템플릿을 직접 파싱하여 텍스트 노드를 래퍼 없는 로컬라이즈드 결과물로 컴파일하는 Svelte 프리프로세서. |
216
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
217
+ | ----------- | ----------------- | ------------------------------ | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
218
+ | 2018년 7월 | `svelte-i18n` | Kaisermann (`@kaisermann`) | Svelte의 반응형 Store 철학에 어울리는 선언적 다국어 라이브러리 제공. | Store 기반의 `$t` 조회를 통해 언어가 변경될 때 대상 DOM만 정밀하고 기민하게 업데이트. |
219
+ | 2021년 12월 | `sveltekit-i18n` | Ivan Fevrier (`@ivanfevrier`) | SvelteKit 애플리케이션에서 SSR과 라우트 기반 번역 파일 로딩을 깔끔하게 처리. | 활성화된 라우트에 실제로 필요한 텍스트 및 포맷터만 선별하여 가져오는 모듈식 로더 아키텍처. |
220
+ | 2021년 11월 | `@tolgee/svelte` | Jan Cizmar (`@jcizmar`) | Svelte 환경에서 실제 화면 컨텍스트를 보며 작업하는 인컨텍스트 번역 구현. | Tolgee 인컨텍스트 오버레이 및 자동 스크린샷 캡처 기능과 직결된 Svelte Store 바인딩. |
221
+ | 2025년 10월 | `svelte-intlayer` | Aymeric Pineau (`@aymericzip`) | Svelte 5의 Runes 문법 및 SvelteKit에 최적화된 고성능 Intlayer 구현체 제공. | Svelte 5 Runes(`$state`)에 맞춘 반응형 바인딩, 컴포넌트 단위의 `.content` 선언, 무설정 빌드 플러그인, 비주얼 CMS 지원. |
222
+ | 2025년 7월 | `@wuchale/svelte` | Kidus Adugna (`@K1DV5`) | Svelte 컴포넌트에서 사전을 별도 선언하고 `$t` 함수를 반복적으로 임포트하는 수고를 배제. | 빌드 타임에 템플릿을 직접 파싱하여 텍스트 노드를 래퍼 없는 로컬라이즈드 결과물로 컴파일하는 Svelte 프리프로세서. |
223
223
 
224
224
  </Tab>
225
225
 
226
226
  <Tab label="SolidJS" value="solid">
227
227
 
228
- | 첫 출시 | 라이브러리 | 주요 해결 과제 | 핵심 혁신 요소 |
229
- | ---------- | ------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
230
- | 2021년 9월 | `@solid-primitives/i18n` | SolidJS의 세밀한(fine-grained) 반응성에 완벽하게 부합하는 네이티브 i18n 프리미티브 제공. | 가상 DOM이나 불필요한 재렌더링 없이 DOM 노드를 직접 업데이트하는 Signal 기반 번역 리졸버. |
231
- | 2025년 4월 | `solid-intlayer` | SolidJS 및 SolidStart의 아키텍처에 맞추어 설계된 네이티브 고성능 Intlayer 솔루션 제공. | 가상 DOM 오버헤드를 배제한 Signal 최적화 바인딩, TypeScript 스키마 기반 자동완성, 비주얼 에디터 지원. |
232
- | 2026년 6월 | `@lingui/solid` | 빌드 타임 매크로 추출 방식과 정교한 ICU MessageFormat 문법 지원을 SolidJS 생태계로 확장. | Solid의 세밀한 반응성에 맞춘 매크로 변환을 통해 메시지를 런타임 부담이 적은 간결한 구조로 컴파일. |
228
+ | 첫 출시 | 라이브러리 | 작성자 | 주요 해결 과제 | 핵심 혁신 요소 |
229
+ | ---------- | ------------------------ | ------------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
230
+ | 2021년 9월 | `@solid-primitives/i18n` | SolidJS 커뮤니티 | SolidJS의 세밀한(fine-grained) 반응성에 완벽하게 부합하는 네이티브 i18n 프리미티브 제공. | 가상 DOM이나 불필요한 재렌더링 없이 DOM 노드를 직접 업데이트하는 Signal 기반 번역 리졸버. |
231
+ | 2025년 7월 | `solid-intlayer` | Aymeric Pineau (`@aymericzip`) | SolidJS 및 SolidStart의 아키텍처에 맞추어 설계된 네이티브 고성능 Intlayer 솔루션 제공. | 가상 DOM 오버헤드를 배제한 Signal 최적화 바인딩, TypeScript 스키마 기반 자동완성, 비주얼 에디터 지원. |
232
+ | 2026년 6월 | `@lingui/solid` | Tomáš Ehrlich (`@tricoder42`) | 빌드 타임 매크로 추출 방식과 정교한 ICU MessageFormat 문법 지원을 SolidJS 생태계로 확장. | Solid의 세밀한 반응성에 맞춘 매크로 변환을 통해 메시지를 런타임 부담이 적은 간결한 구조로 컴파일. |
233
233
 
234
234
  </Tab>
235
235
 
@@ -237,7 +237,7 @@ Jan Mühlemann은 고차 컴포넌트(`withTranslation`)와 React Context를 도
237
237
 
238
238
  ## JavaScript i18n의 네 가지 아키텍처 시대
239
239
 
240
- ![JavaScript i18n 라이브러리 기술 발전도](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.png?raw=true)
240
+ ![JavaScript i18n 라이브러리 기술 발전도](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.webp?raw=true)
241
241
 
242
242
  지난 15년간의 기술 흐름을 종합하면, JavaScript 국제화는 크게 네 가지 아키텍처 시대로 구분할 수 있습니다.
243
243
 
@@ -287,7 +287,7 @@ Jan Mühlemann은 고차 컴포넌트(`withTranslation`)와 React Context를 도
287
287
 
288
288
  대규모 언어 모델이 높은 언어적 정확도를 유지하면서도 번역 단가를 극소 단위로 낮춤에 따라 새로운 도구들이 등장했습니다.
289
289
 
290
- - Paraglide의 **linguo.dev**나 **General Translation** (`gt-react`, `gt-next`) 같은 플랫폼들은 전용 구독 티어와 클라우드 중계 파이프라인을 구성했습니다.
290
+ - **lingo.dev**나 **General Translation** (`gt-react`, `gt-next`) 같은 플랫폼들은 전용 구독 티어와 클라우드 중계 파이프라인을 구성했습니다.
291
291
  - 반면 **Intlayer**는 오픈소스 CLI를 통해 AI 번역 기능을 기본 제공하며, 팀이 보유한 자체 API 키(OpenAI, Anthropic, Mistral, Google Gemini 등)를 직접 연결할 수 있도록 지원합니다. 중개 수수료나 플랫폼 종속 없이, 선택한 AI 제공업체의 순수 호출 원가만으로 운영할 수 있습니다.
292
292
 
293
293
  ### i18n을 넘어: 종합적인 다국어 콘텐츠 시스템으로