@intlayer/docs 8.7.12 → 8.7.14

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 (556) hide show
  1. package/README.md +27 -1
  2. package/blog/ar/intlayer_with_i18next.md +1 -1
  3. package/blog/ar/intlayer_with_next-i18next.md +1 -1
  4. package/blog/ar/intlayer_with_next-intl.md +1 -1
  5. package/blog/ar/intlayer_with_react-i18next.md +1 -1
  6. package/blog/ar/intlayer_with_react-intl.md +1 -1
  7. package/blog/ar/intlayer_with_vue-i18n.md +1 -1
  8. package/blog/de/intlayer_with_i18next.md +1 -1
  9. package/blog/de/intlayer_with_next-i18next.md +1 -1
  10. package/blog/de/intlayer_with_next-intl.md +1 -1
  11. package/blog/de/intlayer_with_react-i18next.md +1 -1
  12. package/blog/de/intlayer_with_react-intl.md +1 -1
  13. package/blog/de/intlayer_with_vue-i18n.md +1 -1
  14. package/blog/en/intlayer_with_i18next.md +1 -1
  15. package/blog/en/intlayer_with_next-i18next.md +1 -1
  16. package/blog/en/intlayer_with_next-intl.md +1 -1
  17. package/blog/en/intlayer_with_react-i18next.md +1 -1
  18. package/blog/en/intlayer_with_react-intl.md +1 -1
  19. package/blog/en/intlayer_with_vue-i18n.md +1 -1
  20. package/blog/en-GB/intlayer_with_i18next.md +1 -1
  21. package/blog/en-GB/intlayer_with_next-i18next.md +1 -1
  22. package/blog/en-GB/intlayer_with_next-intl.md +1 -1
  23. package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
  24. package/blog/en-GB/intlayer_with_react-intl.md +1 -1
  25. package/blog/en-GB/intlayer_with_vue-i18n.md +1 -1
  26. package/blog/es/intlayer_with_i18next.md +1 -1
  27. package/blog/es/intlayer_with_next-i18next.md +1 -1
  28. package/blog/es/intlayer_with_next-intl.md +1 -1
  29. package/blog/es/intlayer_with_react-i18next.md +1 -1
  30. package/blog/es/intlayer_with_react-intl.md +1 -1
  31. package/blog/es/intlayer_with_vue-i18n.md +1 -1
  32. package/blog/fr/intlayer_with_i18next.md +1 -1
  33. package/blog/fr/intlayer_with_next-i18next.md +1 -1
  34. package/blog/fr/intlayer_with_next-intl.md +1 -1
  35. package/blog/fr/intlayer_with_react-i18next.md +1 -1
  36. package/blog/fr/intlayer_with_react-intl.md +1 -1
  37. package/blog/fr/intlayer_with_vue-i18n.md +1 -1
  38. package/blog/hi/intlayer_with_i18next.md +1 -1
  39. package/blog/hi/intlayer_with_next-i18next.md +1 -1
  40. package/blog/hi/intlayer_with_next-intl.md +1 -1
  41. package/blog/hi/intlayer_with_react-i18next.md +1 -1
  42. package/blog/hi/intlayer_with_react-intl.md +1 -1
  43. package/blog/hi/intlayer_with_vue-i18n.md +1 -1
  44. package/blog/id/intlayer_with_i18next.md +1 -1
  45. package/blog/id/intlayer_with_next-i18next.md +1 -1
  46. package/blog/id/intlayer_with_next-intl.md +1 -1
  47. package/blog/id/intlayer_with_react-i18next.md +1 -1
  48. package/blog/id/intlayer_with_react-intl.md +1 -1
  49. package/blog/id/intlayer_with_vue-i18n.md +1 -1
  50. package/blog/it/intlayer_with_i18next.md +1 -1
  51. package/blog/it/intlayer_with_next-i18next.md +1 -1
  52. package/blog/it/intlayer_with_next-intl.md +1 -1
  53. package/blog/it/intlayer_with_react-i18next.md +1 -1
  54. package/blog/it/intlayer_with_react-intl.md +1 -1
  55. package/blog/it/intlayer_with_vue-i18n.md +1 -1
  56. package/blog/ja/intlayer_with_i18next.md +1 -1
  57. package/blog/ja/intlayer_with_next-i18next.md +1 -1
  58. package/blog/ja/intlayer_with_next-intl.md +1 -1
  59. package/blog/ja/intlayer_with_react-i18next.md +1 -1
  60. package/blog/ja/intlayer_with_react-intl.md +1 -1
  61. package/blog/ja/intlayer_with_vue-i18n.md +1 -1
  62. package/blog/ko/intlayer_with_i18next.md +1 -1
  63. package/blog/ko/intlayer_with_next-i18next.md +1 -1
  64. package/blog/ko/intlayer_with_next-intl.md +1 -1
  65. package/blog/ko/intlayer_with_react-i18next.md +1 -1
  66. package/blog/ko/intlayer_with_react-intl.md +1 -1
  67. package/blog/ko/intlayer_with_vue-i18n.md +1 -1
  68. package/blog/pl/intlayer_with_i18next.md +1 -1
  69. package/blog/pl/intlayer_with_next-i18next.md +1 -1
  70. package/blog/pl/intlayer_with_next-intl.md +1 -1
  71. package/blog/pl/intlayer_with_react-i18next.md +1 -1
  72. package/blog/pl/intlayer_with_react-intl.md +1 -1
  73. package/blog/pl/intlayer_with_vue-i18n.md +1 -1
  74. package/blog/pt/intlayer_with_i18next.md +1 -1
  75. package/blog/pt/intlayer_with_next-i18next.md +1 -1
  76. package/blog/pt/intlayer_with_next-intl.md +1 -1
  77. package/blog/pt/intlayer_with_react-i18next.md +1 -1
  78. package/blog/pt/intlayer_with_react-intl.md +1 -1
  79. package/blog/pt/intlayer_with_vue-i18n.md +1 -1
  80. package/blog/ru/intlayer_with_i18next.md +1 -1
  81. package/blog/ru/intlayer_with_next-i18next.md +1 -1
  82. package/blog/ru/intlayer_with_next-intl.md +1 -1
  83. package/blog/ru/intlayer_with_react-i18next.md +1 -1
  84. package/blog/ru/intlayer_with_react-intl.md +1 -1
  85. package/blog/ru/intlayer_with_vue-i18n.md +1 -1
  86. package/blog/tr/intlayer_with_i18next.md +1 -1
  87. package/blog/tr/intlayer_with_next-i18next.md +1 -1
  88. package/blog/tr/intlayer_with_next-intl.md +1 -1
  89. package/blog/tr/intlayer_with_react-i18next.md +1 -1
  90. package/blog/tr/intlayer_with_vue-i18n.md +1 -1
  91. package/blog/uk/intlayer_with_i18next.md +1 -1
  92. package/blog/uk/intlayer_with_next-i18next.md +1 -1
  93. package/blog/uk/intlayer_with_next-intl.md +1 -1
  94. package/blog/uk/intlayer_with_react-i18next.md +1 -1
  95. package/blog/uk/intlayer_with_react-intl.md +1 -1
  96. package/blog/uk/intlayer_with_vue-i18n.md +1 -1
  97. package/blog/vi/intlayer_with_i18next.md +1 -1
  98. package/blog/vi/intlayer_with_next-i18next.md +1 -1
  99. package/blog/vi/intlayer_with_next-intl.md +1 -1
  100. package/blog/vi/intlayer_with_react-i18next.md +1 -1
  101. package/blog/vi/intlayer_with_react-intl.md +1 -1
  102. package/blog/vi/intlayer_with_vue-i18n.md +1 -1
  103. package/blog/zh/intlayer_with_i18next.md +1 -1
  104. package/blog/zh/intlayer_with_next-i18next.md +1 -1
  105. package/blog/zh/intlayer_with_next-intl.md +1 -1
  106. package/blog/zh/intlayer_with_react-i18next.md +1 -1
  107. package/blog/zh/intlayer_with_react-intl.md +1 -1
  108. package/blog/zh/intlayer_with_vue-i18n.md +1 -1
  109. package/dist/cjs/generated/docs.entry.cjs +60 -0
  110. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  111. package/dist/esm/generated/docs.entry.mjs +60 -0
  112. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  113. package/dist/types/generated/docs.entry.d.ts +3 -0
  114. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  115. package/docs/ar/benchmark/index.md +8 -2
  116. package/docs/ar/benchmark/tanstack.md +1 -1
  117. package/docs/ar/dictionary/content_file.md +1 -1
  118. package/docs/ar/intlayer_CMS.md +1 -1
  119. package/docs/ar/intlayer_visual_editor.md +1 -1
  120. package/docs/ar/intlayer_with_astro_lit.md +1 -0
  121. package/docs/ar/intlayer_with_astro_preact.md +1 -0
  122. package/docs/ar/intlayer_with_astro_react.md +1 -0
  123. package/docs/ar/intlayer_with_astro_solid.md +1 -0
  124. package/docs/ar/intlayer_with_astro_svelte.md +1 -0
  125. package/docs/ar/intlayer_with_astro_vue.md +1 -0
  126. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  127. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  128. package/docs/ar/intlayer_with_nextjs_compiler.md +1 -1
  129. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1 -1
  130. package/docs/ar/intlayer_with_nuxt.md +1 -1
  131. package/docs/ar/intlayer_with_react_router_v7.md +1 -1
  132. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  133. package/docs/ar/intlayer_with_tanstack+solid.md +1 -1
  134. package/docs/ar/intlayer_with_tanstack.md +1 -1
  135. package/docs/ar/intlayer_with_vite+vue.md +1 -1
  136. package/docs/ar/plugins/sync-json.md +1 -1
  137. package/docs/ar/readme.md +27 -1
  138. package/docs/de/benchmark/index.md +8 -2
  139. package/docs/de/benchmark/tanstack.md +1 -1
  140. package/docs/de/dictionary/content_file.md +1 -1
  141. package/docs/de/intlayer_CMS.md +1 -1
  142. package/docs/de/intlayer_visual_editor.md +1 -1
  143. package/docs/de/intlayer_with_astro_lit.md +2 -1
  144. package/docs/de/intlayer_with_astro_preact.md +2 -1
  145. package/docs/de/intlayer_with_astro_react.md +2 -1
  146. package/docs/de/intlayer_with_astro_solid.md +2 -1
  147. package/docs/de/intlayer_with_astro_svelte.md +2 -1
  148. package/docs/de/intlayer_with_astro_vanilla.md +1 -1
  149. package/docs/de/intlayer_with_astro_vue.md +2 -1
  150. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  151. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  152. package/docs/de/intlayer_with_nextjs_compiler.md +1 -1
  153. package/docs/de/intlayer_with_nextjs_no_locale_path.md +1 -1
  154. package/docs/de/intlayer_with_nuxt.md +1 -1
  155. package/docs/de/intlayer_with_react_router_v7.md +1 -1
  156. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -1
  157. package/docs/de/intlayer_with_tanstack+solid.md +1 -1
  158. package/docs/de/intlayer_with_tanstack.md +1 -1
  159. package/docs/de/intlayer_with_vite+vue.md +1 -1
  160. package/docs/de/plugins/sync-json.md +1 -1
  161. package/docs/de/readme.md +27 -1
  162. package/docs/en/benchmark/___solid.md +12 -0
  163. package/docs/en/benchmark/___svelte.md +16 -0
  164. package/docs/en/benchmark/___vue.md +7 -0
  165. package/docs/en/benchmark/index.md +3 -0
  166. package/docs/en/benchmark/solid.md +159 -0
  167. package/docs/en/benchmark/svelte.md +158 -0
  168. package/docs/en/benchmark/tanstack.md +1 -1
  169. package/docs/en/benchmark/vue.md +154 -0
  170. package/docs/en/component_i18n.md +1 -1
  171. package/docs/en/dictionary/content_file.md +1 -1
  172. package/docs/en/intlayer_CMS.md +1 -1
  173. package/docs/en/intlayer_visual_editor.md +1 -1
  174. package/docs/en/intlayer_with_astro.md +2 -1
  175. package/docs/en/intlayer_with_astro_lit.md +2 -1
  176. package/docs/en/intlayer_with_astro_preact.md +2 -1
  177. package/docs/en/intlayer_with_astro_react.md +2 -1
  178. package/docs/en/intlayer_with_astro_solid.md +2 -1
  179. package/docs/en/intlayer_with_astro_svelte.md +2 -1
  180. package/docs/en/intlayer_with_astro_vanilla.md +2 -1
  181. package/docs/en/intlayer_with_astro_vue.md +2 -1
  182. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  183. package/docs/en/intlayer_with_nextjs_16.md +1 -1
  184. package/docs/en/intlayer_with_nextjs_compiler.md +1 -1
  185. package/docs/en/intlayer_with_nextjs_no_locale_path.md +1 -1
  186. package/docs/en/intlayer_with_nuxt.md +1 -1
  187. package/docs/en/intlayer_with_react_router_v7.md +1 -1
  188. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +1 -1
  189. package/docs/en/intlayer_with_tanstack+solid.md +1 -1
  190. package/docs/en/intlayer_with_tanstack.md +1 -1
  191. package/docs/en/intlayer_with_vite+vue.md +1 -1
  192. package/docs/en/plugins/sync-json.md +1 -1
  193. package/docs/en/readme.md +27 -1
  194. package/docs/en-GB/benchmark/index.md +8 -2
  195. package/docs/en-GB/benchmark/tanstack.md +1 -1
  196. package/docs/en-GB/dictionary/content_file.md +1 -1
  197. package/docs/en-GB/intlayer_CMS.md +1 -1
  198. package/docs/en-GB/intlayer_visual_editor.md +1 -1
  199. package/docs/en-GB/intlayer_with_astro_lit.md +2 -1
  200. package/docs/en-GB/intlayer_with_astro_preact.md +2 -1
  201. package/docs/en-GB/intlayer_with_astro_react.md +2 -1
  202. package/docs/en-GB/intlayer_with_astro_solid.md +2 -1
  203. package/docs/en-GB/intlayer_with_astro_svelte.md +2 -1
  204. package/docs/en-GB/intlayer_with_astro_vanilla.md +1 -1
  205. package/docs/en-GB/intlayer_with_astro_vue.md +2 -1
  206. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  207. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  208. package/docs/en-GB/intlayer_with_nextjs_compiler.md +1 -1
  209. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1 -1
  210. package/docs/en-GB/intlayer_with_nuxt.md +1 -1
  211. package/docs/en-GB/intlayer_with_react_router_v7.md +1 -1
  212. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  213. package/docs/en-GB/intlayer_with_tanstack+solid.md +1 -1
  214. package/docs/en-GB/intlayer_with_tanstack.md +1 -1
  215. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  216. package/docs/en-GB/plugins/sync-json.md +1 -1
  217. package/docs/en-GB/readme.md +27 -1
  218. package/docs/es/benchmark/index.md +8 -2
  219. package/docs/es/benchmark/tanstack.md +1 -1
  220. package/docs/es/component_i18n.md +1 -1
  221. package/docs/es/dictionary/content_file.md +1 -1
  222. package/docs/es/intlayer_CMS.md +1 -1
  223. package/docs/es/intlayer_visual_editor.md +1 -1
  224. package/docs/es/intlayer_with_astro_lit.md +2 -1
  225. package/docs/es/intlayer_with_astro_preact.md +2 -1
  226. package/docs/es/intlayer_with_astro_react.md +2 -1
  227. package/docs/es/intlayer_with_astro_solid.md +2 -1
  228. package/docs/es/intlayer_with_astro_svelte.md +2 -1
  229. package/docs/es/intlayer_with_astro_vanilla.md +1 -1
  230. package/docs/es/intlayer_with_astro_vue.md +2 -1
  231. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  232. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  233. package/docs/es/intlayer_with_nextjs_compiler.md +1 -1
  234. package/docs/es/intlayer_with_nextjs_no_locale_path.md +1 -1
  235. package/docs/es/intlayer_with_nuxt.md +1 -1
  236. package/docs/es/intlayer_with_react_router_v7.md +1 -1
  237. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +1 -1
  238. package/docs/es/intlayer_with_tanstack+solid.md +1 -1
  239. package/docs/es/intlayer_with_tanstack.md +1 -1
  240. package/docs/es/intlayer_with_vite+vue.md +1 -1
  241. package/docs/es/plugins/sync-json.md +1 -1
  242. package/docs/es/readme.md +27 -1
  243. package/docs/fr/benchmark/index.md +8 -2
  244. package/docs/fr/benchmark/tanstack.md +1 -1
  245. package/docs/fr/dictionary/content_file.md +1 -1
  246. package/docs/fr/intlayer_CMS.md +1 -1
  247. package/docs/fr/intlayer_visual_editor.md +1 -1
  248. package/docs/fr/intlayer_with_astro_lit.md +2 -1
  249. package/docs/fr/intlayer_with_astro_preact.md +2 -1
  250. package/docs/fr/intlayer_with_astro_react.md +2 -1
  251. package/docs/fr/intlayer_with_astro_solid.md +2 -1
  252. package/docs/fr/intlayer_with_astro_svelte.md +2 -1
  253. package/docs/fr/intlayer_with_astro_vanilla.md +1 -1
  254. package/docs/fr/intlayer_with_astro_vue.md +2 -1
  255. package/docs/fr/intlayer_with_nextjs_15.md +2 -2
  256. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  257. package/docs/fr/intlayer_with_nextjs_compiler.md +1 -1
  258. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1 -1
  259. package/docs/fr/intlayer_with_nuxt.md +1 -1
  260. package/docs/fr/intlayer_with_react_router_v7.md +1 -1
  261. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  262. package/docs/fr/intlayer_with_tanstack+solid.md +1 -1
  263. package/docs/fr/intlayer_with_tanstack.md +1 -1
  264. package/docs/fr/intlayer_with_vite+vue.md +1 -1
  265. package/docs/fr/plugins/sync-json.md +1 -1
  266. package/docs/fr/readme.md +27 -1
  267. package/docs/hi/benchmark/index.md +5 -2
  268. package/docs/hi/benchmark/tanstack.md +1 -1
  269. package/docs/hi/dictionary/content_file.md +1 -1
  270. package/docs/hi/intlayer_CMS.md +1 -1
  271. package/docs/hi/intlayer_visual_editor.md +1 -1
  272. package/docs/hi/intlayer_with_astro_lit.md +2 -1
  273. package/docs/hi/intlayer_with_astro_preact.md +2 -1
  274. package/docs/hi/intlayer_with_astro_react.md +2 -1
  275. package/docs/hi/intlayer_with_astro_solid.md +2 -1
  276. package/docs/hi/intlayer_with_astro_svelte.md +2 -1
  277. package/docs/hi/intlayer_with_astro_vanilla.md +1 -1
  278. package/docs/hi/intlayer_with_astro_vue.md +2 -1
  279. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  280. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  281. package/docs/hi/intlayer_with_nextjs_compiler.md +1 -1
  282. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1 -1
  283. package/docs/hi/intlayer_with_nuxt.md +1 -1
  284. package/docs/hi/intlayer_with_react_router_v7.md +1 -1
  285. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  286. package/docs/hi/intlayer_with_tanstack+solid.md +1 -1
  287. package/docs/hi/intlayer_with_tanstack.md +1 -1
  288. package/docs/hi/intlayer_with_vite+vue.md +1 -1
  289. package/docs/hi/plugins/sync-json.md +1 -1
  290. package/docs/hi/readme.md +27 -1
  291. package/docs/id/benchmark/index.md +8 -2
  292. package/docs/id/benchmark/tanstack.md +1 -1
  293. package/docs/id/dictionary/content_file.md +1 -1
  294. package/docs/id/intlayer_CMS.md +1 -1
  295. package/docs/id/intlayer_visual_editor.md +1 -1
  296. package/docs/id/intlayer_with_astro_lit.md +2 -1
  297. package/docs/id/intlayer_with_astro_preact.md +2 -1
  298. package/docs/id/intlayer_with_astro_react.md +2 -1
  299. package/docs/id/intlayer_with_astro_solid.md +2 -1
  300. package/docs/id/intlayer_with_astro_svelte.md +2 -1
  301. package/docs/id/intlayer_with_astro_vanilla.md +1 -1
  302. package/docs/id/intlayer_with_astro_vue.md +2 -1
  303. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  304. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  305. package/docs/id/intlayer_with_nextjs_compiler.md +1 -1
  306. package/docs/id/intlayer_with_nextjs_no_locale_path.md +1 -1
  307. package/docs/id/intlayer_with_nuxt.md +1 -1
  308. package/docs/id/intlayer_with_react_router_v7.md +1 -1
  309. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +1 -1
  310. package/docs/id/intlayer_with_tanstack+solid.md +1 -1
  311. package/docs/id/intlayer_with_tanstack.md +1 -1
  312. package/docs/id/intlayer_with_vite+vue.md +1 -1
  313. package/docs/id/plugins/sync-json.md +1 -1
  314. package/docs/id/readme.md +27 -1
  315. package/docs/it/benchmark/index.md +8 -2
  316. package/docs/it/benchmark/tanstack.md +1 -1
  317. package/docs/it/dictionary/content_file.md +1 -1
  318. package/docs/it/intlayer_CMS.md +1 -1
  319. package/docs/it/intlayer_visual_editor.md +1 -1
  320. package/docs/it/intlayer_with_astro_lit.md +2 -1
  321. package/docs/it/intlayer_with_astro_preact.md +2 -1
  322. package/docs/it/intlayer_with_astro_react.md +2 -1
  323. package/docs/it/intlayer_with_astro_solid.md +2 -1
  324. package/docs/it/intlayer_with_astro_svelte.md +2 -1
  325. package/docs/it/intlayer_with_astro_vanilla.md +1 -1
  326. package/docs/it/intlayer_with_astro_vue.md +2 -1
  327. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  328. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  329. package/docs/it/intlayer_with_nextjs_compiler.md +1 -1
  330. package/docs/it/intlayer_with_nextjs_no_locale_path.md +1 -1
  331. package/docs/it/intlayer_with_nuxt.md +1 -1
  332. package/docs/it/intlayer_with_react_router_v7.md +1 -1
  333. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +1 -1
  334. package/docs/it/intlayer_with_tanstack+solid.md +1 -1
  335. package/docs/it/intlayer_with_tanstack.md +1 -1
  336. package/docs/it/intlayer_with_vite+vue.md +1 -1
  337. package/docs/it/plugins/sync-json.md +1 -1
  338. package/docs/it/readme.md +27 -1
  339. package/docs/ja/benchmark/index.md +5 -2
  340. package/docs/ja/benchmark/tanstack.md +1 -1
  341. package/docs/ja/dictionary/content_file.md +1 -1
  342. package/docs/ja/intlayer_CMS.md +1 -1
  343. package/docs/ja/intlayer_visual_editor.md +1 -1
  344. package/docs/ja/intlayer_with_astro_lit.md +2 -1
  345. package/docs/ja/intlayer_with_astro_preact.md +2 -1
  346. package/docs/ja/intlayer_with_astro_react.md +2 -1
  347. package/docs/ja/intlayer_with_astro_solid.md +2 -1
  348. package/docs/ja/intlayer_with_astro_svelte.md +2 -1
  349. package/docs/ja/intlayer_with_astro_vanilla.md +1 -1
  350. package/docs/ja/intlayer_with_astro_vue.md +2 -1
  351. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  352. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  353. package/docs/ja/intlayer_with_nextjs_compiler.md +1 -1
  354. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1 -1
  355. package/docs/ja/intlayer_with_nuxt.md +1 -1
  356. package/docs/ja/intlayer_with_react_router_v7.md +1 -1
  357. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +1 -1
  358. package/docs/ja/intlayer_with_tanstack+solid.md +1 -1
  359. package/docs/ja/intlayer_with_tanstack.md +1 -1
  360. package/docs/ja/intlayer_with_vite+vue.md +1 -1
  361. package/docs/ja/plugins/sync-json.md +1 -1
  362. package/docs/ja/readme.md +27 -1
  363. package/docs/ko/benchmark/index.md +5 -2
  364. package/docs/ko/benchmark/tanstack.md +1 -1
  365. package/docs/ko/dictionary/content_file.md +1 -1
  366. package/docs/ko/intlayer_CMS.md +1 -1
  367. package/docs/ko/intlayer_visual_editor.md +1 -1
  368. package/docs/ko/intlayer_with_astro_lit.md +2 -1
  369. package/docs/ko/intlayer_with_astro_preact.md +2 -1
  370. package/docs/ko/intlayer_with_astro_react.md +2 -1
  371. package/docs/ko/intlayer_with_astro_solid.md +2 -1
  372. package/docs/ko/intlayer_with_astro_svelte.md +2 -1
  373. package/docs/ko/intlayer_with_astro_vanilla.md +1 -1
  374. package/docs/ko/intlayer_with_astro_vue.md +2 -1
  375. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  376. package/docs/ko/intlayer_with_nextjs_16.md +1 -1
  377. package/docs/ko/intlayer_with_nextjs_compiler.md +1 -1
  378. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1 -1
  379. package/docs/ko/intlayer_with_nuxt.md +1 -1
  380. package/docs/ko/intlayer_with_react_router_v7.md +1 -1
  381. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  382. package/docs/ko/intlayer_with_tanstack+solid.md +1 -1
  383. package/docs/ko/intlayer_with_tanstack.md +1 -1
  384. package/docs/ko/intlayer_with_vite+vue.md +1 -1
  385. package/docs/ko/plugins/sync-json.md +1 -1
  386. package/docs/ko/readme.md +27 -1
  387. package/docs/pl/benchmark/index.md +8 -2
  388. package/docs/pl/benchmark/tanstack.md +1 -1
  389. package/docs/pl/dictionary/content_file.md +1 -1
  390. package/docs/pl/intlayer_CMS.md +1 -1
  391. package/docs/pl/intlayer_visual_editor.md +1 -1
  392. package/docs/pl/intlayer_with_astro_lit.md +2 -1
  393. package/docs/pl/intlayer_with_astro_preact.md +2 -1
  394. package/docs/pl/intlayer_with_astro_react.md +2 -1
  395. package/docs/pl/intlayer_with_astro_solid.md +2 -1
  396. package/docs/pl/intlayer_with_astro_svelte.md +2 -1
  397. package/docs/pl/intlayer_with_astro_vanilla.md +1 -1
  398. package/docs/pl/intlayer_with_astro_vue.md +2 -1
  399. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  400. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  401. package/docs/pl/intlayer_with_nextjs_compiler.md +1 -1
  402. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1 -1
  403. package/docs/pl/intlayer_with_nuxt.md +1 -1
  404. package/docs/pl/intlayer_with_react_router_v7.md +1 -1
  405. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +2 -2
  406. package/docs/pl/intlayer_with_tanstack+solid.md +1 -1
  407. package/docs/pl/intlayer_with_tanstack.md +1 -1
  408. package/docs/pl/intlayer_with_vite+vue.md +1 -1
  409. package/docs/pl/plugins/sync-json.md +1 -1
  410. package/docs/pl/readme.md +27 -1
  411. package/docs/pt/benchmark/index.md +8 -2
  412. package/docs/pt/benchmark/tanstack.md +1 -1
  413. package/docs/pt/dictionary/content_file.md +1 -1
  414. package/docs/pt/intlayer_CMS.md +1 -1
  415. package/docs/pt/intlayer_visual_editor.md +1 -1
  416. package/docs/pt/intlayer_with_astro_lit.md +2 -1
  417. package/docs/pt/intlayer_with_astro_preact.md +2 -1
  418. package/docs/pt/intlayer_with_astro_react.md +2 -1
  419. package/docs/pt/intlayer_with_astro_solid.md +2 -1
  420. package/docs/pt/intlayer_with_astro_svelte.md +2 -1
  421. package/docs/pt/intlayer_with_astro_vanilla.md +1 -1
  422. package/docs/pt/intlayer_with_astro_vue.md +2 -1
  423. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  424. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  425. package/docs/pt/intlayer_with_nextjs_compiler.md +1 -1
  426. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1 -1
  427. package/docs/pt/intlayer_with_nuxt.md +1 -1
  428. package/docs/pt/intlayer_with_react_router_v7.md +1 -1
  429. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +1 -1
  430. package/docs/pt/intlayer_with_tanstack+solid.md +1 -1
  431. package/docs/pt/intlayer_with_tanstack.md +1 -1
  432. package/docs/pt/intlayer_with_vite+vue.md +1 -1
  433. package/docs/pt/plugins/sync-json.md +1 -1
  434. package/docs/pt/readme.md +27 -1
  435. package/docs/ru/benchmark/index.md +5 -2
  436. package/docs/ru/benchmark/tanstack.md +1 -1
  437. package/docs/ru/dictionary/content_file.md +1 -1
  438. package/docs/ru/intlayer_CMS.md +1 -1
  439. package/docs/ru/intlayer_visual_editor.md +1 -1
  440. package/docs/ru/intlayer_with_astro_lit.md +2 -1
  441. package/docs/ru/intlayer_with_astro_preact.md +2 -1
  442. package/docs/ru/intlayer_with_astro_react.md +2 -1
  443. package/docs/ru/intlayer_with_astro_solid.md +2 -1
  444. package/docs/ru/intlayer_with_astro_svelte.md +2 -1
  445. package/docs/ru/intlayer_with_astro_vanilla.md +1 -1
  446. package/docs/ru/intlayer_with_astro_vue.md +2 -1
  447. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  448. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  449. package/docs/ru/intlayer_with_nextjs_compiler.md +1 -1
  450. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1 -1
  451. package/docs/ru/intlayer_with_nuxt.md +1 -1
  452. package/docs/ru/intlayer_with_react_router_v7.md +1 -1
  453. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +1 -1
  454. package/docs/ru/intlayer_with_tanstack+solid.md +1 -1
  455. package/docs/ru/intlayer_with_tanstack.md +1 -1
  456. package/docs/ru/intlayer_with_vite+vue.md +1 -1
  457. package/docs/ru/plugins/sync-json.md +1 -1
  458. package/docs/ru/readme.md +27 -1
  459. package/docs/tr/benchmark/index.md +8 -2
  460. package/docs/tr/benchmark/tanstack.md +1 -1
  461. package/docs/tr/dictionary/content_file.md +1 -1
  462. package/docs/tr/intlayer_CMS.md +1 -1
  463. package/docs/tr/intlayer_visual_editor.md +1 -1
  464. package/docs/tr/intlayer_with_astro_lit.md +2 -1
  465. package/docs/tr/intlayer_with_astro_preact.md +2 -1
  466. package/docs/tr/intlayer_with_astro_react.md +2 -1
  467. package/docs/tr/intlayer_with_astro_solid.md +2 -1
  468. package/docs/tr/intlayer_with_astro_svelte.md +2 -1
  469. package/docs/tr/intlayer_with_astro_vanilla.md +1 -1
  470. package/docs/tr/intlayer_with_astro_vue.md +2 -1
  471. package/docs/tr/intlayer_with_nextjs_15.md +2 -2
  472. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  473. package/docs/tr/intlayer_with_nextjs_compiler.md +1 -1
  474. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1 -1
  475. package/docs/tr/intlayer_with_nuxt.md +1 -1
  476. package/docs/tr/intlayer_with_react_router_v7.md +1 -1
  477. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  478. package/docs/tr/intlayer_with_tanstack+solid.md +1 -1
  479. package/docs/tr/intlayer_with_tanstack.md +1 -1
  480. package/docs/tr/intlayer_with_vite+vue.md +1 -1
  481. package/docs/tr/plugins/sync-json.md +1 -1
  482. package/docs/tr/readme.md +27 -1
  483. package/docs/uk/benchmark/index.md +5 -2
  484. package/docs/uk/benchmark/tanstack.md +1 -1
  485. package/docs/uk/dictionary/content_file.md +1 -1
  486. package/docs/uk/intlayer_CMS.md +1 -1
  487. package/docs/uk/intlayer_visual_editor.md +1 -1
  488. package/docs/uk/intlayer_with_astro_lit.md +2 -1
  489. package/docs/uk/intlayer_with_astro_preact.md +2 -1
  490. package/docs/uk/intlayer_with_astro_react.md +2 -1
  491. package/docs/uk/intlayer_with_astro_solid.md +2 -1
  492. package/docs/uk/intlayer_with_astro_svelte.md +2 -1
  493. package/docs/uk/intlayer_with_astro_vanilla.md +1 -1
  494. package/docs/uk/intlayer_with_astro_vue.md +2 -1
  495. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  496. package/docs/uk/intlayer_with_nextjs_16.md +1 -1
  497. package/docs/uk/intlayer_with_nextjs_compiler.md +1 -1
  498. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1 -1
  499. package/docs/uk/intlayer_with_nuxt.md +1 -1
  500. package/docs/uk/intlayer_with_react_router_v7.md +1 -1
  501. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +1 -1
  502. package/docs/uk/intlayer_with_tanstack+solid.md +1 -1
  503. package/docs/uk/intlayer_with_tanstack.md +1 -1
  504. package/docs/uk/intlayer_with_vite+vue.md +1 -1
  505. package/docs/uk/plugins/sync-json.md +1 -1
  506. package/docs/uk/readme.md +27 -1
  507. package/docs/vi/benchmark/index.md +8 -2
  508. package/docs/vi/benchmark/tanstack.md +1 -1
  509. package/docs/vi/dictionary/content_file.md +1 -1
  510. package/docs/vi/intlayer_CMS.md +1 -1
  511. package/docs/vi/intlayer_visual_editor.md +1 -1
  512. package/docs/vi/intlayer_with_astro_lit.md +2 -1
  513. package/docs/vi/intlayer_with_astro_preact.md +2 -1
  514. package/docs/vi/intlayer_with_astro_react.md +2 -1
  515. package/docs/vi/intlayer_with_astro_solid.md +2 -1
  516. package/docs/vi/intlayer_with_astro_svelte.md +2 -1
  517. package/docs/vi/intlayer_with_astro_vanilla.md +1 -1
  518. package/docs/vi/intlayer_with_astro_vue.md +2 -1
  519. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  520. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  521. package/docs/vi/intlayer_with_nextjs_compiler.md +1 -1
  522. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1 -1
  523. package/docs/vi/intlayer_with_nuxt.md +1 -1
  524. package/docs/vi/intlayer_with_react_router_v7.md +1 -1
  525. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  526. package/docs/vi/intlayer_with_tanstack+solid.md +1 -1
  527. package/docs/vi/intlayer_with_tanstack.md +1 -1
  528. package/docs/vi/intlayer_with_vite+vue.md +1 -1
  529. package/docs/vi/plugins/sync-json.md +1 -1
  530. package/docs/vi/readme.md +27 -1
  531. package/docs/zh/benchmark/index.md +5 -2
  532. package/docs/zh/benchmark/tanstack.md +1 -1
  533. package/docs/zh/dictionary/content_file.md +1 -1
  534. package/docs/zh/intlayer_CMS.md +1 -1
  535. package/docs/zh/intlayer_visual_editor.md +1 -1
  536. package/docs/zh/intlayer_with_astro_lit.md +2 -1
  537. package/docs/zh/intlayer_with_astro_preact.md +2 -1
  538. package/docs/zh/intlayer_with_astro_react.md +2 -1
  539. package/docs/zh/intlayer_with_astro_solid.md +2 -1
  540. package/docs/zh/intlayer_with_astro_svelte.md +2 -1
  541. package/docs/zh/intlayer_with_astro_vanilla.md +1 -1
  542. package/docs/zh/intlayer_with_astro_vue.md +2 -1
  543. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  544. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  545. package/docs/zh/intlayer_with_nextjs_compiler.md +1 -1
  546. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1 -1
  547. package/docs/zh/intlayer_with_nuxt.md +1 -1
  548. package/docs/zh/intlayer_with_react_router_v7.md +1 -1
  549. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +1 -1
  550. package/docs/zh/intlayer_with_tanstack+solid.md +1 -1
  551. package/docs/zh/intlayer_with_tanstack.md +1 -1
  552. package/docs/zh/intlayer_with_vite+vue.md +1 -1
  553. package/docs/zh/plugins/sync-json.md +1 -1
  554. package/docs/zh/readme.md +102 -76
  555. package/package.json +6 -6
  556. package/src/generated/docs.entry.ts +60 -0
@@ -54,7 +54,7 @@ Mit Intlayer können Sie:
54
54
  <Tabs defaultTab="video">
55
55
  <Tab label="Video" value="video">
56
56
 
57
- <iframe title="Die beste i18n-Lösung für Tanstack Start? Entdecken Sie Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
57
+ <iframe title="Die beste i18n-Lösung für Tanstack Start? Entdecken Sie Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
58
58
 
59
59
  </Tab>
60
60
  <Tab label="Code" value="code">
@@ -71,7 +71,7 @@ Mit Intlayer können Sie:
71
71
  <Tabs defaultTab="video">
72
72
  <Tab label="Video" value="video">
73
73
 
74
- <iframe title="Die beste i18n-Lösung für Tanstack Start? Entdecken Sie Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
74
+ <iframe title="Die beste i18n-Lösung für Tanstack Start? Entdecken Sie Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
75
75
 
76
76
  </Tab>
77
77
  <Tab label="Code" value="code">
@@ -48,7 +48,7 @@ Mit Intlayer können Sie:
48
48
  <Tabs defaultTab="video">
49
49
  <Tab label="Video" value="video">
50
50
 
51
- <iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/IE3XWkZ6a5U?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
51
+ <iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/IE3XWkZ6a5U?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
52
52
 
53
53
  </Tab>
54
54
  <Tab label="Code" value="code">
@@ -34,7 +34,7 @@ history:
34
34
 
35
35
  # Sync JSON (i18n-Brücken) - Sync JSON mit ICU / i18next-Unterstützung
36
36
 
37
- <iframe title="Wie Sie Ihre JSON-Übersetzungen mit Intlayer synchronisiert halten" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
37
+ <iframe title="Wie Sie Ihre JSON-Übersetzungen mit Intlayer synchronisiert halten" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
38
38
 
39
39
  Verwenden Sie Intlayer als Ergänzung zu Ihrem bestehenden i18n-Stack. Dieses Plugin hält Ihre JSON-Nachrichten mit den Intlayer-Wörterbüchern synchron, sodass Sie:
40
40
 
package/docs/de/readme.md CHANGED
@@ -189,7 +189,22 @@ Erkunden Sie unsere umfassende Dokumentation, um mit Intlayer zu beginnen und zu
189
189
  <li><a href="https://intlayer.org/doc/environment/vite-and-react" rel=''>Vite + React</a></li>
190
190
  <li><a href="https://intlayer.org/doc/environment/vite-and-react" rel=''>Vite + React mit Compiler</a></li>
191
191
  <li><a href="https://intlayer.org/doc/environment/vite-and-react/compiler" rel=''>React-router-v7</a></li>
192
- <li><a href="https://intlayer.org/doc/environment/vite-and-react/tanstack-start" rel=''>Tanstack start</a></li>
192
+ <li><a href="https://intlayer.org/doc/environment/tanstack-start" rel=''>Tanstack start</a>
193
+ <ul>
194
+ <li><a href="https://intlayer.org/doc/environment/tanstack-start/solid" rel=''>Solid</a></li>
195
+ </ul>
196
+ </li>
197
+ <li><a href="https://intlayer.org/doc/environment/astro" rel=''>Astro</a>
198
+ <ul>
199
+ <li><a href="https://intlayer.org/doc/environment/astro/react" rel=''>React</a></li>
200
+ <li><a href="https://intlayer.org/doc/environment/astro/vue" rel=''>Vue</a></li>
201
+ <li><a href="https://intlayer.org/doc/environment/astro/svelte" rel=''>Svelte</a></li>
202
+ <li><a href="https://intlayer.org/doc/environment/astro/solid" rel=''>Solid</a></li>
203
+ <li><a href="https://intlayer.org/doc/environment/astro/vanilla" rel=''>Vanilla JS</a></li>
204
+ <li><a href="https://intlayer.org/doc/environment/astro/lit" rel=''>Lit</a></li>
205
+ </ul>
206
+ </li>
207
+
193
208
  <li><a href="https://intlayer.org/doc/environment/react-native-and-expo" rel=''>React Native</a></li>
194
209
  <li><a href="https://intlayer.org/doc/environment/vite-and-svelte" rel=''>Vite + Svelte</a></li>
195
210
  <li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
@@ -211,6 +226,17 @@ Erkunden Sie unsere umfassende Dokumentation, um mit Intlayer zu beginnen und zu
211
226
  </ul>
212
227
  </details>
213
228
 
229
+ <details>
230
+ <summary style="font-size:16px; font-weight:bold;">📊 Benchmark</summary>
231
+ <ul>
232
+ <li><a href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/benchmark/nextjs.md" rel=''>Next.js</a></li>
233
+ <li><a href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/benchmark/tanstack.md" rel=''>TanStack Start</a></li>
234
+ <li><a href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md" rel=''>Vue</a></li>
235
+ <li><a href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md" rel=''>Solid</a></li>
236
+ <li><a href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md" rel=''>Svelte</a></li>
237
+ </ul>
238
+ </details>
239
+
214
240
  <details>
215
241
  <summary style="font-size:16px; font-weight:bold;">📰 Blog</summary>
216
242
  <ul>
@@ -0,0 +1,12 @@
1
+ - solid primitive is extreamly light and efficient, i recommand that solution for light project, but can quickly become lacking feature for professional solution including cooky management, proxy redirection, formatters etc.
2
+ Also miss lazy loading and scoping namespaces for page size optimization
3
+
4
+ **(solid-i18next)** (`solid-i18next@17.0.2`):
5
+
6
+ `solid-i18next` is probably the most popular option because it was among the first to serve JavaScript app i18n needs. It also has a wide set of community plugins for specific problems.
7
+
8
+ Still, it shares the same major downsides as stacks built on `t('a.b.c')`: optimizations are possible but very time-consuming, and large projects risk bad practices (namespaces + dynamic loading + types).
9
+
10
+ **(Intlayer)** (`svelte-intlayer@8.7.12`):
11
+
12
+ I will not personally judge `svelte-intlayer` for objectivity’s sake, since it is my own solution.
@@ -0,0 +1,16 @@
1
+ **(Paraglide)** (`@inlang/paraglide-js@2.15.1`):
2
+
3
+ `Paraglide` offers an innovative, well-thought-out approach.
4
+ In the context of a vite+svelte app, the tree-shaking their company advertises work as expected, wich is great.
5
+ But in the case of a react + tanstack/start, the tree-shaking did not work as expected, same for next.js. That's say I would be double chechking the usage of paraglide in a svelte and tanstack/start project.
6
+ The workflow and DX are also more complex than other options.
7
+ Personally I dislike having to regenerate JS files before every push, which creates constant merge conflict risk via PRs. The tool also seems more focused on Vite than on Next.js.
8
+ Finally, in comparison with other solutions, Paraglide does not use a store (e.g. Svelte store) to retrieve the current locale to render the content. For each node parsed, it will request the locale from the localStorage / cookie etc. It leads to execution of unnecessary logic that impacts the component reactivity.
9
+
10
+ - svelte-i18n
11
+
12
+ that solutions answers all needs for i18n in a svelte project. But as it's the case for i18next or other main i18n solution it's a bit heavy (15kb gzip in comparison with 2.3kb for intlayer once the app bundled).
13
+
14
+ **(Intlayer)** (`svelte-intlayer@8.7.12`):
15
+
16
+ I will not personally judge `svelte-intlayer` for objectivity’s sake, since it is my own solution.
@@ -0,0 +1,7 @@
1
+ - 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.
2
+
3
+ - 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 extreamly heavy solution (92kb gziped in comparison of 24kb gzipped for vue-i18n and 2.7kb gzipped for intlayer once the app bundled on a vue app)
4
+
5
+ **(Intlayer)** (`vue-intlayer@8.7.12`):
6
+
7
+ I will not personally judge `vue-intlayer` for objectivity’s sake, since it is my own solution.
@@ -27,3 +27,6 @@ Find the detailed reports and technical documentation for each framework below:
27
27
 
28
28
  - [**Next.js Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/nextjs.md)
29
29
  - [**TanStack Start Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/tanstack.md)
30
+ - [**Vue Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md)
31
+ - [**Solid Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md)
32
+ - [**Svelte Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md)
@@ -0,0 +1,159 @@
1
+ ---
2
+ createdAt: 2026-04-20
3
+ updatedAt: 2026-04-21
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.
6
+ keywords:
7
+ - benchmark
8
+ - i18n
9
+ - intl
10
+ - solid
11
+ - performance
12
+ - intlayer
13
+ slugs:
14
+ - doc
15
+ - benchmark
16
+ - solid
17
+ author: Aymeric PINEAU
18
+ applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-solid-template
19
+ history:
20
+ - version: 8.7.5
21
+ date: 2026-01-06
22
+ changes: "Init benchmark"
23
+ ---
24
+
25
+ # Solid i18n Libraries - 2026 Benchmark Report
26
+
27
+ This page is a benchmark report for i18n solutions on Solid.
28
+
29
+ ## Table of Contents
30
+
31
+ <Toc/>
32
+
33
+ ## Interactive Benchmark
34
+
35
+ <I18nBenchmark framework="vite-solid" vertical/>
36
+
37
+ ## Results reference:
38
+
39
+ <iframe
40
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_solid.md"
41
+ width="100%"
42
+ height="600px"
43
+ style="border:none;">
44
+ </iframe>
45
+
46
+ > https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_solid.md
47
+
48
+ See complete benchmark repository [here](https://github.com/intlayer-org/benchmark-i18n/tree/main).
49
+
50
+ ## Introduction
51
+
52
+ Internationalization solutions are among the heaviest dependencies in a Solid app. The main risk is shipping unnecessary content: translations for other pages and other locales in a single route’s bundle.
53
+
54
+ As your app grows, that problem can quickly blow up the JavaScript sent to the client and slow down navigation.
55
+
56
+ In practice, for the least optimized implementations, an internationalized page can end up several times heavier than the version without i18n.
57
+
58
+ The other impact is on developer experience: how you declare content, types, namespace organization, dynamic loading, and reactivity when the locale changes.
59
+
60
+ ## Test your app
61
+
62
+ To quickly spot i18n leakage issues, I set up a free scanner available [here](https://intlayer.org/i18n-seo-scanner).
63
+
64
+ <iframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
65
+
66
+ ## The problem
67
+
68
+ Two levers are essential to limit the cost of a multilingual app:
69
+
70
+ - Split content by page / namespace so you do not load whole dictionaries when you do not need them
71
+ - Load the right locale dynamically, only when needed
72
+
73
+ Understanding the technical limitations of these approaches:
74
+
75
+ **Dynamic loading**
76
+
77
+ Without dynamic loading, most solutions keep messages in memory from the first render, which adds significant overhead for apps with many routes and locales.
78
+
79
+ With dynamic loading, you accept a trade-off: less initial JS, but sometimes an extra request when switching language.
80
+
81
+ **Content splitting**
82
+
83
+ Syntaxes built around `t('a.b.c')` are very convenient but often encourage keeping large JSON objects at runtime. That model makes tree-shaking hard unless the library offers a real per-page split strategy.
84
+
85
+ ## Methodology
86
+
87
+ For this benchmark, we compared the following libraries:
88
+
89
+ - `Base App` (No i18n library)
90
+ - `solid-intlayer` (v8.7.12)
91
+ - `@solid-primitives/i18n` (v12.1.1)
92
+ - `solid-i18next` (v17.0.2)
93
+
94
+ The framework is `Solid` with a multilingual app of **10 pages** and **10 languages**.
95
+
96
+ We compared **four loading strategies**:
97
+
98
+ | Strategy | No namespaces (global) | With namespaces (scoped) |
99
+ | :------------------ | :------------------------------------------- | :------------------------------------------------------------------- |
100
+ | **Static loading** | **Static**: Everything in memory at startup. | **Scoped static**: Split by namespace; everything loaded at startup. |
101
+ | **Dynamic loading** | **Dynamic**: On-demand loading per locale. | **Scoped dynamic**: Granular loading per namespace and locale. |
102
+
103
+ ## Strategy summary
104
+
105
+ - **Static**: Simple; no network latency after the initial load. Downside: large bundle size.
106
+ - **Dynamic**: Reduces initial weight (lazy-loading). Ideal when you have many locales.
107
+ - **Scoped static**: Keeps code organized (logical separation) without complex extra network requests.
108
+ - **Scoped dynamic**: Best approach for _code splitting_ and performance. Minimizes memory by loading only what the current view and active locale need.
109
+
110
+ ### What I measured:
111
+
112
+ I ran the same multilingual app in a real browser for every stack, then wrote down what actually showed up on the wire and how long things took. Sizes are reported **after normal web compression**, because that is closer to what people download than raw source counts.
113
+
114
+ - **Internationalization library size**: After bundling, tree-shaking and minification, the size of the i18n library is the size of the providers + hooks/primitives code in an empty component. It does not include the loading of translation files. It answers how expensive the library is before your content enters the picture.
115
+
116
+ - **JavaScript per page**: For each benchmark route, how much script the browser pulls in for that visit, averaged across the pages in the suite (and across locales where the report rolls them up). Heavy pages are slow pages.
117
+
118
+ - **Leakage from other locales**: It's the content of the same page but in another language that would be loaded by mistake in the audited page. This content is unnecessary and should be avoided. (e.g. `/fr/about` page content in `/en/about` page bundle)
119
+
120
+ - **Leakage from other routes**: The same idea for **other screens** in the app: whether their copy is riding along when you only opened one page. (e.g. `/en/about` page content in `/en/contact` page bundle). A high score hints at weak splitting or over-broad bundles.
121
+
122
+ - **Average component bundle size**: Common UI pieces are measured **one at a time** instead of hiding inside one giant app number. It shows whether internationalization quietly inflates everyday components. For instance, if your component rerenders, it will load all that data from memory. Attaching a giant JSON to any component is like connecting a big store of unused data that will slow down your components’ performance.
123
+
124
+ - **Language switch responsiveness**: I flip the language using the app’s own control and time how long it takes until the page has clearly switched, what a visitor would notice, not a lab micro-step.
125
+
126
+ - **Rendering work after a language change**: A narrower follow-up: how much effort the interface took to repaint for the new language once the switch is in flight. Useful when the “felt” time and the framework cost diverge.
127
+
128
+ - **Initial page load time**: From navigation to the browser considering the page fully loaded for the scenarios I tested. Good for comparing cold starts.
129
+
130
+ - **Hydration time**: When the app exposes it, how long the client spends turning server HTML into something you can actually click. A dash in the tables means that implementation did not provide a reliable hydration figure in this benchmark.
131
+
132
+ ## Results in detail
133
+
134
+ ### 1 - Solutions to avoid
135
+
136
+ **(solid-i18next)** (`solid-i18next@17.0.2`):
137
+
138
+ `solid-i18next` is probably the most popular option because it was among the first to serve JavaScript app i18n needs. It also has a wide set of community plugins for specific problems.
139
+
140
+ Still, it shares the same major downsides as stacks built on `t('a.b.c')`: optimizations are possible but very time-consuming, and large projects risk bad practices (namespaces + dynamic loading + types).
141
+
142
+ ### 2 - Experimental solutions
143
+
144
+ **(@solid-primitives/i18n)** (`@solid-primitives/i18n@12.1.1`):
145
+
146
+ 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.
147
+ It also misses lazy loading and scoping namespaces for page size optimization.
148
+
149
+ ### 3 - Recommendations
150
+
151
+ **(Intlayer)** (`solid-intlayer@8.7.12`):
152
+
153
+ I will not personally judge `solid-intlayer` for objectivity’s sake, since it is my own solution.
154
+
155
+ ### Personal note
156
+
157
+ This note is personal and does not affect the benchmark results. Still, in the i18n world you often see consensus around a pattern like `const t = useTranslation('xx')` + `<>{t('xx.xx')}</>` for translated content.
158
+
159
+ In Solid apps, injecting a function as a `JSX.Element` is, in my view, an anti-pattern. It also adds avoidable complexity and JavaScript execution overhead (even if it is barely noticeable).
@@ -0,0 +1,158 @@
1
+ ---
2
+ createdAt: 2026-04-20
3
+ updatedAt: 2026-04-21
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.
6
+ keywords:
7
+ - benchmark
8
+ - i18n
9
+ - intl
10
+ - svelte
11
+ - performance
12
+ - intlayer
13
+ slugs:
14
+ - doc
15
+ - benchmark
16
+ - svelte
17
+ author: Aymeric PINEAU
18
+ applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-svelte-template
19
+ history:
20
+ - version: 8.7.5
21
+ date: 2026-01-06
22
+ changes: "Init benchmark"
23
+ ---
24
+
25
+ # Svelte i18n Libraries - 2026 Benchmark Report
26
+
27
+ This page is a benchmark report for i18n solutions on Svelte.
28
+
29
+ ## Table of Contents
30
+
31
+ <Toc/>
32
+
33
+ ## Interactive Benchmark
34
+
35
+ <I18nBenchmark framework="vite-svelte" vertical/>
36
+
37
+ ## Results reference:
38
+
39
+ <iframe
40
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_svelte.md"
41
+ width="100%"
42
+ height="600px"
43
+ style="border:none;">
44
+ </iframe>
45
+
46
+ > https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_svelte.md
47
+
48
+ See complete benchmark repository [here](https://github.com/intlayer-org/benchmark-i18n/tree/main).
49
+
50
+ ## Introduction
51
+
52
+ Internationalization solutions are among the heaviest dependencies in a Svelte app. The main risk is shipping unnecessary content: translations for other pages and other locales in a single route’s bundle.
53
+
54
+ As your app grows, that problem can quickly blow up the JavaScript sent to the client and slow down navigation.
55
+
56
+ In practice, for the least optimized implementations, an internationalized page can end up several times heavier than the version without i18n.
57
+
58
+ The other impact is on developer experience: how you declare content, types, namespace organization, dynamic loading, and reactivity when the locale changes.
59
+
60
+ ## Test your app
61
+
62
+ To quickly spot i18n leakage issues, I set up a free scanner available [here](https://intlayer.org/i18n-seo-scanner).
63
+
64
+ <iframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
65
+
66
+ ## The problem
67
+
68
+ Two levers are essential to limit the cost of a multilingual app:
69
+
70
+ - Split content by page / namespace so you do not load whole dictionaries when you do not need them
71
+ - Load the right locale dynamically, only when needed
72
+
73
+ Understanding the technical limitations of these approaches:
74
+
75
+ **Dynamic loading**
76
+
77
+ Without dynamic loading, most solutions keep messages in memory from the first render, which adds significant overhead for apps with many routes and locales.
78
+
79
+ With dynamic loading, you accept a trade-off: less initial JS, but sometimes an extra request when switching language.
80
+
81
+ **Content splitting**
82
+
83
+ Syntaxes built around `t('a.b.c')` are very convenient but often encourage keeping large JSON objects at runtime. That model makes tree-shaking hard unless the library offers a real per-page split strategy.
84
+
85
+ ## Methodology
86
+
87
+ For this benchmark, we compared the following libraries:
88
+
89
+ - `Base App` (No i18n library)
90
+ - `svelte-intlayer` (v8.7.12)
91
+ - `svelte-i18n` (v3.4.0)
92
+ - `@inlang/paraglide-js` (v2.15.1)
93
+
94
+ The framework is `Svelte` with a multilingual app of **10 pages** and **10 languages**.
95
+
96
+ We compared **four loading strategies**:
97
+
98
+ | Strategy | No namespaces (global) | With namespaces (scoped) |
99
+ | :------------------ | :------------------------------------------- | :------------------------------------------------------------------- |
100
+ | **Static loading** | **Static**: Everything in memory at startup. | **Scoped static**: Split by namespace; everything loaded at startup. |
101
+ | **Dynamic loading** | **Dynamic**: On-demand loading per locale. | **Scoped dynamic**: Granular loading per namespace and locale. |
102
+
103
+ ## Strategy summary
104
+
105
+ - **Static**: Simple; no network latency after the initial load. Downside: large bundle size.
106
+ - **Dynamic**: Reduces initial weight (lazy-loading). Ideal when you have many locales.
107
+ - **Scoped static**: Keeps code organized (logical separation) without complex extra network requests.
108
+ - **Scoped dynamic**: Best approach for _code splitting_ and performance. Minimizes memory by loading only what the current view and active locale need.
109
+
110
+ ### What I measured:
111
+
112
+ I ran the same multilingual app in a real browser for every stack, then wrote down what actually showed up on the wire and how long things took. Sizes are reported **after normal web compression**, because that is closer to what people download than raw source counts.
113
+
114
+ - **Internationalization library size**: After bundling, tree-shaking and minification, the size of the i18n library is the size of the providers + stores code in an empty component. It does not include the loading of translation files. It answers how expensive the library is before your content enters the picture.
115
+
116
+ - **JavaScript per page**: For each benchmark route, how much script the browser pulls in for that visit, averaged across the pages in the suite (and across locales where the report rolls them up). Heavy pages are slow pages.
117
+
118
+ - **Leakage from other locales**: It's the content of the same page but in another language that would be loaded by mistake in the audited page. This content is unnecessary and should be avoided. (e.g. `/fr/about` page content in `/en/about` page bundle)
119
+
120
+ - **Leakage from other routes**: The same idea for **other screens** in the app: whether their copy is riding along when you only opened one page. (e.g. `/en/about` page content in `/en/contact` page bundle). A high score hints at weak splitting or over-broad bundles.
121
+
122
+ - **Average component bundle size**: Common UI pieces are measured **one at a time** instead of hiding inside one giant app number. It shows whether internationalization quietly inflates everyday components. For instance, if your component rerenders, it will load all that data from memory. Attaching a giant JSON to any component is like connecting a big store of unused data that will slow down your components’ performance.
123
+
124
+ - **Language switch responsiveness**: I flip the language using the app’s own control and time how long it takes until the page has clearly switched, what a visitor would notice, not a lab micro-step.
125
+
126
+ - **Rendering work after a language change**: A narrower follow-up: how much effort the interface took to repaint for the new language once the switch is in flight. Useful when the “felt” time and the framework cost diverge.
127
+
128
+ - **Initial page load time**: From navigation to the browser considering the page fully loaded for the scenarios I tested. Good for comparing cold starts.
129
+
130
+ - **Hydration time**: When the app exposes it, how long the client spends turning server HTML into something you can actually click. A dash in the tables means that implementation did not provide a reliable hydration figure in this benchmark.
131
+
132
+ ## Results in detail
133
+
134
+ ### 1 - Solutions to avoid
135
+
136
+ **(Paraglide)** (`@inlang/paraglide-js@2.15.1`):
137
+
138
+ `Paraglide` offers an innovative, well-thought-out approach. In the context of a Vite + Svelte app, the tree-shaking their company advertises works as expected, which is great.
139
+ But in the case of a React + TanStack Start, the tree-shaking did not work as expected, same for Next.js. That said, I would be double-checking the usage of Paraglide in a Svelte and TanStack Start project.
140
+ The workflow and DX are also more complex than other options.
141
+ Personally I dislike having to regenerate JS files before every push, which creates constant merge conflict risk via PRs. The tool also seems more focused on Vite than on Next.js.
142
+ Finally, in comparison with other solutions, Paraglide does not use a store (e.g. Svelte store) to retrieve the current locale to render the content. For each node parsed, it will request the locale from the localStorage / cookie etc. It leads to execution of unnecessary logic that impacts the component reactivity.
143
+
144
+ **(svelte-i18n)** (`svelte-i18n@3.4.0`):
145
+
146
+ 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 (15kb gzip in comparison with 2.3kb for intlayer once the app bundled).
147
+
148
+ ### 2 - Recommendations
149
+
150
+ **(Intlayer)** (`svelte-intlayer@8.7.12`):
151
+
152
+ I will not personally judge `svelte-intlayer` for objectivity’s sake, since it is my own solution.
153
+
154
+ ### Personal note
155
+
156
+ This note is personal and does not affect the benchmark results. Still, in the i18n world you often see consensus around a pattern like `const t = useTranslation('xx')` + `<>{t('xx.xx')}</>` for translated content.
157
+
158
+ In Svelte apps, injecting a function as a `Slot` is, in my view, an anti-pattern. It also adds avoidable complexity and JavaScript execution overhead (even if it is barely noticeable).
@@ -206,7 +206,7 @@ Message formats also diverge: `use-intl` uses ICU MessageFormat, while `i18next`
206
206
 
207
207
  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.
208
208
 
209
- **(Intlayer)** (`react-intlayer@8.7.5-canary.0`):
209
+ **(Intlayer)** (`react-intlayer@8.7.12`):
210
210
 
211
211
  I will not personally judge `react-intlayer` for objectivity’s sake, since it is my own solution.
212
212
 
@@ -0,0 +1,154 @@
1
+ ---
2
+ createdAt: 2026-04-20
3
+ updatedAt: 2026-04-21
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.
6
+ keywords:
7
+ - benchmark
8
+ - i18n
9
+ - intl
10
+ - vue
11
+ - performance
12
+ - intlayer
13
+ slugs:
14
+ - doc
15
+ - benchmark
16
+ - vue
17
+ author: Aymeric PINEAU
18
+ applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-vue-template
19
+ history:
20
+ - version: 8.7.5
21
+ date: 2026-01-06
22
+ changes: "Init benchmark"
23
+ ---
24
+
25
+ # Vue i18n Libraries - 2026 Benchmark Report
26
+
27
+ This page is a benchmark report for i18n solutions on Vue.
28
+
29
+ ## Table of Contents
30
+
31
+ <Toc/>
32
+
33
+ ## Interactive Benchmark
34
+
35
+ <I18nBenchmark framework="vite-vue" vertical/>
36
+
37
+ ## Results reference:
38
+
39
+ <iframe
40
+ src="https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md"
41
+ width="100%"
42
+ height="600px"
43
+ style="border:none;">
44
+ </iframe>
45
+
46
+ > https://intlayer.org/markdown?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintlayer-org%2Fbenchmark-i18n%2Fmain%2Freport%2Fscripts%2Fsummarize-vite_vue.md
47
+
48
+ See complete benchmark repository [here](https://github.com/intlayer-org/benchmark-i18n/tree/main).
49
+
50
+ ## Introduction
51
+
52
+ Internationalization solutions are among the heaviest dependencies in a Vue app. The main risk is shipping unnecessary content: translations for other pages and other locales in a single route’s bundle.
53
+
54
+ As your app grows, that problem can quickly blow up the JavaScript sent to the client and slow down navigation.
55
+
56
+ In practice, for the least optimized implementations, an internationalized page can end up several times heavier than the version without i18n.
57
+
58
+ The other impact is on developer experience: how you declare content, types, namespace organization, dynamic loading, and reactivity when the locale changes.
59
+
60
+ ## Test your app
61
+
62
+ To quickly spot i18n leakage issues, I set up a free scanner available [here](https://intlayer.org/i18n-seo-scanner).
63
+
64
+ <iframe src="https://intlayer.org/i18n-seo-scanner" width="100%" height="600px" style="border:none;"/>
65
+
66
+ ## The problem
67
+
68
+ Two levers are essential to limit the cost of a multilingual app:
69
+
70
+ - Split content by page / namespace so you do not load whole dictionaries when you do not need them
71
+ - Load the right locale dynamically, only when needed
72
+
73
+ Understanding the technical limitations of these approaches:
74
+
75
+ **Dynamic loading**
76
+
77
+ Without dynamic loading, most solutions keep messages in memory from the first render, which adds significant overhead for apps with many routes and locales.
78
+
79
+ With dynamic loading, you accept a trade-off: less initial JS, but sometimes an extra request when switching language.
80
+
81
+ **Content splitting**
82
+
83
+ Syntaxes built around `const { t } = useI18n()` + `t('a.b.c')` are very convenient but often encourage keeping large JSON objects at runtime. That model makes tree-shaking hard unless the library offers a real per-page split strategy.
84
+
85
+ ## Methodology
86
+
87
+ For this benchmark, we compared the following libraries:
88
+
89
+ - `Base App` (No i18n library)
90
+ - `vue-intlayer` (v8.7.12)
91
+ - `vue-i18n` (v11.1.1)
92
+ - `fluent-vue` (v0.5.0)
93
+
94
+ The framework is `Vue` with a multilingual app of **10 pages** and **10 languages**.
95
+
96
+ We compared **four loading strategies**:
97
+
98
+ | Strategy | No namespaces (global) | With namespaces (scoped) |
99
+ | :------------------ | :------------------------------------------- | :------------------------------------------------------------------- |
100
+ | **Static loading** | **Static**: Everything in memory at startup. | **Scoped static**: Split by namespace; everything loaded at startup. |
101
+ | **Dynamic loading** | **Dynamic**: On-demand loading per locale. | **Scoped dynamic**: Granular loading per namespace and locale. |
102
+
103
+ ## Strategy summary
104
+
105
+ - **Static**: Simple; no network latency after the initial load. Downside: large bundle size.
106
+ - **Dynamic**: Reduces initial weight (lazy-loading). Ideal when you have many locales.
107
+ - **Scoped static**: Keeps code organized (logical separation) without complex extra network requests.
108
+ - **Scoped dynamic**: Best approach for _code splitting_ and performance. Minimizes memory by loading only what the current view and active locale need.
109
+
110
+ ### What I measured:
111
+
112
+ I ran the same multilingual app in a real browser for every stack, then wrote down what actually showed up on the wire and how long things took. Sizes are reported **after normal web compression**, because that is closer to what people download than raw source counts.
113
+
114
+ - **Internationalization library size**: After bundling, tree-shaking and minification, the size of the i18n library is the size of the providers + composables code in an empty component. It does not include the loading of translation files. It answers how expensive the library is before your content enters the picture.
115
+
116
+ - **JavaScript per page**: For each benchmark route, how much script the browser pulls in for that visit, averaged across the pages in the suite (and across locales where the report rolls them up). Heavy pages are slow pages.
117
+
118
+ - **Leakage from other locales**: It's the content of the same page but in another language that would be loaded by mistake in the audited page. This content is unnecessary and should be avoided. (e.g. `/fr/about` page content in `/en/about` page bundle)
119
+
120
+ - **Leakage from other routes**: The same idea for **other screens** in the app: whether their copy is riding along when you only opened one page. (e.g. `/en/about` page content in `/en/contact` page bundle). A high score hints at weak splitting or over-broad bundles.
121
+
122
+ - **Average component bundle size**: Common UI pieces are measured **one at a time** instead of hiding inside one giant app number. It shows whether internationalization quietly inflates everyday components. For instance, if your component rerenders, it will load all that data from memory. Attaching a giant JSON to any component is like connecting a big store of unused data that will slow down your components’ performance.
123
+
124
+ - **Language switch responsiveness**: I flip the language using the app’s own control and time how long it takes until the page has clearly switched, what a visitor would notice, not a lab micro-step.
125
+
126
+ - **Rendering work after a language change**: A narrower follow-up: how much effort the interface took to repaint for the new language once the switch is in flight. Useful when the “felt” time and the framework cost diverge.
127
+
128
+ - **Initial page load time**: From navigation to the browser considering the page fully loaded for the scenarios I tested. Good for comparing cold starts.
129
+
130
+ - **Hydration time**: When the app exposes it, how long the client spends turning server HTML into something you can actually click. A dash in the tables means that implementation did not provide a reliable hydration figure in this benchmark.
131
+
132
+ ## Results in detail
133
+
134
+ ### 1 - Solutions to avoid
135
+
136
+ **(vue-i18n)** (`vue-i18n@11.1.1`):
137
+
138
+ - **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.
139
+
140
+ **(fluent-vue)** (`fluent-vue@0.5.0`):
141
+
142
+ - **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 extreamly heavy solution (92kb gziped in comparison of 24kb gzipped for vue-i18n and 2.7kb gzipped for intlayer once the app bundled on a vue app)
143
+
144
+ ### 2 - Recommendations
145
+
146
+ **(Intlayer)** (`vue-intlayer@8.7.12`):
147
+
148
+ I will not personally judge `vue-intlayer` for objectivity’s sake, since it is my own solution.
149
+
150
+ ### Personal note
151
+
152
+ This note is personal and does not affect the benchmark results. Still, in the i18n world you often see consensus around a pattern like `const { t } = useI18n()` + `<>{t('xx.xx')}</>` for translated content.
153
+
154
+ In Vue apps, injecting a function as a `VNode` is, in my view, an anti-pattern. It also adds avoidable complexity and JavaScript execution overhead (even if it is barely noticeable).
@@ -179,7 +179,7 @@ See the comparisons and patterns in the Next.js-focused roundup: https://intlaye
179
179
 
180
180
  - React setup (Vite): https://intlayer.org/doc/environment/vite-and-react
181
181
  - React Router v7: https://intlayer.org/doc/environment/vite-and-react/react-router-v7
182
- - TanStack Start: https://intlayer.org/doc/environment/vite-and-react/tanstack-start
182
+ - TanStack Start: https://intlayer.org/doc/environment/tanstack-start
183
183
  - Next.js setup: https://intlayer.org/doc/environment/nextjs
184
184
  - Why Intlayer vs. next-intl vs. next-i18next - https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
185
185
 
@@ -40,7 +40,7 @@ history:
40
40
 
41
41
  # Content File
42
42
 
43
- <iframe title="i18n, Markdown, JSON… one single solution to manage it all | Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
43
+ <iframe title="i18n, Markdown, JSON… one single solution to manage it all | Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
44
44
 
45
45
  ## What is a Content File?
46
46