@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
@@ -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: Najlepsze rozwiązanie i18n dla Next.js w 2026 r. - Raport Benchmark
5
5
  description: Porównaj biblioteki internacjonalizacji (i18n) dla Next.js, takie jak next-intl, next-i18next i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru pakietu, wycieków i reaktywności.
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: "Aktualizacja wyników benchmarku"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Aktualizacja wyników benchmarku"
@@ -112,19 +115,19 @@ Wreszcie, `Intlayer` stosuje optymalizację w czasie budowania, dzięki czemu `u
112
115
  W tym benchmarku porównaliśmy następujące biblioteki:
113
116
 
114
117
  - `Base App` (Brak biblioteki i18n)
115
- - `next-intlayer` (v9.5.1)
116
- - [`@intlayer/next-intl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/next-intl.md) (v9.5.1)
117
- - [`@intlayer/next-i18next`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/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/pl/packages/next-intlayer/exports.md) (v9.5.6)
119
+ - [`@intlayer/next-intl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/next-intl.md) (v9.5.6)
120
+ - [`@intlayer/next-i18next`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/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
  Użyłem `Next.js` w wersji `16.3.4` z App Routerem.
130
133
 
@@ -213,7 +216,7 @@ Wreszcie, w porównaniu z innymi rozwiązaniami, Paraglide nie używa magazynu (
213
216
 
214
217
  **(Tolgee)** (`@tolgee/react@7.2.0`):
215
218
 
216
- `Tolgee` rozwiązuje wiele z wymienionych wcześniej problemów. Uznałem jednak, że trudniej go wdrożyć niż podobne narzędzia. Nie zapewnia on bezpieczeństwa typów (type safety), co utrudnia również wyłapywanie brakujących kluczy w czasie kompilacji. Musiałem opakować funkcje Tolgee we własne funkcje, aby dodać wykrywanie brakujących kluczy.
219
+ `Tolgee` rozwiązuje wiele z wymienionych wcześniej problemów. Uznałem jednak, że trudniej go wdrożyć niż podobne narzędzia. Nie zapewnia on bezpieczeństwa typów (type safety), co utrudnia również wyłapywanie brakujących kluczy w czasie kompilacji. Musiałem opakować funkcje Tolgee we własne funkcje, aby dodać wykrywanie brakujących kluczy. Pakiet jest również stosunkowo ciężki (~14.3kb, czyli około 2.8× `next-intlayer`).
217
220
 
218
221
  **(Next Intl)** (`next-intl@4.14.2`):
219
222
 
@@ -239,7 +242,7 @@ Różnią się również formaty komunikatów: `next-intl` używa ICU MessageFor
239
242
 
240
243
  `next-translate` to moja główna rekomendacja, jeśli lubisz API w stylu `t()`. Działa on elegancko poprzez `next-translate-plugin`, ładując przestrzenie nazw przez `getStaticProps` za pomocą loadera Webpack / Turbopack. Jest to również jedna z najlżejszych opcji w tym zestawieniu (~3.5 KB). Jeśli chodzi o przestrzenie nazw, definiowanie ich na poziomie strony lub trasy w konfiguracji jest przemyślane i łatwiejsze w utrzymaniu niż w przypadku głównych alternatyw, takich jak **next-intl** czy **next-i18next**. W wersji `3.1.2` zauważyłem, że statyczne renderowanie nie działało; Next.js powracał do renderowania dynamicznego.
241
244
 
242
- **(Intlayer)** (`next-intlayer@9.5.1`):
245
+ **(Intlayer)** (`next-intlayer@9.5.6`):
243
246
 
244
247
  Nie będę osobiście oceniał `next-intlayer` ze względu na obiektywizm, ponieważ jest to moje własne rozwiązanie.
245
248
 
@@ -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: Najlepsze rozwiązanie i18n dla Solid w 2026 r. - raport z benchmarku
5
- description: Porównaj biblioteki internacjonalizacji (i18n) dla Solid, takie jak solid-primitives, solid-i18next i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru paczki, wycieków i reaktywności.
5
+ description: Porównaj biblioteki internacjonalizacji (i18n) dla Solid, takie jak solid-primitives, solid-i18next, Tolgee i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru paczki, wycieków i reaktywności.
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: "Aktualizacja wyników benchmarku"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Aktualizacja wyników benchmarku"
@@ -65,9 +68,10 @@ Innym skutkiem jest wpływ na doświadczenie programisty (DX): sposób deklarowa
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: Zalecany wybór dla profesjonalnych aplikacji Solid wymagających zaawansowanych funkcji i optymalizacji (v9.5.0).
71
+ - **Intlayer**: Zalecany wybór dla profesjonalnych aplikacji Solid wymagających zaawansowanych funkcji i optymalizacji (v9.5.6).
69
72
  - **@solid-primitives/i18n**: Doskonała lekka alternatywa dla prostych projektów, choć brakuje jej zaawansowanych funkcji, takich jak lazy loading.
70
73
  - **solid-i18next**: Standardowa, ale ciężka opcja (~3.5x Intlayer) z tymi samymi wadami co React i18next.
74
+ - **Tolgee**: Bogata w funkcje platforma tłumaczeniowa, ale dość ciężka (~12.7kb, około 3.0× Intlayer), pozbawiona dedykowanych prymitywów Solid (opiera się na @tolgee/web) i wykazująca znaczny wyciek między stronami w konfiguracjach statycznych (90% wycieku stron).
71
75
  - **Paraglide**: Innowacyjne podejście, ale złożone DX i problemy z tree-shakingiem w niektórych konfiguracjach.
72
76
 
73
77
  ## Przetestuj swoją aplikację
@@ -100,10 +104,11 @@ Składnie zbudowane wokół `t('a.b.c')` są bardzo wygodne, ale często zachęc
100
104
  W tym benchmarku porównaliśmy następujące biblioteki:
101
105
 
102
106
  - `Base App` (Brak biblioteki i18n)
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/pl/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
  Framework to `Solid` z aplikacją wielojęzyczną składającą się z **10 stron** i **10 języków**.
109
114
 
@@ -147,7 +152,7 @@ Uruchomiłem tę samą wielojęzyczną aplikację w prawdziwej przeglądarce dla
147
152
 
148
153
  Gwiazdki na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności i długoterminowego znaczenia. Choć nie są bezpośrednią miarą jakości technicznej, odzwierciedlają, ilu programistów uważa projekt za przydatny, śledzi jego postępy i prawdopodobnie go przyjmie. Przy szacowaniu wartości projektu gwiazdki pomagają porównać zainteresowanie alternatywami i dostarczają wglądu w rozwój ekosystemu.
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
  ## Wyniki szczegółowe
153
158
 
@@ -170,6 +175,18 @@ Mimo to dzieli te same główne wady co stosy technologiczne zbudowane na `t('a.
170
175
  Solid primitive jest niezwykle lekki i wydajny. Polecam to rozwiązanie dla lekkich projektów, ale może w nim szybko zabraknąć funkcji dla profesjonalnych rozwiązań, w tym zarządzania plikami cookie, przekierowań proxy, formaterów itp.
171
176
  Brakuje mu również lazy loadingu i scopingu przestrzeni nazw w celu optymalizacji rozmiaru strony.
172
177
 
178
+ **(Tolgee)** (`@tolgee/web@7.2.0`):
179
+
180
+ `Tolgee` oferuje kompleksową platformę zarządzania tłumaczeniami z funkcjami edycji in-context.
181
+
182
+ W Solid obecnie nie ma oficjalnego natywnego adaptera (takiego jak `@tolgee/solid`), co zmusza programistów do integracji za pomocą `@tolgee/web` z własnymi sygnałami.
183
+
184
+ Pakiet jest stosunkowo ciężki (~12.7kb, czyli około 3.0× `solid-intlayer`).
185
+
186
+ Bez mechanizmu granularnego podziału na strony w Solid wszystkie tłumaczenia są ładowane do pamięci od razu przy starcie w konfiguracjach statycznych. Skutkuje to dużym wyciekiem paczki (44.5% wycieku języka, 90.0% wycieku stron) oraz średnim rozmiarem paczki strony ~91.8kb (w porównaniu do ~35.8kb dla Intlayer).
187
+
188
+ Reaktywność podczas zmiany języka jest bardzo szybka (0.6ms), idealnie współgrając z drobnoziarnistą reaktywnością Solid, chociaż narzut hydratacji jest nieco wyższy (~5.6ms w porównaniu do ~3.0ms dla Intlayer).
189
+
173
190
  **(Paraglide)** (`@inlang/paraglide-js@2.25.1`):
174
191
 
175
192
  `Paraglide` oferuje innowacyjne, przemyślane podejście. Mimo to w tym benchmarku reklamowany przez nich tree-shaking nie zadziałał w mojej implementacji. Workflow i DX są również bardziej złożone niż w przypadku innych opcji.
@@ -178,7 +195,7 @@ Wreszcie, w porównaniu z innymi rozwiązaniami, Paraglide nie używa store'a (n
178
195
 
179
196
  ### 3 - Rekomendacje
180
197
 
181
- **(Intlayer)** (`solid-intlayer@9.5.0`):
198
+ **(Intlayer)** (`solid-intlayer@9.5.6`):
182
199
 
183
200
  Nie będę osobiście oceniać `solid-intlayer` ze względu na obiektywizm, ponieważ jest to moje własne rozwiązanie.
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: Najlepsze rozwiązanie i18n dla Svelte w 2026 r. - raport z benchmarku
5
- description: Porównaj biblioteki internacjonalizacji (i18n) dla Svelte, takie jak svelte-i18n, Paraglide i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru paczki, wycieków i reaktywności.
5
+ description: Porównaj biblioteki internacjonalizacji (i18n) dla Svelte, takie jak svelte-i18n, Paraglide, Tolgee i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru paczki, wycieków i reaktywności.
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: "Aktualizacja wyników benchmarku"
@@ -65,8 +68,9 @@ Innym skutkiem jest wpływ na doświadczenie programisty (DX): sposób deklarowa
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: Najbardziej wydajny wybór (v9.5.0) z najmniejszym śladem (footprint).
71
+ - **Intlayer**: Najbardziej wydajny wybór (v9.5.6) z najmniejszym śladem (footprint).
69
72
  - **Paraglide**: Mocny kandydat pod kątem tree-shakingu, ale oferuje bardziej złożone doświadczenie programisty i narzut reaktywności.
73
+ - **Tolgee**: Bogata w funkcje platforma tłumaczeniowa z edycją in-context, ale dość ciężka (~13.0kb, około 3.6× Intlayer), wykazująca znaczny wyciek między stronami w konfiguracjach statycznych (90% wycieku stron).
70
74
  - **svelte-i18n**: Kompleksowy i standardowy dla Svelte, ale wiąże się ze znacznie większą wagą paczki (~4.5x Intlayer).
71
75
 
72
76
  ## Przetestuj swoją aplikację
@@ -99,9 +103,10 @@ Składnie zbudowane wokół `t('a.b.c')` są bardzo wygodne, ale często zachęc
99
103
  W tym benchmarku porównaliśmy następujące biblioteki:
100
104
 
101
105
  - `Base App` (Brak biblioteki i18n)
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/pl/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
  Framework to `Svelte` z aplikacją wielojęzyczną składającą się z **10 stron** i **10 języków**.
107
112
 
@@ -145,7 +150,7 @@ Uruchomiłem tę samą wielojęzyczną aplikację w prawdziwej przeglądarce dla
145
150
 
146
151
  Gwiazdki na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności i długoterminowego znaczenia. Choć nie są bezpośrednią miarą jakości technicznej, odzwierciedlają, ilu programistów uważa projekt za przydatny, śledzi jego postępy i prawdopodobnie go przyjmie. Przy szacowaniu wartości projektu gwiazdki pomagają porównać zainteresowanie alternatywami i dostarczają wglądu w rozwój ekosystemu.
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
  ## Wyniki szczegółowe
151
156
 
@@ -165,6 +170,16 @@ Wreszcie, w porównaniu z innymi rozwiązaniami, Paraglide nie używa store'a (n
165
170
 
166
171
  > Uwaga na temat paraglide: rozwiązanie to wstrzykuje kod do Twojej bazy kodu w celu importu; w rezultacie metryka „lib size” w raporcie z benchmarku wynosi prawie 0. Generowanie kodu jest dobrą rzeczą, ponieważ użyta funkcja będzie zawierać tylko niezbędną logikę (prefiks wszędzie vs brak prefiksu, cookie vs storage itp.). Dla porównania, Intlayer wykonuje to filtrowanie poprzez wstrzykiwanie zmiennych środowiskowych podczas budowania (build time), aby wymusić na bundlerze tree-shaking treści w zależności od logiki. Dzięki temu paraglide i intlayer okazują się być od 6 do 10 razy lżejszymi rozwiązaniami niż i18next czy next-intl.
167
172
 
173
+ **(Tolgee)** (`@tolgee/svelte@7.2.1`):
174
+
175
+ `Tolgee` oferuje kompleksową platformę lokalizacyjną z edycją in-context i oficjalną integracją dla Svelte za pośrednictwem `@tolgee/svelte`.
176
+
177
+ Pakiet jest stosunkowo ciężki (~13.0kb, czyli około 3.6× `svelte-intlayer`).
178
+
179
+ Bez granularnego podziału na strony w Svelte wszystkie tłumaczenia są ładowane do pamięci od razu przy starcie w konfiguracjach statycznych. Skutkuje to dużym wyciekiem paczki (50.0% wycieku języka, 90.0% wycieku stron) oraz średnim rozmiarem paczki strony ~100.7kb (w porównaniu do ~59.0kb dla Intlayer).
180
+
181
+ Reaktywność podczas zmiany języka jest bardzo szybka (0.5ms) dzięki reaktywnym magazynom (stores) Svelte, chociaż narzut hydratacji jest nieco wyższy (~6.2ms w porównaniu do ~5.5ms dla Intlayer).
182
+
168
183
  **(svelte-i18n)** (`svelte-i18n@4.0.1`):
169
184
 
170
185
  To rozwiązanie odpowiada na wszystkie potrzeby i18n w projekcie Svelte. Ale podobnie jak w przypadku i18next lub innych głównych rozwiązań i18n, jest ono nieco ciężkie (~16.6kb, co stanowi około 4.5x `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: Najlepsze rozwiązanie i18n dla TanStack Start w 2026 r. - Raport Benchmark
5
5
  description: Porównaj biblioteki internacjonalizacji dla TanStack Start, takie jak react-i18next, use-intl i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru pakietu, wycieków i reaktywności.
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: "Aktualizacja wyników benchmarku"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Aktualizacja wyników benchmarku"
@@ -65,7 +68,7 @@ Inny wpływ dotyczy doświadczenia programisty (DX): sposobu deklarowania treśc
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: Zapewnia najlepszą wydajność i najmniejszy rozmiar bundle'a (v9.5.1) dla TanStack Start.
71
+ - **Intlayer**: Zapewnia najlepszą wydajność i najmniejszy rozmiar bundle'a (v9.5.6) dla TanStack Start.
69
72
  - **react-i18next** & **use-intl**: Dojrzałe alternatywy z dużymi ekosystemami, ale znacznie cięższe i bardziej złożone w optymalizacji.
70
73
  - **Paraglide**: Innowacyjny pomysł na tree-shaking, który nie działa w praktyce. Skomplikowane DX i narzut reaktywności w TanStack Start.
71
74
  - **Unikaj**: **General Translation (GT)** i **Lingo.dev** ze względu na poważne problemy z wydajnością, limity AI i uzależnienie od dostawcy (vendor lock-in).
@@ -100,18 +103,19 @@ Składnie oparte na `const t = useTranslation()` + `t('a.b.c')` są bardzo wygod
100
103
  W tym benchmarku porównaliśmy następujące biblioteki:
101
104
 
102
105
  - `Base App` (Brak biblioteki i18n)
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/pl/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/pl/packages/react-intlayer/exports.md) (v9.5.6)
107
+ - [`@intlayer/use-intl`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/next-intl.md) (v9.5.6)
108
+ - [`@intlayer/lingui`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/lingui.md) (v9.5.6)
109
+ - [`@intlayer/react-i18next`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/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
  Frameworkiem jest `TanStack Start` z wielojęzyczną aplikacją składającą się z **10 stron** i **10 języków**.
117
121
 
@@ -199,7 +203,7 @@ Idea stojąca za `Wuchale` jest interesująca, ale nie jest to jeszcze opłacaln
199
203
 
200
204
  `Tolgee` rozwiązuje wiele z wymienionych wcześniej problemów. Uznałem jednak, że trudniej z nim zacząć niż z innymi narzędziami o podobnym podejściu. Nie zapewnia on bezpieczeństwa typów, co sprawia, że bardzo trudno jest wyłapać brakujące klucze w czasie kompilacji. Musiałem opakować API Tolgee we własne API, aby dodać wykrywanie brakujących kluczy.
201
205
 
202
- Package jest dość ciężki (~11.1kb, co jest ponad 2× większe niż `react-intlayer`).
206
+ Package jest dość ciężki (~13.8 kb, co jest ponad 2× większe niż `react-intlayer`).
203
207
 
204
208
  W TanStack Start miałem również problemy z reaktywnością: przy zmianie lokalizacji musiałem wymusić ponowne renderowanie dostawcy i zasubskrybować zdarzenia zmiany lokalizacji, aby ładowanie w innym języku zachowywało się poprawnie.
205
209
 
@@ -233,7 +237,7 @@ Package jest również ciężki (~15.3kb, co stanowi około 3× `react-intlayer`
233
237
 
234
238
  Ten benchmark TanStack Start nie ma bezpośredniego odpowiednika `next-translate` (wtyczka Next.js + `getStaticProps`). Dla zespołów, które naprawdę chcą API `t()` z dojrzałym ekosystemem, `react-i18next` i `use-intl` pozostają „rozsądnymi” wyborami, ale przygotuj się na zainwestowanie dużej ilości czasu w optymalizację, aby uniknąć wycieków.
235
239
 
236
- **(Intlayer)** (`react-intlayer@9.5.1`):
240
+ **(Intlayer)** (`react-intlayer@9.5.6`):
237
241
 
238
242
  Nie będę osobiście oceniał `react-intlayer` ze względu na obiektywizm, ponieważ jest to moje własne rozwiązanie.
239
243
 
@@ -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: Najlepsze rozwiązanie i18n dla Vue w 2026 r. - raport z benchmarku
5
- description: Porównaj biblioteki internacjonalizacji (i18n) dla Vue, takie jak vue-i18n, fluent-vue i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru paczki, wycieków i reaktywności.
5
+ description: Porównaj biblioteki internacjonalizacji (i18n) dla Vue, takie jak vue-i18n, fluent-vue, Tolgee i Intlayer. Szczegółowy raport wydajności dotyczący rozmiaru paczki, wycieków i reaktywności.
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: "Aktualizacja wyników benchmarku i dodanie Tolgee"
20
23
  - version: 9.5.1
21
24
  date: 2026-09-11
22
25
  changes: "Aktualizacja wyników benchmarku"
@@ -65,7 +68,8 @@ Innym skutkiem jest wpływ na doświadczenie programisty (DX): sposób deklarowa
65
68
 
66
69
  ## TL;DR
67
70
 
68
- - **Intlayer**: Najlżejsze rozwiązanie (v9.5.0) z natywnym scopingiem i dynamicznym ładowaniem.
71
+ - **Intlayer**: Najlżejsze rozwiązanie (v9.5.6) z natywnym scopingiem i dynamicznym ładowaniem.
72
+ - **Tolgee**: Efektywne ładowanie dynamiczne z zerowym wyciekiem w trybie dynamicznym, ale cięższe (~3.7× Intlayer) i brak wbudowanego bezpieczeństwa typów w czasie kompilacji.
69
73
  - **vue-i18n**: Standard branżowy z bogatym ekosystemem, ale może być znacznie cięższy i trudniejszy do optymalizacji pod kątem code-splittingu w dużych aplikacjach.
70
74
  - **fluent-vue**: Innowacyjna organizacja komunikatów, ale brakuje jej bezpieczeństwa typów (type-safety) i okazuje się być ekstremalnie ciężkim rozwiązaniem.
71
75
 
@@ -99,10 +103,11 @@ Składnie zbudowane wokół `const { t } = useI18n()` + `t('a.b.c')` są bardzo
99
103
  W tym benchmarku porównaliśmy następujące biblioteki:
100
104
 
101
105
  - `Base App` (Brak biblioteki i18n)
102
- - `vue-intlayer` (v9.5.0)
103
- - [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/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/pl/packages/vue-intlayer/exports.md) (v9.5.6)
107
+ - [`@intlayer/vue-i18n`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/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
  Framework to `Vue` z aplikacją wielojęzyczną składającą się z **10 stron** i **10 języków**.
108
113
 
@@ -146,7 +151,7 @@ Uruchomiłem tę samą wielojęzyczną aplikację w prawdziwej przeglądarce dla
146
151
 
147
152
  Gwiazdki na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności i długoterminowego znaczenia. Choć nie są bezpośrednią miarą jakości technicznej, odzwierciedlają, ilu programistów uważa projekt za przydatny, śledzi jego postępy i prawdopodobnie go przyjmie. Przy szacowaniu wartości projektu gwiazdki pomagają porównać zainteresowanie alternatywami i dostarczają wglądu w rozwój ekosystemu.
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
  ## Wyniki szczegółowe
152
157
 
@@ -156,18 +161,22 @@ Gwiazdki na GitHubie są silnym wskaźnikiem popularności projektu, zaufania sp
156
161
 
157
162
  ### 2 - Rozwiązania akceptowalne
158
163
 
164
+ **(Tolgee)** (`@tolgee/vue@7.2.0`):
165
+
166
+ `Tolgee` rozwiązuje wiele z wymienionych wcześniej problemów, oferując dynamiczne ładowanie, które skutecznie eliminuje wycieki locale i stron (zmniejszając rozmiar JS strony do około 58.8kb). Nie zapewnia jednak wbudowanego bezpieczeństwa typów w czasie kompilacji dla kluczy, co utrudnia wykrywanie brakujących kluczy. Ponadto sama biblioteka jest stosunkowo ciężka (~13.8kb, czyli około 3.7× `vue-intlayer`).
167
+
159
168
  **(vue-i18n)** (`vue-i18n@11.4.0`):
160
169
 
161
170
  - **vue-i18n** jest bezsprzecznie najczęściej używaną biblioteką i18n dla Vue, ma wiele funkcji i ogromny ekosystem. Jednak pod maską rozwiązanie to jest dość ciężkie. Nawet jeśli vue-i18n integruje lazy loading dla komunikatów, brakuje mu funkcji scopingu. W przypadku klasycznej aplikacji Vue SPA nie ma problemu, ale dla aplikacji nuxt wykorzystującej @nuxt/i18n prowadzi to do włączania komunikatów ze wszystkich stron do jednej. W przypadku dużej aplikacji nuxt zawierającej ponad 10 stron może to stać się naprawdę problematyczne.
162
171
 
163
- Paczka jest bardzo ciężka (~24.3kb, co stanowi około 6x `vue-intlayer`).
172
+ Paczka jest bardzo ciężka (~24.1 kb, co stanowi około 6.5× `vue-intlayer`).
164
173
 
165
174
  **(fluent-vue)** (`fluent-vue@3.8.2`):
166
175
 
167
- - **fluent-vue** oferuje próbę innowacji poprzez format .ftl. Organizacja komunikatów jest świetna, łatwiej zacząć. Ale w praktyce brak bezpieczeństwa typów zwiększa ryzyko błędu, a debugowanie może szybko stać się czasochłonne. Co więcej, to rozwiązanie ładuje komunikaty za pomocą wtyczki vite, która wymusza ładowanie całej treści we wszystkich językach na każdej stronie. Dodatkowo jest to ekstremalnie ciężkie rozwiązanie (~29.7kb, co stanowi około 7.5x `vue-intlayer`).
176
+ - **fluent-vue** oferuje próbę innowacji poprzez format .ftl. Organizacja komunikatów jest świetna, łatwiej zacząć. Ale w praktyce brak bezpieczeństwa typów zwiększa ryzyko błędu, a debugowanie może szybko stać się czasochłonne. Co więcej, to rozwiązanie ładuje komunikaty za pomocą wtyczki vite, która wymusza ładowanie całej treści we wszystkich językach na każdej stronie. Dodatkowo jest to ekstremalnie ciężkie rozwiązanie (~29.7kb, co stanowi około 8× `vue-intlayer`).
168
177
 
169
178
  ### 3 - Rekomendacje
170
179
 
171
- **(Intlayer)** (`vue-intlayer@9.5.0`):
180
+ **(Intlayer)** (`vue-intlayer@9.5.6`):
172
181
 
173
182
  Nie będę osobiście oceniać `vue-intlayer` ze względu na obiektywizm, ponieważ jest to moje własne rozwiązanie.
@@ -0,0 +1,130 @@
1
+ ---
2
+ createdAt: 2026-09-22
3
+ updatedAt: 2026-09-22
4
+ title: Rozszerzenie Chrome i Firefox, skaner i18n i SEO
5
+ description: Sprawdź konfigurację i18n dowolnej witryny za pomocą rozszerzenia Intlayer dla Chrome. Wykrywaj framework, bibliotekę i18n, ustawienia regionalne, tagi hreflang i SEO oraz przeprowadzaj pełny audyt i18n SEO.
6
+ keywords:
7
+ - Rozszerzenie Chrome
8
+ - Skaner i18n
9
+ - Kontroler hreflang
10
+ - Wielojęzyczne SEO
11
+ - Intlayer
12
+ - Lokalizacja
13
+ - Narzędzia programistyczne
14
+ slugs:
15
+ - doc
16
+ - chrome-extension
17
+ history:
18
+ - version: 9.5.6
19
+ date: 2026-09-22
20
+ changes: "Inicjalizacja historii"
21
+ author: aymericzip
22
+ ---
23
+
24
+ # Rozszerzenie Chrome i Firefox: skaner i18n i SEO
25
+
26
+ ## Przegląd
27
+
28
+ [**Intlayer i18n Scanner**](https://chromewebstore.google.com/detail/intlayer_i18n_scanner/pmlehcgmjmfimmjnembihbakhnheiabc) to oficjalne rozszerzenie Chrome dla **Intlayer**. Otwórz je na dowolnej stronie internetowej, aby sprawdzić, jak witryna obsługuje internacjonalizację: jakiego frameworka i biblioteki i18n używa, jakie wersje językowe (locale) udostępnia oraz czy jej wielojęzyczne tagi SEO są poprawnie skonfigurowane.
29
+
30
+ Działa na każdej stronie internetowej, niezależnie od tego, czy używa Intlayer.
31
+
32
+ ![Rozszerzenie Chrome Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/assets/chrome_extension.png?raw=true)
33
+
34
+ [Link do rozszerzenia dla Chrome](https://chromewebstore.google.com/detail/intlayer_i18n_scanner/pmlehcgmjmfimmjnembihbakhnheiabc)
35
+
36
+ [Link do dodatku dla Firefoksa](https://addons.mozilla.org/en-US/firefox/addon/intlayer-i18n-scanner/)
37
+
38
+ ## Funkcje
39
+
40
+ - **Wykrywanie technologii**: identyfikuje framework (Next.js, Nuxt, Astro, SvelteKit, Angular, Vue.js, Qwik, React, Gatsby, WordPress) oraz bibliotekę i18n (Intlayer, i18next, Vue I18n, @nuxtjs/i18n, Angular @angular/localize, next-intl / next-i18next, Weglot, Localize, WPML, Polylang). Każde wykrycie pokazuje dowody, które je wywołały, takie jak zmienna globalna, plik cookie lub znacznik DOM.
41
+ - **Wersje językowe (Locales)**: wyświetla listę wersji językowych znalezionych w atrybucie `lang`, tagach hreflang i `og:locale`, prefiksie URL oraz plikach cookie lub pamięci lokalnej.
42
+ - **Tagi SEO i18n**: sprawdza `html lang`, `html dir`, link kanoniczny, tagi hreflang, `x-default`, `og:locale` oraz stosunek zlokalizowanych linków wewnętrznych.
43
+ - **Przechodzenie między lokalizacjami**: jednym kliknięciem przełącza bieżącą stronę na dowolną z jej wersji zlokalizowanych, na podstawie tagów hreflang.
44
+ - **Wyszukiwanie w mapie witryny**: przeszukuje wszystkie strony wymienione w mapie witryny i otwiera je w bieżącej karcie.
45
+ - **Pełny audyt**: przeprowadza ten sam audyt, co [i18n SEO Scanner](https://intlayer.org/i18n-seo-scanner), i wyświetla wynik na żywo.
46
+
47
+ ## Instalacja
48
+
49
+ <Tabs group="browser">
50
+ <Tab label="Chrome" value="chrome">
51
+
52
+ Zainstaluj [**Intlayer i18n Scanner**](https://chromewebstore.google.com/detail/intlayer_i18n_scanner/pmlehcgmjmfimmjnembihbakhnheiabc) z Chrome Web Store, a następnie przypnij go do paska narzędzi.
53
+
54
+ Rozszerzenie działa w przeglądarce Chrome oraz we wszystkich przeglądarkach opartych na Chromium, które obsługują rozszerzenia z Chrome Web Store (Edge, Brave, Arc, Opera).
55
+
56
+ </Tab>
57
+ <Tab label="Firefox" value="firefox">
58
+
59
+ Zainstaluj [**Intlayer i18n Scanner**](https://addons.mozilla.org/en-US/firefox/addon/intlayer-i18n-scanner/) z serwisu Dodatki do Firefoksa, a następnie przypnij go do paska narzędzi.
60
+
61
+ </Tab>
62
+ </Tabs>
63
+
64
+ ## Użycie
65
+
66
+ ### Sprawdzanie strony
67
+
68
+ 1. Otwórz stronę internetową, którą chcesz sprawdzić.
69
+ 2. Kliknij ikonę **Intlayer i18n Scanner** na pasku narzędzi.
70
+ 3. W wyskakującym okienku pojawią się sekcje **Wykryte technologie**, **Locales** oraz **Tagi SEO i18n** dla bieżącej strony.
71
+
72
+ Wykrywanie działa lokalnie w Twojej przeglądarce, tylko na aktywnej karcie.
73
+
74
+ ### Przechodzenie między lokalizacjami
75
+
76
+ ![Nawigacja rozszerzenia Chrome Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/assets/chrome_extension_navigation.png?raw=true)
77
+
78
+ Sekcja **Nawigacja** wyświetla **Wersje zlokalizowane** bieżącej strony, odczytane z jej tagów hreflang. Kliknij lokalizację, aby otworzyć tę wersję w bieżącej karcie.
79
+
80
+ W **Strony z mapy witryny** wpisz frazę, aby przeszukać adresy URL z mapy witryny, a następnie kliknij wynik, aby go otworzyć.
81
+
82
+ ### Przeprowadzanie pełnego audytu
83
+
84
+ ![Wynik audytu rozszerzenia Chrome Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/assets/chrome_extension_audit_score.png?raw=true)
85
+
86
+ Przewiń do sekcji **Pełny audyt** i kliknij **Uruchom pełny audyt i18n**. Wyniki pojawiają się na bieżąco w miarę kończenia poszczególnych testów, pogrupowane w:
87
+
88
+ - **Strona**: atrybuty `html lang` i `dir`, bieżąca wersja językowa, tagi hreflang, `x-default`, link kanoniczny, zlokalizowane linki wewnętrzne, selektor języka, ikony flag oraz nieużywana treść językowa dołączona do bundle'a JavaScript.
89
+ - **Robots.txt**: obecność pliku oraz informacja, czy ścieżki językowe są dostępne dla robotów indeksujących.
90
+ - **Sitemap**: obecność mapy witryny, lista wszystkich wersji językowych, linki alternatywne oraz `x-default`.
91
+ - **Domena**: liczba wersji językowych znalezionych w całej witrynie.
92
+
93
+ Każdy test jest oznaczany jako zaliczony, ostrzeżenie lub niezaliczony, a ogólny wynik podsumowuje stan SEO i18n strony.
94
+
95
+ ## Prywatność i uprawnienia
96
+
97
+ Rozszerzenie wymaga minimalnych uprawnień:
98
+
99
+ - **activeTab** i **scripting**: detektor działa tylko na aktualnie przeglądanej karcie i tylko wtedy, gdy otworzysz wyskakujące okienko.
100
+ - **back.intlayer.org**: używane wyłącznie podczas uruchamiania pełnego audytu. Adres URL bieżącej strony jest wysyłany do API Intlayer w celu przeskanowania.
101
+
102
+ Historia przeglądania nie jest gromadzona, a w tle nic nie działa.
103
+
104
+ ## FAQ
105
+
106
+ <FAQ>
107
+
108
+ <Question title="Czy strona internetowa musi używać Intlayer?">
109
+
110
+ Nie. Rozszerzenie sprawdza każdą stronę internetową, bez względu na używany framework czy bibliotekę i18n.
111
+
112
+ </Question>
113
+ <Question title="Dlaczego dana technologia nie została wykryta?">
114
+
115
+ Wykrywanie opiera się na informacjach, które strona ujawnia w przeglądarce: zmiennych globalnych, plikach cookie, tagach meta i znacznikach DOM. Niektóre kompilacje produkcyjne usuwają te znaczniki, dlatego biblioteka może być używana bez pozostawiania widocznego śladu.
116
+
117
+ </Question>
118
+ <Question title="Jak naprawić problemy znalezione podczas audytu?">
119
+
120
+ Większość testów odnosi się do ustawień routingu lub metadanych. W Intlayer hreflang, link kanoniczny, `x-default`, zlokalizowane linki, sitemap oraz robots.txt są generowane na podstawie [konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md). Zobacz przewodnik integracji dla swojego frameworka, na przykład [Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_with_nextjs_16.md), [Nuxt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_with_nuxt.md) lub [TanStack Start](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_with_tanstack.md).
121
+
122
+ </Question>
123
+
124
+ </FAQ>
125
+
126
+ ## Powiązane narzędzia
127
+
128
+ - [Rozszerzenie VS Code](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/vs_code_extension.md)
129
+ - [Serwer MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/mcp_server.md)
130
+ - [Serwer LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/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 - Wszystkie polecenia Intlayer CLI dla Twojej wielojęzycznej strony
5
5
  description: Dowiedz się, jak używać Intlayer CLI do zarządzania wielojęzyczną stroną internetową. Postępuj zgodnie z krokami w tej dokumentacji online, aby skonfigurować swój projekt w kilka minut.
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: "Dodaj polecenie upgrade"
23
+ - version: 9.5.6
24
+ date: 2026-09-21
25
+ changes: "Dodaj polecenie init infra"
20
26
  - version: 9.5.2
21
27
  date: 2026-09-12
22
28
  changes: "Zastąpienie polecenia `ci` flagą `--ci`"
@@ -151,6 +157,8 @@ Aby dowiedzieć się, jak skonfigurować dostępne języki lub inne parametry, z
151
157
  ### Konfiguracja
152
158
 
153
159
  - **[Zainicjuj Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/cli/init.md)** - Skonfiguruj Intlayer w swoim projekcie za pomocą automatycznej konfiguracji
160
+ - **[Skonfiguruj infrastrukturę](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/cli/infra.md)** - Zainstaluj aplikację desktopową lub samodzielnie hostuj CMS za pomocą Dockera (all-in-one lub Compose)
161
+ - **[Aktualizacja pakietów Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/cli/upgrade.md)** - Wyświetl listę pakietów Intlayer w każdym `package.json` i zaktualizuj je do najnowszej wersji
154
162
  - **[Zarządzaj Konfiguracją](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/cli/configuration.md)** - Pobierz swoją konfigurację Intlayer i wyślij ją do CMS
155
163
 
156
164
  ### Zarządzanie Dokumentacją
@@ -177,6 +185,8 @@ Aby dowiedzieć się, jak skonfigurować dostępne języki lub inne parametry, z
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",