@intlayer/docs 9.5.6 → 9.5.8

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 (643) 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/is_intlayer_lighter_than_paraglide.md +284 -0
  4. package/blog/ar/lingui_vs_intlayer.md +122 -15
  5. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  6. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  7. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  8. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  9. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  10. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  11. package/blog/de/i18next_vs_intlayer.md +128 -14
  12. package/blog/de/is_intlayer_lighter_than_paraglide.md +284 -0
  13. package/blog/de/lingui_vs_intlayer.md +122 -15
  14. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  15. package/blog/de/next-intl_vs_intlayer.md +125 -15
  16. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  17. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  18. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  19. package/blog/en/i18next_vs_intlayer.md +128 -14
  20. package/blog/en/is_intlayer_lighter_than_paraglide.md +288 -0
  21. package/blog/en/lingui_vs_intlayer.md +124 -15
  22. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  23. package/blog/en/next-intl_vs_intlayer.md +125 -13
  24. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  25. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  26. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  27. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  28. package/blog/en-GB/is_intlayer_lighter_than_paraglide.md +285 -0
  29. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  30. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  31. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  32. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  33. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  34. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  35. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  36. package/blog/es/i18next_vs_intlayer.md +128 -14
  37. package/blog/es/is_intlayer_lighter_than_paraglide.md +284 -0
  38. package/blog/es/lingui_vs_intlayer.md +122 -15
  39. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  40. package/blog/es/next-intl_vs_intlayer.md +125 -15
  41. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  42. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  43. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  44. package/blog/fr/i18next_vs_intlayer.md +128 -14
  45. package/blog/fr/is_intlayer_lighter_than_paraglide.md +284 -0
  46. package/blog/fr/lingui_vs_intlayer.md +122 -15
  47. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  48. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  49. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  50. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  51. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  52. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  53. package/blog/hi/i18next_vs_intlayer.md +130 -16
  54. package/blog/hi/is_intlayer_lighter_than_paraglide.md +284 -0
  55. package/blog/hi/lingui_vs_intlayer.md +122 -15
  56. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  57. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  58. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  59. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  60. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  61. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  62. package/blog/id/i18next_vs_intlayer.md +128 -14
  63. package/blog/id/is_intlayer_lighter_than_paraglide.md +284 -0
  64. package/blog/id/lingui_vs_intlayer.md +122 -15
  65. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/id/next-intl_vs_intlayer.md +135 -19
  67. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  68. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  69. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  70. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  71. package/blog/it/i18next_vs_intlayer.md +128 -14
  72. package/blog/it/is_intlayer_lighter_than_paraglide.md +284 -0
  73. package/blog/it/lingui_vs_intlayer.md +122 -15
  74. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  75. package/blog/it/next-intl_vs_intlayer.md +125 -15
  76. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  77. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  78. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  79. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  80. package/blog/ja/i18next_vs_intlayer.md +129 -17
  81. package/blog/ja/is_intlayer_lighter_than_paraglide.md +284 -0
  82. package/blog/ja/lingui_vs_intlayer.md +122 -15
  83. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  84. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  85. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  86. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  87. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  88. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  89. package/blog/ko/i18next_vs_intlayer.md +129 -17
  90. package/blog/ko/is_intlayer_lighter_than_paraglide.md +284 -0
  91. package/blog/ko/lingui_vs_intlayer.md +122 -15
  92. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  93. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  94. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  95. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  96. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  97. package/blog/pl/i18next_vs_intlayer.md +128 -14
  98. package/blog/pl/is_intlayer_lighter_than_paraglide.md +284 -0
  99. package/blog/pl/lingui_vs_intlayer.md +122 -15
  100. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  101. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  102. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  103. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  104. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  105. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  106. package/blog/pt/i18next_vs_intlayer.md +128 -14
  107. package/blog/pt/is_intlayer_lighter_than_paraglide.md +284 -0
  108. package/blog/pt/lingui_vs_intlayer.md +122 -15
  109. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  110. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  111. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  112. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  113. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  114. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  115. package/blog/ru/i18next_vs_intlayer.md +130 -16
  116. package/blog/ru/is_intlayer_lighter_than_paraglide.md +284 -0
  117. package/blog/ru/lingui_vs_intlayer.md +122 -15
  118. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  119. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  120. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  121. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  122. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  123. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  124. package/blog/tr/i18next_vs_intlayer.md +128 -14
  125. package/blog/tr/is_intlayer_lighter_than_paraglide.md +284 -0
  126. package/blog/tr/lingui_vs_intlayer.md +122 -15
  127. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  128. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  129. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  130. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  131. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  132. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  133. package/blog/uk/i18next_vs_intlayer.md +130 -16
  134. package/blog/uk/is_intlayer_lighter_than_paraglide.md +284 -0
  135. package/blog/uk/lingui_vs_intlayer.md +122 -15
  136. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  138. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  139. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  140. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  141. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  142. package/blog/vi/i18next_vs_intlayer.md +128 -14
  143. package/blog/vi/is_intlayer_lighter_than_paraglide.md +284 -0
  144. package/blog/vi/lingui_vs_intlayer.md +122 -15
  145. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  146. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  147. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  148. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  149. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  150. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  151. package/blog/zh/i18next_vs_intlayer.md +128 -14
  152. package/blog/zh/is_intlayer_lighter_than_paraglide.md +284 -0
  153. package/blog/zh/lingui_vs_intlayer.md +122 -15
  154. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  155. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  156. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  157. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  158. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  159. package/dist/cjs/generated/blog.entry.cjs +20 -0
  160. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  161. package/dist/cjs/generated/docs.entry.cjs +60 -40
  162. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  163. package/dist/esm/generated/blog.entry.mjs +20 -0
  164. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  165. package/dist/esm/generated/docs.entry.mjs +60 -40
  166. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  167. package/dist/types/generated/blog.entry.d.ts +1 -0
  168. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  169. package/dist/types/generated/docs.entry.d.ts +3 -2
  170. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  171. package/docs/ar/benchmark/nextjs.md +19 -16
  172. package/docs/ar/benchmark/solid.md +26 -9
  173. package/docs/ar/benchmark/svelte.md +22 -7
  174. package/docs/ar/benchmark/tanstack.md +20 -16
  175. package/docs/ar/benchmark/vue.md +19 -10
  176. package/docs/ar/chrome_extension.md +130 -0
  177. package/docs/ar/cli/index.md +11 -1
  178. package/docs/ar/cli/infra.md +162 -0
  179. package/docs/ar/cli/init.md +24 -1
  180. package/docs/ar/cli/upgrade.md +125 -0
  181. package/docs/ar/dictionary/html.md +173 -5
  182. package/docs/ar/dictionary/markdown.md +263 -1
  183. package/docs/ar/intlayer_with_analog.md +23 -1
  184. package/docs/ar/intlayer_with_angular_19.md +24 -1
  185. package/docs/ar/intlayer_with_angular_21.md +24 -1
  186. package/docs/ar/intlayer_with_astro.md +24 -1
  187. package/docs/ar/intlayer_with_astro_lit.md +25 -1
  188. package/docs/ar/intlayer_with_astro_preact.md +26 -1
  189. package/docs/ar/intlayer_with_astro_react.md +26 -1
  190. package/docs/ar/intlayer_with_astro_solid.md +26 -1
  191. package/docs/ar/intlayer_with_astro_svelte.md +25 -1
  192. package/docs/ar/intlayer_with_astro_vue.md +25 -1
  193. package/docs/ar/intlayer_with_remix_3.md +22 -1
  194. package/docs/ar/self_hosting.md +406 -231
  195. package/docs/de/benchmark/nextjs.md +19 -16
  196. package/docs/de/benchmark/solid.md +26 -9
  197. package/docs/de/benchmark/svelte.md +22 -7
  198. package/docs/de/benchmark/tanstack.md +20 -16
  199. package/docs/de/benchmark/vue.md +19 -10
  200. package/docs/de/chrome_extension.md +130 -0
  201. package/docs/de/cli/index.md +11 -1
  202. package/docs/de/cli/infra.md +162 -0
  203. package/docs/de/cli/init.md +24 -1
  204. package/docs/de/cli/upgrade.md +125 -0
  205. package/docs/de/dictionary/html.md +173 -5
  206. package/docs/de/dictionary/markdown.md +263 -1
  207. package/docs/de/intlayer_with_analog.md +23 -1
  208. package/docs/de/intlayer_with_angular_19.md +24 -1
  209. package/docs/de/intlayer_with_angular_21.md +24 -1
  210. package/docs/de/intlayer_with_astro.md +24 -1
  211. package/docs/de/intlayer_with_astro_lit.md +25 -1
  212. package/docs/de/intlayer_with_astro_preact.md +26 -1
  213. package/docs/de/intlayer_with_astro_react.md +26 -1
  214. package/docs/de/intlayer_with_astro_solid.md +26 -1
  215. package/docs/de/intlayer_with_astro_svelte.md +25 -1
  216. package/docs/de/intlayer_with_astro_vue.md +25 -1
  217. package/docs/de/intlayer_with_remix_3.md +22 -1
  218. package/docs/de/self_hosting.md +404 -227
  219. package/docs/en/agent_skills.md +29 -1
  220. package/docs/en/benchmark/nextjs.md +19 -16
  221. package/docs/en/benchmark/solid.md +26 -9
  222. package/docs/en/benchmark/svelte.md +22 -7
  223. package/docs/en/benchmark/tanstack.md +21 -17
  224. package/docs/en/benchmark/vue.md +20 -11
  225. package/docs/en/chrome_extension.md +130 -0
  226. package/docs/en/cli/index.md +11 -1
  227. package/docs/en/cli/infra.md +175 -0
  228. package/docs/en/cli/init.md +25 -1
  229. package/docs/en/cli/upgrade.md +125 -0
  230. package/docs/en/dictionary/html.md +173 -5
  231. package/docs/en/dictionary/markdown.md +263 -1
  232. package/docs/en/intlayer_with_analog.md +23 -1
  233. package/docs/en/intlayer_with_angular_19.md +24 -1
  234. package/docs/en/intlayer_with_angular_21.md +24 -1
  235. package/docs/en/intlayer_with_astro.md +24 -1
  236. package/docs/en/intlayer_with_astro_lit.md +25 -1
  237. package/docs/en/intlayer_with_astro_preact.md +26 -1
  238. package/docs/en/intlayer_with_astro_react.md +26 -1
  239. package/docs/en/intlayer_with_astro_solid.md +26 -1
  240. package/docs/en/intlayer_with_astro_svelte.md +25 -1
  241. package/docs/en/intlayer_with_astro_vue.md +25 -1
  242. package/docs/en/intlayer_with_remix_3.md +22 -1
  243. package/docs/en/self_hosting.md +418 -176
  244. package/docs/en-GB/benchmark/nextjs.md +19 -16
  245. package/docs/en-GB/benchmark/solid.md +26 -9
  246. package/docs/en-GB/benchmark/svelte.md +22 -7
  247. package/docs/en-GB/benchmark/tanstack.md +20 -16
  248. package/docs/en-GB/benchmark/vue.md +20 -11
  249. package/docs/en-GB/chrome_extension.md +130 -0
  250. package/docs/en-GB/cli/index.md +11 -1
  251. package/docs/en-GB/cli/infra.md +162 -0
  252. package/docs/en-GB/cli/init.md +24 -1
  253. package/docs/en-GB/cli/upgrade.md +125 -0
  254. package/docs/en-GB/dictionary/html.md +173 -5
  255. package/docs/en-GB/dictionary/markdown.md +263 -1
  256. package/docs/en-GB/intlayer_with_analog.md +23 -1
  257. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  258. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  259. package/docs/en-GB/intlayer_with_astro.md +24 -1
  260. package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
  261. package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
  262. package/docs/en-GB/intlayer_with_astro_react.md +26 -1
  263. package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
  264. package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
  265. package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
  266. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  267. package/docs/en-GB/self_hosting.md +381 -206
  268. package/docs/es/benchmark/nextjs.md +19 -16
  269. package/docs/es/benchmark/solid.md +26 -9
  270. package/docs/es/benchmark/svelte.md +22 -7
  271. package/docs/es/benchmark/tanstack.md +20 -16
  272. package/docs/es/benchmark/vue.md +19 -10
  273. package/docs/es/chrome_extension.md +130 -0
  274. package/docs/es/cli/index.md +11 -1
  275. package/docs/es/cli/infra.md +162 -0
  276. package/docs/es/cli/init.md +24 -1
  277. package/docs/es/cli/upgrade.md +125 -0
  278. package/docs/es/dictionary/html.md +173 -5
  279. package/docs/es/dictionary/markdown.md +263 -1
  280. package/docs/es/intlayer_with_analog.md +23 -1
  281. package/docs/es/intlayer_with_angular_19.md +24 -1
  282. package/docs/es/intlayer_with_angular_21.md +24 -1
  283. package/docs/es/intlayer_with_astro.md +24 -1
  284. package/docs/es/intlayer_with_astro_lit.md +25 -1
  285. package/docs/es/intlayer_with_astro_preact.md +26 -1
  286. package/docs/es/intlayer_with_astro_react.md +26 -1
  287. package/docs/es/intlayer_with_astro_solid.md +26 -1
  288. package/docs/es/intlayer_with_astro_svelte.md +25 -1
  289. package/docs/es/intlayer_with_astro_vue.md +25 -1
  290. package/docs/es/intlayer_with_remix_3.md +22 -1
  291. package/docs/es/self_hosting.md +400 -223
  292. package/docs/fr/benchmark/nextjs.md +19 -16
  293. package/docs/fr/benchmark/solid.md +26 -9
  294. package/docs/fr/benchmark/svelte.md +22 -7
  295. package/docs/fr/benchmark/tanstack.md +20 -16
  296. package/docs/fr/benchmark/vue.md +20 -11
  297. package/docs/fr/chrome_extension.md +130 -0
  298. package/docs/fr/cli/index.md +11 -1
  299. package/docs/fr/cli/infra.md +162 -0
  300. package/docs/fr/cli/init.md +24 -1
  301. package/docs/fr/cli/upgrade.md +125 -0
  302. package/docs/fr/dictionary/html.md +173 -5
  303. package/docs/fr/dictionary/markdown.md +265 -4
  304. package/docs/fr/intlayer_with_analog.md +23 -1
  305. package/docs/fr/intlayer_with_angular_19.md +24 -1
  306. package/docs/fr/intlayer_with_angular_21.md +24 -1
  307. package/docs/fr/intlayer_with_astro.md +24 -1
  308. package/docs/fr/intlayer_with_astro_lit.md +25 -1
  309. package/docs/fr/intlayer_with_astro_preact.md +26 -1
  310. package/docs/fr/intlayer_with_astro_react.md +26 -1
  311. package/docs/fr/intlayer_with_astro_solid.md +26 -1
  312. package/docs/fr/intlayer_with_astro_svelte.md +25 -1
  313. package/docs/fr/intlayer_with_astro_vue.md +25 -1
  314. package/docs/fr/intlayer_with_remix_3.md +22 -1
  315. package/docs/fr/self_hosting.md +401 -224
  316. package/docs/hi/benchmark/nextjs.md +19 -16
  317. package/docs/hi/benchmark/solid.md +26 -9
  318. package/docs/hi/benchmark/svelte.md +22 -7
  319. package/docs/hi/benchmark/tanstack.md +20 -16
  320. package/docs/hi/benchmark/vue.md +20 -11
  321. package/docs/hi/chrome_extension.md +130 -0
  322. package/docs/hi/cli/index.md +11 -1
  323. package/docs/hi/cli/infra.md +162 -0
  324. package/docs/hi/cli/init.md +24 -1
  325. package/docs/hi/cli/upgrade.md +125 -0
  326. package/docs/hi/dictionary/html.md +173 -5
  327. package/docs/hi/dictionary/markdown.md +263 -1
  328. package/docs/hi/intlayer_with_analog.md +23 -1
  329. package/docs/hi/intlayer_with_angular_19.md +24 -1
  330. package/docs/hi/intlayer_with_angular_21.md +24 -1
  331. package/docs/hi/intlayer_with_astro.md +24 -1
  332. package/docs/hi/intlayer_with_astro_lit.md +25 -1
  333. package/docs/hi/intlayer_with_astro_preact.md +26 -1
  334. package/docs/hi/intlayer_with_astro_react.md +26 -1
  335. package/docs/hi/intlayer_with_astro_solid.md +26 -1
  336. package/docs/hi/intlayer_with_astro_svelte.md +25 -1
  337. package/docs/hi/intlayer_with_astro_vue.md +25 -1
  338. package/docs/hi/intlayer_with_remix_3.md +22 -1
  339. package/docs/hi/self_hosting.md +409 -235
  340. package/docs/id/benchmark/nextjs.md +19 -16
  341. package/docs/id/benchmark/solid.md +26 -9
  342. package/docs/id/benchmark/svelte.md +22 -7
  343. package/docs/id/benchmark/tanstack.md +20 -16
  344. package/docs/id/benchmark/vue.md +20 -11
  345. package/docs/id/chrome_extension.md +130 -0
  346. package/docs/id/cli/index.md +11 -1
  347. package/docs/id/cli/infra.md +162 -0
  348. package/docs/id/cli/init.md +24 -1
  349. package/docs/id/cli/upgrade.md +125 -0
  350. package/docs/id/dictionary/html.md +173 -5
  351. package/docs/id/dictionary/markdown.md +263 -1
  352. package/docs/id/intlayer_with_analog.md +23 -1
  353. package/docs/id/intlayer_with_angular_19.md +24 -1
  354. package/docs/id/intlayer_with_angular_21.md +24 -1
  355. package/docs/id/intlayer_with_astro.md +24 -1
  356. package/docs/id/intlayer_with_astro_lit.md +25 -1
  357. package/docs/id/intlayer_with_astro_preact.md +26 -1
  358. package/docs/id/intlayer_with_astro_react.md +26 -1
  359. package/docs/id/intlayer_with_astro_solid.md +26 -1
  360. package/docs/id/intlayer_with_astro_svelte.md +25 -1
  361. package/docs/id/intlayer_with_astro_vue.md +25 -1
  362. package/docs/id/intlayer_with_remix_3.md +22 -1
  363. package/docs/id/self_hosting.md +416 -243
  364. package/docs/it/benchmark/nextjs.md +19 -16
  365. package/docs/it/benchmark/solid.md +26 -9
  366. package/docs/it/benchmark/svelte.md +22 -7
  367. package/docs/it/benchmark/tanstack.md +20 -16
  368. package/docs/it/benchmark/vue.md +19 -10
  369. package/docs/it/chrome_extension.md +130 -0
  370. package/docs/it/cli/index.md +11 -1
  371. package/docs/it/cli/infra.md +162 -0
  372. package/docs/it/cli/init.md +24 -1
  373. package/docs/it/cli/upgrade.md +125 -0
  374. package/docs/it/dictionary/html.md +173 -5
  375. package/docs/it/dictionary/markdown.md +263 -1
  376. package/docs/it/intlayer_with_analog.md +23 -1
  377. package/docs/it/intlayer_with_angular_19.md +24 -1
  378. package/docs/it/intlayer_with_angular_21.md +24 -1
  379. package/docs/it/intlayer_with_astro.md +24 -1
  380. package/docs/it/intlayer_with_astro_lit.md +25 -1
  381. package/docs/it/intlayer_with_astro_preact.md +26 -1
  382. package/docs/it/intlayer_with_astro_react.md +26 -1
  383. package/docs/it/intlayer_with_astro_solid.md +26 -1
  384. package/docs/it/intlayer_with_astro_svelte.md +25 -1
  385. package/docs/it/intlayer_with_astro_vue.md +25 -1
  386. package/docs/it/intlayer_with_remix_3.md +22 -1
  387. package/docs/it/self_hosting.md +412 -237
  388. package/docs/ja/benchmark/nextjs.md +19 -16
  389. package/docs/ja/benchmark/solid.md +26 -9
  390. package/docs/ja/benchmark/svelte.md +22 -7
  391. package/docs/ja/benchmark/tanstack.md +18 -14
  392. package/docs/ja/benchmark/vue.md +19 -10
  393. package/docs/ja/chrome_extension.md +130 -0
  394. package/docs/ja/cli/index.md +11 -1
  395. package/docs/ja/cli/infra.md +162 -0
  396. package/docs/ja/cli/init.md +24 -1
  397. package/docs/ja/cli/upgrade.md +125 -0
  398. package/docs/ja/dictionary/html.md +173 -5
  399. package/docs/ja/dictionary/markdown.md +263 -1
  400. package/docs/ja/intlayer_with_analog.md +23 -1
  401. package/docs/ja/intlayer_with_angular_19.md +24 -1
  402. package/docs/ja/intlayer_with_angular_21.md +24 -1
  403. package/docs/ja/intlayer_with_astro.md +24 -1
  404. package/docs/ja/intlayer_with_astro_lit.md +25 -1
  405. package/docs/ja/intlayer_with_astro_preact.md +26 -1
  406. package/docs/ja/intlayer_with_astro_react.md +26 -1
  407. package/docs/ja/intlayer_with_astro_solid.md +26 -1
  408. package/docs/ja/intlayer_with_astro_svelte.md +25 -1
  409. package/docs/ja/intlayer_with_astro_vue.md +25 -1
  410. package/docs/ja/intlayer_with_remix_3.md +22 -1
  411. package/docs/ja/self_hosting.md +398 -223
  412. package/docs/ko/benchmark/nextjs.md +19 -16
  413. package/docs/ko/benchmark/solid.md +26 -9
  414. package/docs/ko/benchmark/svelte.md +22 -7
  415. package/docs/ko/benchmark/tanstack.md +20 -16
  416. package/docs/ko/benchmark/vue.md +20 -11
  417. package/docs/ko/chrome_extension.md +130 -0
  418. package/docs/ko/cli/index.md +11 -1
  419. package/docs/ko/cli/infra.md +162 -0
  420. package/docs/ko/cli/init.md +24 -1
  421. package/docs/ko/cli/upgrade.md +126 -0
  422. package/docs/ko/dictionary/html.md +173 -5
  423. package/docs/ko/dictionary/markdown.md +263 -1
  424. package/docs/ko/intlayer_with_analog.md +23 -1
  425. package/docs/ko/intlayer_with_angular_19.md +24 -1
  426. package/docs/ko/intlayer_with_angular_21.md +24 -1
  427. package/docs/ko/intlayer_with_astro.md +24 -1
  428. package/docs/ko/intlayer_with_astro_lit.md +25 -1
  429. package/docs/ko/intlayer_with_astro_preact.md +26 -1
  430. package/docs/ko/intlayer_with_astro_react.md +26 -1
  431. package/docs/ko/intlayer_with_astro_solid.md +26 -1
  432. package/docs/ko/intlayer_with_astro_svelte.md +25 -1
  433. package/docs/ko/intlayer_with_astro_vue.md +25 -1
  434. package/docs/ko/intlayer_with_remix_3.md +22 -1
  435. package/docs/ko/self_hosting.md +411 -238
  436. package/docs/pl/benchmark/nextjs.md +19 -16
  437. package/docs/pl/benchmark/solid.md +26 -9
  438. package/docs/pl/benchmark/svelte.md +22 -7
  439. package/docs/pl/benchmark/tanstack.md +20 -16
  440. package/docs/pl/benchmark/vue.md +20 -11
  441. package/docs/pl/chrome_extension.md +130 -0
  442. package/docs/pl/cli/index.md +11 -1
  443. package/docs/pl/cli/infra.md +162 -0
  444. package/docs/pl/cli/init.md +24 -1
  445. package/docs/pl/cli/upgrade.md +125 -0
  446. package/docs/pl/dictionary/html.md +173 -5
  447. package/docs/pl/dictionary/markdown.md +263 -1
  448. package/docs/pl/intlayer_with_analog.md +23 -1
  449. package/docs/pl/intlayer_with_angular_19.md +24 -1
  450. package/docs/pl/intlayer_with_angular_21.md +24 -1
  451. package/docs/pl/intlayer_with_astro.md +24 -1
  452. package/docs/pl/intlayer_with_astro_lit.md +25 -1
  453. package/docs/pl/intlayer_with_astro_preact.md +26 -1
  454. package/docs/pl/intlayer_with_astro_react.md +26 -1
  455. package/docs/pl/intlayer_with_astro_solid.md +26 -1
  456. package/docs/pl/intlayer_with_astro_svelte.md +25 -1
  457. package/docs/pl/intlayer_with_astro_vue.md +25 -1
  458. package/docs/pl/intlayer_with_remix_3.md +22 -1
  459. package/docs/pl/self_hosting.md +408 -233
  460. package/docs/pt/benchmark/nextjs.md +19 -16
  461. package/docs/pt/benchmark/solid.md +26 -9
  462. package/docs/pt/benchmark/svelte.md +22 -7
  463. package/docs/pt/benchmark/tanstack.md +20 -16
  464. package/docs/pt/benchmark/vue.md +19 -10
  465. package/docs/pt/chrome_extension.md +130 -0
  466. package/docs/pt/cli/index.md +11 -1
  467. package/docs/pt/cli/infra.md +162 -0
  468. package/docs/pt/cli/init.md +24 -1
  469. package/docs/pt/cli/upgrade.md +125 -0
  470. package/docs/pt/dictionary/html.md +173 -5
  471. package/docs/pt/dictionary/markdown.md +263 -1
  472. package/docs/pt/intlayer_with_analog.md +23 -1
  473. package/docs/pt/intlayer_with_angular_19.md +24 -1
  474. package/docs/pt/intlayer_with_angular_21.md +24 -1
  475. package/docs/pt/intlayer_with_astro.md +24 -1
  476. package/docs/pt/intlayer_with_astro_lit.md +25 -1
  477. package/docs/pt/intlayer_with_astro_preact.md +26 -1
  478. package/docs/pt/intlayer_with_astro_react.md +26 -1
  479. package/docs/pt/intlayer_with_astro_solid.md +26 -1
  480. package/docs/pt/intlayer_with_astro_svelte.md +25 -1
  481. package/docs/pt/intlayer_with_astro_vue.md +25 -1
  482. package/docs/pt/intlayer_with_remix_3.md +22 -1
  483. package/docs/pt/self_hosting.md +399 -224
  484. package/docs/ru/benchmark/nextjs.md +19 -16
  485. package/docs/ru/benchmark/solid.md +26 -9
  486. package/docs/ru/benchmark/svelte.md +22 -7
  487. package/docs/ru/benchmark/tanstack.md +20 -16
  488. package/docs/ru/benchmark/vue.md +20 -11
  489. package/docs/ru/chrome_extension.md +130 -0
  490. package/docs/ru/cli/index.md +11 -1
  491. package/docs/ru/cli/infra.md +162 -0
  492. package/docs/ru/cli/init.md +24 -1
  493. package/docs/ru/cli/upgrade.md +125 -0
  494. package/docs/ru/dictionary/html.md +173 -5
  495. package/docs/ru/dictionary/markdown.md +263 -1
  496. package/docs/ru/intlayer_with_analog.md +23 -1
  497. package/docs/ru/intlayer_with_angular_19.md +24 -1
  498. package/docs/ru/intlayer_with_angular_21.md +24 -1
  499. package/docs/ru/intlayer_with_astro.md +24 -1
  500. package/docs/ru/intlayer_with_astro_lit.md +25 -1
  501. package/docs/ru/intlayer_with_astro_preact.md +26 -1
  502. package/docs/ru/intlayer_with_astro_react.md +26 -1
  503. package/docs/ru/intlayer_with_astro_solid.md +26 -1
  504. package/docs/ru/intlayer_with_astro_svelte.md +25 -1
  505. package/docs/ru/intlayer_with_astro_vue.md +25 -1
  506. package/docs/ru/intlayer_with_remix_3.md +22 -1
  507. package/docs/ru/self_hosting.md +403 -228
  508. package/docs/tr/benchmark/nextjs.md +19 -16
  509. package/docs/tr/benchmark/solid.md +26 -9
  510. package/docs/tr/benchmark/svelte.md +22 -7
  511. package/docs/tr/benchmark/tanstack.md +20 -16
  512. package/docs/tr/benchmark/vue.md +20 -11
  513. package/docs/tr/chrome_extension.md +130 -0
  514. package/docs/tr/cli/index.md +11 -1
  515. package/docs/tr/cli/infra.md +162 -0
  516. package/docs/tr/cli/init.md +24 -1
  517. package/docs/tr/cli/upgrade.md +125 -0
  518. package/docs/tr/dictionary/html.md +173 -5
  519. package/docs/tr/dictionary/markdown.md +263 -1
  520. package/docs/tr/intlayer_with_analog.md +23 -1
  521. package/docs/tr/intlayer_with_angular_19.md +24 -1
  522. package/docs/tr/intlayer_with_angular_21.md +24 -1
  523. package/docs/tr/intlayer_with_astro.md +24 -1
  524. package/docs/tr/intlayer_with_astro_lit.md +25 -1
  525. package/docs/tr/intlayer_with_astro_preact.md +26 -1
  526. package/docs/tr/intlayer_with_astro_react.md +26 -1
  527. package/docs/tr/intlayer_with_astro_solid.md +26 -1
  528. package/docs/tr/intlayer_with_astro_svelte.md +25 -1
  529. package/docs/tr/intlayer_with_astro_vue.md +25 -1
  530. package/docs/tr/intlayer_with_remix_3.md +22 -1
  531. package/docs/tr/self_hosting.md +410 -234
  532. package/docs/uk/benchmark/nextjs.md +19 -16
  533. package/docs/uk/benchmark/solid.md +26 -9
  534. package/docs/uk/benchmark/svelte.md +22 -7
  535. package/docs/uk/benchmark/tanstack.md +20 -16
  536. package/docs/uk/benchmark/vue.md +20 -11
  537. package/docs/uk/chrome_extension.md +130 -0
  538. package/docs/uk/cli/index.md +11 -1
  539. package/docs/uk/cli/infra.md +162 -0
  540. package/docs/uk/cli/init.md +24 -1
  541. package/docs/uk/cli/upgrade.md +125 -0
  542. package/docs/uk/dictionary/html.md +173 -5
  543. package/docs/uk/dictionary/markdown.md +263 -1
  544. package/docs/uk/intlayer_with_analog.md +23 -1
  545. package/docs/uk/intlayer_with_angular_19.md +24 -1
  546. package/docs/uk/intlayer_with_angular_21.md +24 -1
  547. package/docs/uk/intlayer_with_astro.md +24 -1
  548. package/docs/uk/intlayer_with_astro_lit.md +25 -1
  549. package/docs/uk/intlayer_with_astro_preact.md +26 -1
  550. package/docs/uk/intlayer_with_astro_react.md +26 -1
  551. package/docs/uk/intlayer_with_astro_solid.md +26 -1
  552. package/docs/uk/intlayer_with_astro_svelte.md +25 -1
  553. package/docs/uk/intlayer_with_astro_vue.md +25 -1
  554. package/docs/uk/intlayer_with_remix_3.md +22 -1
  555. package/docs/uk/self_hosting.md +413 -238
  556. package/docs/vi/benchmark/nextjs.md +19 -16
  557. package/docs/vi/benchmark/solid.md +26 -9
  558. package/docs/vi/benchmark/svelte.md +22 -7
  559. package/docs/vi/benchmark/tanstack.md +20 -16
  560. package/docs/vi/benchmark/vue.md +20 -11
  561. package/docs/vi/chrome_extension.md +130 -0
  562. package/docs/vi/cli/index.md +11 -1
  563. package/docs/vi/cli/infra.md +162 -0
  564. package/docs/vi/cli/init.md +24 -1
  565. package/docs/vi/cli/upgrade.md +125 -0
  566. package/docs/vi/dictionary/html.md +173 -5
  567. package/docs/vi/dictionary/markdown.md +263 -1
  568. package/docs/vi/intlayer_with_analog.md +23 -1
  569. package/docs/vi/intlayer_with_angular_19.md +24 -1
  570. package/docs/vi/intlayer_with_angular_21.md +24 -1
  571. package/docs/vi/intlayer_with_astro.md +24 -1
  572. package/docs/vi/intlayer_with_astro_lit.md +25 -1
  573. package/docs/vi/intlayer_with_astro_preact.md +26 -1
  574. package/docs/vi/intlayer_with_astro_react.md +26 -1
  575. package/docs/vi/intlayer_with_astro_solid.md +26 -1
  576. package/docs/vi/intlayer_with_astro_svelte.md +25 -1
  577. package/docs/vi/intlayer_with_astro_vue.md +25 -1
  578. package/docs/vi/intlayer_with_remix_3.md +22 -1
  579. package/docs/vi/self_hosting.md +408 -234
  580. package/docs/zh/benchmark/nextjs.md +19 -16
  581. package/docs/zh/benchmark/solid.md +26 -9
  582. package/docs/zh/benchmark/svelte.md +22 -7
  583. package/docs/zh/benchmark/tanstack.md +19 -15
  584. package/docs/zh/benchmark/vue.md +20 -11
  585. package/docs/zh/chrome_extension.md +130 -0
  586. package/docs/zh/cli/index.md +11 -1
  587. package/docs/zh/cli/infra.md +162 -0
  588. package/docs/zh/cli/init.md +24 -1
  589. package/docs/zh/cli/upgrade.md +125 -0
  590. package/docs/zh/dictionary/html.md +172 -5
  591. package/docs/zh/dictionary/markdown.md +262 -1
  592. package/docs/zh/intlayer_with_analog.md +23 -1
  593. package/docs/zh/intlayer_with_angular_19.md +24 -1
  594. package/docs/zh/intlayer_with_angular_21.md +24 -1
  595. package/docs/zh/intlayer_with_astro.md +24 -1
  596. package/docs/zh/intlayer_with_astro_lit.md +25 -1
  597. package/docs/zh/intlayer_with_astro_preact.md +26 -1
  598. package/docs/zh/intlayer_with_astro_react.md +26 -1
  599. package/docs/zh/intlayer_with_astro_solid.md +26 -1
  600. package/docs/zh/intlayer_with_astro_svelte.md +25 -1
  601. package/docs/zh/intlayer_with_astro_vue.md +25 -1
  602. package/docs/zh/intlayer_with_remix_3.md +22 -1
  603. package/docs/zh/self_hosting.md +410 -237
  604. package/legal/ar/privacy_notice.md +9 -3
  605. package/legal/de/privacy_notice.md +9 -3
  606. package/legal/en/privacy_notice.md +10 -3
  607. package/legal/en-GB/privacy_notice.md +9 -3
  608. package/legal/es/privacy_notice.md +9 -3
  609. package/legal/fr/privacy_notice.md +9 -3
  610. package/legal/hi/privacy_notice.md +9 -3
  611. package/legal/id/privacy_notice.md +9 -3
  612. package/legal/it/privacy_notice.md +9 -3
  613. package/legal/ja/privacy_notice.md +9 -3
  614. package/legal/ko/privacy_notice.md +9 -3
  615. package/legal/pl/privacy_notice.md +9 -3
  616. package/legal/pt/privacy_notice.md +9 -3
  617. package/legal/ru/privacy_notice.md +9 -3
  618. package/legal/tr/privacy_notice.md +9 -3
  619. package/legal/uk/privacy_notice.md +9 -3
  620. package/legal/vi/privacy_notice.md +9 -3
  621. package/legal/zh/privacy_notice.md +9 -3
  622. package/package.json +6 -6
  623. package/src/generated/blog.entry.ts +20 -0
  624. package/src/generated/docs.entry.ts +60 -40
  625. package/docs/ar/roadmap.md +0 -321
  626. package/docs/de/roadmap.md +0 -322
  627. package/docs/en/intlayer_with_astro_vanilla.md +0 -713
  628. package/docs/en/roadmap.md +0 -325
  629. package/docs/en-GB/roadmap.md +0 -322
  630. package/docs/es/roadmap.md +0 -322
  631. package/docs/fr/roadmap.md +0 -322
  632. package/docs/hi/roadmap.md +0 -322
  633. package/docs/id/roadmap.md +0 -325
  634. package/docs/it/roadmap.md +0 -322
  635. package/docs/ja/roadmap.md +0 -322
  636. package/docs/ko/roadmap.md +0 -322
  637. package/docs/pl/roadmap.md +0 -325
  638. package/docs/pt/roadmap.md +0 -322
  639. package/docs/ru/roadmap.md +0 -322
  640. package/docs/tr/roadmap.md +0 -325
  641. package/docs/uk/roadmap.md +0 -325
  642. package/docs/vi/roadmap.md +0 -325
  643. package/docs/zh/roadmap.md +0 -322
@@ -99,7 +99,7 @@ npx skills add aymericzip/intlayer-skills
99
99
 
100
100
  - Teaches the agent to use Svelte stores and idiomatic syntax for reactive and type-safe localized content across Svelte and SvelteKit apps.
101
101
 
102
- **intlayer-cms**
102
+ **intlayer-remote-content**
103
103
 
104
104
  - Allows the agent to integrate and manage remote content, enabling it to handle live-syncing and remote translation workflows via the Intlayer CMS.
105
105
 
@@ -114,3 +114,31 @@ npx skills add aymericzip/intlayer-skills
114
114
  **intlayer-compiler**
115
115
 
116
116
  - Simplifies the agent's workflow by enabling automatic content extraction, allowing it to write translatable strings directly in your code without manual dictionary files.
117
+
118
+ **intlayer-lit**
119
+
120
+ - Teaches the agent to translate Lit web components with the `useIntlayer` and `useLocale` ReactiveControllers.
121
+
122
+ **intlayer-vanilla**
123
+
124
+ - Enables the agent to localize plain JavaScript / TypeScript pages with `vanilla-intlayer`, with or without a bundler.
125
+
126
+ **intlayer-remix**
127
+
128
+ - Gives the agent the Remix 3 router middleware and the request-scoped `useIntlayer` / `useLocale` hooks.
129
+
130
+ **intlayer-backend**
131
+
132
+ - Equips the agent to translate server responses in Express, Fastify, Hono, NestJS, AdonisJS and Elysia through one shared middleware + `t` / `getIntlayer` pattern.
133
+
134
+ **intlayer-dev-tools**
135
+
136
+ - Lets the agent set up the Intlayer tooling around your code: ESLint rules for hardcoded strings, the Language Server, the VS Code and Chrome extensions, the MCP server and CI/CD translation checks.
137
+
138
+ **intlayer-markdown**
139
+
140
+ - Teaches the agent to declare Markdown content (`md()`, `.content.md` files, external files) and render it with MDX components, a global `MarkdownProvider`, Suspense and server-side parsing.
141
+
142
+ **intlayer-compat**
143
+
144
+ - Guides the agent through migrating from i18next, react-i18next, next-intl, next-i18next, react-intl, vue-i18n or Lingui with compat adapters that keep the original API, so translation calls don't need rewriting.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Next.js in 2026 - Benchmark Report
5
5
  description: Compare Next.js internationalization (i18n) libraries like next-intl, next-i18next, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -112,19 +115,19 @@ Finally, `Intlayer` applies a build-time optimization so `useIntlayer('my-key')`
112
115
  For this benchmark, we compared the following libraries:
113
116
 
114
117
  - `Base App` (No i18n library)
115
- - `next-intlayer` (v9.5.1)
116
- - [`@intlayer/next-intl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/next-intl.md) (v9.5.1)
117
- - [`@intlayer/next-i18next`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/next-i18next.md) (v9.5.1)
118
- - `next-i18next` (v16.3.0)
119
- - `next-intl` (v4.14.2)
120
- - `@lingui/core` (v6.6.0)
121
- - `next-translate` (v3.2.0)
122
- - `next-international` (v1.3.1)
123
- - `@inlang/paraglide-js` (v2.15.1)
124
- - `@tolgee/react` (v7.2.0)
125
- - `@lingo.dev/compiler` (v0.4.12)
126
- - `wuchale` (v0.26.6)
127
- - `gt-next` (v11.1.24)
118
+ - [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/next-intlayer/exports.md) (v9.5.6)
119
+ - [`@intlayer/next-intl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/next-intl.md) (v9.5.6)
120
+ - [`@intlayer/next-i18next`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/next-i18next.md) (v9.5.6)
121
+ - [`next-i18next`](https://github.com/i18next/next-i18next) (v16.3.0)
122
+ - [`next-intl`](https://github.com/amannn/next-intl) (v4.14.2)
123
+ - [`@lingui/core`](https://github.com/lingui/js-lingui) (v6.6.0)
124
+ - [`next-translate`](https://github.com/aralroca/next-translate) (v3.2.0)
125
+ - [`next-international`](https://github.com/QuiiBz/next-international) (v1.3.1)
126
+ - [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.15.1)
127
+ - [`@tolgee/react`](https://github.com/tolgee/tolgee-js) (v7.2.0)
128
+ - [`@lingo.dev/compiler`](https://github.com/lingodotdev/lingo.dev) (v0.4.12)
129
+ - [`wuchale`](https://github.com/wuchalejs/wuchale) (v0.26.6)
130
+ - [`gt-next`](https://github.com/generaltranslation/gt) (v11.1.24)
128
131
 
129
132
  I used `Next.js` version `16.3.4` with the App Router.
130
133
 
@@ -214,7 +217,7 @@ Finally, in comparison with other solutions, Paraglide does not use a store (e.g
214
217
 
215
218
  **(Tolgee)** (`@tolgee/react@7.2.0`):
216
219
 
217
- `Tolgee` addresses many of the issues mentioned earlier. I found it harder to adopt than similar tools. It does not provide type safety, which also makes catching missing keys at compile time harder. I had to wrap Tolgee’s functions with my own to add missing-key detection.
220
+ `Tolgee` addresses many of the issues mentioned earlier. I found it harder to adopt than similar tools. It does not provide type safety, which also makes catching missing keys at compile time harder. I had to wrap Tolgee’s functions with my own to add missing-key detection. The package is also relatively heavy (~14.3kb, which is about 2.8× `next-intlayer`).
218
221
 
219
222
  **(Next Intl)** (`next-intl@4.14.2`):
220
223
 
@@ -240,7 +243,7 @@ Message formats also differ: `next-intl` uses ICU MessageFormat, while `i18next`
240
243
 
241
244
  `next-translate` is my main recommendation if you like a `t()`-style API. It is elegant via `next-translate-plugin`, loading namespaces through `getStaticProps` with a Webpack / Turbopack loader. It is also one of the lightest options here (~3.5kb). For namespacing, defining namespaces per page or route in config is well thought out and easier to maintain than main alternatives like **next-intl** or **next-i18next**. In version `3.1.2`, I noted that static rendering did not work; Next.js fell back to dynamic rendering.
242
245
 
243
- **(Intlayer)** (`next-intlayer@9.5.1`):
246
+ **(Intlayer)** (`next-intlayer@9.5.6`):
244
247
 
245
248
  I will not personally judge `next-intlayer` for objectivity’s sake, since it is my own solution.
246
249
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Solid in 2026 - Benchmark Report
5
- description: Compare Solid internationalization libraries like solid-primitives, solid-i18next, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Solid internationalization libraries like solid-primitives, solid-i18next, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-solid-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -65,9 +68,10 @@ The other impact is on developer experience: how you declare content, types, nam
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: Recommended choice for professional Solid applications needing advanced features and optimization (v9.5.0).
71
+ - **Intlayer**: Recommended choice for professional Solid applications needing advanced features and optimization (v9.5.6).
69
72
  - **@solid-primitives/i18n**: Excellent lightweight alternative for simple projects, though lacks advanced features like lazy loading.
70
73
  - **solid-i18next**: Standard but heavy option (~3.5× Intlayer) with same downsides as React i18next.
74
+ - **Tolgee**: Feature-rich translation platform, but fairly heavy (~12.7kb, about 3.0× Intlayer), lacks dedicated Solid primitives (relies on @tolgee/web), and in static setups can leak translations across pages (90% page leak).
71
75
  - **Paraglide**: Innovative approach but complex DX and tree-shaking issues in some setups.
72
76
 
73
77
  ## Test your app
@@ -100,10 +104,11 @@ Syntaxes built around `t('a.b.c')` are very convenient but often encourage keepi
100
104
  For this benchmark, we compared the following libraries:
101
105
 
102
106
  - `Base App` (No i18n library)
103
- - `solid-intlayer` (v9.5.0)
104
- - `@solid-primitives/i18n` (v2.2.1)
105
- - `i18next` (v26.0.8) + `@mbarzda/solid-i18next` (v1.4.1)
106
- - `@inlang/paraglide-js` (v2.25.1)
107
+ - [`solid-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/solid-intlayer/exports.md) (v9.5.6)
108
+ - [`@solid-primitives/i18n`](https://github.com/solidjs-community/solid-primitives/tree/main/packages/i18n) (v2.2.1)
109
+ - [`i18next`](https://github.com/i18next/i18next) (v26.0.8) + [`@mbarzda/solid-i18next`](https://github.com/mbarzda/solid-i18next) (v1.4.1)
110
+ - [`@tolgee/web`](https://github.com/tolgee/tolgee-js) (v7.2.0)
111
+ - [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.25.1)
107
112
 
108
113
  The framework is `Solid` with a multilingual app of **10 pages** and **10 languages**.
109
114
 
@@ -147,7 +152,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
147
152
 
148
153
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
149
154
 
150
- [![Star History Chart](https://api.star-history.com/chart?repos=solidjs-community%2Fsolid-primitives%2Cmbarzda%2Fsolid-i18next%2Copral%2Fparaglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer)
155
+ [![Star History Chart](https://api.star-history.com/chart?repos=solidjs-community%2Fsolid-primitives%2Cmbarzda%2Fsolid-i18next%2Copral%2Fparaglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
151
156
 
152
157
  ## Results in detail
153
158
 
@@ -170,6 +175,18 @@ Still, it shares the same major downsides as stacks built on `t('a.b.c')`: optim
170
175
  Solid primitive is extremely light and efficient, I recommend that solution for light projects, but it can quickly become lacking features for professional solutions including cookie management, proxy redirection, formatters etc.
171
176
  It also misses lazy loading and scoping namespaces for page size optimization.
172
177
 
178
+ **(Tolgee)** (`@tolgee/web@7.2.0`):
179
+
180
+ `Tolgee` provides a feature-rich internationalization platform with in-context editing capabilities.
181
+
182
+ On Solid, there is currently no dedicated official adapter (such as `@tolgee/solid`), requiring developers to integrate via `@tolgee/web` with custom signals.
183
+
184
+ The package is fairly heavy (~12.7kb, which is about 3.0× `solid-intlayer`).
185
+
186
+ Without a granular per-page splitting mechanism in Solid, all translations load into memory upfront in static setups. This leads to heavy bundle leakage (44.5% locale leakage, 90.0% page leakage) and average page bundle sizes of ~91.8kb (compared to ~35.8kb for Intlayer).
187
+
188
+ Language switch responsiveness is very fast (0.6ms), matching Solid's fine-grained reactivity, though hydration overhead is higher (~5.6ms vs ~3.0ms for Intlayer).
189
+
173
190
  **(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
174
191
 
175
192
  `Paraglide` offers an innovative, well-thought-out approach. Even so, in this benchmark the tree-shaking their company advertises did not work for my implementation. The workflow and DX are also more complex than other options.
@@ -178,7 +195,7 @@ Finally, in comparison with other solutions, Paraglide does not use a store (e.g
178
195
 
179
196
  ### 3 - Recommendations
180
197
 
181
- **(Intlayer)** (`solid-intlayer@9.5.0`):
198
+ **(Intlayer)** (`solid-intlayer@9.5.6`):
182
199
 
183
200
  I will not personally judge `solid-intlayer` for objectivity’s sake, since it is my own solution.
184
201
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Svelte in 2026 - Benchmark Report
5
- description: Compare Svelte internationalization libraries like svelte-i18n, Paraglide, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Svelte internationalization libraries like svelte-i18n, Paraglide, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-svelte-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -65,8 +68,9 @@ The other impact is on developer experience: how you declare content, types, nam
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: The most performance-efficient choice (v9.5.0) with the smallest footprint.
71
+ - **Intlayer**: The most performance-efficient choice (v9.5.6) with the smallest footprint.
69
72
  - **Paraglide**: Strong contender for tree-shaking but has a more complex developer experience and reactivity overhead.
73
+ - **Tolgee**: Feature-rich translation platform with in-context editing, but fairly heavy (~13.0kb, about 3.6× Intlayer), and in static setups exhibits significant bundle leakage across pages (90% page leak).
70
74
  - **svelte-i18n**: Feature-complete and standard for Svelte, but carries a much larger bundle weight (~4.5× Intlayer).
71
75
 
72
76
  ## Test your app
@@ -99,9 +103,10 @@ Syntaxes built around `t('a.b.c')` are very convenient but often encourage keepi
99
103
  For this benchmark, we compared the following libraries:
100
104
 
101
105
  - `Base App` (No i18n library)
102
- - `svelte-intlayer` (v9.5.0)
103
- - `svelte-i18n` (v4.0.1)
104
- - `@inlang/paraglide-js` (v2.25.1)
106
+ - [`svelte-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/svelte-intlayer/exports.md) (v9.5.6)
107
+ - [`svelte-i18n`](https://github.com/kaisermann/svelte-i18n) (v4.0.1)
108
+ - [`@tolgee/svelte`](https://github.com/tolgee/tolgee-js) (v7.2.1)
109
+ - [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.25.1)
105
110
 
106
111
  The framework is `Svelte` with a multilingual app of **10 pages** and **10 languages**.
107
112
 
@@ -145,7 +150,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
145
150
 
146
151
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
147
152
 
148
- [![Star History Chart](https://api.star-history.com/chart?repos=kaisermann%2Fsvelte-i18n%2Copral%2Fparaglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&aymericzip/intlayer)
153
+ [![Star History Chart](https://api.star-history.com/chart?repos=kaisermann%2Fsvelte-i18n%2Copral%2Fparaglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
149
154
 
150
155
  ## Results in detail
151
156
 
@@ -165,6 +170,16 @@ Finally, in comparison with other solutions, Paraglide does not use a store (e.g
165
170
 
166
171
  > Note on paraglide: the solution inject code in your codebase to import, as a result the metric 'lib size' in the benchmark report is almost 0. Code gen is a good think, because the function used will include only the necessary logic (prefix all vs no prefix, cookie vs storage etc). In comparison Intlayer process to this filtering using env variables injection during the build to force the bundler to tree shake the content depending of the logic. Thanks to this, paraglide and intlayer end up being solution 6-10 times lighter than i18next or next-intl.
167
172
 
173
+ **(Tolgee)** (`@tolgee/svelte@7.2.1`):
174
+
175
+ `Tolgee` provides an all-in-one localization platform with in-context editing and official Svelte integration via `@tolgee/svelte`.
176
+
177
+ The package is fairly heavy (~13.0kb, which is about 3.6× `svelte-intlayer`).
178
+
179
+ Without granular per-page splitting in Svelte, all translations load into memory upfront in static setups. This causes substantial bundle leakage (50.0% locale leakage, 90.0% page leakage) and average page bundle sizes of ~100.7kb (compared to ~59.0kb for Intlayer).
180
+
181
+ Language switch responsiveness is very fast (0.5ms), benefiting from Svelte's reactive stores, though hydration overhead is slightly higher (~6.2ms vs ~5.5ms for Intlayer).
182
+
168
183
  **(svelte-i18n)** (`svelte-i18n@4.0.1`):
169
184
 
170
185
  This solution answers all needs for i18n in a Svelte project. But as it's the case for i18next or other main i18n solutions it's a bit heavy (~16.6kb, which is about 4.5× `svelte-intlayer`).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for TanStack Start in 2026 - Benchmark Report
5
5
  description: Compare TanStack Start internationalization libraries like react-i18next, use-intl, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-tanstack-start-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -65,7 +68,7 @@ The other impact is on developer experience: how you declare content, types, nam
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: Provides the best performance and smallest bundle size (v9.5.1) for TanStack Start.
71
+ - **Intlayer**: Provides the best performance and smallest bundle size (v9.5.6) for TanStack Start.
69
72
  - **react-i18next** & **use-intl**: Mature alternatives with large ecosystems, but significantly heavier and more complex to optimize.
70
73
  - **Paraglide**: Innovative tree-shaking idea that does not work in practice. Complex DX and reactivity overhead in TanStack Start.
71
74
  - **Avoid**: **General Translation (GT)** and **Lingo.dev** due to severe performance issues, AI quota limits, and vendor lock-in.
@@ -100,18 +103,19 @@ Syntaxes built around `const t = useTranslation()` + `t('a.b.c')` are very conve
100
103
  For this benchmark, we compared the following libraries:
101
104
 
102
105
  - `Base App` (No i18n library)
103
- - `react-intlayer` (v9.5.1)
104
- - `@intlayer/use-intl` (v9.5.1)
105
- - [`@intlayer/lingui`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/lingui.md) (v9.5.1)
106
- - `react-i18next` (v17.0.13)
107
- - `use-intl` (v4.14.2)
108
- - `@lingui/core` (v6.6.0)
109
- - `@inlang/paraglide-js` (v2.15.1)
110
- - `@tolgee/react` (v7.2.0)
111
- - `react-intl` (v10.1.26)
112
- - `wuchale` (v0.26.6)
113
- - `gt-react` (v10.18.3)
114
- - `lingo.dev` (v0.138.7)
106
+ - [`react-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/exports.md) (v9.5.6)
107
+ - [`@intlayer/use-intl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/next-intl.md) (v9.5.6)
108
+ - [`@intlayer/lingui`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/lingui.md) (v9.5.6)
109
+ - [`@intlayer/react-i18next`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/react-i18next.md) (v9.5.6)
110
+ - [`react-i18next`](https://github.com/i18next/react-i18next) (v17.0.13)
111
+ - [`use-intl`](https://github.com/amannn/next-intl/tree/main/packages/use-intl) (v4.14.2)
112
+ - [`@lingui/core`](https://github.com/lingui/js-lingui) (v6.6.0)
113
+ - [`@inlang/paraglide-js`](https://github.com/opral/paraglide-js) (v2.15.1)
114
+ - [`@tolgee/react`](https://github.com/tolgee/tolgee-js) (v7.2.0)
115
+ - [`react-intl`](https://github.com/formatjs/formatjs) (v10.1.26)
116
+ - [`wuchale`](https://github.com/wuchalejs/wuchale) (v0.26.6)
117
+ - [`gt-react`](https://github.com/generaltranslation/gt) (v10.18.3)
118
+ - [`lingo.dev`](https://github.com/lingodotdev/lingo.dev) (v0.138.7)
115
119
 
116
120
  The framework is `TanStack Start` with a multilingual app of **10 pages** and **10 languages**.
117
121
 
@@ -201,13 +205,13 @@ Finally, in comparison with other solutions, Paraglide does not use a store (e.g
201
205
 
202
206
  `Tolgee` addresses many of the issues mentioned earlier. I found it harder to get started with than other tools with similar approaches. It does not provide type safety, which also makes catching missing keys at compile time much harder. I had to wrap Tolgee’s APIs with my own to add missing-key detection.
203
207
 
204
- The package is fairly heavy (~11.1kb, which is more than 2× `react-intlayer`).
208
+ The package is fairly heavy (~13.8kb, which is about 2.9× `react-intlayer`).
205
209
 
206
210
  On TanStack Start I also had reactivity problems: on locale change I had to force the provider to rerender and subscribe to locale-change events so loading in another language behaved correctly.
207
211
 
208
212
  **(use-intl)** (`use-intl@4.14.2`):
209
213
 
210
- `use-intl` is the most fashionable “intl” piece in the React ecosystem (same family as `next-intl`) and is often pushed by AI agents, but in my view wrongly so in a performance-first setting. Getting started is fairly simple. In practice, the process to optimize and limit leakage is quite complex. Likewise, combining dynamic loading + namespacing + TypeScript types slows development a lot. The package is also fairly heavy (~14.1kb, which is more than 2.5× `react-intlayer`).
214
+ `use-intl` is the most fashionable “intl” piece in the React ecosystem (same family as `next-intl`) and is often pushed by AI agents, but in my view wrongly so in a performance-first setting. Getting started is fairly simple. In practice, the process to optimize and limit leakage is quite complex. Likewise, combining dynamic loading + namespacing + TypeScript types slows development a lot. The package is also fairly heavy (~13.0kb, which is about 2.7× `react-intlayer`).
211
215
 
212
216
  On TanStack Start you avoid Next.js-specific traps (`setRequestLocale`, static rendering), but the core issue is the same: without strict discipline, the bundle quickly carries too many messages and per-route namespace maintenance becomes painful.
213
217
 
@@ -235,7 +239,7 @@ The package is also heavy (~15.3kb, which is about 3× `react-intlayer`).
235
239
 
236
240
  This TanStack Start benchmark has no direct equivalent to `next-translate` (Next.js plugin + `getStaticProps`). For teams that really want a `t()` API with a mature ecosystem, `react-i18next` and `use-intl` remain “reasonable” choices, but expect to invest a lot of time optimizing to avoid leakage.
237
241
 
238
- **(Intlayer)** (`react-intlayer@9.5.1`):
242
+ **(Intlayer)** (`react-intlayer@9.5.6`):
239
243
 
240
244
  I will not personally judge `react-intlayer` for objectivity’s sake, since it is my own solution.
241
245
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-23
4
4
  title: Best i18n solution for Vue in 2026 - Benchmark Report
5
- description: Compare Vue internationalization libraries like vue-i18n, fluent-vue, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
5
+ description: Compare Vue internationalization libraries like vue-i18n, fluent-vue, Tolgee, and Intlayer. Detailed performance report on bundle size, leakage, and reactivity.
6
6
  keywords:
7
7
  - benchmark
8
8
  - i18n
@@ -17,6 +17,9 @@ slugs:
17
17
  author: aymericzip
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-vue-template
19
19
  history:
20
+ - version: 9.5.7
21
+ date: 2026-09-23
22
+ changes: "Update benchmark results and add Tolgee"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Update benchmark results"
@@ -65,7 +68,8 @@ The other impact is on developer experience: how you declare content, types, nam
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: The most lightweight solution (v9.5.0) with built-in scoping and dynamic loading.
71
+ - **Intlayer**: The most lightweight solution (v9.5.6) with built-in scoping and dynamic loading.
72
+ - **Tolgee**: Effective dynamic loading with zero leakage in dynamic mode, but heavier (~3.7× Intlayer) and lacks built-in compile-time type safety.
69
73
  - **vue-i18n**: The industry standard with a rich ecosystem but can be significantly heavier and harder to optimize for code-splitting in large applications.
70
74
  - **fluent-vue**: Innovative message organization but lacks type safety and is extremely heavy.
71
75
 
@@ -99,10 +103,11 @@ Syntaxes built around `const { t } = useI18n()` + `t('a.b.c')` are very convenie
99
103
  For this benchmark, we compared the following libraries:
100
104
 
101
105
  - `Base App` (No i18n library)
102
- - `vue-intlayer` (v9.5.0)
103
- - [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/vue-i18n.md) (v9.5.1)
104
- - `vue-i18n` (v11.4.0)
105
- - `fluent-vue` (v3.8.2)
106
+ - [`vue-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/vue-intlayer/exports.md) (v9.5.6)
107
+ - [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/vue-i18n.md) (v9.5.6)
108
+ - [`vue-i18n`](https://github.com/intlify/vue-i18n) (v11.4.0)
109
+ - [`fluent-vue`](https://github.com/fluent-vue/fluent-vue) (v3.8.2)
110
+ - [`@tolgee/vue`](https://github.com/tolgee/tolgee-js) (v7.2.0)
106
111
 
107
112
  The framework is `Vue` with a multilingual app of **10 pages** and **10 languages**.
108
113
 
@@ -146,7 +151,7 @@ I ran the same multilingual app in a real browser for every stack, then wrote do
146
151
 
147
152
  GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
148
153
 
149
- [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&aymericzip/intlayer)
154
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&tolgee/tolgee-js&aymericzip/intlayer)
150
155
 
151
156
  ## Results in detail
152
157
 
@@ -156,18 +161,22 @@ GitHub stars are a strong indicator of a project's popularity, community trust,
156
161
 
157
162
  ### 2 - Acceptable solutions
158
163
 
164
+ **(Tolgee)** (`@tolgee/vue@7.2.0`):
165
+
166
+ `Tolgee` addresses many of the issues mentioned earlier, offering dynamic loading that successfully eliminates locale and page leakage (dropping page JS down to ~58.8kb). However, it does not provide built-in compile-time type safety for keys out of the box, making catching missing keys harder. Additionally, the library footprint is relatively heavy (~13.8kb, which is about 3.7× `vue-intlayer`).
167
+
159
168
  **(vue-i18n)** (`vue-i18n@11.4.0`):
160
169
 
161
170
  - **vue-i18n** is without contestation the most used i18n library for vue, it has a lot of features and a huge ecosystem. but under the hood the solution is quite heavy. even if vue-i18n integrate lazy loading for messages, it miss a scoping feature. In the case of a classic Vue SPA app there is no issue, but for a nuxt app, using @nuxt/i18n, it leads to including the messages from all pages into a single one. For a big nuxt app including more than 10 pages, it can become really problematic.
162
171
 
163
- The package is very heavy (~24.3kb, which is about 6× `vue-intlayer`).
172
+ The package is very heavy (~24.1kb, which is about 6.5× `vue-intlayer`).
164
173
 
165
174
  **(fluent-vue)** (`fluent-vue@3.8.2`):
166
175
 
167
- - **fluent-vue** offer one inovation attempt thought the .ftl format. the message organization is great, easier to get started. but in practice, the lack of typesafty increase the risk of error and can quickly become time consuming to debug. Moreever, that solution load the messages using a vite plugin that force the loading of all the content in all languages into each page. Additionally this is an extremely heavy solution (~29.7kb, which is about 7.5× `vue-intlayer`).
176
+ - **fluent-vue** offer one inovation attempt thought the .ftl format. the message organization is great, easier to get started. but in practice, the lack of typesafty increase the risk of error and can quickly become time consuming to debug. Moreever, that solution load the messages using a vite plugin that force the loading of all the content in all languages into each page. Additionally this is an extremely heavy solution (~29.7kb, which is about 8× `vue-intlayer`).
168
177
 
169
178
  ### 3 - Recommendations
170
179
 
171
- **(Intlayer)** (`vue-intlayer@9.5.0`):
180
+ **(Intlayer)** (`vue-intlayer@9.5.6`):
172
181
 
173
182
  I will not personally judge `vue-intlayer` for objectivity’s sake, since it is my own solution.
@@ -0,0 +1,130 @@
1
+ ---
2
+ createdAt: 2026-09-22
3
+ updatedAt: 2026-09-22
4
+ title: Chrome & Firefox Extension, i18n & SEO Scanner
5
+ description: Inspect the i18n setup of any website with the Intlayer Chrome extension. Detect the framework, i18n library, locales, hreflang and SEO tags, and run a full i18n SEO audit.
6
+ keywords:
7
+ - Chrome Extension
8
+ - i18n Scanner
9
+ - hreflang Checker
10
+ - Multilingual SEO
11
+ - Intlayer
12
+ - Localization
13
+ - Development Tools
14
+ slugs:
15
+ - doc
16
+ - chrome-extension
17
+ history:
18
+ - version: 9.5.6
19
+ date: 2026-09-22
20
+ changes: "Init history"
21
+ author: aymericzip
22
+ ---
23
+
24
+ # Chrome & Firefox Extension: i18n & SEO Scanner
25
+
26
+ ## Overview
27
+
28
+ [**Intlayer i18n Scanner**](https://chromewebstore.google.com/detail/intlayer_i18n_scanner/pmlehcgmjmfimmjnembihbakhnheiabc) is the official Chrome extension for **Intlayer**. Open it on any website to see how the site handles internationalization: which framework and i18n library it uses, which locales it exposes, and whether its multilingual SEO tags are set up correctly.
29
+
30
+ It works on every website, whether or not it uses Intlayer.
31
+
32
+ ![Intlayer Chrome Extension](https://github.com/aymericzip/intlayer/blob/main/docs/assets/chrome_extension.png?raw=true)
33
+
34
+ [Chrome extension link](https://chromewebstore.google.com/detail/intlayer_i18n_scanner/pmlehcgmjmfimmjnembihbakhnheiabc)
35
+
36
+ [Firefox add-on link](https://addons.mozilla.org/en-US/firefox/addon/intlayer-i18n-scanner/)
37
+
38
+ ## Features
39
+
40
+ - **Technology detection**: identifies the framework (Next.js, Nuxt, Astro, SvelteKit, Angular, Vue.js, Qwik, React, Gatsby, WordPress) and the i18n library (Intlayer, i18next, Vue I18n, @nuxtjs/i18n, Angular @angular/localize, next-intl / next-i18next, Weglot, Localize, WPML, Polylang). Each detection shows the evidence that triggered it, such as a global variable, a cookie or a DOM marker.
41
+ - **Locales**: lists the locales found in the `lang` attribute, hreflang and `og:locale` tags, the URL locale prefix, and locale cookies or storage entries.
42
+ - **SEO i18n tags**: checks `html lang`, `html dir`, the canonical link, hreflang tags, `x-default`, `og:locale` and the ratio of localized internal links.
43
+ - **Navigate across locales**: switches the current page to any of its localized versions in one click, based on its hreflang tags.
44
+ - **Search in sitemap**: searches every page listed in the site's sitemap and opens it in the current tab.
45
+ - **Full audit**: runs the same audit as the [i18n SEO Scanner](https://intlayer.org/i18n-seo-scanner) and shows a live score.
46
+
47
+ ## Installation
48
+
49
+ <Tabs group="browser">
50
+ <Tab label="Chrome" value="chrome">
51
+
52
+ Install [**Intlayer i18n Scanner**](https://chromewebstore.google.com/detail/intlayer_i18n_scanner/pmlehcgmjmfimmjnembihbakhnheiabc) from the Chrome Web Store, then pin it to your toolbar.
53
+
54
+ The extension works in Chrome and in any Chromium based browser that supports Chrome Web Store extensions (Edge, Brave, Arc, Opera).
55
+
56
+ </Tab>
57
+ <Tab label="Firefox" value="firefox">
58
+
59
+ Install [**Intlayer i18n Scanner**](https://addons.mozilla.org/en-US/firefox/addon/intlayer-i18n-scanner/) from Firefox Add-ons, then pin it to your toolbar.
60
+
61
+ </Tab>
62
+ </Tabs>
63
+
64
+ ## Usage
65
+
66
+ ### Inspect a page
67
+
68
+ 1. Open the website you want to inspect.
69
+ 2. Click the **Intlayer i18n Scanner** icon in the toolbar.
70
+ 3. The popup shows the **Detected technologies**, **Locales** and **SEO i18n tags** sections for the current page.
71
+
72
+ Detection runs locally in your browser, on the current tab only.
73
+
74
+ ### Navigate between locales
75
+
76
+ ![Intlayer Chrome Extension navigation](https://github.com/aymericzip/intlayer/blob/main/docs/assets/chrome_extension_navigation.png?raw=true)
77
+
78
+ The **Navigate** section lists the **Localized versions** of the current page, read from its hreflang tags. Click a locale to open that version in the current tab.
79
+
80
+ Under **Sitemap pages**, type to search the URLs of the site's sitemap, then click a result to open it.
81
+
82
+ ### Run a full audit
83
+
84
+ ![Intlayer Chrome Extension audit score](https://github.com/aymericzip/intlayer/blob/main/docs/assets/chrome_extension_audit_score.png?raw=true)
85
+
86
+ Scroll to the **Full audit** section and click **Run full i18n audit**. Results stream in as each check completes, grouped into:
87
+
88
+ - **Page**: `html lang` and `dir` attributes, current locale, hreflang tags, `x-default`, canonical link, localized internal links, language selector, flag icons, and unused locale content shipped in the JavaScript bundle.
89
+ - **Robots.txt**: presence, and whether locale paths stay crawlable.
90
+ - **Sitemap**: presence, every locale listed, alternate links and `x-default`.
91
+ - **Domain**: number of locales discovered across the site.
92
+
93
+ Each check is marked as passed, warning or failed, and the score summarizes the overall i18n SEO health of the page.
94
+
95
+ ## Privacy and permissions
96
+
97
+ The extension requests minimal permissions:
98
+
99
+ - **activeTab** and **scripting**: the detector runs only on the tab you are viewing, and only when you open the popup.
100
+ - **back.intlayer.org**: used only when you run a full audit. The URL of the current page is sent to the Intlayer API to be scanned.
101
+
102
+ No browsing history is collected and nothing runs in the background.
103
+
104
+ ## FAQ
105
+
106
+ <FAQ>
107
+
108
+ <Question title="Does the website need to use Intlayer?">
109
+
110
+ No. The extension inspects any website, whatever framework or i18n library it uses.
111
+
112
+ </Question>
113
+ <Question title="Why is a technology not detected?">
114
+
115
+ Detection relies on what the page exposes in the browser: global variables, cookies, meta tags and DOM markers. Some production builds strip these markers, so a library can be in use without leaving a visible trace.
116
+
117
+ </Question>
118
+ <Question title="How do I fix the issues found by the audit?">
119
+
120
+ Most checks map to a routing or metadata setting. With Intlayer, hreflang, canonical, `x-default`, localized links, sitemap and robots.txt are generated from your [configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md). See the integration guide for your framework, for example [Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_16.md), [Nuxt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nuxt.md) or [TanStack Start](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_tanstack.md).
121
+
122
+ </Question>
123
+
124
+ </FAQ>
125
+
126
+ ## Related tools
127
+
128
+ - [VS Code Extension](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/vs_code_extension.md)
129
+ - [MCP Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md)
130
+ - [LSP Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/lsp.md)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-11
3
- updatedAt: 2026-09-12
3
+ updatedAt: 2026-09-23
4
4
  title: CLI - All Intlayer CLI commands for your multilingual website
5
5
  description: Discover how to use the Intlayer CLI to manage your multilingual website. Follow the steps in this online documentation to set up your project in a few minutes.
6
6
  keywords:
@@ -17,6 +17,12 @@ slugs:
17
17
  - concept
18
18
  - cli
19
19
  history:
20
+ - version: 9.5.8
21
+ date: 2026-09-23
22
+ changes: "Add upgrade command"
23
+ - version: 9.5.6
24
+ date: 2026-09-21
25
+ changes: "Add init infra command"
20
26
  - version: 9.5.2
21
27
  date: 2026-09-12
22
28
  changes: "Replace the `ci` command by the `--ci` flag"
@@ -151,6 +157,8 @@ To see how to configure available locales, or other parameters, refer to the [co
151
157
  ### Configuration
152
158
 
153
159
  - **[Initialize Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/init.md)** - Set up Intlayer in your project with automatic configuration
160
+ - **[Set Up Infrastructure](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/infra.md)** - Install the desktop app or self-host the CMS with Docker (all-in-one or Compose)
161
+ - **[Upgrade Intlayer Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/upgrade.md)** - List the Intlayer packages of every `package.json` and upgrade them to the latest version
154
162
  - **[Manage Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/configuration.md)** - Get and push your Intlayer configuration to the CMS
155
163
 
156
164
  ### Documentation Management
@@ -177,6 +185,8 @@ To see how to configure available locales, or other parameters, refer to the [co
177
185
  ```json fileName="package.json"
178
186
  "scripts": {
179
187
  "intlayer:init": "npx intlayer init",
188
+ "intlayer:infra": "npx intlayer init infra",
189
+ "intlayer:upgrade": "npx intlayer upgrade",
180
190
  "intlayer:login": "npx intlayer login",
181
191
  "intlayer:build": "npx intlayer build",
182
192
  "intlayer:watch": "npx intlayer build --watch",