@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-10
4
+ title: "История i18n в JavaScript: с 2011 по 2026 год"
5
+ description: "Эволюция интернационализации во фронтенде с 2011 по 2026 год. Даты релизов, архитектурные вызовы и ключевые инновации в React, Vue, Next.js, Angular, Svelte и Solid."
6
+ keywords:
7
+ - история i18n
8
+ - интернационализация JavaScript
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
+ # История интернационализации в JavaScript (i18n)
24
+
25
+ Интернационализация появилась задолго до веба и JavaScript. Программному обеспечению всегда требовалось поддерживать несколько языков, валюты, форматы дат и региональные стандарты. Ранние графические операционные системы, такие как GEM и Mac OS, успешно решали многие из этих задач еще в 1980-х годах.
26
+
27
+ Те же принципы постепенно перешли в бэкенд-фреймворки. Ruby on Rails, Django, экосистема Java и приложения на PHP разработали собственные подходы к интернационализации. Базовые вопросы были понятны:
28
+
29
+ - Где хранить файлы переводов?
30
+ - Как форматировать даты, числа и валюты?
31
+ - Как учитывать формы множественного числа и грамматические различия?
32
+ - Как определять язык пользователя?
33
+
34
+ Пока сервер генерировал HTML-страницы целиком, процесс оставался прямолинейным. Сервер загружал нужный файл локализации, формировал разметку и отправлял ее браузеру.
35
+
36
+ > PHP и GNU gettext стали предшественниками функции-хелпера `t()`, которая позже стала повсеместным стандартом в JavaScript и JSX.
37
+
38
+ Затем JavaScript начал активно захватывать браузер.
39
+
40
+ С переходом от серверных страниц к сложным Single-Page Applications (SPA) интернационализация стала задачей клиентской части. Браузеру потребовалось динамически подгружать переводы, переключать языки, форматировать значения, обрабатывать формы множественного числа и обновлять интерфейс без перезагрузки страницы.
41
+
42
+ В результате возник фундаментальный вопрос:
43
+
44
+ **Как сделать веб-приложение многоязычным, не отправляя каждому пользователю огромные объемы данных перевода и тяжелый рантайм-код?**
45
+
46
+ Этот вопрос определял развитие JavaScript i18n на протяжении полутора десятилетий.
47
+
48
+ Подходы радикально менялись: от глобальных объектов и вызовов `t('key')` до специализированных библиотек под конкретные фреймворки, экстракции на этапе компиляции, генерации типов в TypeScript, Server Components, tree-shaking и современных компиляторных решений, превращающих контент в оптимизированный JavaScript-код еще во время сборки.
49
+
50
+ В этой статье рассматривается эволюция с 2011 по 2026 год: задачи каждого поколения инструментов, их сильные и слабые стороны, а также влияние архитектуры фронтенда на подходы к i18n сегодня.
51
+
52
+ ![Экосистема библиотек интернационализации JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.png?raw=true)
53
+
54
+ ## Содержание
55
+
56
+ <TOC/>
57
+
58
+ ## Ранний веб: интернационализация JavaScript до 2016 года
59
+
60
+ Чтобы оценить современные инструменты i18n, важно вспомнить контекст веб-разработки 2011-2015 годов.
61
+
62
+ ### Перенос логики на сторону клиента
63
+
64
+ В начале 2010-х годов интернационализация оставалась прерогативой сервера. JavaScript служил вспомогательным слоем для анимаций, валидации форм и небольших плагинов на jQuery.
65
+
66
+ С ростом популярности SPA на базе Backbone.js, Knockout.js и раннего AngularJS логика рендеринга перешла в браузер. Клиентский код должен был самостоятельно форматировать валюту, отображать локализованные даты, учитывать правила множественного числа и менять текст без перезагрузки страниц.
67
+
68
+ Однако браузерная среда 2011 года не имела для этого встроенных средств:
69
+
70
+ <AccordionGroup>
71
+ <Accordion header="Отсутствие нативного API интернационализации">
72
+
73
+ Спецификация ECMAScript Internationalization API (ECMA-402) была финализирована только в декабре 2012 года с появлением объекта `Intl`. До ее повсеместной поддержки даже базовое форматирование дат требовало громоздких сторонних функций или тяжелых полифилов.
74
+
75
+ </Accordion>
76
+ <Accordion header="Отсутствие современных сборщиков модулей">
77
+
78
+ Инструменты вроде Webpack только зарождались, а нативных ES-модулей в браузерах не существовало. Скрипты подключались через теги `<script>`, а словари складывались в глобальные переменные вроде `window.translations = { ... }`.
79
+
80
+ </Accordion>
81
+ <Accordion header="Монолитные JSON-файлы">
82
+
83
+ Переводы хранились в массивных централизованных JSON-файлах. Пользователь в Токио, открывая главную страницу, загружал тексты для панели настроек, биллинга и административных разделов.
84
+
85
+ </Accordion>
86
+ </AccordionGroup>
87
+
88
+ ### Первая волна клиентских библиотек
89
+
90
+ В период с 2012 по 2015 год был заложен фундамент современной клиентской i18n:
91
+
92
+ <AccordionGroup>
93
+ <Accordion header="i18next (январь 2012)">
94
+
95
+ Созданная Яном Мюлеманом (Jan Mühlemann), библиотека `i18next` сформировала стандарт поиска по ключам в рантайме. Она предложила вложенные ключи, интерполяцию переменных, правила множественного числа и модульную структуру для плагинов детекции языка и бэкендов. Библиотека стала стандартом для чистого JS и раннего Node.js.
96
+
97
+ </Accordion>
98
+ <Accordion header="vue-i18n (май 2014)">
99
+
100
+ Созданная Кадзуей Кавагути (Kazupon), `vue-i18n` адаптировала интернационализацию к реактивной модели Vue.js, предложив шаблонные директивы (`v-t`) и функцию `$t()`.
101
+
102
+ </Accordion>
103
+ <Accordion header="react-intl (июнь 2014)">
104
+
105
+ Созданная в Yahoo! в рамках проекта FormatJS, `react-intl` перенесла стандарт ICU MessageFormat и браузерные API `Intl` в React через декларативные компоненты (`<FormattedMessage>`, `<FormattedDate>`).
106
+
107
+ </Accordion>
108
+ <Accordion header="react-i18next (декабрь 2015)">
109
+
110
+ Ян Мюлеман адаптировал `i18next` для быстрорастущего сообщества React с использованием Higher-Order Components (`withTranslation`) и контекста для обновления компонентов при смене языка.
111
+
112
+ </Accordion>
113
+ </AccordionGroup>
114
+
115
+ ### Ограничения эпохи до 2016 года
116
+
117
+ Несмотря на функциональность этих библиотек, архитектурные ограничения того времени создавали заметные трудности:
118
+
119
+ <AccordionGroup>
120
+ <Accordion header="Хрупкие строковые ключи">
121
+
122
+ Вызовы вроде `t('marketing.landing.hero.cta')` не проверялись статически. Опечатка в ключе обнаруживалась только во время работы приложения, приводя к пустым блокам или отображению сырых идентификаторов.
123
+
124
+ </Accordion>
125
+ <Accordion header="Нагрузка на процессор в рантайме">
126
+
127
+ Парсинг синтаксиса ICU и регулярные выражения для интерполяции нагружали процессор мобильных устройств при каждом рендере.
128
+
129
+ </Accordion>
130
+ <Accordion header="Избыточный объем бандла">
131
+
132
+ Без разделения кода по маршрутам или компонентам все строки приложения загружались одновременно, замедляя первоначальную загрузку.
133
+
134
+ </Accordion>
135
+ <Accordion header="Разрыв между разработчиками и переводчиками">
136
+
137
+ Файлы переводов хранились отдельно от компонентов, что часто приводило к появлению забытых неиспользуемых ключей и пропущенным переводам.
138
+
139
+ </Accordion>
140
+ </AccordionGroup>
141
+
142
+ ## Эпоха фреймворков: эволюция по экосистемам
143
+
144
+ В период с 2016 по 2026 год архитектура фронтенда существенно изменилась. TypeScript стал стандартом индустрии, компонентная модель окрепла, сборщики Webpack, Vite и Turbopack принесли гранулярный code splitting, React Server Components вернули часть рендеринга на сервер, а компиляторы начали анализировать код приложения напрямую.
145
+
146
+ В приведенных ниже вкладках показано, как развивалась i18n в разных средах. В этих экосистемах `react-intlayer` и его аналоги (`next-intlayer`, `vue-intlayer`, `angular-intlayer`, `svelte-intlayer` и `solid-intlayer`) представляют собой оптимизированные решения, спроектированные с учетом особенностей каждого фреймворка.
147
+
148
+ <Tabs>
149
+
150
+ <Tab label="JavaScript Core" value="javascript">
151
+
152
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
153
+ | ------------ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
154
+ | Январь 2012 | `i18next` | Стандартизация поиска по словарям в рантайме для браузера и Node.js без привязки к фреймворку. | Модульная архитектура, отделяющая ядро перевода от загрузчиков, детекторов и кеширования. |
155
+ | Февраль 2021 | `typesafe-i18n` | Предотвращение ошибок рантайма и сломанной интерполяции из-за нетипизированных строковых ключей. | Полностью типизированные функции перевода, генерируемые напрямую из объектов локализации без зависимостей в рантайме. |
156
+ | Октябрь 2023 | `paraglide` (`@inlang/paraglide-js`) | Избавление от поиска по словарям в рантайме, тяжелых парсеров и раздувания бандла. | Компиляция сообщений в легковесные ECMAScript-модули и чистые функции с поддержкой tree-shaking. |
157
+ | Апрель 2024 | `intlayer` | Замена громоздких пространств имен, устранение утечек контента между страницами, сокращение конфликтов слияния в git и строгая типизация в TypeScript. | Размещение файлов `.content` рядом с компонентами, автоматическая генерация типов TypeScript, встроенная визуальная CMS и инструменты перевода через CLI с ИИ. |
158
+ | Июнь 2025 | `wuchale` | Устранение ручной работы по вынесению строк и придумыванию ключей перевода во время разработки. | Препроцессор на уровне AST, находящий текст в коде и компилирующий его в локализованные функции без оберток на этапе сборки. |
159
+
160
+ </Tab>
161
+
162
+ <Tab label="React" value="react">
163
+
164
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
165
+ | ------------ | ---------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
166
+ | Июнь 2014 | `react-intl` | Стандартизация форматирования чисел, дат, валют и сложных форм множественного числа в React. | Декларативные компоненты (`<FormattedMessage>`, `<FormattedDate>`) на базе ICU MessageFormat и стандарта ECMA-402. |
167
+ | Декабрь 2015 | `react-i18next` | Идиоматическая интеграция `i18next` в React с реактивным обновлением интерфейса. | Развитие вместе с React: от компонентов высшего порядка к интерполяции JSX через `<Trans>` и хуку `useTranslation`. |
168
+ | Январь 2018 | `@lingui/react` | Уменьшение размера бандла за счет отказа от выполнения тяжелых ICU-парсеров в браузере. | Макросы Babel/SWC, компилирующие `<Trans>` и `t` в компактные массивы индексов на этапе сборки. |
169
+ | Декабрь 2020 | `use-intl` | Легковесная, ориентированная на хуки и безопасная по типам альтернатива старым библиотекам для React. | Эргономичные хуки `useTranslations` и `useFormatter` с глубокой интеграцией в TypeScript. |
170
+ | Февраль 2021 | `@tolgee/react` | Ускорение цикла обратной связи между разработчиками, переводчиками и дизайнерами. | Редактирование текстов прямо в браузере по Alt-клику с возможностью моментального сохранения и создания скриншотов. |
171
+ | Апрель 2024 | `react-intlayer` | Высокопроизводительное решение для жизненного цикла React без монолитных JSON и неудобных пространств имен. | Хук `useIntlayer` под рендеринг React, автогенерация типов TypeScript, tree-shaking на уровне компонентов и прямая синхронизация с визуальной CMS. |
172
+ | Июль 2024 | `gt-react` | Автоматизация ручного экспорта файлов и поддержки переводов. | Автоматическая локализация на базе ИИ прямо в компонентах React через облачные пайплайны. |
173
+ | Август 2025 | `@wuchale/jsx` | Отказ от ручного именования ключей и шаблонных хуков при написании JSX. | AST-трансформация, извлекающая текстовые узлы JSX и компилирующая их в локализованные эквиваленты. |
174
+
175
+ </Tab>
176
+
177
+ <Tab label="Next.js" value="nextjs">
178
+
179
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
180
+ | ------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | Ноябрь 2018 | `next-i18next` | Поддержка SSR и SSG с `i18next` в Pages Router без лишних запросов на клиенте. | Функции `serverSideTranslations` и `appWithTranslation`, передающие локализованные данные через пропсы страниц. |
182
+ | Декабрь 2019 | `next-translate` | Упрощение настройки и снижение веса бандла в приложениях Next.js Pages Router. | Плагин для Webpack-лоадера, внедряющий на страницу только необходимые пространства имен перевода. |
183
+ | Ноябрь 2020 | `next-intl` | Адаптация интернационализации под App Router, React Server Components (RSC) и потоковый SSR. | Нативная интеграция с middleware Next.js App Router, Server Actions и асинхронными Server Components без необходимости отправлять клиентский JS. |
184
+ | Июль 2022 | `next-international` | Максимальная типизация TypeScript при минимальном влиянии на клиентский бандл в Next.js. | Строгая генерация типов для ключей с компактными адаптерами под App Router и Pages Router. |
185
+ | Апрель 2024 | `paraglide-next` (`@inlang/paraglide-next`) | Скомпилированные сообщения без рантайма для Next.js App Router и Pages Router. | Маршрутизация на middleware в паре с функциями сообщений, исключающими парсинг JSON в рантайме RSC и бандлах клиента. |
186
+ | Апрель 2024 | `next-intlayer` | Серверный адаптер без необходимости пробрасывать функции `t()` или словари через пропсы между компонентами. | Вызов `useIntlayer` в синхронных Server Components без prop-drilling, рендеринг без каскадных задержек, локализованный middleware и синхронизация с CMS. |
187
+ | Сентябрь 2024 | `gt-next` | Автоматизация генерации многоязычного контента и динамической маршрутизации в Next.js с помощью ИИ. | Интеграция с App Router, объединяющая машинный перевод в облаке, middleware на edge и слои кеширования Next.js. |
188
+
189
+ </Tab>
190
+
191
+ <Tab label="Vue & Nuxt" value="vue">
192
+
193
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
194
+ | ------------ | -------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
195
+ | Май 2014 | `vue-i18n` | Реактивная и удобная интернационализация для приложений на Vue.js. | Глубокая интеграция с реактивностью Vue, директивы шаблонов (`v-t`), хелперы `$t` и специальные блоки `<i18n>` в однофайловых компонентах (SFC). |
196
+ | Ноябрь 2017 | `@nuxt/i18n` | Управление локализованными URL, тегами SEO hreflang и гидратацией SSR в Nuxt. | Полноценный модуль маршрутизации, генерирующий пути (префиксы, домены), мета-заголовки и поддерживающий ленивую загрузку фрагментов. |
197
+ | Август 2019 | `fluent-vue` | Поддержка сложного грамматического рода, падежей и асимметричных конструкций во Vue. | Интеграция синтаксиса Project Fluent от Mozilla, исключающая громоздкие условные конструкции в шаблонах. |
198
+ | Апрель 2025 | `vue-intlayer` | Решение на базе Intlayer для Composition API во Vue 3 и Nuxt без загрязнения глобальной области видимости. | Композабл `useIntlayer` с учетом системы реактивности Vue 3, изоляция на уровне компонентов, полное автодополнение TypeScript и поддержка визуальной CMS. |
199
+
200
+ </Tab>
201
+
202
+ <Tab label="Angular" value="angular">
203
+
204
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
205
+ | ------------- | ------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
206
+ | Февраль 2017 | `ngx-translate` | Динамический перевод во время выполнения в Angular без создания отдельных сборок под каждый язык. | Сервис `TranslateService` и пайп `translate` для динамической загрузки переводов и переключения языков на лету. |
207
+ | Июль 2019 | `@ngneat/transloco` | Устранение проблем с производительностью, отсутствия изолированных областей и недостатка функций в Angular. | Структурная директива (`*transloco`), изолированные переводы для ленивых модулей, поддержка SSR и CLI для экстракции. |
208
+ | Сентябрь 2019 | `@angular/localize` | Модернизация встроенного i18n-механизма Angular без полной перекомпиляции TypeScript под каждый язык. | Тегированные шаблонные литералы с `$localize`, внедряемые как быстрый шаг после сборки в компиляторе Ivy. |
209
+ | Февраль 2021 | `@tolgee/ngx` | Совместный перевод в контексте интерфейса и сохранение скриншотов в рабочих процессах Angular. | Пайпы и директивы с прямым подключением к Tolgee для редактирования текстов прямо в окне браузера. |
210
+ | Апрель 2025 | `angular-intlayer` | Нативная интеграция Intlayer для современного Angular (Signals, standalone-компоненты и SSR). | Реактивная интеграция на базе Signals, учитывающая механизм Change Detection, работа со standalone-компонентами и мгновенная синхронизация с визуальной CMS. |
211
+
212
+ </Tab>
213
+
214
+ <Tab label="Svelte & SvelteKit" value="svelte">
215
+
216
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
217
+ | ------------ | ----------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
218
+ | Июль 2018 | `svelte-i18n` | Реактивная библиотека интернационализации на базе хранилищ (stores) Svelte. | Функция `$t`, привязанная к store, обеспечивающая точечное обновление DOM при смене языка. |
219
+ | Декабрь 2021 | `sveltekit-i18n` | Корректная обработка SSR и загрузка переводов по маршрутам в приложениях SvelteKit. | Модульная архитектура загрузчика, запрашивающая только те строки и форматеры, которые нужны текущему маршруту. |
220
+ | Ноябрь 2021 | `@tolgee/svelte` | Локализация в контексте интерфейса для приложений на Svelte. | Привязка к хранилищам Svelte с интеграцией в оверлей Tolgee и автоматической генерацией скриншотов. |
221
+ | Апрель 2025 | `svelte-intlayer` | Производительное решение Intlayer, созданное специально для Svelte 5 и SvelteKit. | Реактивные привязки для рун Svelte 5 (`$state`), файлы `.content` на уровне компонентов, плагины сборки без сложной конфигурации и визуальный редактор. |
222
+ | Июль 2025 | `@wuchale/svelte` | Устранение бойлерплейта при объявлении словарей и импорте функций `$t` в компонентах Svelte. | Препроцессор Svelte, анализирующий шаблоны при сборке и компилирующий текстовые узлы в локализованный вывод без лишних оберток. |
223
+
224
+ </Tab>
225
+
226
+ <Tab label="SolidJS" value="solid">
227
+
228
+ | Первый релиз | Библиотека | Главная задача | Ключевая инновация |
229
+ | ------------- | ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
230
+ | Сентябрь 2021 | `@solid-primitives/i18n` | Идиоматический примитив i18n, соответствующий гранулярной реактивности SolidJS. | Реактивный резолвер переводов на сигналах, обновляющий узлы DOM без Virtual DOM и лишних повторных рендеров. |
231
+ | Апрель 2025 | `solid-intlayer` | Нативное производительное решение Intlayer для SolidJS и SolidStart. | Привязка к сигналам Solid без накладных расходов Virtual DOM, полная поддержка схем TypeScript и интеграция с визуальным редактором. |
232
+ | Июнь 2026 | `@lingui/solid` | Экстракция через макросы при сборке и поддержка ICU MessageFormat в SolidJS. | Макротрансформации, адаптированные к сигналам Solid и превращающие строки в компактные структуры для выполнения. |
233
+
234
+ </Tab>
235
+
236
+ </Tabs>
237
+
238
+ ## Четыре архитектурные эпохи JavaScript i18n
239
+
240
+ ![История библиотек интернационализации JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.png?raw=true)
241
+
242
+ Анализируя пятнадцать лет развития, историю интернационализации в JavaScript можно разделить на четыре ключевых этапа:
243
+
244
+ <AccordionGroup>
245
+ <Accordion header="1. Эпоха словарей в рантайме (2011-2017)">
246
+
247
+ Представлена `i18next`, `react-intl` и `vue-i18n`. Приложения целиком загружали статические JSON-каталоги в память, а функции в рантайме искали строковые ключи во вложенных объектах. Множественное число и подстановка переменных обрабатывались в браузере с помощью регулярных выражений и клиентских парсеров ICU.
248
+
249
+ </Accordion>
250
+ <Accordion header="2. Эпоха макросов при сборке и статической типизации (2018-2021)">
251
+
252
+ Представлена `lingui`, `next-translate`, `transloco` и `typesafe-i18n`. Разработчики обратили внимание на издержки парсинга в рантайме и хрупкость нетипизированных строк. Babel-макросы начали извлекать фразы при сборке, плагины сборщиков нарезали словари по страницам, а компилятор TypeScript стал проверять аргументы переводов.
253
+
254
+ </Accordion>
255
+ <Accordion header="3. Эпоха Server Components и потокового рендеринга (2022-2024)">
256
+
257
+ Определяется `next-intl`, `next-international` и ранними адаптерами для RSC. С появлением React Server Components и Next.js App Router фокус сместился на серверную генерацию локализованного контента без передачи лишних словарей или тяжелых i18n-движков на сторону клиента.
258
+
259
+ </Accordion>
260
+ <Accordion header="4. Эпоха современных компиляторов и единого контента (2024-2026)">
261
+
262
+ Представлена `paraglide`, `intlayer` и `wuchale`. Современные инструменты рассматривают i18n как архитектуру управления контентом, а не простую замену строк. Компиляторы преобразуют переводы в оптимизированный код с поддержкой tree-shaking, объявления хранятся рядом с компонентами, а визуальные редакторы и пайплайны с ИИ встраиваются напрямую в процесс разработки. В этой модели Intlayer разделяет объявление контента и генерацию типов от доставки в рантайме, предоставляя специализированные решения (`react-intlayer`, `next-intlayer`, `vue-intlayer`, `angular-intlayer`, `svelte-intlayer` и `solid-intlayer`) под специфику каждого фреймворка.
263
+
264
+ </Accordion>
265
+ </AccordionGroup>
266
+
267
+ ## Заключение: баланс между удобством разработки, производительностью и развитием ИИ
268
+
269
+ Спустя пятнадцать лет и четыре технологические волны главная задача JavaScript i18n осталась неизменной: обеспечить удобство для разработчиков (DX) и надежность архитектуры, гарантируя максимальную скорость работы для конечного пользователя.
270
+
271
+ То, что начиналось с глобальных переменных и неповоротливых JSON-файлов, превратилось в контент, расположенный рядом с компонентами, строгую автогенерацию типов TypeScript, рендеринг на сервере без задержек и компиляцию без лишнего рантайма.
272
+
273
+ ### Автоматизация через ИИ и традиционные платформы локализации
274
+
275
+ Важным фактором последних лет стала генерация переводов с помощью ИИ, которая меняет привычные подходы традиционных платформ управления переводами (TMS).
276
+
277
+ Исторически объединение текстов в единые JSON-файлы было компромиссом для интеграции с внешними TMS. Один файл было удобно загружать и выгружать внешним командам переводчиков. Однако разработчикам это стоило постоянных конфликтов в git, потери контекста и появления сотен забытых строк.
278
+
279
+ Благодаря генеративному ИИ и возможностям современных компиляторов фокус вернулся на удобство разработки. Инструменты сборки и CLI способны самостоятельно находить, валидировать и переводить файлы контента рядом с компонентами, сохраняя чистоту архитектуры.
280
+
281
+ Традиционные платформы более десяти лет выстраивали свои продукты вокруг ручных процессов:
282
+
283
+ - Сервисы вроде **Locize** (коммерческая платформа для `i18next`) и **Crowdin** (партнер ряда проектов с открытым исходным кодом) строили бизнес на хранении переводов, тарифных планах и оплате за число слов.
284
+ - Поскольку их модель ориентирована на объемы и ручную обработку, у них меньше стимулов бесплатно встраивать прямую автоматизацию в инструменты разработчиков.
285
+
286
+ ### Новые инструменты ИИ и прозрачная стоимость API
287
+
288
+ По мере того как большие языковые модели снизили стоимость перевода до долей цента при высоком качестве, рынок пополнился новыми решениями:
289
+
290
+ - Инструменты вроде Paraglide с **linguo.dev** или **General Translation** (`gt-react`, `gt-next`) предлагают промежуточные облачные пайплайны и платные подписки.
291
+ - **Intlayer**, напротив, предоставляет встроенную поддержку перевода через ИИ прямо в своей CLI, позволяя использовать собственные API-ключи (OpenAI, Anthropic, Mistral или Google Gemini). Здесь нет дополнительных наценок или посредников: работа идет по базовым тарифам выбранного провайдера.
292
+
293
+ ### Больше чем i18n: полноценная система многоязычного контента
294
+
295
+ Современная веб-разработка давно вышла за рамки перевода одиночных слов вроде `"Отправить"` или `"Войти"`. Приложениям требуется структурированный, динамичный и связный контент на всех этапах пользовательского пути.
296
+
297
+ Intlayer предлагает подход, выходящий за рамки простого поиска строк по ключам. Благодаря нативной поддержке Markdown, HTML-структур, вложенных схем данных и встроенного визуального редактора он объединяет разработку на уровне кода, автоматизацию через ИИ и удобное управление контентом.
298
+
299
+ Для подробного сравнения архитектурных подходов и практических руководств по миграции ознакомьтесь со следующими материалами:
300
+
301
+ - [Компиляторный подход против декларативной i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ru/compiler_vs_declarative_i18n.md)
302
+ - [i18n на уровне компонентов против централизованной](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ru/per-component_vs_centralized_i18n.md)
303
+ - [Производительность и бенчмарки](https://intlayer.org/doc/benchmark)
304
+ - [Адаптеры совместимости Intlayer](https://intlayer.org/doc/concept/compatibility)