@intlayer/docs 9.5.6 → 9.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
  2. package/blog/ar/i18next_vs_intlayer.md +130 -16
  3. package/blog/ar/lingui_vs_intlayer.md +122 -15
  4. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  5. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  6. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  7. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  8. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  9. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  10. package/blog/de/i18next_vs_intlayer.md +128 -14
  11. package/blog/de/lingui_vs_intlayer.md +122 -15
  12. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  13. package/blog/de/next-intl_vs_intlayer.md +125 -15
  14. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  15. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  16. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  17. package/blog/en/i18next_vs_intlayer.md +128 -14
  18. package/blog/en/lingui_vs_intlayer.md +124 -15
  19. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  20. package/blog/en/next-intl_vs_intlayer.md +125 -13
  21. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  22. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  23. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  24. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  25. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  26. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  27. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  28. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  30. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  31. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  32. package/blog/es/i18next_vs_intlayer.md +128 -14
  33. package/blog/es/lingui_vs_intlayer.md +122 -15
  34. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  35. package/blog/es/next-intl_vs_intlayer.md +125 -15
  36. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  37. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  38. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  39. package/blog/fr/i18next_vs_intlayer.md +128 -14
  40. package/blog/fr/lingui_vs_intlayer.md +122 -15
  41. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  42. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  43. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  44. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  45. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  46. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  47. package/blog/hi/i18next_vs_intlayer.md +130 -16
  48. package/blog/hi/lingui_vs_intlayer.md +122 -15
  49. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  50. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  51. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  52. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  53. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  54. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  55. package/blog/id/i18next_vs_intlayer.md +128 -14
  56. package/blog/id/lingui_vs_intlayer.md +122 -15
  57. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  58. package/blog/id/next-intl_vs_intlayer.md +135 -19
  59. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  60. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  61. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  62. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  63. package/blog/it/i18next_vs_intlayer.md +128 -14
  64. package/blog/it/lingui_vs_intlayer.md +122 -15
  65. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/it/next-intl_vs_intlayer.md +125 -15
  67. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  68. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  69. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  70. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  71. package/blog/ja/i18next_vs_intlayer.md +129 -17
  72. package/blog/ja/lingui_vs_intlayer.md +122 -15
  73. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  74. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  75. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  76. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  77. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  78. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  79. package/blog/ko/i18next_vs_intlayer.md +129 -17
  80. package/blog/ko/lingui_vs_intlayer.md +122 -15
  81. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  82. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  83. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  84. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  85. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  86. package/blog/pl/i18next_vs_intlayer.md +128 -14
  87. package/blog/pl/lingui_vs_intlayer.md +122 -15
  88. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  89. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  90. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  91. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  92. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  93. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  94. package/blog/pt/i18next_vs_intlayer.md +128 -14
  95. package/blog/pt/lingui_vs_intlayer.md +122 -15
  96. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  97. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  98. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  99. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  100. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  101. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  102. package/blog/ru/i18next_vs_intlayer.md +130 -16
  103. package/blog/ru/lingui_vs_intlayer.md +122 -15
  104. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  105. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  106. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  107. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  108. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  109. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  110. package/blog/tr/i18next_vs_intlayer.md +128 -14
  111. package/blog/tr/lingui_vs_intlayer.md +122 -15
  112. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  113. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  114. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  115. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  116. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  117. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  118. package/blog/uk/i18next_vs_intlayer.md +130 -16
  119. package/blog/uk/lingui_vs_intlayer.md +122 -15
  120. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  121. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  122. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  123. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  124. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  125. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  126. package/blog/vi/i18next_vs_intlayer.md +128 -14
  127. package/blog/vi/lingui_vs_intlayer.md +122 -15
  128. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  129. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  130. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  131. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  132. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  133. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  134. package/blog/zh/i18next_vs_intlayer.md +128 -14
  135. package/blog/zh/lingui_vs_intlayer.md +122 -15
  136. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  138. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  139. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  140. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  141. package/dist/cjs/generated/docs.entry.cjs +40 -40
  142. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  143. package/dist/cjs/index.cjs +2 -2
  144. package/dist/esm/generated/docs.entry.mjs +40 -40
  145. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  146. package/dist/esm/index.mjs +2 -2
  147. package/dist/types/generated/docs.entry.d.ts +2 -2
  148. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  149. package/docs/ar/benchmark/nextjs.md +13 -13
  150. package/docs/ar/benchmark/solid.md +5 -5
  151. package/docs/ar/benchmark/svelte.md +4 -4
  152. package/docs/ar/benchmark/tanstack.md +14 -13
  153. package/docs/ar/benchmark/vue.md +5 -5
  154. package/docs/ar/chrome_extension.md +130 -0
  155. package/docs/ar/cli/index.md +6 -1
  156. package/docs/ar/cli/infra.md +162 -0
  157. package/docs/ar/cli/init.md +24 -1
  158. package/docs/ar/dictionary/html.md +173 -5
  159. package/docs/ar/dictionary/markdown.md +263 -1
  160. package/docs/ar/intlayer_with_analog.md +23 -1
  161. package/docs/ar/intlayer_with_angular_19.md +24 -1
  162. package/docs/ar/intlayer_with_angular_21.md +24 -1
  163. package/docs/ar/intlayer_with_astro.md +24 -1
  164. package/docs/ar/intlayer_with_astro_lit.md +25 -1
  165. package/docs/ar/intlayer_with_astro_preact.md +26 -1
  166. package/docs/ar/intlayer_with_astro_react.md +26 -1
  167. package/docs/ar/intlayer_with_astro_solid.md +26 -1
  168. package/docs/ar/intlayer_with_astro_svelte.md +25 -1
  169. package/docs/ar/intlayer_with_astro_vue.md +25 -1
  170. package/docs/ar/intlayer_with_remix_3.md +22 -1
  171. package/docs/ar/self_hosting.md +406 -231
  172. package/docs/de/benchmark/nextjs.md +13 -13
  173. package/docs/de/benchmark/solid.md +5 -5
  174. package/docs/de/benchmark/svelte.md +4 -4
  175. package/docs/de/benchmark/tanstack.md +14 -13
  176. package/docs/de/benchmark/vue.md +5 -5
  177. package/docs/de/chrome_extension.md +130 -0
  178. package/docs/de/cli/index.md +6 -1
  179. package/docs/de/cli/infra.md +162 -0
  180. package/docs/de/cli/init.md +24 -1
  181. package/docs/de/dictionary/html.md +173 -5
  182. package/docs/de/dictionary/markdown.md +263 -1
  183. package/docs/de/intlayer_with_analog.md +23 -1
  184. package/docs/de/intlayer_with_angular_19.md +24 -1
  185. package/docs/de/intlayer_with_angular_21.md +24 -1
  186. package/docs/de/intlayer_with_astro.md +24 -1
  187. package/docs/de/intlayer_with_astro_lit.md +25 -1
  188. package/docs/de/intlayer_with_astro_preact.md +26 -1
  189. package/docs/de/intlayer_with_astro_react.md +26 -1
  190. package/docs/de/intlayer_with_astro_solid.md +26 -1
  191. package/docs/de/intlayer_with_astro_svelte.md +25 -1
  192. package/docs/de/intlayer_with_astro_vue.md +25 -1
  193. package/docs/de/intlayer_with_remix_3.md +22 -1
  194. package/docs/de/self_hosting.md +404 -227
  195. package/docs/en/benchmark/nextjs.md +13 -13
  196. package/docs/en/benchmark/solid.md +5 -5
  197. package/docs/en/benchmark/svelte.md +4 -4
  198. package/docs/en/benchmark/tanstack.md +14 -13
  199. package/docs/en/benchmark/vue.md +5 -5
  200. package/docs/en/chrome_extension.md +130 -0
  201. package/docs/en/cli/index.md +6 -1
  202. package/docs/en/cli/infra.md +175 -0
  203. package/docs/en/cli/init.md +25 -1
  204. package/docs/en/dictionary/html.md +173 -5
  205. package/docs/en/dictionary/markdown.md +263 -1
  206. package/docs/en/intlayer_with_analog.md +23 -1
  207. package/docs/en/intlayer_with_angular_19.md +24 -1
  208. package/docs/en/intlayer_with_angular_21.md +24 -1
  209. package/docs/en/intlayer_with_astro.md +24 -1
  210. package/docs/en/intlayer_with_astro_lit.md +25 -1
  211. package/docs/en/intlayer_with_astro_preact.md +26 -1
  212. package/docs/en/intlayer_with_astro_react.md +26 -1
  213. package/docs/en/intlayer_with_astro_solid.md +26 -1
  214. package/docs/en/intlayer_with_astro_svelte.md +25 -1
  215. package/docs/en/intlayer_with_astro_vue.md +25 -1
  216. package/docs/en/intlayer_with_remix_3.md +22 -1
  217. package/docs/en/self_hosting.md +418 -176
  218. package/docs/en-GB/benchmark/nextjs.md +13 -13
  219. package/docs/en-GB/benchmark/solid.md +5 -5
  220. package/docs/en-GB/benchmark/svelte.md +4 -4
  221. package/docs/en-GB/benchmark/tanstack.md +14 -13
  222. package/docs/en-GB/benchmark/vue.md +5 -5
  223. package/docs/en-GB/chrome_extension.md +130 -0
  224. package/docs/en-GB/cli/index.md +6 -1
  225. package/docs/en-GB/cli/infra.md +162 -0
  226. package/docs/en-GB/cli/init.md +24 -1
  227. package/docs/en-GB/dictionary/html.md +173 -5
  228. package/docs/en-GB/dictionary/markdown.md +263 -1
  229. package/docs/en-GB/intlayer_with_analog.md +23 -1
  230. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  231. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  232. package/docs/en-GB/intlayer_with_astro.md +24 -1
  233. package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
  234. package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
  235. package/docs/en-GB/intlayer_with_astro_react.md +26 -1
  236. package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
  237. package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
  238. package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
  239. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  240. package/docs/en-GB/self_hosting.md +381 -206
  241. package/docs/es/benchmark/nextjs.md +13 -13
  242. package/docs/es/benchmark/solid.md +5 -5
  243. package/docs/es/benchmark/svelte.md +4 -4
  244. package/docs/es/benchmark/tanstack.md +14 -13
  245. package/docs/es/benchmark/vue.md +5 -5
  246. package/docs/es/chrome_extension.md +130 -0
  247. package/docs/es/cli/index.md +6 -1
  248. package/docs/es/cli/infra.md +162 -0
  249. package/docs/es/cli/init.md +24 -1
  250. package/docs/es/dictionary/html.md +173 -5
  251. package/docs/es/dictionary/markdown.md +263 -1
  252. package/docs/es/intlayer_with_analog.md +23 -1
  253. package/docs/es/intlayer_with_angular_19.md +24 -1
  254. package/docs/es/intlayer_with_angular_21.md +24 -1
  255. package/docs/es/intlayer_with_astro.md +24 -1
  256. package/docs/es/intlayer_with_astro_lit.md +25 -1
  257. package/docs/es/intlayer_with_astro_preact.md +26 -1
  258. package/docs/es/intlayer_with_astro_react.md +26 -1
  259. package/docs/es/intlayer_with_astro_solid.md +26 -1
  260. package/docs/es/intlayer_with_astro_svelte.md +25 -1
  261. package/docs/es/intlayer_with_astro_vue.md +25 -1
  262. package/docs/es/intlayer_with_remix_3.md +22 -1
  263. package/docs/es/self_hosting.md +400 -223
  264. package/docs/fr/benchmark/nextjs.md +13 -13
  265. package/docs/fr/benchmark/solid.md +5 -5
  266. package/docs/fr/benchmark/svelte.md +4 -4
  267. package/docs/fr/benchmark/tanstack.md +14 -13
  268. package/docs/fr/benchmark/vue.md +5 -5
  269. package/docs/fr/chrome_extension.md +130 -0
  270. package/docs/fr/cli/index.md +6 -1
  271. package/docs/fr/cli/infra.md +162 -0
  272. package/docs/fr/cli/init.md +24 -1
  273. package/docs/fr/dictionary/html.md +173 -5
  274. package/docs/fr/dictionary/markdown.md +265 -4
  275. package/docs/fr/intlayer_with_analog.md +23 -1
  276. package/docs/fr/intlayer_with_angular_19.md +24 -1
  277. package/docs/fr/intlayer_with_angular_21.md +24 -1
  278. package/docs/fr/intlayer_with_astro.md +24 -1
  279. package/docs/fr/intlayer_with_astro_lit.md +25 -1
  280. package/docs/fr/intlayer_with_astro_preact.md +26 -1
  281. package/docs/fr/intlayer_with_astro_react.md +26 -1
  282. package/docs/fr/intlayer_with_astro_solid.md +26 -1
  283. package/docs/fr/intlayer_with_astro_svelte.md +25 -1
  284. package/docs/fr/intlayer_with_astro_vue.md +25 -1
  285. package/docs/fr/intlayer_with_remix_3.md +22 -1
  286. package/docs/fr/self_hosting.md +401 -224
  287. package/docs/hi/benchmark/nextjs.md +13 -13
  288. package/docs/hi/benchmark/solid.md +5 -5
  289. package/docs/hi/benchmark/svelte.md +4 -4
  290. package/docs/hi/benchmark/tanstack.md +14 -13
  291. package/docs/hi/benchmark/vue.md +5 -5
  292. package/docs/hi/chrome_extension.md +130 -0
  293. package/docs/hi/cli/index.md +6 -1
  294. package/docs/hi/cli/infra.md +162 -0
  295. package/docs/hi/cli/init.md +24 -1
  296. package/docs/hi/dictionary/html.md +173 -5
  297. package/docs/hi/dictionary/markdown.md +263 -1
  298. package/docs/hi/intlayer_with_analog.md +23 -1
  299. package/docs/hi/intlayer_with_angular_19.md +24 -1
  300. package/docs/hi/intlayer_with_angular_21.md +24 -1
  301. package/docs/hi/intlayer_with_astro.md +24 -1
  302. package/docs/hi/intlayer_with_astro_lit.md +25 -1
  303. package/docs/hi/intlayer_with_astro_preact.md +26 -1
  304. package/docs/hi/intlayer_with_astro_react.md +26 -1
  305. package/docs/hi/intlayer_with_astro_solid.md +26 -1
  306. package/docs/hi/intlayer_with_astro_svelte.md +25 -1
  307. package/docs/hi/intlayer_with_astro_vue.md +25 -1
  308. package/docs/hi/intlayer_with_remix_3.md +22 -1
  309. package/docs/hi/self_hosting.md +409 -235
  310. package/docs/id/benchmark/nextjs.md +13 -13
  311. package/docs/id/benchmark/solid.md +5 -5
  312. package/docs/id/benchmark/svelte.md +4 -4
  313. package/docs/id/benchmark/tanstack.md +14 -13
  314. package/docs/id/benchmark/vue.md +5 -5
  315. package/docs/id/chrome_extension.md +130 -0
  316. package/docs/id/cli/index.md +6 -1
  317. package/docs/id/cli/infra.md +162 -0
  318. package/docs/id/cli/init.md +24 -1
  319. package/docs/id/dictionary/html.md +173 -5
  320. package/docs/id/dictionary/markdown.md +263 -1
  321. package/docs/id/intlayer_with_analog.md +23 -1
  322. package/docs/id/intlayer_with_angular_19.md +24 -1
  323. package/docs/id/intlayer_with_angular_21.md +24 -1
  324. package/docs/id/intlayer_with_astro.md +24 -1
  325. package/docs/id/intlayer_with_astro_lit.md +25 -1
  326. package/docs/id/intlayer_with_astro_preact.md +26 -1
  327. package/docs/id/intlayer_with_astro_react.md +26 -1
  328. package/docs/id/intlayer_with_astro_solid.md +26 -1
  329. package/docs/id/intlayer_with_astro_svelte.md +25 -1
  330. package/docs/id/intlayer_with_astro_vue.md +25 -1
  331. package/docs/id/intlayer_with_remix_3.md +22 -1
  332. package/docs/id/self_hosting.md +416 -243
  333. package/docs/it/benchmark/nextjs.md +13 -13
  334. package/docs/it/benchmark/solid.md +5 -5
  335. package/docs/it/benchmark/svelte.md +4 -4
  336. package/docs/it/benchmark/tanstack.md +14 -13
  337. package/docs/it/benchmark/vue.md +5 -5
  338. package/docs/it/chrome_extension.md +130 -0
  339. package/docs/it/cli/index.md +6 -1
  340. package/docs/it/cli/infra.md +162 -0
  341. package/docs/it/cli/init.md +24 -1
  342. package/docs/it/dictionary/html.md +173 -5
  343. package/docs/it/dictionary/markdown.md +263 -1
  344. package/docs/it/intlayer_with_analog.md +23 -1
  345. package/docs/it/intlayer_with_angular_19.md +24 -1
  346. package/docs/it/intlayer_with_angular_21.md +24 -1
  347. package/docs/it/intlayer_with_astro.md +24 -1
  348. package/docs/it/intlayer_with_astro_lit.md +25 -1
  349. package/docs/it/intlayer_with_astro_preact.md +26 -1
  350. package/docs/it/intlayer_with_astro_react.md +26 -1
  351. package/docs/it/intlayer_with_astro_solid.md +26 -1
  352. package/docs/it/intlayer_with_astro_svelte.md +25 -1
  353. package/docs/it/intlayer_with_astro_vue.md +25 -1
  354. package/docs/it/intlayer_with_remix_3.md +22 -1
  355. package/docs/it/self_hosting.md +412 -237
  356. package/docs/ja/benchmark/nextjs.md +13 -13
  357. package/docs/ja/benchmark/solid.md +5 -5
  358. package/docs/ja/benchmark/svelte.md +4 -4
  359. package/docs/ja/benchmark/tanstack.md +13 -12
  360. package/docs/ja/benchmark/vue.md +5 -5
  361. package/docs/ja/chrome_extension.md +130 -0
  362. package/docs/ja/cli/index.md +6 -1
  363. package/docs/ja/cli/infra.md +162 -0
  364. package/docs/ja/cli/init.md +24 -1
  365. package/docs/ja/dictionary/html.md +173 -5
  366. package/docs/ja/dictionary/markdown.md +263 -1
  367. package/docs/ja/intlayer_with_analog.md +23 -1
  368. package/docs/ja/intlayer_with_angular_19.md +24 -1
  369. package/docs/ja/intlayer_with_angular_21.md +24 -1
  370. package/docs/ja/intlayer_with_astro.md +24 -1
  371. package/docs/ja/intlayer_with_astro_lit.md +25 -1
  372. package/docs/ja/intlayer_with_astro_preact.md +26 -1
  373. package/docs/ja/intlayer_with_astro_react.md +26 -1
  374. package/docs/ja/intlayer_with_astro_solid.md +26 -1
  375. package/docs/ja/intlayer_with_astro_svelte.md +25 -1
  376. package/docs/ja/intlayer_with_astro_vue.md +25 -1
  377. package/docs/ja/intlayer_with_remix_3.md +22 -1
  378. package/docs/ja/self_hosting.md +398 -223
  379. package/docs/ko/benchmark/nextjs.md +13 -13
  380. package/docs/ko/benchmark/solid.md +5 -5
  381. package/docs/ko/benchmark/svelte.md +4 -4
  382. package/docs/ko/benchmark/tanstack.md +14 -13
  383. package/docs/ko/benchmark/vue.md +5 -5
  384. package/docs/ko/chrome_extension.md +130 -0
  385. package/docs/ko/cli/index.md +6 -1
  386. package/docs/ko/cli/infra.md +162 -0
  387. package/docs/ko/cli/init.md +24 -1
  388. package/docs/ko/dictionary/html.md +173 -5
  389. package/docs/ko/dictionary/markdown.md +263 -1
  390. package/docs/ko/intlayer_with_analog.md +23 -1
  391. package/docs/ko/intlayer_with_angular_19.md +24 -1
  392. package/docs/ko/intlayer_with_angular_21.md +24 -1
  393. package/docs/ko/intlayer_with_astro.md +24 -1
  394. package/docs/ko/intlayer_with_astro_lit.md +25 -1
  395. package/docs/ko/intlayer_with_astro_preact.md +26 -1
  396. package/docs/ko/intlayer_with_astro_react.md +26 -1
  397. package/docs/ko/intlayer_with_astro_solid.md +26 -1
  398. package/docs/ko/intlayer_with_astro_svelte.md +25 -1
  399. package/docs/ko/intlayer_with_astro_vue.md +25 -1
  400. package/docs/ko/intlayer_with_remix_3.md +22 -1
  401. package/docs/ko/self_hosting.md +411 -238
  402. package/docs/pl/benchmark/nextjs.md +13 -13
  403. package/docs/pl/benchmark/solid.md +5 -5
  404. package/docs/pl/benchmark/svelte.md +4 -4
  405. package/docs/pl/benchmark/tanstack.md +14 -13
  406. package/docs/pl/benchmark/vue.md +5 -5
  407. package/docs/pl/chrome_extension.md +130 -0
  408. package/docs/pl/cli/index.md +6 -1
  409. package/docs/pl/cli/infra.md +162 -0
  410. package/docs/pl/cli/init.md +24 -1
  411. package/docs/pl/dictionary/html.md +173 -5
  412. package/docs/pl/dictionary/markdown.md +263 -1
  413. package/docs/pl/intlayer_with_analog.md +23 -1
  414. package/docs/pl/intlayer_with_angular_19.md +24 -1
  415. package/docs/pl/intlayer_with_angular_21.md +24 -1
  416. package/docs/pl/intlayer_with_astro.md +24 -1
  417. package/docs/pl/intlayer_with_astro_lit.md +25 -1
  418. package/docs/pl/intlayer_with_astro_preact.md +26 -1
  419. package/docs/pl/intlayer_with_astro_react.md +26 -1
  420. package/docs/pl/intlayer_with_astro_solid.md +26 -1
  421. package/docs/pl/intlayer_with_astro_svelte.md +25 -1
  422. package/docs/pl/intlayer_with_astro_vue.md +25 -1
  423. package/docs/pl/intlayer_with_remix_3.md +22 -1
  424. package/docs/pl/self_hosting.md +408 -233
  425. package/docs/pt/benchmark/nextjs.md +13 -13
  426. package/docs/pt/benchmark/solid.md +5 -5
  427. package/docs/pt/benchmark/svelte.md +4 -4
  428. package/docs/pt/benchmark/tanstack.md +14 -13
  429. package/docs/pt/benchmark/vue.md +5 -5
  430. package/docs/pt/chrome_extension.md +130 -0
  431. package/docs/pt/cli/index.md +6 -1
  432. package/docs/pt/cli/infra.md +162 -0
  433. package/docs/pt/cli/init.md +24 -1
  434. package/docs/pt/dictionary/html.md +173 -5
  435. package/docs/pt/dictionary/markdown.md +263 -1
  436. package/docs/pt/intlayer_with_analog.md +23 -1
  437. package/docs/pt/intlayer_with_angular_19.md +24 -1
  438. package/docs/pt/intlayer_with_angular_21.md +24 -1
  439. package/docs/pt/intlayer_with_astro.md +24 -1
  440. package/docs/pt/intlayer_with_astro_lit.md +25 -1
  441. package/docs/pt/intlayer_with_astro_preact.md +26 -1
  442. package/docs/pt/intlayer_with_astro_react.md +26 -1
  443. package/docs/pt/intlayer_with_astro_solid.md +26 -1
  444. package/docs/pt/intlayer_with_astro_svelte.md +25 -1
  445. package/docs/pt/intlayer_with_astro_vue.md +25 -1
  446. package/docs/pt/intlayer_with_remix_3.md +22 -1
  447. package/docs/pt/self_hosting.md +399 -224
  448. package/docs/ru/benchmark/nextjs.md +13 -13
  449. package/docs/ru/benchmark/solid.md +5 -5
  450. package/docs/ru/benchmark/svelte.md +4 -4
  451. package/docs/ru/benchmark/tanstack.md +14 -13
  452. package/docs/ru/benchmark/vue.md +5 -5
  453. package/docs/ru/chrome_extension.md +130 -0
  454. package/docs/ru/cli/index.md +6 -1
  455. package/docs/ru/cli/infra.md +162 -0
  456. package/docs/ru/cli/init.md +24 -1
  457. package/docs/ru/dictionary/html.md +173 -5
  458. package/docs/ru/dictionary/markdown.md +263 -1
  459. package/docs/ru/intlayer_with_analog.md +23 -1
  460. package/docs/ru/intlayer_with_angular_19.md +24 -1
  461. package/docs/ru/intlayer_with_angular_21.md +24 -1
  462. package/docs/ru/intlayer_with_astro.md +24 -1
  463. package/docs/ru/intlayer_with_astro_lit.md +25 -1
  464. package/docs/ru/intlayer_with_astro_preact.md +26 -1
  465. package/docs/ru/intlayer_with_astro_react.md +26 -1
  466. package/docs/ru/intlayer_with_astro_solid.md +26 -1
  467. package/docs/ru/intlayer_with_astro_svelte.md +25 -1
  468. package/docs/ru/intlayer_with_astro_vue.md +25 -1
  469. package/docs/ru/intlayer_with_remix_3.md +22 -1
  470. package/docs/ru/self_hosting.md +403 -228
  471. package/docs/tr/benchmark/nextjs.md +13 -13
  472. package/docs/tr/benchmark/solid.md +5 -5
  473. package/docs/tr/benchmark/svelte.md +4 -4
  474. package/docs/tr/benchmark/tanstack.md +14 -13
  475. package/docs/tr/benchmark/vue.md +5 -5
  476. package/docs/tr/chrome_extension.md +130 -0
  477. package/docs/tr/cli/index.md +6 -1
  478. package/docs/tr/cli/infra.md +162 -0
  479. package/docs/tr/cli/init.md +24 -1
  480. package/docs/tr/dictionary/html.md +173 -5
  481. package/docs/tr/dictionary/markdown.md +263 -1
  482. package/docs/tr/intlayer_with_analog.md +23 -1
  483. package/docs/tr/intlayer_with_angular_19.md +24 -1
  484. package/docs/tr/intlayer_with_angular_21.md +24 -1
  485. package/docs/tr/intlayer_with_astro.md +24 -1
  486. package/docs/tr/intlayer_with_astro_lit.md +25 -1
  487. package/docs/tr/intlayer_with_astro_preact.md +26 -1
  488. package/docs/tr/intlayer_with_astro_react.md +26 -1
  489. package/docs/tr/intlayer_with_astro_solid.md +26 -1
  490. package/docs/tr/intlayer_with_astro_svelte.md +25 -1
  491. package/docs/tr/intlayer_with_astro_vue.md +25 -1
  492. package/docs/tr/intlayer_with_remix_3.md +22 -1
  493. package/docs/tr/self_hosting.md +410 -234
  494. package/docs/uk/benchmark/nextjs.md +13 -13
  495. package/docs/uk/benchmark/solid.md +5 -5
  496. package/docs/uk/benchmark/svelte.md +4 -4
  497. package/docs/uk/benchmark/tanstack.md +14 -13
  498. package/docs/uk/benchmark/vue.md +5 -5
  499. package/docs/uk/chrome_extension.md +130 -0
  500. package/docs/uk/cli/index.md +6 -1
  501. package/docs/uk/cli/infra.md +162 -0
  502. package/docs/uk/cli/init.md +24 -1
  503. package/docs/uk/dictionary/html.md +173 -5
  504. package/docs/uk/dictionary/markdown.md +263 -1
  505. package/docs/uk/intlayer_with_analog.md +23 -1
  506. package/docs/uk/intlayer_with_angular_19.md +24 -1
  507. package/docs/uk/intlayer_with_angular_21.md +24 -1
  508. package/docs/uk/intlayer_with_astro.md +24 -1
  509. package/docs/uk/intlayer_with_astro_lit.md +25 -1
  510. package/docs/uk/intlayer_with_astro_preact.md +26 -1
  511. package/docs/uk/intlayer_with_astro_react.md +26 -1
  512. package/docs/uk/intlayer_with_astro_solid.md +26 -1
  513. package/docs/uk/intlayer_with_astro_svelte.md +25 -1
  514. package/docs/uk/intlayer_with_astro_vue.md +25 -1
  515. package/docs/uk/intlayer_with_remix_3.md +22 -1
  516. package/docs/uk/self_hosting.md +413 -238
  517. package/docs/vi/benchmark/nextjs.md +13 -13
  518. package/docs/vi/benchmark/solid.md +5 -5
  519. package/docs/vi/benchmark/svelte.md +4 -4
  520. package/docs/vi/benchmark/tanstack.md +14 -13
  521. package/docs/vi/benchmark/vue.md +5 -5
  522. package/docs/vi/chrome_extension.md +130 -0
  523. package/docs/vi/cli/index.md +6 -1
  524. package/docs/vi/cli/infra.md +162 -0
  525. package/docs/vi/cli/init.md +24 -1
  526. package/docs/vi/dictionary/html.md +173 -5
  527. package/docs/vi/dictionary/markdown.md +263 -1
  528. package/docs/vi/intlayer_with_analog.md +23 -1
  529. package/docs/vi/intlayer_with_angular_19.md +24 -1
  530. package/docs/vi/intlayer_with_angular_21.md +24 -1
  531. package/docs/vi/intlayer_with_astro.md +24 -1
  532. package/docs/vi/intlayer_with_astro_lit.md +25 -1
  533. package/docs/vi/intlayer_with_astro_preact.md +26 -1
  534. package/docs/vi/intlayer_with_astro_react.md +26 -1
  535. package/docs/vi/intlayer_with_astro_solid.md +26 -1
  536. package/docs/vi/intlayer_with_astro_svelte.md +25 -1
  537. package/docs/vi/intlayer_with_astro_vue.md +25 -1
  538. package/docs/vi/intlayer_with_remix_3.md +22 -1
  539. package/docs/vi/self_hosting.md +408 -234
  540. package/docs/zh/benchmark/nextjs.md +13 -13
  541. package/docs/zh/benchmark/solid.md +5 -5
  542. package/docs/zh/benchmark/svelte.md +4 -4
  543. package/docs/zh/benchmark/tanstack.md +14 -13
  544. package/docs/zh/benchmark/vue.md +5 -5
  545. package/docs/zh/chrome_extension.md +130 -0
  546. package/docs/zh/cli/index.md +6 -1
  547. package/docs/zh/cli/infra.md +162 -0
  548. package/docs/zh/cli/init.md +24 -1
  549. package/docs/zh/dictionary/html.md +172 -5
  550. package/docs/zh/dictionary/markdown.md +262 -1
  551. package/docs/zh/intlayer_with_analog.md +23 -1
  552. package/docs/zh/intlayer_with_angular_19.md +24 -1
  553. package/docs/zh/intlayer_with_angular_21.md +24 -1
  554. package/docs/zh/intlayer_with_astro.md +24 -1
  555. package/docs/zh/intlayer_with_astro_lit.md +25 -1
  556. package/docs/zh/intlayer_with_astro_preact.md +26 -1
  557. package/docs/zh/intlayer_with_astro_react.md +26 -1
  558. package/docs/zh/intlayer_with_astro_solid.md +26 -1
  559. package/docs/zh/intlayer_with_astro_svelte.md +25 -1
  560. package/docs/zh/intlayer_with_astro_vue.md +25 -1
  561. package/docs/zh/intlayer_with_remix_3.md +22 -1
  562. package/docs/zh/self_hosting.md +410 -237
  563. package/legal/ar/privacy_notice.md +9 -3
  564. package/legal/de/privacy_notice.md +9 -3
  565. package/legal/en/privacy_notice.md +10 -3
  566. package/legal/en-GB/privacy_notice.md +9 -3
  567. package/legal/es/privacy_notice.md +9 -3
  568. package/legal/fr/privacy_notice.md +9 -3
  569. package/legal/hi/privacy_notice.md +9 -3
  570. package/legal/id/privacy_notice.md +9 -3
  571. package/legal/it/privacy_notice.md +9 -3
  572. package/legal/ja/privacy_notice.md +9 -3
  573. package/legal/ko/privacy_notice.md +9 -3
  574. package/legal/pl/privacy_notice.md +9 -3
  575. package/legal/pt/privacy_notice.md +9 -3
  576. package/legal/ru/privacy_notice.md +9 -3
  577. package/legal/tr/privacy_notice.md +9 -3
  578. package/legal/uk/privacy_notice.md +9 -3
  579. package/legal/vi/privacy_notice.md +9 -3
  580. package/legal/zh/privacy_notice.md +9 -3
  581. package/package.json +1 -1
  582. package/src/generated/docs.entry.ts +40 -40
  583. package/docs/ar/roadmap.md +0 -321
  584. package/docs/de/roadmap.md +0 -322
  585. package/docs/en/intlayer_with_astro_vanilla.md +0 -713
  586. package/docs/en/roadmap.md +0 -325
  587. package/docs/en-GB/roadmap.md +0 -322
  588. package/docs/es/roadmap.md +0 -322
  589. package/docs/fr/roadmap.md +0 -322
  590. package/docs/hi/roadmap.md +0 -322
  591. package/docs/id/roadmap.md +0 -325
  592. package/docs/it/roadmap.md +0 -322
  593. package/docs/ja/roadmap.md +0 -322
  594. package/docs/ko/roadmap.md +0 -322
  595. package/docs/pl/roadmap.md +0 -325
  596. package/docs/pt/roadmap.md +0 -322
  597. package/docs/ru/roadmap.md +0 -322
  598. package/docs/tr/roadmap.md +0 -325
  599. package/docs/uk/roadmap.md +0 -325
  600. package/docs/vi/roadmap.md +0 -325
  601. package/docs/zh/roadmap.md +0 -322
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-11
3
- updatedAt: 2025-08-23
3
+ updatedAt: 2026-09-22
4
4
  title: vue-i18n vs Intlayer
5
5
  description: Comparación entre vue-i18n e Intlayer para la internacionalización (i18n) en aplicaciones Vue/Nuxt
6
6
  keywords:
@@ -20,6 +20,8 @@ author: aymericzip
20
20
 
21
21
  # vue-i18n VS Intlayer | Internacionalización (i18n) en Vue
22
22
 
23
+ ![Vue i18n library ecosystem](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.webp?raw=true)
24
+
23
25
  Esta guía compara dos opciones populares de i18n para **Vue 3** (y **Nuxt**): **vue-i18n** e **Intlayer**.
24
26
  Nos enfocamos en las herramientas modernas de Vue (Vite, Composition API) y evaluamos:
25
27
 
@@ -31,6 +33,8 @@ Nos enfocamos en las herramientas modernas de Vue (Vite, Composition API) y eval
31
33
  6. **Experiencia del desarrollador (DX), herramientas y mantenimiento**
32
34
  7. **SEO y escalabilidad para proyectos grandes**
33
35
 
36
+ <TOC/>
37
+
34
38
  > **resumen**: Ambos pueden localizar aplicaciones Vue. Si deseas **contenido con alcance por componente**, **tipos estrictos en TypeScript**, **verificaciones de claves faltantes en tiempo de compilación**, **diccionarios optimizados por tree-shaking**, y **helpers integrados para router/SEO** además de **Editor Visual y traducciones asistidas por IA**, **Intlayer** es la opción más completa y moderna.
35
39
 
36
40
  ## Posicionamiento a alto nivel
@@ -38,6 +42,30 @@ Nos enfocamos en las herramientas modernas de Vue (Vite, Composition API) y eval
38
42
  - **vue-i18n** - La biblioteca de i18n por excelencia para Vue. Formateo flexible de mensajes (estilo ICU), bloques SFC `<i18n>` para mensajes locales y un gran ecosistema. La seguridad y el mantenimiento a gran escala dependen principalmente de ti.
39
43
  - **Intlayer** - Modelo de contenido centrado en componentes para Vue/Vite/Nuxt con **tipado estricto en TS**, **verificaciones en tiempo de compilación**, **tree-shaking**, **helpers para router y SEO**, **Editor Visual/CMS** opcional y **traducciones asistidas por IA**.
40
44
 
45
+ ## Lo que cuesta en tiempo de compilación
46
+
47
+ Antes de las tablas de características, la parte medida. [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom) compila la misma aplicación Vite + Vue 3 (10 páginas, 10 idiomas) con cada biblioteca y registra lo que descarga el navegador:
48
+
49
+ <I18nBenchmark framework="vite-vue" vertical/>
50
+
51
+ | Setup | Lib size (gz) | Page JS avg (gz) | Page leak | Component avg (gz) |
52
+ | -------------------- | ------------: | ---------------: | --------: | -----------------: |
53
+ | **base** (no i18n) | 0.0 KB | 41.3 KB | - | 1.1 KB |
54
+ | `vue-i18n` | 24.3 KB | 134.9 KB | 90.0% | 196.0 KB |
55
+ | `@intlayer/vue-i18n` | 7.9 KB | 47.0 KB | 0.0% | 8.4 KB |
56
+ | **`vue-intlayer`** | **3.9 KB** | **57.1 KB** | **0.0%** | **7.7 KB** |
57
+
58
+ El runtime de `vue-i18n` por sí solo pesa **6 veces** el de Intlayer, cada página transporta un **90% de cadenas de páginas ajenas**, y un componente compilado de forma aislada arrastra **196 KB** porque `useI18n()` lo vincula al árbol global de mensajes. La prueba completa, con tiempos de reactividad y carga de página, se encuentra en el [benchmark vue-i18n vs Intlayer](https://intlayer.org/es/blog/vue-i18n-vs-intlayer-benchmark).
59
+
60
+ <ClickToOpenIframe
61
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md"
62
+ width="100%"
63
+ height="600px"
64
+ style="border:none;"
65
+ />
66
+
67
+ > Tabla completa en el [informe de benchmark de Vue](https://intlayer.org/es/doc/benchmark/vue).
68
+
41
69
  ## Comparación de características lado a lado (enfocado en Vue)
42
70
 
43
71
  | Característica | **Intlayer** | **vue-i18n** |
@@ -63,59 +91,74 @@ Nos enfocamos en las herramientas modernas de Vue (Vite, Composition API) y eval
63
91
 
64
92
  ## Comparación en profundidad
65
93
 
66
- ### 1) Arquitectura y escalabilidad
94
+ <AccordionGroup>
95
+ <Accordion header="1) Arquitectura y escalabilidad">
67
96
 
68
- - **vue-i18n**: Las configuraciones comunes usan **catálogos centralizados** por idioma (opcionalmente divididos en archivos/espacios de nombres). Los bloques `<i18n>` en SFC permiten mensajes locales, pero los equipos a menudo vuelven a catálogos compartidos a medida que los proyectos crecen.
97
+ - **vue-i18n**: Las configuraciones comunes usan **catálogos centralizados** por idioma (opcionalmente divididos en archivos/espacios de nombres). Los bloques `<i18n>` en SFC permiten mensajes locales, pero los equipos a menudo vuelven a catálogos compartidos a medida que los proyectos crecen. Consulta [i18n por componente frente a centralizado](https://intlayer.org/es/blog/per-component-vs-centralized-i18n).
69
98
  - **Intlayer**: Promueve **diccionarios por componente** almacenados junto al componente al que sirven. Esto reduce conflictos entre equipos, mantiene el contenido accesible y limita naturalmente la deriva/las claves no usadas.
70
99
 
71
100
  **Por qué es importante:** En aplicaciones Vue grandes o sistemas de diseño, el **contenido modular** escala mejor que los catálogos monolíticos.
72
101
 
73
- ### 2) TypeScript y seguridad
102
+ </Accordion>
103
+ <Accordion header="2) TypeScript y seguridad">
74
104
 
75
105
  - **vue-i18n**: Buen soporte para TS; la **tipificación estricta de claves** generalmente requiere esquemas/generics personalizados y convenciones cuidadosas.
76
106
  - **Intlayer**: **Genera tipos estrictos** a partir de tu contenido, proporcionando **autocompletado en el IDE** y **errores en tiempo de compilación** por errores tipográficos o claves faltantes.
77
107
 
78
108
  **Por qué es importante:** La tipificación fuerte detecta problemas **antes** de la ejecución.
79
109
 
80
- ### 3) Manejo de traducciones faltantes
110
+ </Accordion>
111
+ <Accordion header="3) Manejo de traducciones faltantes">
81
112
 
82
- - **vue-i18n**: Advertencias y soluciones alternativas en **tiempo de ejecución** (por ejemplo, usar idioma o clave de reserva).
83
- - **Intlayer**: Detección en **tiempo de compilación** con advertencias/errores a través de idiomas y claves.
113
+ - **vue-i18n**: Advertencias y soluciones alternativas en **tiempo de ejecución** (por ejemplo, usar idioma o clave de reserva). Consulta [detección de traducciones faltantes](https://intlayer.org/es/blog/detecting-missing-translations).
114
+ - **Intlayer**: Detección en **tiempo de compilación** con advertencias/errores a través de idiomas y claves., más `npx intlayer test` en CI.
84
115
 
85
116
  **Por qué es importante:** La aplicación de reglas en tiempo de compilación mantiene la interfaz de producción limpia y consistente.
86
117
 
87
- ### 4) Estrategia de rutas y URLs (Vue Router/Nuxt)
118
+ </Accordion>
119
+ <Accordion header="4) Estrategia de rutas y URLs (Vue Router/Nuxt)">
88
120
 
89
- - **Ambos** pueden trabajar con rutas localizadas.
121
+ - **Ambos** pueden trabajar con rutas localizadas. Consulta la [guía de hreflang](https://intlayer.org/es/blog/hreflang-guide-multilingual-seo).
90
122
  - **Intlayer** proporciona ayudas para **generar rutas localizadas**, **gestionar prefijos de locales** y emitir **`<link rel="alternate" hreflang>`** para SEO. Con Nuxt, complementa el enrutamiento del framework.
91
123
 
92
124
  **Por qué es importante:** Menos capas personalizadas y un **SEO más limpio** entre locales.
93
125
 
94
- ### 5) Rendimiento y comportamiento de carga
126
+ </Accordion>
127
+ <Accordion header="5) Rendimiento y comportamiento de carga">
95
128
 
96
- - **vue-i18n**: Soporta mensajes de locales asíncronos; evitar la sobrecarga de paquetes depende de ti (divide los catálogos con cuidado).
129
+ - **vue-i18n**: Soporta mensajes de locales asíncronos; evitar la sobrecarga de paquetes depende de ti (divide los catálogos con cuidado). El benchmark anterior pone números a esto: 134.9 KB frente a 57.1 KB por página.
97
130
  - **Intlayer**: Realiza **tree-shaking** en la compilación y **carga perezosa por diccionario/locale**. El contenido no usado no se incluye.
98
131
 
99
132
  **Por qué es importante:** Paquetes más pequeños y un inicio más rápido para aplicaciones Vue multilingües.
100
133
 
101
- ### 6) Experiencia del desarrollador y herramientas
134
+ </Accordion>
135
+ <Accordion header="6) Experiencia del desarrollador y herramientas">
102
136
 
103
137
  - **vue-i18n**: Documentación y comunidad maduras; normalmente dependerás de **plataformas de localización externas** para los flujos editoriales.
104
- - **Intlayer**: Incluye un **Editor Visual gratuito**, un **CMS** opcional (compatible con Git o externalizado), una **extensión para VSCode**, utilidades **CLI/CI**, y **traducciones asistidas por IA** usando tus propias claves de proveedor.
138
+ - **Intlayer**: Incluye un **Editor Visual gratuito**, un **CMS** opcional (compatible con Git o externalizado), una **extensión para VSCode**, utilidades **CLI/CI**, y **traducciones asistidas por IA** usando tus propias claves de proveedor., un **servidor MCP**
105
139
 
106
140
  **Por qué importa:** Menores costos operativos y un ciclo de desarrollo–contenido más corto.
107
141
 
108
- ### 7) SEO, SSR y SSG
142
+ </Accordion>
143
+ <Accordion header="7) SEO, SSR y SSG">
109
144
 
110
- - **Ambos** funcionan con Vue SSR y Nuxt.
145
+ - **Ambos** funcionan con Vue SSR y Nuxt. Consulta [internacionalización y SEO](https://intlayer.org/es/blog/SEO-and-i18n).
111
146
  - **Intlayer**: Añade **ayudas SEO** (sitemaps/metadata/`hreflang`) que son independientes del framework y funcionan bien con las compilaciones de Vue/Nuxt.
112
147
 
113
148
  **Por qué importa:** SEO internacional sin configuraciones personalizadas.
114
149
 
150
+ </Accordion>
151
+ </AccordionGroup>
152
+
115
153
  ## ¿Por qué Intlayer? (Problema y enfoque)
116
154
 
155
+ ![Centralized catalogs versus per-component dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/assets/project_stucture_18n_vs_intlayer.png?raw=true)
156
+
117
157
  La mayoría de los stacks i18n (incluyendo **vue-i18n**) comienzan desde **catálogos centralizados**:
118
158
 
159
+ <Tabs defaultTab="per-locale" group="catalog">
160
+ <Tab label="Un archivo por idioma" value="per-locale">
161
+
119
162
  ```bash
120
163
  .
121
164
  ├── locales
@@ -127,7 +170,8 @@ La mayoría de los stacks i18n (incluyendo **vue-i18n**) comienzan desde **catá
127
170
  └── MyComponent.vue
128
171
  ```
129
172
 
130
- O con carpetas por idioma:
173
+ </Tab>
174
+ <Tab label="Una carpeta por idioma" value="per-folder">
131
175
 
132
176
  ```bash
133
177
  .
@@ -146,6 +190,34 @@ O con carpetas por idioma:
146
190
  └── MyComponent.vue
147
191
  ```
148
192
 
193
+ </Tab>
194
+ </Tabs>
195
+
196
+ Esa carpeta sigue creciendo, un namespace por funcionalidad, en cada idioma:
197
+
198
+ ```txt
199
+ locales
200
+ ├── EN
201
+ │ ├── blog.json
202
+ │ ├── about.json
203
+ │ ├── auth.json
204
+ │ ├── blog.json
205
+ │ ├── cart.json
206
+ │ ├── categories.json
207
+ │ ├── contact.json
208
+ │ ├── dashboard.json
209
+ │ ├── errors.json
210
+ │ ├── faq.json
211
+ │ ├── footer.json
212
+ │ ├── form.json
213
+ │ ├── home.json
214
+ │ ├── language.json
215
+ │ ├── navbar.json
216
+ │ ├── ... 65 files
217
+ │ └── validation.json
218
+ └── ES
219
+ ```
220
+
149
221
  Esto a menudo ralentiza el desarrollo a medida que las aplicaciones crecen:
150
222
 
151
223
  1. **Para un nuevo componente** creas/editas catálogos remotos, configuras espacios de nombres y traduces (a menudo mediante copiar/pegar manual desde herramientas de IA).
@@ -161,7 +233,33 @@ Esto a menudo ralentiza el desarrollo a medida que las aplicaciones crecen:
161
233
  └── MyComponent.vue
162
234
  ```
163
235
 
164
- **Declaración de contenido** (por componente):
236
+ <Tabs defaultTab="intlayer" group="techno">
237
+ <Tab label="vue-i18n" value="vue-i18n">
238
+
239
+ ```json fileName="./locales/en.json"
240
+ {
241
+ "componentExample": {
242
+ "greeting": "Hello World"
243
+ }
244
+ }
245
+ ```
246
+
247
+ ```vue fileName="./components/MyComponent.vue"
248
+ <script setup lang="ts">
249
+ import { useI18n } from "vue-i18n";
250
+
251
+ const { t } = useI18n();
252
+ </script>
253
+
254
+ <template>
255
+ <span>{{ t("componentExample.greeting") }}</span>
256
+ </template>
257
+ ```
258
+
259
+ Cada archivo de idioma debe editarse a mano, y la clave es una simple cadena de texto: una errata se muestra como `componentExample.greting` en producción.
260
+
261
+ </Tab>
262
+ <Tab label="Intlayer" value="intlayer">
165
263
 
166
264
  ```ts fileName="./components/MyComponent/myComponent.content.ts"
167
265
  import { t, type Dictionary } from "intlayer";
@@ -171,8 +269,8 @@ const componentExampleContent = {
171
269
  content: {
172
270
  greeting: t({
173
271
  en: "Hello World",
174
- es: "Hola Mundo",
175
272
  fr: "Bonjour le monde",
273
+ es: "Hola Mundo",
176
274
  }),
177
275
  },
178
276
  } satisfies Dictionary;
@@ -180,11 +278,10 @@ const componentExampleContent = {
180
278
  export default componentExampleContent;
181
279
  ```
182
280
 
183
- **Uso en Vue** (API de composición):
184
-
185
281
  ```vue fileName="./components/MyComponent/MyComponent.vue"
186
282
  <script setup lang="ts">
187
- import { useIntlayer } from "vue-intlayer"; // Integración con Vue
283
+ import { useIntlayer } from "vue-intlayer"; // Vue integration
284
+
188
285
  const { greeting } = useIntlayer("component-example");
189
286
  </script>
190
287
 
@@ -193,6 +290,11 @@ const { greeting } = useIntlayer("component-example");
193
290
  </template>
194
291
  ```
195
292
 
293
+ Todos los idiomas se encuentran en un único archivo tipado junto al componente.
294
+
295
+ </Tab>
296
+ </Tabs>
297
+
196
298
  Este enfoque:
197
299
 
198
300
  - **Acelera el desarrollo** (declara una vez; el IDE/IA autocompleta).
@@ -220,22 +322,71 @@ Este enfoque:
220
322
 
221
323
  ## ¿Cuándo elegir cuál?
222
324
 
223
- - **Elige vue-i18n** si quieres el **enfoque estándar de Vue**, te sientes cómodo gestionando catálogos/espacios de nombres tú mismo, y tu aplicación es de **tamaño pequeño a mediano** (o ya dependes de Nuxt i18n).
224
- - **Elige Intlayer** si valoras el **contenido con alcance por componente**, **TypeScript estricto**, **garantías en tiempo de compilación**, **tree-shaking**, y herramientas integradas para enrutamiento/SEO/editor-especialmente para **códigos grandes y modulares en Vue/Nuxt**.
325
+ <AccordionGroup>
326
+ <Accordion header="Elegir vue-i18n">
327
+
328
+ Deseas el **enfoque estándar de Vue**, te sientes cómodo gestionando catálogos y namespaces tú mismo, y tu aplicación es de **tamaño pequeño a mediano** (o ya dependes de Nuxt i18n). Los bloques SFC `<i18n>` y `setLocaleMessage()` en runtime son características que Intlayer deliberadamente no replica.
329
+
330
+ </Accordion>
331
+ <Accordion header="Elegir Intlayer">
332
+
333
+ Valoras el **contenido acotado al componente**, **TypeScript estricto**, **garantías en tiempo de compilación**, **tree-shaking** y herramientas completas para enrutamiento, SEO y edición, especialmente para **bases de código modulares grandes en Vue/Nuxt** y sistemas de diseño. Comienza con [Intlayer con Vue](https://intlayer.org/es/doc/environment/vite-and-vue) o [con Nuxt](https://intlayer.org/es/doc/environment/nuxt-and-vue).
334
+
335
+ </Accordion>
336
+ <Accordion header="Elegir @intlayer/vue-i18n">
337
+
338
+ Estás en `vue-i18n` hoy y quieres las ganancias de bundle sin editar ningún archivo `.vue`. El [adaptador de compatibilidad](https://intlayer.org/es/doc/compatibility/vue-i18n) mantiene `createI18n`, `useI18n`, `t()`, `d()`, `n()`, `$t` y `v-t`, y los sirve desde diccionarios compilados. Medido lado a lado en [vue-i18n vs @intlayer/vue-i18n](https://intlayer.org/es/blog/vue-i18n-vs-intlayer-vue-i18n).
339
+
340
+ </Accordion>
341
+ </AccordionGroup>
225
342
 
226
343
  ## Interoperabilidad con vue-i18n
227
344
 
228
345
  `intlayer` también puede ayudarte a gestionar tus namespaces de `vue-i18n`.
229
346
 
230
- Usando `intlayer`, puedes declarar tu contenido en el formato de tu librería i18n favorita, e intlayer generará tus namespaces en la ubicación de tu elección (ejemplo: `/messages/{{locale}}/{{namespace}}.json`).
347
+ Usando `intlayer`, puedes declarar tu contenido en el formato de tu librería i18n favorita, e intlayer generará tus namespaces en la ubicación de tu elección (ejemplo: `/messages/{{locale}}/{{namespace}}.json`). Consulta la [documentación de compatibilidad con vue-i18n](https://intlayer.org/es/doc/compatibility/vue-i18n) y el [adaptador Nuxt i18n](https://intlayer.org/es/doc/compatibility/nuxtjs-i18n).
348
+
349
+ ## Preguntas frecuentes
350
+
351
+ <FAQ>
352
+
353
+ <Question title="¿Es Intlayer un sustituto de vue-i18n o una capa superior?">
354
+
355
+ Ambos, según cómo lo adoptes. `vue-intlayer` es un runtime nativo con su propio composable `useIntlayer()`. `@intlayer/vue-i18n` es un adaptador de compatibilidad que mantiene la API de `vue-i18n` y cambia a qué está vinculada, para que puedas migrar sin tocar componentes y avanzar archivo por archivo después.
356
+
357
+ </Question>
358
+
359
+ <Question title="¿Qué ocurre con mis bloques SFC <i18n>?">
360
+
361
+ El adaptador no los lee. Mueve esos mensajes a tu JSON de idioma, o a un archivo `.content.ts` junto al componente, que es la misma idea con tipos generados. Es la única función de `vue-i18n` que no se traslada.
231
362
 
232
- ## Notas prácticas para la migración (vue-i18n → Intlayer)
363
+ </Question>
233
364
 
234
- - **Comience por función**: Mueva una ruta/vista/componente a la vez a los diccionarios locales de Intlayer.
235
- - **Puente durante la migración**: Mantenga los catálogos de vue-i18n en paralelo; reemplace gradualmente las búsquedas.
236
- - **Active verificaciones estrictas**: Permita que la detección en tiempo de compilación identifique temprano claves/idiomas faltantes.
237
- - **Adopte los ayudantes de router/SEO**: Estandarice la detección de idioma y las etiquetas `hreflang`.
238
- - **Mida los paquetes**: Espere **reducciones en el tamaño del paquete** a medida que se excluye contenido no utilizado.
365
+ <Question title="¿Funciona Intlayer con Nuxt?">
366
+
367
+ Sí. [Intlayer con Nuxt](https://intlayer.org/es/doc/environment/nuxt-and-vue) cubre enrutamiento multilingüe, middleware de detección de idioma y generación de sitemaps. Si utilizas `@nuxtjs/i18n`, el [adaptador de compatibilidad Nuxt i18n](https://intlayer.org/es/doc/compatibility/nuxtjs-i18n) es la ruta de migración.
368
+
369
+ </Question>
370
+
371
+ <Question title="¿Puedo mantener mis locales/{locale}.json como fuente de verdad?">
372
+
373
+ Sí. El [plugin de sincronización JSON](https://intlayer.org/es/doc/compatibility/vue-i18n) los lee con el dialecto de `vue-i18n` (`{name}`, `{0}`, plurales en tubería `"car | cars"`) y vuelve a escribir las traducciones cuando la CLI o el CMS los actualiza.
374
+
375
+ </Question>
376
+
377
+ <Question title="¿Funciona ICU con Intlayer en Vue?">
378
+
379
+ El soporte nativo para ICU está en desarrollo. El adaptador `@intlayer/vue-i18n` resuelve la sintaxis de mensajes propia de `vue-i18n`, incluidos los plurales en barra vertical y la interpolación nombrada y de listas. Para el modelo de pluralización de Intlayer, consulta el [contenido de enumeración](https://intlayer.org/es/doc/concept/content/enumeration).
380
+
381
+ </Question>
382
+
383
+ </FAQ>
384
+
385
+ ## GitHub STARs
386
+
387
+ Las estrellas de GitHub son un fuerte indicador de la popularidad de un proyecto, la confianza de la comunidad y la relevancia a largo plazo. Si bien no son una medida directa de la calidad técnica, reflejan cuántos desarrolladores encuentran útil el proyecto, siguen su progreso y es probable que lo adopten. Para estimar el valor de un proyecto, las estrellas ayudan a comparar la tracción entre alternativas y brindan información sobre el crecimiento del ecosistema.
388
+
389
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
239
390
 
240
391
  ## Conclusión
241
392
 
@@ -244,4 +395,15 @@ Tanto **vue-i18n** como **Intlayer** localizan bien las aplicaciones Vue. La dif
244
395
  - Con **Intlayer**, el **contenido modular**, **TS estricto**, **seguridad en tiempo de compilación**, **paquetes optimizados por árbol de dependencias** y las **herramientas para router/SEO/editor** vienen **listos para usar**.
245
396
  - Si tu equipo prioriza la **mantenibilidad y velocidad** en una aplicación Vue/Nuxt multilingüe y basada en componentes, Intlayer ofrece la experiencia **más completa** hoy en día.
246
397
 
247
- Consulta el documento ['¿Por qué Intlayer?'](https://intlayer.org/doc/why) para más detalles.
398
+ ## Lecturas adicionales
399
+
400
+ - [vue-i18n vs Intlayer benchmark](https://intlayer.org/es/blog/vue-i18n-vs-intlayer-benchmark), la prueba medida detrás de la tabla anterior
401
+ - [vue-i18n vs @intlayer/vue-i18n](https://intlayer.org/es/blog/vue-i18n-vs-intlayer-vue-i18n), el adaptador en la misma aplicación
402
+ - [Is vue-i18n outdated?](https://intlayer.org/es/blog/is-vue-i18n-outdated)
403
+ - [How to pick a Vue i18n library](https://intlayer.org/es/blog/how-to-pick-vue-i18n-library)
404
+ - [Using Intlayer with vue-i18n](https://intlayer.org/es/blog/intlayer-with-vue-i18n)
405
+ - [Vue benchmark report](https://intlayer.org/es/doc/benchmark/vue)
406
+ - [Migration guide: vue-i18n to Intlayer](https://intlayer.org/es/doc/migration/vue-i18n)
407
+ - [Bundle optimization](https://intlayer.org/es/doc/concept/bundle-optimization) and [the Intlayer compiler](https://intlayer.org/es/doc/compiler)
408
+
409
+ Refer to ['Why Intlayer?' doc](https://intlayer.org/es/doc/why) for more details.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-13
3
- updatedAt: 2026-09-13
3
+ updatedAt: 2026-09-22
4
4
  title: "i18next vs @intlayer/i18next : Même API, Bundle Différent"
5
5
  description: Ce qui change lorsqu'une application React ou Next.js conserve ses appels à i18next, react-i18next et next-i18next mais les exécute via les adaptateurs @intlayer/i18next. JavaScript par page, taille des composants, fuite de chaînes et hydratation mesurés sur le même code, ainsi que ce que les adaptateurs conservent, ignorent et ne peuvent pas remplacer.
6
6
  keywords:
@@ -28,6 +28,8 @@ author: aymericzip
28
28
 
29
29
  # i18next VS @intlayer/i18next | Même API, Bundle Différent
30
30
 
31
+ ![i18next VS Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18next-next-intl-intlayer.webp?raw=true)
32
+
31
33
  `@intlayer/i18next`, `@intlayer/react-i18next` et `@intlayer/next-i18next` sont des adaptateurs de compatibilité. Ils exposent l'API `i18next` que votre code utilise déjà (`useTranslation`, `t()`, `<Trans>`, `i18n.changeLanguage()`, `getFixedT`, `serverSideTranslations`...) et la distribuent à partir de dictionnaires compilés par Intlayer. Les composants ne changent pas. Le runtime sous-jacent, lui, change.
32
34
 
33
35
  Cet article mesure ce remplacement sur la même application Next.js, construite une fois avec `next-i18next` et une fois avec `@intlayer/next-i18next`. Les chiffres proviennent de [Benchmark Bloom](https://github.com/intlayer-org/benchmark-bloom). Pour comparer `i18next` et Intlayer en tant que bibliothèques distinctes, consultez [i18next vs Intlayer](https://intlayer.org/fr/blog/i18next-vs-intlayer). Celui-ci se concentre sur ce que l'adaptateur transforme lorsque vous conservez votre code tel quel.
@@ -109,6 +111,10 @@ Pour chaque build, la suite enregistre :
109
111
 
110
112
  ### Résultats sur Next.js
111
113
 
114
+ Sélectionnez les métriques et les bibliothèques qui vous intéressent :
115
+
116
+ <I18nBenchmark framework="nextjs" vertical/>
117
+
112
118
  | Configuration | Stratégie | Taille lib (gz) | JS page moy (gz) | Fuite locale | Fuite page | Composant moy (gz) | Réactivité E2E | Hydratation |
113
119
  | ---------------------------- | -------------- | --------------: | ---------------: | -----------: | ---------: | -----------------: | -------------: | ----------: |
114
120
  | **base** (sans i18n) | - | 0.0 Ko | 141.0 Ko | 0.0% | 0.0% | 0.9 Ko | 13.4 ms | 11.8 ms |
@@ -129,10 +135,21 @@ Pour chaque build, la suite enregistre :
129
135
  - **Hydratation et basculement plus rapides.** L'hydratation passe de 15.6 ms à **11.3 ms** (et de 27.7 ms dans la configuration `dynamic`, où l'appel backend se situe sur le chemin critique). Le basculement de locale passe de 15-16 ms à **11-12 ms**.
130
136
  - **L'adaptateur n'est pas le runtime natif.** `next-intlayer` atteint **141.3 Ko**, soit +0.3 Ko par rapport à l'application de base. L'adaptateur supporte la surface d'API de `i18next` (dialecte d'interpolation, résolution des pluriels et contextes, analyse des balises `<Trans>`) en surcouche du cœur d'Intlayer : 9.4 Ko et +9.4 Ko par page par rapport au natif. Il constitue une passerelle, non une fin en soi.
131
137
 
138
+ <ClickToOpenIframe
139
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-nextjs.md"
140
+ width="100%"
141
+ height="600px"
142
+ style="border:none;"
143
+ />
144
+
145
+ > Tableau complet, chaque bibliothèque et chaque stratégie, dans le [rapport de benchmark Next.js](https://intlayer.org/fr/doc/benchmark/nextjs).
146
+
132
147
  > L'adaptateur `react-i18next` sur Vite / TanStack Start n'a pas été inclus dans ce cycle de test. La référence pour `react-i18next` sur TanStack Start se trouve dans [i18next vs Intlayer](https://intlayer.org/fr/blog/i18next-vs-intlayer) : 127-184 Ko par page et 123-185 ms de temps de basculement de locale quand le backend est différé.
133
148
 
134
149
  ## Pourquoi ces écarts de métriques
135
150
 
151
+ ![The Intlayer compiler extracts content from components](https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.webp?raw=true)
152
+
136
153
  Rien n'a changé dans le dossier `components/` : les gains proviennent donc exclusivement de la cible à laquelle `useTranslation` est relié.
137
154
 
138
155
  **Avec `i18next`**, la liaison s'établit avec l'instance globale. Tout ce qui y a été chargé (toutes les locales en `static`, l'ensemble du namespace de la locale active en `dynamic`) est accessible depuis chaque composant appelant `useTranslation()`. Le bundler ne peut pas découper plus finement que ce que l'instance retient, et le runtime ne peut pas anticiper les clés demandées au rendu.
@@ -149,6 +166,10 @@ Rien n'a changé dans le dossier `components/` : les gains proviennent donc excl
149
166
  └── About.tsx # useTranslation(); t("about.title")
150
167
  ```
151
168
 
169
+ Tout ce que l'instance contient est expédié sur chaque page, et le gaspillage croît sur deux axes, les pages et les locales :
170
+
171
+ ![Theoretical content leakage by architecture](https://github.com/aymericzip/intlayer/blob/main/docs/assets/theorical_content_leakage.webp?raw=true)
172
+
152
173
  **Avec `@intlayer/next-i18next`**, la liaison s'opère directement avec le dictionnaire. `syncJSON` convertit chaque fichier de namespace en dictionnaire ; la passe d'optimisation transmet au composant le dictionnaire correspondant sous forme d'un import que le bundler peut tracer et séparer par page et par locale.
153
174
 
154
175
  ```bash
@@ -297,26 +318,112 @@ export default defineConfig({
297
318
 
298
319
  ## Limites à connaître avant de démarrer
299
320
 
300
- - **Backends et détecteurs sont inertes.** `i18n.use(HttpBackend)` exécute le `init` du plugin et rien de plus. Si votre application dépendait de traductions rapatriées depuis un CMS au moment de la requête, ce flux n'existe plus ; utilisez le CMS d'Intlayer ou les commandes `intlayer pull` / `push`.
301
- - **`resources` est ignoré, non fusionné.** Contrairement à certains adaptateurs, `@intlayer/i18next` n'utilise pas `resources` inliné comme solution de repli. Chaque clé doit exister dans les dictionnaires synchronisés, ce que valide `intlayer test`.
302
- - **L'App Router nécessite la retouche du provider.** Un seul fichier, présenté ci-dessus. Le Pages Router avec `appWithTranslation` ne nécessite aucun ajustement.
303
- - **`next-i18next.config.js` n'est pas lu.** `localePath`, `fallbackLng`, `reloadOnPrerender` et équivalents n'ont pas d'effet direct ; les locales et le repli sont gérés dans `intlayer.config.ts`.
304
- - **L'adaptateur a un coût résiduel.** 9.4 Ko de runtime et +9.4 Ko par page par rapport à `next-intlayer`. Lorsque tous vos composants seront passés à `useIntlayer`, retirez-le.
321
+ <AccordionGroup>
322
+ <Accordion header="Les backends et détecteurs sont inertes">
323
+
324
+ `i18n.use(HttpBackend)` appelle l'init du plugin et rien d'autre. Si votre application dépendait de la récupération de traductions depuis un CMS au runtime, ce flux disparaît ; utilisez le [CMS d'Intlayer](https://intlayer.org/fr/doc/concept/cms) ou les commandes `intlayer pull` / `push` à la place. La détection de locale devient la configuration de routage d'Intlayer (préfixe d'URL, cookie, en-tête).
325
+
326
+ </Accordion>
327
+ <Accordion header="resources est ignoré, pas fusionné">
328
+
329
+ Contrairement à certains autres adaptateurs, `@intlayer/i18next` n'utilise pas les `resources` inline comme solution de repli. Chaque clé doit exister dans les dictionnaires synchronisés, ce que vérifie `intlayer test`.
330
+
331
+ </Accordion>
332
+ <Accordion header="L'App Router nécessite la modification du provider">
333
+
334
+ Un seul fichier, montré ci-dessus. Le Pages Router avec `appWithTranslation` ne nécessite rien.
335
+
336
+ </Accordion>
337
+ <Accordion header="next-i18next.config.js n'est pas lu">
338
+
339
+ `localePath`, `fallbackLng`, `reloadOnPrerender` et autres n'ont aucun équivalent ; les locales et le fallback proviennent de `intlayer.config.ts`.
340
+
341
+ </Accordion>
342
+ <Accordion header="L'adaptateur n'est pas gratuit">
343
+
344
+ 9.4 KB de runtime et +9.4 KB par page par rapport à `next-intlayer`. Une fois que chaque composant a migré vers `useIntlayer`, supprimez-le.
345
+
346
+ </Accordion>
347
+ </AccordionGroup>
305
348
 
306
349
  ## Quand choisir quelle solution ?
307
350
 
308
- - **Restez sur `i18next`** si votre application nécessite impérativement des backends au runtime (traductions servies par un CMS à la volée), l'écosystème spécifique de plugins, ou une cible hors React non couverte par les adaptateurs.
309
- - **Optez pour `@intlayer/*`** si vous utilisez `react-i18next` / `next-i18next` et souhaitez récupérer 68 Ko, obtenir des composants 8x plus légers, 0% de fuite, des clés typées et des contrôles en CI sans devoir tout réécrire. C'est le point d'entrée idéal pour une codebase `i18next` existante.
310
- - **Passez au natif (`next-intlayer` / `react-intlayer`)** pour les nouveaux projets ou une fois l'adaptateur assimilé. C'est la formule la plus légère (5.5 Ko, +0.3 Ko par page) qui débloque les Server Components synchrones et les fichiers de contenu `.content.ts` par composant.
351
+ <AccordionGroup>
352
+ <Accordion header="Rester sur i18next">
353
+
354
+ Votre application dépend de backends au runtime (traductions servies par un CMS au moment de la requête), de l'écosystème de plugins, ou d'une cible non-React non couverte par les adaptateurs.
355
+
356
+ </Accordion>
357
+ <Accordion header="Utiliser @intlayer/*">
358
+
359
+ Vous utilisez `react-i18next` / `next-i18next` et souhaitez économiser 68 KB, avoir des composants 8x plus petits, 0% de fuite, des clés typées et des vérifications CI sans réécriture. C'est le point d'entrée pour une codebase `i18next` existante.
360
+
361
+ </Accordion>
362
+ <Accordion header="Passer en natif (next-intlayer / react-intlayer)">
363
+
364
+ Pour les nouveaux projets, ou une fois que l'adaptateur a fait son travail. Il possède le runtime le plus léger (5.5 KB, +0.3 KB par page) et débloque les Server Components synchrones et les fichiers `.content.ts` par composant. Commencez avec [Intlayer avec Next.js](https://intlayer.org/fr/doc/environment/nextjs) ou [avec Vite et React](https://intlayer.org/fr/doc/environment/vite-and-react).
365
+
366
+ </Accordion>
367
+ </AccordionGroup>
368
+
369
+ ## FAQ
370
+
371
+ <FAQ>
372
+
373
+ <Question title="D'où viennent les 68 KB ?">
374
+
375
+ De `resources: { en, fr, ... }`. La configuration naive de `next-i18next` importe le JSON de chaque locale dans `init()`, de sorte que chaque page transporte chaque namespace dans chaque langue : **218.5 KB** par page. L'adaptateur n'embarque jamais ce bloc ; il fournit à chaque composant le dictionnaire qu'il nomme, dans la locale active.
376
+
377
+ </Question>
378
+
379
+ <Question title="Mes composants <Trans> continuent-ils de fonctionner ?">
380
+
381
+ Oui, avec `components`, les balises numérotées `<1>...</1>` et les `values`. De même pour `{{interpolation}}`, l'imbrication `$t(key)`, les pluriels `key_one` / `key_other` (évalués avec `Intl.PluralRules`), les suffixes de contexte et `returnObjects`.
382
+
383
+ </Question>
384
+
385
+ <Question title="Que faire si j'utilise un seul fichier translation.json par locale ?">
386
+
387
+ Définissez `splitKeys: false` dans le plugin `syncJSON`. L'ensemble du fichier reste un dictionnaire unique et un simple appel à `useTranslation()` continue de s'y résoudre.
388
+
389
+ </Question>
390
+
391
+ <Question title="Est-ce la même chose que de migrer vers Intlayer ?">
392
+
393
+ Non, c'est la passerelle. L'adaptateur conserve l'API `i18next` et coûte 9.4 KB de runtime ; `next-intlayer` natif coûte 5.5 KB et apporte les Server Components synchrones et les fichiers `.content.ts` colocalisés. Vous pouvez migrer composant par composant, car les dictionnaires JSON et `.content.ts` coexistent.
394
+
395
+ </Question>
396
+
397
+ <Question title="Les traducteurs peuvent-ils continuer à travailler comme aujourd'hui ?">
398
+
399
+ Oui. `locales/{lng}/{ns}.json` reste la source de vérité : `syncJSON` le lit avec le dialecte i18next et réécrit les traductions lorsque la CLI ou le CMS les met à jour.
400
+
401
+ </Question>
402
+
403
+ </FAQ>
311
404
 
312
405
  ## Comparatifs associés
313
406
 
314
- - [i18next vs Intlayer](https://intlayer.org/fr/blog/i18next-vs-intlayer) (comparatif des bibliothèques, même benchmark)
315
- - [next-intl vs @intlayer/next-intl](https://intlayer.org/fr/blog/next-intl-vs-intlayer-next-intl) (même série d'adaptateurs)
316
- - [Lingui vs @intlayer/lingui](https://intlayer.org/fr/blog/lingui-vs-intlayer-lingui) (même série d'adaptateurs)
317
- - [vue-i18n vs @intlayer/vue-i18n](https://intlayer.org/fr/blog/vue-i18n-vs-intlayer-vue-i18n) (même série d'adaptateurs)
318
- - Guides de migration : [i18next](https://intlayer.org/fr/doc/migration/i18next), [react-i18next](https://intlayer.org/fr/doc/migration/react-i18next), [next-i18next](https://intlayer.org/fr/doc/migration/next-i18next)
319
- - Références des adaptateurs : [i18next](https://intlayer.org/fr/doc/compatibility/i18next), [react-i18next](https://intlayer.org/fr/doc/compatibility/react-i18next), [next-i18next](https://intlayer.org/fr/doc/compatibility/next-i18next)
407
+ Même série d'adaptateurs :
408
+
409
+ - [next-intl vs @intlayer/next-intl](https://intlayer.org/fr/blog/next-intl-vs-intlayer-next-intl)
410
+ - [Lingui vs @intlayer/lingui](https://intlayer.org/fr/blog/lingui-vs-intlayer-lingui)
411
+ - [vue-i18n vs @intlayer/vue-i18n](https://intlayer.org/fr/blog/vue-i18n-vs-intlayer-vue-i18n)
412
+
413
+ Les bibliothèques comparées directement :
414
+
415
+ - [i18next vs Intlayer](https://intlayer.org/fr/blog/i18next-vs-intlayer), same benchmark
416
+ - [next-i18next vs next-intl vs Intlayer](https://intlayer.org/fr/blog/next-i18next-vs-next-intl-vs-intlayer)
417
+ - [react-i18next vs react-intl vs Intlayer](https://intlayer.org/fr/blog/react-i18next-vs-react-intl-vs-intlayer)
418
+ - [Is i18next outdated?](https://intlayer.org/fr/blog/is-i18next-outdated)
419
+
420
+ Documentation de référence :
421
+
422
+ - Compat adapters: [i18next](https://intlayer.org/fr/doc/compatibility/i18next), [react-i18next](https://intlayer.org/fr/doc/compatibility/react-i18next), [next-i18next](https://intlayer.org/fr/doc/compatibility/next-i18next)
423
+ - Migration guides: [i18next](https://intlayer.org/fr/doc/migration/i18next), [react-i18next](https://intlayer.org/fr/doc/migration/react-i18next), [next-i18next](https://intlayer.org/fr/doc/migration/next-i18next)
424
+ - [Next.js benchmark report](https://intlayer.org/fr/doc/benchmark/nextjs) and [TanStack Start benchmark report](https://intlayer.org/fr/doc/benchmark/tanstack)
425
+ - [Bundle optimization](https://intlayer.org/fr/doc/concept/bundle-optimization) and [the Intlayer compiler](https://intlayer.org/fr/doc/compiler)
426
+ - [Visual Editor](https://intlayer.org/fr/doc/concept/editor), [CMS](https://intlayer.org/fr/doc/concept/cms) and [AI translation](https://intlayer.org/fr/doc/concept/auto-fill)
320
427
 
321
428
  ## Conclusion
322
429