@intlayer/docs 9.5.0 → 9.5.2

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 (745) hide show
  1. package/blog/ar/history_of_i18n.md +304 -0
  2. package/blog/de/history_of_i18n.md +304 -0
  3. package/blog/en/history_of_i18n.md +304 -0
  4. package/blog/en-GB/history_of_i18n.md +304 -0
  5. package/blog/es/history_of_i18n.md +304 -0
  6. package/blog/fr/history_of_i18n.md +304 -0
  7. package/blog/hi/history_of_i18n.md +304 -0
  8. package/blog/id/history_of_i18n.md +304 -0
  9. package/blog/it/history_of_i18n.md +304 -0
  10. package/blog/ja/history_of_i18n.md +304 -0
  11. package/blog/ko/history_of_i18n.md +304 -0
  12. package/blog/pl/history_of_i18n.md +304 -0
  13. package/blog/pt/history_of_i18n.md +304 -0
  14. package/blog/ru/history_of_i18n.md +304 -0
  15. package/blog/tr/history_of_i18n.md +304 -0
  16. package/blog/uk/history_of_i18n.md +304 -0
  17. package/blog/vi/history_of_i18n.md +304 -0
  18. package/blog/zh/history_of_i18n.md +304 -0
  19. package/dist/cjs/generated/blog.entry.cjs +20 -0
  20. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  21. package/dist/cjs/generated/docs.entry.cjs +20 -20
  22. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  23. package/dist/esm/generated/blog.entry.mjs +20 -0
  24. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  25. package/dist/esm/generated/docs.entry.mjs +20 -20
  26. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  27. package/dist/types/generated/blog.entry.d.ts +1 -0
  28. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  29. package/dist/types/generated/docs.entry.d.ts +1 -1
  30. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  31. package/docs/ar/benchmark/index.md +4 -1
  32. package/docs/ar/benchmark/nextjs.md +32 -27
  33. package/docs/ar/benchmark/solid.md +13 -10
  34. package/docs/ar/benchmark/svelte.md +12 -9
  35. package/docs/ar/benchmark/tanstack.md +29 -24
  36. package/docs/ar/benchmark/vue.md +11 -7
  37. package/docs/ar/cli/build.md +8 -1
  38. package/docs/ar/cli/configuration.md +3 -1
  39. package/docs/ar/cli/doc-review.md +8 -1
  40. package/docs/ar/cli/doc-translate.md +5 -1
  41. package/docs/ar/cli/extract.md +2 -1
  42. package/docs/ar/cli/fill.md +5 -1
  43. package/docs/ar/cli/index.md +4 -5
  44. package/docs/ar/cli/live.md +5 -1
  45. package/docs/ar/cli/login.md +2 -2
  46. package/docs/ar/cli/pull.md +5 -1
  47. package/docs/ar/cli/push.md +5 -1
  48. package/docs/ar/cli/scan.md +5 -1
  49. package/docs/ar/cli/standalone.md +5 -1
  50. package/docs/ar/cli/test.md +5 -1
  51. package/docs/ar/cli/watch.md +5 -1
  52. package/docs/ar/compat/i18n-js.md +1 -1
  53. package/docs/ar/compat/i18next.md +1 -1
  54. package/docs/ar/compat/lingui.md +1 -1
  55. package/docs/ar/compat/next-i18next.md +1 -1
  56. package/docs/ar/compat/next-intl.md +1 -1
  57. package/docs/ar/compat/next-translate.md +1 -1
  58. package/docs/ar/compat/ngx-translate.md +1 -1
  59. package/docs/ar/compat/nuxtjs-i18n.md +1 -1
  60. package/docs/ar/compat/polyglot.md +1 -1
  61. package/docs/ar/compat/react-i18next.md +1 -1
  62. package/docs/ar/compat/react-intl.md +1 -1
  63. package/docs/ar/compat/svelte-i18n.md +1 -1
  64. package/docs/ar/compat/transloco.md +1 -1
  65. package/docs/ar/compat/vue-i18n.md +1 -1
  66. package/docs/ar/intlayer_with_nextjs_15.md +1 -1
  67. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  68. package/docs/ar/intlayer_with_remix_3.md +543 -0
  69. package/docs/bn/cli/index.md +4 -5
  70. package/docs/bn/cli/scan.md +5 -1
  71. package/docs/bn/cli/standalone.md +5 -1
  72. package/docs/cs/cli/index.md +4 -5
  73. package/docs/cs/cli/scan.md +5 -1
  74. package/docs/cs/cli/standalone.md +5 -1
  75. package/docs/de/benchmark/index.md +4 -1
  76. package/docs/de/benchmark/nextjs.md +32 -27
  77. package/docs/de/benchmark/solid.md +13 -10
  78. package/docs/de/benchmark/svelte.md +12 -9
  79. package/docs/de/benchmark/tanstack.md +29 -24
  80. package/docs/de/benchmark/vue.md +11 -7
  81. package/docs/de/cli/build.md +8 -1
  82. package/docs/de/cli/configuration.md +3 -1
  83. package/docs/de/cli/doc-review.md +8 -1
  84. package/docs/de/cli/doc-translate.md +5 -1
  85. package/docs/de/cli/extract.md +2 -1
  86. package/docs/de/cli/fill.md +5 -1
  87. package/docs/de/cli/index.md +4 -5
  88. package/docs/de/cli/live.md +5 -1
  89. package/docs/de/cli/login.md +2 -2
  90. package/docs/de/cli/pull.md +5 -1
  91. package/docs/de/cli/push.md +5 -1
  92. package/docs/de/cli/scan.md +5 -1
  93. package/docs/de/cli/standalone.md +5 -1
  94. package/docs/de/cli/test.md +5 -1
  95. package/docs/de/cli/watch.md +5 -1
  96. package/docs/de/compat/i18n-js.md +1 -1
  97. package/docs/de/compat/i18next.md +1 -1
  98. package/docs/de/compat/lingui.md +1 -1
  99. package/docs/de/compat/next-i18next.md +1 -1
  100. package/docs/de/compat/next-intl.md +1 -1
  101. package/docs/de/compat/next-translate.md +1 -1
  102. package/docs/de/compat/ngx-translate.md +1 -1
  103. package/docs/de/compat/nuxtjs-i18n.md +1 -1
  104. package/docs/de/compat/polyglot.md +1 -1
  105. package/docs/de/compat/react-i18next.md +1 -1
  106. package/docs/de/compat/react-intl.md +1 -1
  107. package/docs/de/compat/svelte-i18n.md +1 -1
  108. package/docs/de/compat/transloco.md +1 -1
  109. package/docs/de/compat/vue-i18n.md +1 -1
  110. package/docs/de/intlayer_with_nextjs_15.md +1 -1
  111. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  112. package/docs/de/intlayer_with_remix_3.md +543 -0
  113. package/docs/en/benchmark/index.md +4 -1
  114. package/docs/en/benchmark/nextjs.md +32 -27
  115. package/docs/en/benchmark/solid.md +13 -10
  116. package/docs/en/benchmark/svelte.md +12 -9
  117. package/docs/en/benchmark/tanstack.md +30 -25
  118. package/docs/en/benchmark/vue.md +11 -7
  119. package/docs/en/cli/build.md +8 -1
  120. package/docs/en/cli/configuration.md +3 -1
  121. package/docs/en/cli/doc-review.md +8 -1
  122. package/docs/en/cli/doc-translate.md +5 -1
  123. package/docs/en/cli/extract.md +2 -1
  124. package/docs/en/cli/fill.md +5 -1
  125. package/docs/en/cli/index.md +4 -5
  126. package/docs/en/cli/live.md +5 -1
  127. package/docs/en/cli/login.md +2 -2
  128. package/docs/en/cli/pull.md +5 -1
  129. package/docs/en/cli/push.md +5 -1
  130. package/docs/en/cli/scan.md +5 -1
  131. package/docs/en/cli/standalone.md +5 -1
  132. package/docs/en/cli/test.md +5 -1
  133. package/docs/en/cli/watch.md +5 -1
  134. package/docs/en/compat/i18n-js.md +1 -1
  135. package/docs/en/compat/i18next.md +1 -1
  136. package/docs/en/compat/lingui.md +1 -1
  137. package/docs/en/compat/next-i18next.md +1 -1
  138. package/docs/en/compat/next-intl.md +1 -1
  139. package/docs/en/compat/next-translate.md +1 -1
  140. package/docs/en/compat/ngx-translate.md +1 -1
  141. package/docs/en/compat/nuxtjs-i18n.md +1 -1
  142. package/docs/en/compat/polyglot.md +1 -1
  143. package/docs/en/compat/react-i18next.md +1 -1
  144. package/docs/en/compat/react-intl.md +1 -1
  145. package/docs/en/compat/svelte-i18n.md +1 -1
  146. package/docs/en/compat/transloco.md +1 -1
  147. package/docs/en/compat/vue-i18n.md +1 -1
  148. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  149. package/docs/en/intlayer_with_nextjs_16.md +1 -1
  150. package/docs/en/intlayer_with_remix_3.md +540 -0
  151. package/docs/en-GB/benchmark/index.md +4 -1
  152. package/docs/en-GB/benchmark/nextjs.md +32 -27
  153. package/docs/en-GB/benchmark/solid.md +13 -10
  154. package/docs/en-GB/benchmark/svelte.md +12 -9
  155. package/docs/en-GB/benchmark/tanstack.md +29 -24
  156. package/docs/en-GB/benchmark/vue.md +11 -7
  157. package/docs/en-GB/cli/build.md +8 -1
  158. package/docs/en-GB/cli/configuration.md +3 -1
  159. package/docs/en-GB/cli/doc-review.md +8 -1
  160. package/docs/en-GB/cli/doc-translate.md +5 -1
  161. package/docs/en-GB/cli/extract.md +2 -1
  162. package/docs/en-GB/cli/fill.md +5 -1
  163. package/docs/en-GB/cli/index.md +4 -5
  164. package/docs/en-GB/cli/live.md +5 -1
  165. package/docs/en-GB/cli/login.md +2 -2
  166. package/docs/en-GB/cli/pull.md +5 -1
  167. package/docs/en-GB/cli/push.md +5 -1
  168. package/docs/en-GB/cli/scan.md +5 -1
  169. package/docs/en-GB/cli/standalone.md +5 -1
  170. package/docs/en-GB/cli/test.md +5 -1
  171. package/docs/en-GB/cli/watch.md +5 -1
  172. package/docs/en-GB/compat/i18n-js.md +1 -1
  173. package/docs/en-GB/compat/i18next.md +1 -1
  174. package/docs/en-GB/compat/lingui.md +1 -1
  175. package/docs/en-GB/compat/next-i18next.md +1 -1
  176. package/docs/en-GB/compat/next-intl.md +1 -1
  177. package/docs/en-GB/compat/next-translate.md +1 -1
  178. package/docs/en-GB/compat/ngx-translate.md +1 -1
  179. package/docs/en-GB/compat/nuxtjs-i18n.md +1 -1
  180. package/docs/en-GB/compat/polyglot.md +1 -1
  181. package/docs/en-GB/compat/react-i18next.md +1 -1
  182. package/docs/en-GB/compat/react-intl.md +1 -1
  183. package/docs/en-GB/compat/svelte-i18n.md +1 -1
  184. package/docs/en-GB/compat/transloco.md +1 -1
  185. package/docs/en-GB/compat/vue-i18n.md +1 -1
  186. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
  187. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  188. package/docs/en-GB/intlayer_with_remix_3.md +558 -0
  189. package/docs/es/benchmark/index.md +4 -1
  190. package/docs/es/benchmark/nextjs.md +32 -27
  191. package/docs/es/benchmark/solid.md +13 -10
  192. package/docs/es/benchmark/svelte.md +12 -9
  193. package/docs/es/benchmark/tanstack.md +29 -24
  194. package/docs/es/benchmark/vue.md +11 -7
  195. package/docs/es/cli/build.md +8 -1
  196. package/docs/es/cli/configuration.md +3 -1
  197. package/docs/es/cli/doc-review.md +8 -1
  198. package/docs/es/cli/doc-translate.md +5 -1
  199. package/docs/es/cli/extract.md +2 -1
  200. package/docs/es/cli/fill.md +5 -1
  201. package/docs/es/cli/index.md +4 -5
  202. package/docs/es/cli/live.md +5 -1
  203. package/docs/es/cli/login.md +2 -2
  204. package/docs/es/cli/pull.md +5 -1
  205. package/docs/es/cli/push.md +5 -1
  206. package/docs/es/cli/scan.md +5 -1
  207. package/docs/es/cli/standalone.md +5 -1
  208. package/docs/es/cli/test.md +5 -1
  209. package/docs/es/cli/watch.md +5 -1
  210. package/docs/es/compat/i18n-js.md +1 -1
  211. package/docs/es/compat/i18next.md +1 -1
  212. package/docs/es/compat/lingui.md +1 -1
  213. package/docs/es/compat/next-i18next.md +1 -1
  214. package/docs/es/compat/next-intl.md +1 -1
  215. package/docs/es/compat/next-translate.md +1 -1
  216. package/docs/es/compat/ngx-translate.md +1 -1
  217. package/docs/es/compat/nuxtjs-i18n.md +1 -1
  218. package/docs/es/compat/polyglot.md +1 -1
  219. package/docs/es/compat/react-i18next.md +1 -1
  220. package/docs/es/compat/react-intl.md +1 -1
  221. package/docs/es/compat/svelte-i18n.md +1 -1
  222. package/docs/es/compat/transloco.md +1 -1
  223. package/docs/es/compat/vue-i18n.md +1 -1
  224. package/docs/es/intlayer_with_nextjs_15.md +1 -1
  225. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  226. package/docs/es/intlayer_with_remix_3.md +540 -0
  227. package/docs/fr/benchmark/index.md +4 -1
  228. package/docs/fr/benchmark/nextjs.md +32 -27
  229. package/docs/fr/benchmark/solid.md +13 -10
  230. package/docs/fr/benchmark/svelte.md +12 -9
  231. package/docs/fr/benchmark/tanstack.md +29 -24
  232. package/docs/fr/benchmark/vue.md +11 -7
  233. package/docs/fr/cli/build.md +8 -1
  234. package/docs/fr/cli/configuration.md +3 -1
  235. package/docs/fr/cli/doc-review.md +8 -1
  236. package/docs/fr/cli/doc-translate.md +5 -1
  237. package/docs/fr/cli/extract.md +2 -1
  238. package/docs/fr/cli/fill.md +5 -1
  239. package/docs/fr/cli/index.md +4 -5
  240. package/docs/fr/cli/live.md +5 -1
  241. package/docs/fr/cli/login.md +2 -2
  242. package/docs/fr/cli/pull.md +5 -1
  243. package/docs/fr/cli/push.md +5 -1
  244. package/docs/fr/cli/scan.md +5 -1
  245. package/docs/fr/cli/standalone.md +5 -1
  246. package/docs/fr/cli/test.md +5 -1
  247. package/docs/fr/cli/watch.md +5 -1
  248. package/docs/fr/compat/i18n-js.md +1 -1
  249. package/docs/fr/compat/i18next.md +1 -1
  250. package/docs/fr/compat/lingui.md +1 -1
  251. package/docs/fr/compat/next-i18next.md +1 -1
  252. package/docs/fr/compat/next-intl.md +1 -1
  253. package/docs/fr/compat/next-translate.md +1 -1
  254. package/docs/fr/compat/ngx-translate.md +1 -1
  255. package/docs/fr/compat/nuxtjs-i18n.md +1 -1
  256. package/docs/fr/compat/polyglot.md +1 -1
  257. package/docs/fr/compat/react-i18next.md +1 -1
  258. package/docs/fr/compat/react-intl.md +1 -1
  259. package/docs/fr/compat/svelte-i18n.md +1 -1
  260. package/docs/fr/compat/transloco.md +1 -1
  261. package/docs/fr/compat/vue-i18n.md +1 -1
  262. package/docs/fr/intlayer_with_nextjs_15.md +1 -1
  263. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  264. package/docs/fr/intlayer_with_remix_3.md +540 -0
  265. package/docs/hi/benchmark/index.md +4 -1
  266. package/docs/hi/benchmark/nextjs.md +32 -27
  267. package/docs/hi/benchmark/solid.md +13 -10
  268. package/docs/hi/benchmark/svelte.md +12 -9
  269. package/docs/hi/benchmark/tanstack.md +29 -24
  270. package/docs/hi/benchmark/vue.md +11 -7
  271. package/docs/hi/cli/build.md +8 -1
  272. package/docs/hi/cli/configuration.md +3 -1
  273. package/docs/hi/cli/doc-review.md +8 -1
  274. package/docs/hi/cli/doc-translate.md +5 -1
  275. package/docs/hi/cli/extract.md +2 -1
  276. package/docs/hi/cli/fill.md +5 -1
  277. package/docs/hi/cli/index.md +4 -5
  278. package/docs/hi/cli/live.md +5 -1
  279. package/docs/hi/cli/login.md +2 -2
  280. package/docs/hi/cli/pull.md +5 -1
  281. package/docs/hi/cli/push.md +5 -1
  282. package/docs/hi/cli/scan.md +5 -1
  283. package/docs/hi/cli/standalone.md +5 -1
  284. package/docs/hi/cli/test.md +5 -1
  285. package/docs/hi/cli/watch.md +5 -1
  286. package/docs/hi/compat/i18n-js.md +1 -1
  287. package/docs/hi/compat/i18next.md +1 -1
  288. package/docs/hi/compat/lingui.md +1 -1
  289. package/docs/hi/compat/next-i18next.md +1 -1
  290. package/docs/hi/compat/next-intl.md +1 -1
  291. package/docs/hi/compat/next-translate.md +1 -1
  292. package/docs/hi/compat/ngx-translate.md +1 -1
  293. package/docs/hi/compat/nuxtjs-i18n.md +1 -1
  294. package/docs/hi/compat/polyglot.md +1 -1
  295. package/docs/hi/compat/react-i18next.md +1 -1
  296. package/docs/hi/compat/react-intl.md +1 -1
  297. package/docs/hi/compat/svelte-i18n.md +1 -1
  298. package/docs/hi/compat/transloco.md +1 -1
  299. package/docs/hi/compat/vue-i18n.md +1 -1
  300. package/docs/hi/intlayer_with_nextjs_15.md +1 -1
  301. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  302. package/docs/hi/intlayer_with_remix_3.md +543 -0
  303. package/docs/id/benchmark/index.md +4 -1
  304. package/docs/id/benchmark/nextjs.md +32 -27
  305. package/docs/id/benchmark/solid.md +13 -10
  306. package/docs/id/benchmark/svelte.md +12 -9
  307. package/docs/id/benchmark/tanstack.md +29 -24
  308. package/docs/id/benchmark/vue.md +11 -7
  309. package/docs/id/cli/build.md +8 -1
  310. package/docs/id/cli/configuration.md +3 -1
  311. package/docs/id/cli/doc-review.md +8 -1
  312. package/docs/id/cli/doc-translate.md +5 -1
  313. package/docs/id/cli/extract.md +2 -1
  314. package/docs/id/cli/fill.md +5 -1
  315. package/docs/id/cli/index.md +4 -5
  316. package/docs/id/cli/live.md +5 -1
  317. package/docs/id/cli/login.md +2 -2
  318. package/docs/id/cli/pull.md +5 -1
  319. package/docs/id/cli/push.md +5 -1
  320. package/docs/id/cli/scan.md +5 -1
  321. package/docs/id/cli/standalone.md +5 -1
  322. package/docs/id/cli/test.md +5 -1
  323. package/docs/id/cli/watch.md +5 -1
  324. package/docs/id/compat/i18n-js.md +1 -1
  325. package/docs/id/compat/i18next.md +1 -1
  326. package/docs/id/compat/lingui.md +1 -1
  327. package/docs/id/compat/next-i18next.md +1 -1
  328. package/docs/id/compat/next-intl.md +1 -1
  329. package/docs/id/compat/next-translate.md +1 -1
  330. package/docs/id/compat/ngx-translate.md +1 -1
  331. package/docs/id/compat/nuxtjs-i18n.md +1 -1
  332. package/docs/id/compat/polyglot.md +1 -1
  333. package/docs/id/compat/react-i18next.md +1 -1
  334. package/docs/id/compat/react-intl.md +1 -1
  335. package/docs/id/compat/svelte-i18n.md +1 -1
  336. package/docs/id/compat/transloco.md +1 -1
  337. package/docs/id/compat/vue-i18n.md +1 -1
  338. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  339. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  340. package/docs/id/intlayer_with_remix_3.md +566 -0
  341. package/docs/it/benchmark/index.md +4 -1
  342. package/docs/it/benchmark/nextjs.md +32 -27
  343. package/docs/it/benchmark/solid.md +13 -10
  344. package/docs/it/benchmark/svelte.md +12 -9
  345. package/docs/it/benchmark/tanstack.md +29 -24
  346. package/docs/it/benchmark/vue.md +11 -7
  347. package/docs/it/cli/build.md +8 -1
  348. package/docs/it/cli/configuration.md +3 -1
  349. package/docs/it/cli/doc-review.md +8 -1
  350. package/docs/it/cli/doc-translate.md +5 -1
  351. package/docs/it/cli/extract.md +2 -1
  352. package/docs/it/cli/fill.md +5 -1
  353. package/docs/it/cli/index.md +4 -5
  354. package/docs/it/cli/live.md +5 -1
  355. package/docs/it/cli/login.md +2 -2
  356. package/docs/it/cli/pull.md +5 -1
  357. package/docs/it/cli/push.md +5 -1
  358. package/docs/it/cli/scan.md +5 -1
  359. package/docs/it/cli/standalone.md +5 -1
  360. package/docs/it/cli/test.md +5 -1
  361. package/docs/it/cli/watch.md +5 -1
  362. package/docs/it/compat/i18n-js.md +1 -1
  363. package/docs/it/compat/i18next.md +1 -1
  364. package/docs/it/compat/lingui.md +1 -1
  365. package/docs/it/compat/next-i18next.md +1 -1
  366. package/docs/it/compat/next-intl.md +1 -1
  367. package/docs/it/compat/next-translate.md +1 -1
  368. package/docs/it/compat/ngx-translate.md +1 -1
  369. package/docs/it/compat/nuxtjs-i18n.md +1 -1
  370. package/docs/it/compat/polyglot.md +1 -1
  371. package/docs/it/compat/react-i18next.md +1 -1
  372. package/docs/it/compat/react-intl.md +1 -1
  373. package/docs/it/compat/svelte-i18n.md +1 -1
  374. package/docs/it/compat/transloco.md +1 -1
  375. package/docs/it/compat/vue-i18n.md +1 -1
  376. package/docs/it/intlayer_with_nextjs_15.md +1 -1
  377. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  378. package/docs/it/intlayer_with_remix_3.md +558 -0
  379. package/docs/ja/benchmark/index.md +4 -1
  380. package/docs/ja/benchmark/nextjs.md +32 -27
  381. package/docs/ja/benchmark/solid.md +13 -10
  382. package/docs/ja/benchmark/svelte.md +12 -9
  383. package/docs/ja/benchmark/tanstack.md +29 -24
  384. package/docs/ja/benchmark/vue.md +11 -7
  385. package/docs/ja/cli/build.md +8 -1
  386. package/docs/ja/cli/configuration.md +3 -1
  387. package/docs/ja/cli/doc-review.md +8 -1
  388. package/docs/ja/cli/doc-translate.md +5 -1
  389. package/docs/ja/cli/extract.md +2 -1
  390. package/docs/ja/cli/fill.md +5 -1
  391. package/docs/ja/cli/index.md +4 -5
  392. package/docs/ja/cli/live.md +5 -1
  393. package/docs/ja/cli/login.md +2 -2
  394. package/docs/ja/cli/pull.md +5 -1
  395. package/docs/ja/cli/push.md +5 -1
  396. package/docs/ja/cli/scan.md +5 -1
  397. package/docs/ja/cli/standalone.md +5 -1
  398. package/docs/ja/cli/test.md +5 -1
  399. package/docs/ja/cli/watch.md +5 -1
  400. package/docs/ja/compat/i18n-js.md +1 -1
  401. package/docs/ja/compat/i18next.md +1 -1
  402. package/docs/ja/compat/lingui.md +1 -1
  403. package/docs/ja/compat/next-i18next.md +1 -1
  404. package/docs/ja/compat/next-intl.md +1 -1
  405. package/docs/ja/compat/next-translate.md +1 -1
  406. package/docs/ja/compat/ngx-translate.md +1 -1
  407. package/docs/ja/compat/nuxtjs-i18n.md +1 -1
  408. package/docs/ja/compat/polyglot.md +1 -1
  409. package/docs/ja/compat/react-i18next.md +1 -1
  410. package/docs/ja/compat/react-intl.md +1 -1
  411. package/docs/ja/compat/svelte-i18n.md +1 -1
  412. package/docs/ja/compat/transloco.md +1 -1
  413. package/docs/ja/compat/vue-i18n.md +1 -1
  414. package/docs/ja/intlayer_with_nextjs_15.md +1 -1
  415. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  416. package/docs/ja/intlayer_with_remix_3.md +558 -0
  417. package/docs/ko/benchmark/index.md +4 -1
  418. package/docs/ko/benchmark/nextjs.md +32 -27
  419. package/docs/ko/benchmark/solid.md +13 -10
  420. package/docs/ko/benchmark/svelte.md +12 -9
  421. package/docs/ko/benchmark/tanstack.md +29 -24
  422. package/docs/ko/benchmark/vue.md +11 -7
  423. package/docs/ko/cli/build.md +8 -1
  424. package/docs/ko/cli/configuration.md +3 -1
  425. package/docs/ko/cli/doc-review.md +8 -1
  426. package/docs/ko/cli/doc-translate.md +5 -1
  427. package/docs/ko/cli/extract.md +2 -1
  428. package/docs/ko/cli/fill.md +5 -1
  429. package/docs/ko/cli/index.md +4 -5
  430. package/docs/ko/cli/live.md +5 -1
  431. package/docs/ko/cli/login.md +2 -2
  432. package/docs/ko/cli/pull.md +5 -1
  433. package/docs/ko/cli/push.md +5 -1
  434. package/docs/ko/cli/scan.md +5 -1
  435. package/docs/ko/cli/standalone.md +5 -1
  436. package/docs/ko/cli/test.md +5 -1
  437. package/docs/ko/cli/watch.md +5 -1
  438. package/docs/ko/compat/i18n-js.md +1 -1
  439. package/docs/ko/compat/i18next.md +1 -1
  440. package/docs/ko/compat/lingui.md +1 -1
  441. package/docs/ko/compat/next-i18next.md +1 -1
  442. package/docs/ko/compat/next-intl.md +1 -1
  443. package/docs/ko/compat/next-translate.md +1 -1
  444. package/docs/ko/compat/ngx-translate.md +1 -1
  445. package/docs/ko/compat/nuxtjs-i18n.md +1 -1
  446. package/docs/ko/compat/polyglot.md +1 -1
  447. package/docs/ko/compat/react-i18next.md +1 -1
  448. package/docs/ko/compat/react-intl.md +1 -1
  449. package/docs/ko/compat/svelte-i18n.md +1 -1
  450. package/docs/ko/compat/transloco.md +1 -1
  451. package/docs/ko/compat/vue-i18n.md +1 -1
  452. package/docs/ko/intlayer_with_remix_3.md +543 -0
  453. package/docs/nl/cli/index.md +4 -5
  454. package/docs/nl/cli/scan.md +5 -1
  455. package/docs/nl/cli/standalone.md +5 -1
  456. package/docs/pl/benchmark/index.md +4 -1
  457. package/docs/pl/benchmark/nextjs.md +32 -27
  458. package/docs/pl/benchmark/solid.md +13 -10
  459. package/docs/pl/benchmark/svelte.md +12 -9
  460. package/docs/pl/benchmark/tanstack.md +29 -24
  461. package/docs/pl/benchmark/vue.md +11 -7
  462. package/docs/pl/cli/build.md +8 -1
  463. package/docs/pl/cli/configuration.md +3 -1
  464. package/docs/pl/cli/doc-review.md +8 -1
  465. package/docs/pl/cli/doc-translate.md +5 -1
  466. package/docs/pl/cli/extract.md +2 -1
  467. package/docs/pl/cli/fill.md +5 -1
  468. package/docs/pl/cli/index.md +4 -5
  469. package/docs/pl/cli/live.md +5 -1
  470. package/docs/pl/cli/login.md +2 -2
  471. package/docs/pl/cli/pull.md +5 -1
  472. package/docs/pl/cli/push.md +5 -1
  473. package/docs/pl/cli/scan.md +5 -1
  474. package/docs/pl/cli/standalone.md +5 -1
  475. package/docs/pl/cli/test.md +5 -1
  476. package/docs/pl/cli/watch.md +5 -1
  477. package/docs/pl/compat/i18n-js.md +1 -1
  478. package/docs/pl/compat/i18next.md +1 -1
  479. package/docs/pl/compat/lingui.md +1 -1
  480. package/docs/pl/compat/next-i18next.md +1 -1
  481. package/docs/pl/compat/next-intl.md +1 -1
  482. package/docs/pl/compat/next-translate.md +1 -1
  483. package/docs/pl/compat/ngx-translate.md +1 -1
  484. package/docs/pl/compat/nuxtjs-i18n.md +1 -1
  485. package/docs/pl/compat/polyglot.md +1 -1
  486. package/docs/pl/compat/react-i18next.md +1 -1
  487. package/docs/pl/compat/react-intl.md +1 -1
  488. package/docs/pl/compat/svelte-i18n.md +1 -1
  489. package/docs/pl/compat/transloco.md +1 -1
  490. package/docs/pl/compat/vue-i18n.md +1 -1
  491. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  492. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  493. package/docs/pl/intlayer_with_remix_3.md +551 -0
  494. package/docs/pt/benchmark/index.md +4 -1
  495. package/docs/pt/benchmark/nextjs.md +32 -27
  496. package/docs/pt/benchmark/solid.md +13 -10
  497. package/docs/pt/benchmark/svelte.md +12 -9
  498. package/docs/pt/benchmark/tanstack.md +29 -24
  499. package/docs/pt/benchmark/vue.md +11 -7
  500. package/docs/pt/cli/build.md +8 -1
  501. package/docs/pt/cli/configuration.md +3 -1
  502. package/docs/pt/cli/doc-review.md +8 -1
  503. package/docs/pt/cli/doc-translate.md +5 -1
  504. package/docs/pt/cli/extract.md +2 -1
  505. package/docs/pt/cli/fill.md +5 -1
  506. package/docs/pt/cli/index.md +4 -5
  507. package/docs/pt/cli/live.md +5 -1
  508. package/docs/pt/cli/login.md +2 -2
  509. package/docs/pt/cli/pull.md +5 -1
  510. package/docs/pt/cli/push.md +5 -1
  511. package/docs/pt/cli/scan.md +5 -1
  512. package/docs/pt/cli/standalone.md +5 -1
  513. package/docs/pt/cli/test.md +5 -1
  514. package/docs/pt/cli/watch.md +5 -1
  515. package/docs/pt/compat/i18n-js.md +1 -1
  516. package/docs/pt/compat/i18next.md +1 -1
  517. package/docs/pt/compat/lingui.md +1 -1
  518. package/docs/pt/compat/next-i18next.md +1 -1
  519. package/docs/pt/compat/next-intl.md +1 -1
  520. package/docs/pt/compat/next-translate.md +1 -1
  521. package/docs/pt/compat/ngx-translate.md +1 -1
  522. package/docs/pt/compat/nuxtjs-i18n.md +1 -1
  523. package/docs/pt/compat/polyglot.md +1 -1
  524. package/docs/pt/compat/react-i18next.md +1 -1
  525. package/docs/pt/compat/react-intl.md +1 -1
  526. package/docs/pt/compat/svelte-i18n.md +1 -1
  527. package/docs/pt/compat/transloco.md +1 -1
  528. package/docs/pt/compat/vue-i18n.md +1 -1
  529. package/docs/pt/intlayer_with_nextjs_15.md +1 -1
  530. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  531. package/docs/pt/intlayer_with_remix_3.md +558 -0
  532. package/docs/ru/benchmark/index.md +4 -1
  533. package/docs/ru/benchmark/nextjs.md +32 -27
  534. package/docs/ru/benchmark/solid.md +13 -10
  535. package/docs/ru/benchmark/svelte.md +12 -9
  536. package/docs/ru/benchmark/tanstack.md +29 -24
  537. package/docs/ru/benchmark/vue.md +11 -7
  538. package/docs/ru/cli/build.md +8 -1
  539. package/docs/ru/cli/configuration.md +3 -1
  540. package/docs/ru/cli/doc-review.md +8 -1
  541. package/docs/ru/cli/doc-translate.md +5 -1
  542. package/docs/ru/cli/extract.md +2 -1
  543. package/docs/ru/cli/fill.md +5 -1
  544. package/docs/ru/cli/index.md +4 -5
  545. package/docs/ru/cli/live.md +5 -1
  546. package/docs/ru/cli/login.md +2 -2
  547. package/docs/ru/cli/pull.md +5 -1
  548. package/docs/ru/cli/push.md +5 -1
  549. package/docs/ru/cli/scan.md +5 -1
  550. package/docs/ru/cli/standalone.md +5 -1
  551. package/docs/ru/cli/test.md +5 -1
  552. package/docs/ru/cli/watch.md +5 -1
  553. package/docs/ru/compat/i18n-js.md +1 -1
  554. package/docs/ru/compat/i18next.md +1 -1
  555. package/docs/ru/compat/lingui.md +1 -1
  556. package/docs/ru/compat/next-i18next.md +1 -1
  557. package/docs/ru/compat/next-intl.md +1 -1
  558. package/docs/ru/compat/next-translate.md +1 -1
  559. package/docs/ru/compat/ngx-translate.md +1 -1
  560. package/docs/ru/compat/nuxtjs-i18n.md +1 -1
  561. package/docs/ru/compat/polyglot.md +1 -1
  562. package/docs/ru/compat/react-i18next.md +1 -1
  563. package/docs/ru/compat/react-intl.md +1 -1
  564. package/docs/ru/compat/svelte-i18n.md +1 -1
  565. package/docs/ru/compat/transloco.md +1 -1
  566. package/docs/ru/compat/vue-i18n.md +1 -1
  567. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  568. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  569. package/docs/ru/intlayer_with_remix_3.md +558 -0
  570. package/docs/tr/benchmark/index.md +4 -1
  571. package/docs/tr/benchmark/nextjs.md +32 -27
  572. package/docs/tr/benchmark/solid.md +13 -10
  573. package/docs/tr/benchmark/svelte.md +12 -9
  574. package/docs/tr/benchmark/tanstack.md +29 -24
  575. package/docs/tr/benchmark/vue.md +11 -7
  576. package/docs/tr/cli/build.md +8 -1
  577. package/docs/tr/cli/configuration.md +3 -1
  578. package/docs/tr/cli/doc-review.md +8 -1
  579. package/docs/tr/cli/doc-translate.md +5 -1
  580. package/docs/tr/cli/extract.md +2 -1
  581. package/docs/tr/cli/fill.md +5 -1
  582. package/docs/tr/cli/index.md +4 -5
  583. package/docs/tr/cli/live.md +5 -1
  584. package/docs/tr/cli/login.md +2 -2
  585. package/docs/tr/cli/pull.md +5 -1
  586. package/docs/tr/cli/push.md +5 -1
  587. package/docs/tr/cli/scan.md +5 -1
  588. package/docs/tr/cli/standalone.md +5 -1
  589. package/docs/tr/cli/test.md +5 -1
  590. package/docs/tr/cli/watch.md +5 -1
  591. package/docs/tr/compat/i18n-js.md +1 -1
  592. package/docs/tr/compat/i18next.md +1 -1
  593. package/docs/tr/compat/lingui.md +1 -1
  594. package/docs/tr/compat/next-i18next.md +1 -1
  595. package/docs/tr/compat/next-intl.md +1 -1
  596. package/docs/tr/compat/next-translate.md +1 -1
  597. package/docs/tr/compat/ngx-translate.md +1 -1
  598. package/docs/tr/compat/nuxtjs-i18n.md +1 -1
  599. package/docs/tr/compat/polyglot.md +1 -1
  600. package/docs/tr/compat/react-i18next.md +1 -1
  601. package/docs/tr/compat/react-intl.md +1 -1
  602. package/docs/tr/compat/svelte-i18n.md +1 -1
  603. package/docs/tr/compat/transloco.md +1 -1
  604. package/docs/tr/compat/vue-i18n.md +1 -1
  605. package/docs/tr/intlayer_with_nextjs_15.md +1 -1
  606. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  607. package/docs/tr/intlayer_with_remix_3.md +566 -0
  608. package/docs/uk/benchmark/index.md +4 -1
  609. package/docs/uk/benchmark/nextjs.md +32 -27
  610. package/docs/uk/benchmark/solid.md +13 -10
  611. package/docs/uk/benchmark/svelte.md +12 -9
  612. package/docs/uk/benchmark/tanstack.md +29 -24
  613. package/docs/uk/benchmark/vue.md +11 -7
  614. package/docs/uk/cli/build.md +8 -1
  615. package/docs/uk/cli/configuration.md +3 -1
  616. package/docs/uk/cli/doc-review.md +8 -1
  617. package/docs/uk/cli/doc-translate.md +5 -1
  618. package/docs/uk/cli/extract.md +2 -1
  619. package/docs/uk/cli/fill.md +5 -1
  620. package/docs/uk/cli/index.md +4 -5
  621. package/docs/uk/cli/live.md +5 -1
  622. package/docs/uk/cli/login.md +2 -2
  623. package/docs/uk/cli/pull.md +5 -1
  624. package/docs/uk/cli/push.md +5 -1
  625. package/docs/uk/cli/scan.md +5 -1
  626. package/docs/uk/cli/standalone.md +5 -1
  627. package/docs/uk/cli/test.md +5 -1
  628. package/docs/uk/cli/watch.md +5 -1
  629. package/docs/uk/compat/i18n-js.md +1 -1
  630. package/docs/uk/compat/i18next.md +1 -1
  631. package/docs/uk/compat/lingui.md +1 -1
  632. package/docs/uk/compat/next-i18next.md +1 -1
  633. package/docs/uk/compat/next-intl.md +1 -1
  634. package/docs/uk/compat/next-translate.md +1 -1
  635. package/docs/uk/compat/ngx-translate.md +1 -1
  636. package/docs/uk/compat/nuxtjs-i18n.md +1 -1
  637. package/docs/uk/compat/polyglot.md +1 -1
  638. package/docs/uk/compat/react-i18next.md +1 -1
  639. package/docs/uk/compat/react-intl.md +1 -1
  640. package/docs/uk/compat/svelte-i18n.md +1 -1
  641. package/docs/uk/compat/transloco.md +1 -1
  642. package/docs/uk/compat/vue-i18n.md +1 -1
  643. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  644. package/docs/uk/intlayer_with_nextjs_16.md +1 -1
  645. package/docs/uk/intlayer_with_remix_3.md +566 -0
  646. package/docs/ur/cli/index.md +4 -5
  647. package/docs/ur/cli/scan.md +5 -1
  648. package/docs/ur/cli/standalone.md +5 -1
  649. package/docs/vi/benchmark/index.md +4 -1
  650. package/docs/vi/benchmark/nextjs.md +32 -27
  651. package/docs/vi/benchmark/solid.md +13 -10
  652. package/docs/vi/benchmark/svelte.md +12 -9
  653. package/docs/vi/benchmark/tanstack.md +29 -24
  654. package/docs/vi/benchmark/vue.md +11 -7
  655. package/docs/vi/cli/build.md +8 -1
  656. package/docs/vi/cli/configuration.md +3 -1
  657. package/docs/vi/cli/doc-review.md +8 -1
  658. package/docs/vi/cli/doc-translate.md +5 -1
  659. package/docs/vi/cli/extract.md +2 -1
  660. package/docs/vi/cli/fill.md +5 -1
  661. package/docs/vi/cli/index.md +4 -5
  662. package/docs/vi/cli/live.md +5 -1
  663. package/docs/vi/cli/login.md +2 -2
  664. package/docs/vi/cli/pull.md +5 -1
  665. package/docs/vi/cli/push.md +5 -1
  666. package/docs/vi/cli/scan.md +5 -1
  667. package/docs/vi/cli/standalone.md +5 -1
  668. package/docs/vi/cli/test.md +5 -1
  669. package/docs/vi/cli/watch.md +5 -1
  670. package/docs/vi/compat/i18n-js.md +1 -1
  671. package/docs/vi/compat/i18next.md +1 -1
  672. package/docs/vi/compat/lingui.md +1 -1
  673. package/docs/vi/compat/next-i18next.md +1 -1
  674. package/docs/vi/compat/next-intl.md +1 -1
  675. package/docs/vi/compat/next-translate.md +1 -1
  676. package/docs/vi/compat/ngx-translate.md +1 -1
  677. package/docs/vi/compat/nuxtjs-i18n.md +1 -1
  678. package/docs/vi/compat/polyglot.md +1 -1
  679. package/docs/vi/compat/react-i18next.md +1 -1
  680. package/docs/vi/compat/react-intl.md +1 -1
  681. package/docs/vi/compat/svelte-i18n.md +1 -1
  682. package/docs/vi/compat/transloco.md +1 -1
  683. package/docs/vi/compat/vue-i18n.md +1 -1
  684. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  685. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  686. package/docs/vi/intlayer_with_remix_3.md +566 -0
  687. package/docs/zh/benchmark/index.md +4 -1
  688. package/docs/zh/benchmark/nextjs.md +32 -27
  689. package/docs/zh/benchmark/solid.md +13 -10
  690. package/docs/zh/benchmark/svelte.md +12 -9
  691. package/docs/zh/benchmark/tanstack.md +29 -24
  692. package/docs/zh/benchmark/vue.md +11 -7
  693. package/docs/zh/cli/build.md +8 -1
  694. package/docs/zh/cli/configuration.md +3 -1
  695. package/docs/zh/cli/doc-review.md +8 -1
  696. package/docs/zh/cli/doc-translate.md +5 -1
  697. package/docs/zh/cli/extract.md +2 -1
  698. package/docs/zh/cli/fill.md +5 -1
  699. package/docs/zh/cli/index.md +4 -5
  700. package/docs/zh/cli/live.md +5 -1
  701. package/docs/zh/cli/login.md +2 -2
  702. package/docs/zh/cli/pull.md +5 -1
  703. package/docs/zh/cli/push.md +5 -1
  704. package/docs/zh/cli/scan.md +5 -1
  705. package/docs/zh/cli/standalone.md +5 -1
  706. package/docs/zh/cli/test.md +5 -1
  707. package/docs/zh/cli/watch.md +5 -1
  708. package/docs/zh/compat/i18n-js.md +1 -1
  709. package/docs/zh/compat/i18next.md +1 -1
  710. package/docs/zh/compat/lingui.md +1 -1
  711. package/docs/zh/compat/next-i18next.md +1 -1
  712. package/docs/zh/compat/next-intl.md +1 -1
  713. package/docs/zh/compat/next-translate.md +1 -1
  714. package/docs/zh/compat/ngx-translate.md +1 -1
  715. package/docs/zh/compat/nuxtjs-i18n.md +1 -1
  716. package/docs/zh/compat/polyglot.md +1 -1
  717. package/docs/zh/compat/react-i18next.md +1 -1
  718. package/docs/zh/compat/react-intl.md +1 -1
  719. package/docs/zh/compat/svelte-i18n.md +1 -1
  720. package/docs/zh/compat/transloco.md +1 -1
  721. package/docs/zh/compat/vue-i18n.md +1 -1
  722. package/docs/zh/intlayer_with_nextjs_15.md +1 -1
  723. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  724. package/docs/zh/intlayer_with_remix_3.md +558 -0
  725. package/package.json +7 -7
  726. package/src/generated/blog.entry.ts +20 -0
  727. package/src/generated/docs.entry.ts +20 -20
  728. package/docs/ar/cli/ci.md +0 -186
  729. package/docs/de/cli/ci.md +0 -186
  730. package/docs/en/cli/ci.md +0 -216
  731. package/docs/en-GB/cli/ci.md +0 -186
  732. package/docs/es/cli/ci.md +0 -186
  733. package/docs/fr/cli/ci.md +0 -186
  734. package/docs/hi/cli/ci.md +0 -186
  735. package/docs/id/cli/ci.md +0 -186
  736. package/docs/it/cli/ci.md +0 -186
  737. package/docs/ja/cli/ci.md +0 -186
  738. package/docs/ko/cli/ci.md +0 -186
  739. package/docs/pl/cli/ci.md +0 -186
  740. package/docs/pt/cli/ci.md +0 -186
  741. package/docs/ru/cli/ci.md +0 -186
  742. package/docs/tr/cli/ci.md +0 -186
  743. package/docs/uk/cli/ci.md +0 -186
  744. package/docs/vi/cli/ci.md +0 -186
  745. package/docs/zh/cli/ci.md +0 -186
@@ -0,0 +1,304 @@
1
+ ---
2
+ createdAt: 2026-09-09
3
+ updatedAt: 2026-09-09
4
+ title: "The History of JavaScript i18n: From 2011 to 2026"
5
+ description: Explore the evolution of frontend internationalization from 2011 to 2026. Discover the release dates, architectural problems, and key innovations across React, Vue, Next.js, Angular, Svelte, and Solid.
6
+ keywords:
7
+ - i18n history
8
+ - JavaScript internationalization
9
+ - React i18n
10
+ - Next.js i18n
11
+ - Vue i18n
12
+ - Angular i18n
13
+ - Svelte i18n
14
+ - Solid i18n
15
+ - i18next
16
+ - intlayer
17
+ slugs:
18
+ - blog
19
+ - history-of-js-internationalization
20
+ author: aymericzip
21
+ ---
22
+
23
+ # The History of JavaScript Internationalization (i18n)
24
+
25
+ Internationalization isn't new. Long before JavaScript and the web, software already had to deal with multiple languages, currencies, date formats, and regional conventions. Early graphical operating systems such as GEM and Mac OS were already solving many of these problems in the 1980s.
26
+
27
+ The same ideas eventually made their way into backend frameworks. Ruby on Rails, Django, Java frameworks, and PHP applications all developed their own approaches to internationalization. The basic problems were fairly well understood:
28
+
29
+ - Where should translations live?
30
+ - How do we format dates, numbers, and currencies?
31
+ - How do we handle plurals and grammatical differences?
32
+ - How do we decide which language a user should see?
33
+
34
+ When the server rendered the page, things were relatively straightforward. The application could load the appropriate translations, render the HTML, and send the result to the browser.
35
+
36
+ > Note that PHP and GNU gettext used to be precursors for the `t()` helper pattern that later became ubiquitous in JavaScript and JSX.
37
+
38
+ Then JavaScript started taking over the browser.
39
+
40
+ As applications moved from server-rendered pages to increasingly complex client-side applications, internationalization became a frontend problem too. Suddenly, the browser had to load translations, switch languages, format values, handle plurals, and update the UI without reloading the page.
41
+
42
+ And that introduced a new question:
43
+
44
+ **How do you make an application multilingual without shipping a huge amount of translation data and runtime code to every user?**
45
+
46
+ That question has shaped JavaScript i18n for more than a decade.
47
+
48
+ The solutions have changed considerably. We went from global JavaScript objects and `t('some.key')` calls, to framework-specific libraries, compile-time extraction, TypeScript-generated types, server components, tree-shaking, and eventually compiler-based approaches where translations are turned into JavaScript during the build.
49
+
50
+ This article looks at that evolution from roughly 2011 to 2026: what each generation of tools tried to solve, what worked, what didn't, and how the architecture of frontend applications influenced the way we handle i18n today.
51
+
52
+ ![JavaScript Internationalization Library Ecosystem](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.png?raw=true)
53
+
54
+ ## Table of Contents
55
+
56
+ <TOC/>
57
+
58
+ ## The Early Web: JavaScript Internationalization Before 2016
59
+
60
+ To understand where modern i18n tools stand today, we need to revisit what building for the web felt like between 2011 and 2015.
61
+
62
+ ### The Domestication of the Client
63
+
64
+ In the early 2010s, internationalization was predominantly a server-side responsibility. JavaScript was largely an enhancement layer for animations, form validations, and small DOM widgets via jQuery.
65
+
66
+ As Single-Page Applications (SPAs) gained popularity with Backbone.js, Knockout.js, and early AngularJS, rendering logic migrated directly into the browser. Client-side code suddenly needed to display localized dates, format currencies, handle plurals, and swap text dynamically without a full page refresh.
67
+
68
+ Yet the browser environment of 2011 was ill-equipped for this challenge:
69
+
70
+ <AccordionGroup>
71
+ <Accordion header="No native internationalization API">
72
+
73
+ The ECMAScript Internationalization API specification (ECMA-402) was only finalized in December 2012, introducing the `Intl` global object. Before browser vendors adopted `Intl`, even basic date and number formatting required custom formatting functions or hefty polyfills.
74
+
75
+ </Accordion>
76
+ <Accordion header="No modern module bundlers">
77
+
78
+ Tools like Webpack were in their infancy, and ESM did not exist in browsers. Developers loaded scripts via `<script>` tags, often injecting translations into global objects like `window.translations = { ... }`.
79
+
80
+ </Accordion>
81
+ <Accordion header="Monolithic JSON payloads">
82
+
83
+ Translations were authored in massive, centralized JSON files. A user in Tokyo loading the landing page still downloaded strings for the account settings, billing panels, and administrative dashboards.
84
+
85
+ </Accordion>
86
+ </AccordionGroup>
87
+
88
+ ### The First Wave of Client-Side Libraries
89
+
90
+ Between 2012 and 2015, the initial foundation of modern JavaScript i18n was built:
91
+
92
+ <AccordionGroup>
93
+ <Accordion header="i18next (January 2012)">
94
+
95
+ Created by Jan Mühlemann, `i18next` established the blueprint for runtime key-value dictionaries in JavaScript. It introduced key traversal, variable interpolation, pluralization rules, and a pluggable architecture for language detectors and backends. It quickly became the ubiquitous standard across vanilla JS and early Node.js backends.
96
+
97
+ </Accordion>
98
+ <Accordion header="vue-i18n (May 2014)">
99
+
100
+ Created by Kazupon (Kazuya Kawaguchi), `vue-i18n` adapted internationalization directly to Vue.js reactive data-binding model, introducing template directives (`v-t`) and the `$t()` helper.
101
+
102
+ </Accordion>
103
+ <Accordion header="react-intl (June 2014)">
104
+
105
+ Created by Yahoo! as part of the FormatJS project, `react-intl` brought standardized ICU MessageFormat and browser `Intl` APIs into React through declarative components such as `<FormattedMessage>` and `<FormattedDate>`.
106
+
107
+ </Accordion>
108
+ <Accordion header="react-i18next (December 2015)">
109
+
110
+ Jan Mühlemann brought `i18next` to the rapidly growing React community, using Higher-Order Components (`withTranslation`) and React context providers to re-render components on language changes.
111
+
112
+ </Accordion>
113
+ </AccordionGroup>
114
+
115
+ ### Limitations of the Pre-2016 Era
116
+
117
+ While these tools enabled rich multilingual client applications, the architectural constraints of the era created persistent pain points:
118
+
119
+ <AccordionGroup>
120
+ <Accordion header="Brittle String Keys">
121
+
122
+ Lookups like `t('marketing.landing.hero.cta')` provided zero static feedback. Typos in keys failed silently in production, displaying blank labels or raw key identifiers to end users.
123
+
124
+ </Accordion>
125
+ <Accordion header="Runtime Parsing Overhead">
126
+
127
+ Parsing ICU message syntax and evaluating regex-based interpolation at runtime consumed CPU cycles on mobile devices.
128
+
129
+ </Accordion>
130
+ <Accordion header="Bundle Bloat">
131
+
132
+ Without route-based or component-level code splitting, all localized strings were loaded at once, degrading initial page load metrics.
133
+
134
+ </Accordion>
135
+ <Accordion header="Developer-Translator Disconnect">
136
+
137
+ Dictionaries were stored in centralized JSON files distant from the components that rendered them, making orphan keys and missing translations common occurrences.
138
+
139
+ </Accordion>
140
+ </AccordionGroup>
141
+
142
+ ## The Framework Era: Evolution Across Ecosystems
143
+
144
+ Between 2016 and 2026, frontend architecture transformed. TypeScript became the standard, component-based architectures matured, bundlers like Webpack, Vite, and Turbopack introduced code splitting, React Server Components shifted rendering back to the server, and compilers began parsing application code.
145
+
146
+ The following tabs present how each framework and ecosystem addressed these challenges, documenting release dates, core motivations, and major innovations in comparative tables. Across these ecosystems, `react-intlayer` and all its framework equivalents (`next-intlayer`, `vue-intlayer`, `angular-intlayer`, `svelte-intlayer`, and `solid-intlayer`) are high-performance implementations tailored specifically for their related runtime environments.
147
+
148
+ <Tabs>
149
+
150
+ <Tab label="Core JavaScript" value="javascript">
151
+
152
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
153
+ | ------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
154
+ | January 2012 | `i18next` | Standardize runtime dictionary lookups for browser and Node.js without framework lock-in. | Pluggable runtime architecture separating core translation from loaders, detectors, and caching. |
155
+ | February 2021 | `typesafe-i18n` | Prevent silent runtime errors and broken interpolations caused by untyped string keys. | Fully typed translation functions generated directly from translation objects with zero runtime dependencies. |
156
+ | October 2023 | `paraglide` (`@inlang/paraglide-js`) | Eliminate runtime dictionary lookups, heavy parsers, and bundle bloat. | Compiles messages into tree-shakable ECMAScript modules and plain JS functions. |
157
+ | April 2024 | `intlayer` | Replace unmaintainable namespaces (i18next/use-intl), avoid cross-page content leakage, reduce git merge conflicts between developers, and solve the lack of native type safety in the TypeScript era. | Collocates `.content` files directly where functions are called to split code cleanly, auto-generates TypeScript types for enhanced DX, and provides built-in visual CMS and AI translation CLI tools. |
158
+ | June 2025 | `wuchale` | Remove the friction of manually extracting text strings and inventing translation keys during development. | AST-level preprocessing that detects inline text and compiles it into zero-wrapper localized functions at build time. |
159
+
160
+ </Tab>
161
+
162
+ <Tab label="React" value="react">
163
+
164
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
165
+ | ------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
166
+ | June 2014 | `react-intl` | Standardize formatting for numbers, dates, currencies, and complex plurals in React. | Declarative components (`<FormattedMessage>`, `<FormattedDate>`) implementing ICU MessageFormat and ECMA-402 standards. |
167
+ | December 2015 | `react-i18next` | Provide an idiomatic React binding for `i18next` with reactive re-rendering. | Evolved with React from Higher-Order Components to `<Trans>` JSX interpolation and the `useTranslation` hook. |
168
+ | January 2018 | `@lingui/react` | Reduce JavaScript bundle size penalties caused by runtime ICU parsers. | Compile-time Babel/SWC macros compiling `<Trans>` and `t` into compact indexed arrays at build time. |
169
+ | December 2020 | `use-intl` | Deliver a lightweight, hook-first, type-safe alternative to legacy React i18n libraries. | Ergonomic `useTranslations` and `useFormatter` hooks with deep TypeScript integration. |
170
+ | February 2021 | `@tolgee/react` | Eliminate the slow feedback loop between developers, translators, and designers. | In-context browser editing allowing users to Alt-click text, edit translations in place, and capture screenshots. |
171
+ | April 2024 | `react-intlayer` | Deliver a high-performance React implementation of Intlayer tailored specifically for React component lifecycle, eliminating centralized JSON dictionaries, unmaintainable namespaces, and cross-page content leakage. | High-performance `useIntlayer` hook tailored for React rendering, auto-generated TypeScript types, per-component bundle tree-shaking, and live visual CMS synchronization without context boilerplate. |
172
+ | July 2024 | `gt-react` | Automate manual file exports, translator handoffs, and translation maintenance. | Cloud-native automated AI localization directly inside React components with machine translation pipelines. |
173
+ | August 2025 | `@wuchale/jsx` | Eliminate manual key naming and boilerplate translation hooks in React JSX authoring. | AST transformation that automatically extracts raw JSX text nodes and compiles them into localized equivalents. |
174
+
175
+ </Tab>
176
+
177
+ <Tab label="Next.js" value="nextjs">
178
+
179
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
180
+ | -------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | November 2018 | `next-i18next` | Support SSR and SSG with `i18next` in Next.js Pages Router without client waterfalls. | `serverSideTranslations` and `appWithTranslation` passing localized namespaces to page props. |
182
+ | December 2019 | `next-translate` | Simplify configuration and reduce bundle weight in Next.js Pages Router apps. | Webpack loader plugin automatically injecting only the necessary translation namespaces per page. |
183
+ | November 2020 | `next-intl` | Re-architect Next.js internationalization for App Router, React Server Components (RSC), and streaming SSR. | Native integration with Next.js App Router middleware, Server Actions, and asynchronous Server Components without client JS. |
184
+ | July 2022 | `next-international` | Maximize TypeScript type safety with minimal client bundle overhead for Next.js. | Strict type generation for scoped translation keys with lightweight App Router and Pages Router adapters. |
185
+ | April 2024 | `paraglide-next` (`@inlang/paraglide-next`) | Bring zero-runtime compiled messages to Next.js App Router and Pages Router. | Middleware routing paired with tree-shakable message functions avoiding runtime JSON parsing in RSC and client bundles. |
186
+ | April 2024 | `next-intlayer` | Deliver a high-performance Server Component adapter for Next.js App Router and Pages Router, eliminating the need to pass `t()` functions or dictionaries down as props across component boundaries. | Native Server Component adapter allowing `useIntlayer` to be called directly in synchronous Server Components (such as Navbars and Headers) without prop-drilling `t()`, paired with zero-waterfall server rendering, localized routing middleware, and live visual CMS synchronization. |
187
+ | September 2024 | `gt-next` | Automate multilingual content generation and dynamic localized routing in Next.js using AI translation. | App Router integration pairing cloud-based machine translation with Next.js edge middleware and caching layers. |
188
+
189
+ </Tab>
190
+
191
+ <Tab label="Vue & Nuxt" value="vue">
192
+
193
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
194
+ | ------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
195
+ | May 2014 | `vue-i18n` | Provide idiomatic, reactive internationalization for Vue applications. | Deep reactivity integration, template directives (`v-t`), `$t` helpers, and single-file component `<i18n>` custom blocks. |
196
+ | November 2017 | `@nuxt/i18n` | Handle localized URL routing, SEO hreflang tags, and SSR hydration in Nuxt. | Full-stack routing module generating localized routes (prefix, domain), SEO meta headers, and lazy chunk loading. |
197
+ | August 2019 | `fluent-vue` | Handle complex grammatical gender, cases, and asymmetric language structures in Vue. | Vue integration for Mozilla Project Fluent syntax, avoiding complex conditional code for linguistic variations. |
198
+ | April 2025 | `vue-intlayer` | Deliver a high-performance Vue implementation of Intlayer engineered natively for Vue 3 Composition API and Nuxt, avoiding global namespace pollution. | High-performance `useIntlayer` composable tailored for Vue 3 reactive dependency tracking, direct component scoping, full TypeScript autocompletion, and visual editor integration. |
199
+
200
+ </Tab>
201
+
202
+ <Tab label="Angular" value="angular">
203
+
204
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
205
+ | -------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
206
+ | February 2017 | `ngx-translate` | Provide dynamic runtime translation in Angular without deploying separate bundles per locale. | `TranslateService` and `translate` pipe enabling dynamic translation loading and runtime language toggling. |
207
+ | July 2019 | `@ngneat/transloco` | Resolve performance bottlenecks, lack of scoping, and missing features in older Angular libraries. | Structural directive (`*transloco`), scoped translations for lazy-loaded feature modules, SSR support, and extraction CLI. |
208
+ | September 2019 | `@angular/localize` | Modernize Angular built-in compile-time i18n to avoid recompiling TypeScript for each language. | Tagged template literals with `$localize` injected as a fast post-build step in the Ivy compiler engine. |
209
+ | February 2021 | `@tolgee/ngx` | Integrate collaborative in-context translation and screenshot capturing into Angular workflows. | Angular pipes and directives connected directly to Tolgee for live in-browser localization. |
210
+ | April 2025 | `angular-intlayer` | Deliver a high-performance Angular implementation of Intlayer engineered natively for modern Angular (Signals, standalone components, and SSR). | High-performance Signal-based reactive content integration tailored for modern Angular change detection, standalone dependency injection, and live visual CMS synchronization. |
211
+
212
+ </Tab>
213
+
214
+ <Tab label="Svelte & SvelteKit" value="svelte">
215
+
216
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
217
+ | ------------- | ----------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
218
+ | July 2018 | `svelte-i18n` | Provide an idiomatic, reactive internationalization library tailored to Svelte reactive stores. | Store-backed `$t` lookup ensuring fine-grained reactive DOM updates when the locale changes. |
219
+ | December 2021 | `sveltekit-i18n` | Handle SSR and route-based translation loading cleanly in SvelteKit applications. | Modular loader architecture fetching only the translations and formatters needed for the active SvelteKit route. |
220
+ | November 2021 | `@tolgee/svelte` | Enable in-context localization in Svelte applications. | Svelte store bindings integrating with the Tolgee in-context translation overlay and automated screenshot generation. |
221
+ | April 2025 | `svelte-intlayer` | Deliver a high-performance Svelte implementation of Intlayer engineered natively for Svelte 5 and SvelteKit. | High-performance reactive content bindings tailored for Svelte 5 Runes (`$state`), component-scoped `.content` declarations, zero-config build plugins, and visual CMS editing. |
222
+ | July 2025 | `@wuchale/svelte` | Remove boilerplate of declaring dictionaries and importing `$t` functions in Svelte components. | Svelte preprocessor parsing templates at build time and compiling text nodes into zero-wrapper localized outputs. |
223
+
224
+ </Tab>
225
+
226
+ <Tab label="SolidJS" value="solid">
227
+
228
+ | First Release | Library | What It Set Out to Solve | Key Innovation |
229
+ | -------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
230
+ | September 2021 | `@solid-primitives/i18n` | Provide an idiomatic i18n primitive matching SolidJS fine-grained reactivity. | Signal-based reactive translation resolver updating DOM nodes without a virtual DOM or unnecessary re-renders. |
231
+ | April 2025 | `solid-intlayer` | Deliver a high-performance SolidJS implementation of Intlayer engineered natively for SolidJS and SolidStart. | High-performance Signal-aware content bindings tailored for Solid fine-grained reactive primitives without Virtual DOM overhead, full TypeScript schema autocompletion, and visual editor integration. |
232
+ | June 2026 | `@lingui/solid` | Extend compile-time macro extraction and ICU MessageFormat support to SolidJS. | Macro transformations adapted to Solid fine-grained reactivity, compiling messages into compact runtime structures. |
233
+
234
+ </Tab>
235
+
236
+ </Tabs>
237
+
238
+ ## The Four Architectural Eras of JavaScript i18n
239
+
240
+ ![The History of JavaScript i18n Libraries](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.png?raw=true)
241
+
242
+ Looking across fifteen years of development, we can categorize the history of JavaScript internationalization into four distinct architectural eras:
243
+
244
+ <AccordionGroup>
245
+ <Accordion header="1. The Runtime Dictionary Era (2011 to 2017)">
246
+
247
+ Characterized by `i18next`, `react-intl`, and `vue-i18n`. Applications loaded static JSON catalogs into memory, and runtime functions matched string keys against nested objects. Pluralization and interpolation were handled in the browser through regex matching and runtime ICU parsers.
248
+
249
+ </Accordion>
250
+ <Accordion header="2. The Compile-Time Macro and Type Safety Era (2018 to 2021)">
251
+
252
+ Characterized by `lingui`, `next-translate`, `transloco`, and `typesafe-i18n`. Developers recognized the performance penalties of runtime parsing and the fragility of untyped keys. Babel macros extracted messages at build time, bundler plugins sliced dictionaries per page, and TypeScript compilers began verifying translation arguments.
253
+
254
+ </Accordion>
255
+ <Accordion header="3. The Server Component and Streaming Era (2022 to 2024)">
256
+
257
+ Characterized by `next-intl`, `next-international`, and early RSC adapters. With the advent of React Server Components and Next.js App Router, the objective shifted to rendering localized content on the server without shipping translation dictionaries or client-side i18n runtimes to the browser.
258
+
259
+ </Accordion>
260
+ <Accordion header="4. The Modern Compiler and Unified Content Era (2024 to 2026)">
261
+
262
+ Characterized by `paraglide`, `intlayer`, and `wuchale`. Modern tools treat internationalization not merely as string replacement, but as an integrated content architecture. Compilers convert messages directly into tree-shakable code functions, content declarations are collocated with components, and visual editors, MCP tools, and automated AI translation pipelines integrate directly into the developer workflow. In this model, Intlayer decouples content declaration and automatic type generation from runtime delivery, providing dedicated, high-performance implementations (`react-intlayer`, `next-intlayer`, `vue-intlayer`, `angular-intlayer`, `svelte-intlayer`, and `solid-intlayer`) engineered natively for each framework's reactivity and runtime environment.
263
+
264
+ </Accordion>
265
+ </AccordionGroup>
266
+
267
+ ## Conclusion: Balancing DX, Performance, and the AI Disruption
268
+
269
+ Across fifteen years and four distinct architectural waves, the ultimate challenge of JavaScript internationalization has remained the same: reconciling developer experience (DX) and long-term codebase maintainability while delivering optimal performance on the client side.
270
+
271
+ What began as global variables and unmaintainable centralized JSON files has progressively matured into component-collocated content, automated TypeScript type safety, zero-waterfall server rendering, and compile-time tree shaking.
272
+
273
+ ### The AI Disruption and the Legacy SaaS Model
274
+
275
+ A decisive catalyst in recent years has been automated AI translation generation, which fundamentally challenges the traditional business models of legacy localization platforms.
276
+
277
+ Historically, centralizing content into monolithic JSON files was a compromise made to ease the integration of Translation Management Systems (TMS). A single centralized repository gave non-technical translators and third-party TMS platforms a straightforward import and export target. However, this convenience for external services came at a severe architectural cost to developers: frequent git merge conflicts across feature branches, untracked orphan keys, lack of component-level context, and unmaintainable global namespaces.
278
+
279
+ With the emergence of generative AI and modern compilation tooling, Developer Experience (DX) has decisively taken over. Build tools and CLIs can now discover, validate, and translate component-collocated content files automatically, eliminating the need to sacrifice clean architecture for the sake of translation pipelines.
280
+
281
+ For over a decade, commercial translation suites built recurring revenue around that manual TMS friction:
282
+
283
+ - Solutions like **Locize** (the commercial SaaS platform behind `i18next`) and **Crowdin** (the primary sponsor and integration partner for `vue-i18n`, `next-intl`, `use-intl`, and `lingui`) centered their business models on hosted translation storage, tier-based plan limits, and word-count fees.
284
+ - Because these legacy platforms monetize volume and manual translation workflows, they have little economic incentive to automate end-to-end translation generation for free directly in developer toolchains.
285
+
286
+ ### The New AI Wave vs. Direct Provider Cost
287
+
288
+ As modern Large Language Models lowered translation costs to fractions of a cent while increasing linguistic accuracy, a new generation of commercial tools emerged to capture this market:
289
+
290
+ - Platforms such as Paraglide with **linguo.dev** or **General Translation** (`gt-react`, `gt-next`) have attempted to surf the AI wave by introducing new proprietary subscription tiers and intermediated cloud pipelines.
291
+ - In contrast, **Intlayer** provides automated AI translation directly out of the box through its CLI, allowing teams to connect their own API keys (such as OpenAI, Anthropic, Mistral, or Google Gemini). There are no markups, commissions, or vendor lock-in, running strictly at the direct, raw cost of your chosen AI provider.
292
+
293
+ ### More Than i18n: A Complete Multilingual Content System
294
+
295
+ Finally, modern web development has expanded far beyond simple string replacement. Today's applications do not just need to translate single words like `"Submit"` or `"Log In"`, they require rich, dynamic, and structured content across complex user journeys.
296
+
297
+ Intlayer approaches this problem not as a narrow string-key lookup tool, but as a comprehensive multilingual content system. With first-class support for Markdown documents, HTML structures, nested data schemas, and seamless visual CMS editing, it bridges the gap between code-level engineering, automated AI workflows, and content management.
298
+
299
+ For deeper architectural comparisons and practical migration guides, explore the following resources:
300
+
301
+ - [Compiler vs. Declarative Internationalization](https://github.com/aymericzip/intlayer/blob/main/docs/blog/en/compiler_vs_declarative_i18n.md)
302
+ - [Per-Component vs. Centralized i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/en/per-component_vs_centralized_i18n.md)
303
+ - [Performance and Benchmarks](https://intlayer.org/doc/benchmark)
304
+ - [Intlayer Compatibility Adapters](https://intlayer.org/doc/concept/compatibility)