@intlayer/docs 9.5.1 → 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 (711) 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 +0 -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 +0 -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 +0 -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_remix_3.md +543 -0
  67. package/docs/bn/cli/index.md +4 -5
  68. package/docs/bn/cli/scan.md +5 -1
  69. package/docs/bn/cli/standalone.md +5 -1
  70. package/docs/cs/cli/index.md +4 -5
  71. package/docs/cs/cli/scan.md +5 -1
  72. package/docs/cs/cli/standalone.md +5 -1
  73. package/docs/de/benchmark/index.md +4 -1
  74. package/docs/de/benchmark/nextjs.md +32 -27
  75. package/docs/de/benchmark/solid.md +13 -10
  76. package/docs/de/benchmark/svelte.md +12 -9
  77. package/docs/de/benchmark/tanstack.md +29 -24
  78. package/docs/de/benchmark/vue.md +11 -7
  79. package/docs/de/cli/build.md +8 -1
  80. package/docs/de/cli/configuration.md +3 -1
  81. package/docs/de/cli/doc-review.md +8 -1
  82. package/docs/de/cli/doc-translate.md +5 -1
  83. package/docs/de/cli/extract.md +2 -1
  84. package/docs/de/cli/fill.md +5 -1
  85. package/docs/de/cli/index.md +4 -5
  86. package/docs/de/cli/live.md +5 -1
  87. package/docs/de/cli/login.md +2 -2
  88. package/docs/de/cli/pull.md +5 -1
  89. package/docs/de/cli/push.md +5 -1
  90. package/docs/de/cli/scan.md +5 -1
  91. package/docs/de/cli/standalone.md +5 -1
  92. package/docs/de/cli/test.md +5 -1
  93. package/docs/de/cli/watch.md +5 -1
  94. package/docs/de/compat/i18n-js.md +1 -1
  95. package/docs/de/compat/i18next.md +1 -1
  96. package/docs/de/compat/lingui.md +1 -1
  97. package/docs/de/compat/next-i18next.md +1 -1
  98. package/docs/de/compat/next-intl.md +1 -1
  99. package/docs/de/compat/next-translate.md +1 -1
  100. package/docs/de/compat/ngx-translate.md +1 -1
  101. package/docs/de/compat/nuxtjs-i18n.md +1 -1
  102. package/docs/de/compat/polyglot.md +1 -1
  103. package/docs/de/compat/react-i18next.md +1 -1
  104. package/docs/de/compat/react-intl.md +1 -1
  105. package/docs/de/compat/svelte-i18n.md +1 -1
  106. package/docs/de/compat/transloco.md +1 -1
  107. package/docs/de/compat/vue-i18n.md +1 -1
  108. package/docs/de/intlayer_with_remix_3.md +543 -0
  109. package/docs/en/benchmark/index.md +4 -1
  110. package/docs/en/benchmark/nextjs.md +32 -27
  111. package/docs/en/benchmark/solid.md +13 -10
  112. package/docs/en/benchmark/svelte.md +12 -9
  113. package/docs/en/benchmark/tanstack.md +30 -25
  114. package/docs/en/benchmark/vue.md +11 -7
  115. package/docs/en/cli/build.md +8 -1
  116. package/docs/en/cli/configuration.md +3 -1
  117. package/docs/en/cli/doc-review.md +8 -1
  118. package/docs/en/cli/doc-translate.md +5 -1
  119. package/docs/en/cli/extract.md +2 -1
  120. package/docs/en/cli/fill.md +5 -1
  121. package/docs/en/cli/index.md +4 -5
  122. package/docs/en/cli/live.md +5 -1
  123. package/docs/en/cli/login.md +2 -2
  124. package/docs/en/cli/pull.md +5 -1
  125. package/docs/en/cli/push.md +5 -1
  126. package/docs/en/cli/scan.md +5 -1
  127. package/docs/en/cli/standalone.md +5 -1
  128. package/docs/en/cli/test.md +5 -1
  129. package/docs/en/cli/watch.md +5 -1
  130. package/docs/en/compat/i18n-js.md +1 -1
  131. package/docs/en/compat/i18next.md +1 -1
  132. package/docs/en/compat/lingui.md +1 -1
  133. package/docs/en/compat/next-i18next.md +1 -1
  134. package/docs/en/compat/next-intl.md +1 -1
  135. package/docs/en/compat/next-translate.md +1 -1
  136. package/docs/en/compat/ngx-translate.md +1 -1
  137. package/docs/en/compat/nuxtjs-i18n.md +1 -1
  138. package/docs/en/compat/polyglot.md +1 -1
  139. package/docs/en/compat/react-i18next.md +1 -1
  140. package/docs/en/compat/react-intl.md +1 -1
  141. package/docs/en/compat/svelte-i18n.md +1 -1
  142. package/docs/en/compat/transloco.md +1 -1
  143. package/docs/en/compat/vue-i18n.md +1 -1
  144. package/docs/en/intlayer_with_remix_3.md +103 -71
  145. package/docs/en-GB/benchmark/index.md +4 -1
  146. package/docs/en-GB/benchmark/nextjs.md +32 -27
  147. package/docs/en-GB/benchmark/solid.md +13 -10
  148. package/docs/en-GB/benchmark/svelte.md +12 -9
  149. package/docs/en-GB/benchmark/tanstack.md +29 -24
  150. package/docs/en-GB/benchmark/vue.md +11 -7
  151. package/docs/en-GB/cli/build.md +8 -1
  152. package/docs/en-GB/cli/configuration.md +3 -1
  153. package/docs/en-GB/cli/doc-review.md +8 -1
  154. package/docs/en-GB/cli/doc-translate.md +5 -1
  155. package/docs/en-GB/cli/extract.md +2 -1
  156. package/docs/en-GB/cli/fill.md +5 -1
  157. package/docs/en-GB/cli/index.md +4 -5
  158. package/docs/en-GB/cli/live.md +5 -1
  159. package/docs/en-GB/cli/login.md +2 -2
  160. package/docs/en-GB/cli/pull.md +5 -1
  161. package/docs/en-GB/cli/push.md +5 -1
  162. package/docs/en-GB/cli/scan.md +5 -1
  163. package/docs/en-GB/cli/standalone.md +5 -1
  164. package/docs/en-GB/cli/test.md +5 -1
  165. package/docs/en-GB/cli/watch.md +5 -1
  166. package/docs/en-GB/compat/i18n-js.md +1 -1
  167. package/docs/en-GB/compat/i18next.md +1 -1
  168. package/docs/en-GB/compat/lingui.md +1 -1
  169. package/docs/en-GB/compat/next-i18next.md +1 -1
  170. package/docs/en-GB/compat/next-intl.md +1 -1
  171. package/docs/en-GB/compat/next-translate.md +1 -1
  172. package/docs/en-GB/compat/ngx-translate.md +1 -1
  173. package/docs/en-GB/compat/nuxtjs-i18n.md +1 -1
  174. package/docs/en-GB/compat/polyglot.md +1 -1
  175. package/docs/en-GB/compat/react-i18next.md +1 -1
  176. package/docs/en-GB/compat/react-intl.md +1 -1
  177. package/docs/en-GB/compat/svelte-i18n.md +1 -1
  178. package/docs/en-GB/compat/transloco.md +1 -1
  179. package/docs/en-GB/compat/vue-i18n.md +1 -1
  180. package/docs/en-GB/intlayer_with_remix_3.md +558 -0
  181. package/docs/es/benchmark/index.md +4 -1
  182. package/docs/es/benchmark/nextjs.md +32 -27
  183. package/docs/es/benchmark/solid.md +13 -10
  184. package/docs/es/benchmark/svelte.md +12 -9
  185. package/docs/es/benchmark/tanstack.md +29 -24
  186. package/docs/es/benchmark/vue.md +11 -7
  187. package/docs/es/cli/build.md +8 -1
  188. package/docs/es/cli/configuration.md +3 -1
  189. package/docs/es/cli/doc-review.md +8 -1
  190. package/docs/es/cli/doc-translate.md +5 -1
  191. package/docs/es/cli/extract.md +2 -1
  192. package/docs/es/cli/fill.md +5 -1
  193. package/docs/es/cli/index.md +4 -5
  194. package/docs/es/cli/live.md +5 -1
  195. package/docs/es/cli/login.md +2 -2
  196. package/docs/es/cli/pull.md +5 -1
  197. package/docs/es/cli/push.md +5 -1
  198. package/docs/es/cli/scan.md +5 -1
  199. package/docs/es/cli/standalone.md +5 -1
  200. package/docs/es/cli/test.md +5 -1
  201. package/docs/es/cli/watch.md +5 -1
  202. package/docs/es/compat/i18n-js.md +1 -1
  203. package/docs/es/compat/i18next.md +1 -1
  204. package/docs/es/compat/lingui.md +1 -1
  205. package/docs/es/compat/next-i18next.md +1 -1
  206. package/docs/es/compat/next-intl.md +1 -1
  207. package/docs/es/compat/next-translate.md +1 -1
  208. package/docs/es/compat/ngx-translate.md +1 -1
  209. package/docs/es/compat/nuxtjs-i18n.md +1 -1
  210. package/docs/es/compat/polyglot.md +1 -1
  211. package/docs/es/compat/react-i18next.md +1 -1
  212. package/docs/es/compat/react-intl.md +1 -1
  213. package/docs/es/compat/svelte-i18n.md +1 -1
  214. package/docs/es/compat/transloco.md +1 -1
  215. package/docs/es/compat/vue-i18n.md +1 -1
  216. package/docs/es/intlayer_with_remix_3.md +540 -0
  217. package/docs/fr/benchmark/index.md +4 -1
  218. package/docs/fr/benchmark/nextjs.md +32 -27
  219. package/docs/fr/benchmark/solid.md +13 -10
  220. package/docs/fr/benchmark/svelte.md +12 -9
  221. package/docs/fr/benchmark/tanstack.md +29 -24
  222. package/docs/fr/benchmark/vue.md +11 -7
  223. package/docs/fr/cli/build.md +8 -1
  224. package/docs/fr/cli/configuration.md +3 -1
  225. package/docs/fr/cli/doc-review.md +8 -1
  226. package/docs/fr/cli/doc-translate.md +5 -1
  227. package/docs/fr/cli/extract.md +2 -1
  228. package/docs/fr/cli/fill.md +5 -1
  229. package/docs/fr/cli/index.md +4 -5
  230. package/docs/fr/cli/live.md +5 -1
  231. package/docs/fr/cli/login.md +2 -2
  232. package/docs/fr/cli/pull.md +5 -1
  233. package/docs/fr/cli/push.md +5 -1
  234. package/docs/fr/cli/scan.md +5 -1
  235. package/docs/fr/cli/standalone.md +5 -1
  236. package/docs/fr/cli/test.md +5 -1
  237. package/docs/fr/cli/watch.md +5 -1
  238. package/docs/fr/compat/i18n-js.md +1 -1
  239. package/docs/fr/compat/i18next.md +1 -1
  240. package/docs/fr/compat/lingui.md +1 -1
  241. package/docs/fr/compat/next-i18next.md +1 -1
  242. package/docs/fr/compat/next-intl.md +1 -1
  243. package/docs/fr/compat/next-translate.md +1 -1
  244. package/docs/fr/compat/ngx-translate.md +1 -1
  245. package/docs/fr/compat/nuxtjs-i18n.md +1 -1
  246. package/docs/fr/compat/polyglot.md +1 -1
  247. package/docs/fr/compat/react-i18next.md +1 -1
  248. package/docs/fr/compat/react-intl.md +1 -1
  249. package/docs/fr/compat/svelte-i18n.md +1 -1
  250. package/docs/fr/compat/transloco.md +1 -1
  251. package/docs/fr/compat/vue-i18n.md +1 -1
  252. package/docs/fr/intlayer_with_remix_3.md +540 -0
  253. package/docs/hi/benchmark/index.md +4 -1
  254. package/docs/hi/benchmark/nextjs.md +32 -27
  255. package/docs/hi/benchmark/solid.md +13 -10
  256. package/docs/hi/benchmark/svelte.md +12 -9
  257. package/docs/hi/benchmark/tanstack.md +29 -24
  258. package/docs/hi/benchmark/vue.md +11 -7
  259. package/docs/hi/cli/build.md +8 -1
  260. package/docs/hi/cli/configuration.md +3 -1
  261. package/docs/hi/cli/doc-review.md +8 -1
  262. package/docs/hi/cli/doc-translate.md +5 -1
  263. package/docs/hi/cli/extract.md +2 -1
  264. package/docs/hi/cli/fill.md +5 -1
  265. package/docs/hi/cli/index.md +4 -5
  266. package/docs/hi/cli/live.md +5 -1
  267. package/docs/hi/cli/login.md +2 -2
  268. package/docs/hi/cli/pull.md +5 -1
  269. package/docs/hi/cli/push.md +5 -1
  270. package/docs/hi/cli/scan.md +5 -1
  271. package/docs/hi/cli/standalone.md +5 -1
  272. package/docs/hi/cli/test.md +5 -1
  273. package/docs/hi/cli/watch.md +5 -1
  274. package/docs/hi/compat/i18n-js.md +1 -1
  275. package/docs/hi/compat/i18next.md +1 -1
  276. package/docs/hi/compat/lingui.md +1 -1
  277. package/docs/hi/compat/next-i18next.md +1 -1
  278. package/docs/hi/compat/next-intl.md +1 -1
  279. package/docs/hi/compat/next-translate.md +1 -1
  280. package/docs/hi/compat/ngx-translate.md +1 -1
  281. package/docs/hi/compat/nuxtjs-i18n.md +1 -1
  282. package/docs/hi/compat/polyglot.md +1 -1
  283. package/docs/hi/compat/react-i18next.md +1 -1
  284. package/docs/hi/compat/react-intl.md +1 -1
  285. package/docs/hi/compat/svelte-i18n.md +1 -1
  286. package/docs/hi/compat/transloco.md +1 -1
  287. package/docs/hi/compat/vue-i18n.md +1 -1
  288. package/docs/hi/intlayer_with_remix_3.md +543 -0
  289. package/docs/id/benchmark/index.md +4 -1
  290. package/docs/id/benchmark/nextjs.md +32 -27
  291. package/docs/id/benchmark/solid.md +13 -10
  292. package/docs/id/benchmark/svelte.md +12 -9
  293. package/docs/id/benchmark/tanstack.md +29 -24
  294. package/docs/id/benchmark/vue.md +11 -7
  295. package/docs/id/cli/build.md +8 -1
  296. package/docs/id/cli/configuration.md +3 -1
  297. package/docs/id/cli/doc-review.md +8 -1
  298. package/docs/id/cli/doc-translate.md +5 -1
  299. package/docs/id/cli/extract.md +2 -1
  300. package/docs/id/cli/fill.md +5 -1
  301. package/docs/id/cli/index.md +4 -5
  302. package/docs/id/cli/live.md +5 -1
  303. package/docs/id/cli/login.md +2 -2
  304. package/docs/id/cli/pull.md +5 -1
  305. package/docs/id/cli/push.md +5 -1
  306. package/docs/id/cli/scan.md +5 -1
  307. package/docs/id/cli/standalone.md +5 -1
  308. package/docs/id/cli/test.md +5 -1
  309. package/docs/id/cli/watch.md +5 -1
  310. package/docs/id/compat/i18n-js.md +1 -1
  311. package/docs/id/compat/i18next.md +1 -1
  312. package/docs/id/compat/lingui.md +1 -1
  313. package/docs/id/compat/next-i18next.md +1 -1
  314. package/docs/id/compat/next-intl.md +1 -1
  315. package/docs/id/compat/next-translate.md +1 -1
  316. package/docs/id/compat/ngx-translate.md +1 -1
  317. package/docs/id/compat/nuxtjs-i18n.md +1 -1
  318. package/docs/id/compat/polyglot.md +1 -1
  319. package/docs/id/compat/react-i18next.md +1 -1
  320. package/docs/id/compat/react-intl.md +1 -1
  321. package/docs/id/compat/svelte-i18n.md +1 -1
  322. package/docs/id/compat/transloco.md +1 -1
  323. package/docs/id/compat/vue-i18n.md +1 -1
  324. package/docs/id/intlayer_with_remix_3.md +566 -0
  325. package/docs/it/benchmark/index.md +4 -1
  326. package/docs/it/benchmark/nextjs.md +32 -27
  327. package/docs/it/benchmark/solid.md +13 -10
  328. package/docs/it/benchmark/svelte.md +12 -9
  329. package/docs/it/benchmark/tanstack.md +29 -24
  330. package/docs/it/benchmark/vue.md +11 -7
  331. package/docs/it/cli/build.md +8 -1
  332. package/docs/it/cli/configuration.md +3 -1
  333. package/docs/it/cli/doc-review.md +8 -1
  334. package/docs/it/cli/doc-translate.md +5 -1
  335. package/docs/it/cli/extract.md +2 -1
  336. package/docs/it/cli/fill.md +5 -1
  337. package/docs/it/cli/index.md +4 -5
  338. package/docs/it/cli/live.md +5 -1
  339. package/docs/it/cli/login.md +2 -2
  340. package/docs/it/cli/pull.md +5 -1
  341. package/docs/it/cli/push.md +5 -1
  342. package/docs/it/cli/scan.md +5 -1
  343. package/docs/it/cli/standalone.md +5 -1
  344. package/docs/it/cli/test.md +5 -1
  345. package/docs/it/cli/watch.md +5 -1
  346. package/docs/it/compat/i18n-js.md +1 -1
  347. package/docs/it/compat/i18next.md +1 -1
  348. package/docs/it/compat/lingui.md +1 -1
  349. package/docs/it/compat/next-i18next.md +1 -1
  350. package/docs/it/compat/next-intl.md +1 -1
  351. package/docs/it/compat/next-translate.md +1 -1
  352. package/docs/it/compat/ngx-translate.md +1 -1
  353. package/docs/it/compat/nuxtjs-i18n.md +1 -1
  354. package/docs/it/compat/polyglot.md +1 -1
  355. package/docs/it/compat/react-i18next.md +1 -1
  356. package/docs/it/compat/react-intl.md +1 -1
  357. package/docs/it/compat/svelte-i18n.md +1 -1
  358. package/docs/it/compat/transloco.md +1 -1
  359. package/docs/it/compat/vue-i18n.md +1 -1
  360. package/docs/it/intlayer_with_remix_3.md +558 -0
  361. package/docs/ja/benchmark/index.md +4 -1
  362. package/docs/ja/benchmark/nextjs.md +32 -27
  363. package/docs/ja/benchmark/solid.md +13 -10
  364. package/docs/ja/benchmark/svelte.md +12 -9
  365. package/docs/ja/benchmark/tanstack.md +29 -24
  366. package/docs/ja/benchmark/vue.md +11 -7
  367. package/docs/ja/cli/build.md +8 -1
  368. package/docs/ja/cli/configuration.md +3 -1
  369. package/docs/ja/cli/doc-review.md +8 -1
  370. package/docs/ja/cli/doc-translate.md +5 -1
  371. package/docs/ja/cli/extract.md +2 -1
  372. package/docs/ja/cli/fill.md +5 -1
  373. package/docs/ja/cli/index.md +4 -5
  374. package/docs/ja/cli/live.md +5 -1
  375. package/docs/ja/cli/login.md +2 -2
  376. package/docs/ja/cli/pull.md +5 -1
  377. package/docs/ja/cli/push.md +5 -1
  378. package/docs/ja/cli/scan.md +5 -1
  379. package/docs/ja/cli/standalone.md +5 -1
  380. package/docs/ja/cli/test.md +5 -1
  381. package/docs/ja/cli/watch.md +5 -1
  382. package/docs/ja/compat/i18n-js.md +1 -1
  383. package/docs/ja/compat/i18next.md +1 -1
  384. package/docs/ja/compat/lingui.md +1 -1
  385. package/docs/ja/compat/next-i18next.md +1 -1
  386. package/docs/ja/compat/next-intl.md +1 -1
  387. package/docs/ja/compat/next-translate.md +1 -1
  388. package/docs/ja/compat/ngx-translate.md +1 -1
  389. package/docs/ja/compat/nuxtjs-i18n.md +1 -1
  390. package/docs/ja/compat/polyglot.md +1 -1
  391. package/docs/ja/compat/react-i18next.md +1 -1
  392. package/docs/ja/compat/react-intl.md +1 -1
  393. package/docs/ja/compat/svelte-i18n.md +1 -1
  394. package/docs/ja/compat/transloco.md +1 -1
  395. package/docs/ja/compat/vue-i18n.md +1 -1
  396. package/docs/ja/intlayer_with_remix_3.md +558 -0
  397. package/docs/ko/benchmark/index.md +4 -1
  398. package/docs/ko/benchmark/nextjs.md +32 -27
  399. package/docs/ko/benchmark/solid.md +13 -10
  400. package/docs/ko/benchmark/svelte.md +12 -9
  401. package/docs/ko/benchmark/tanstack.md +29 -24
  402. package/docs/ko/benchmark/vue.md +11 -7
  403. package/docs/ko/cli/build.md +8 -1
  404. package/docs/ko/cli/configuration.md +3 -1
  405. package/docs/ko/cli/doc-review.md +8 -1
  406. package/docs/ko/cli/doc-translate.md +5 -1
  407. package/docs/ko/cli/extract.md +2 -1
  408. package/docs/ko/cli/fill.md +5 -1
  409. package/docs/ko/cli/index.md +4 -5
  410. package/docs/ko/cli/live.md +5 -1
  411. package/docs/ko/cli/login.md +2 -2
  412. package/docs/ko/cli/pull.md +5 -1
  413. package/docs/ko/cli/push.md +5 -1
  414. package/docs/ko/cli/scan.md +5 -1
  415. package/docs/ko/cli/standalone.md +5 -1
  416. package/docs/ko/cli/test.md +5 -1
  417. package/docs/ko/cli/watch.md +5 -1
  418. package/docs/ko/compat/i18n-js.md +1 -1
  419. package/docs/ko/compat/i18next.md +1 -1
  420. package/docs/ko/compat/lingui.md +1 -1
  421. package/docs/ko/compat/next-i18next.md +1 -1
  422. package/docs/ko/compat/next-intl.md +1 -1
  423. package/docs/ko/compat/next-translate.md +1 -1
  424. package/docs/ko/compat/ngx-translate.md +1 -1
  425. package/docs/ko/compat/nuxtjs-i18n.md +1 -1
  426. package/docs/ko/compat/polyglot.md +1 -1
  427. package/docs/ko/compat/react-i18next.md +1 -1
  428. package/docs/ko/compat/react-intl.md +1 -1
  429. package/docs/ko/compat/svelte-i18n.md +1 -1
  430. package/docs/ko/compat/transloco.md +1 -1
  431. package/docs/ko/compat/vue-i18n.md +1 -1
  432. package/docs/ko/intlayer_with_remix_3.md +543 -0
  433. package/docs/nl/cli/index.md +4 -5
  434. package/docs/nl/cli/scan.md +5 -1
  435. package/docs/nl/cli/standalone.md +5 -1
  436. package/docs/pl/benchmark/index.md +4 -1
  437. package/docs/pl/benchmark/nextjs.md +32 -27
  438. package/docs/pl/benchmark/solid.md +13 -10
  439. package/docs/pl/benchmark/svelte.md +12 -9
  440. package/docs/pl/benchmark/tanstack.md +29 -24
  441. package/docs/pl/benchmark/vue.md +11 -7
  442. package/docs/pl/cli/build.md +8 -1
  443. package/docs/pl/cli/configuration.md +3 -1
  444. package/docs/pl/cli/doc-review.md +8 -1
  445. package/docs/pl/cli/doc-translate.md +5 -1
  446. package/docs/pl/cli/extract.md +2 -1
  447. package/docs/pl/cli/fill.md +5 -1
  448. package/docs/pl/cli/index.md +4 -5
  449. package/docs/pl/cli/live.md +5 -1
  450. package/docs/pl/cli/login.md +2 -2
  451. package/docs/pl/cli/pull.md +5 -1
  452. package/docs/pl/cli/push.md +5 -1
  453. package/docs/pl/cli/scan.md +5 -1
  454. package/docs/pl/cli/standalone.md +5 -1
  455. package/docs/pl/cli/test.md +5 -1
  456. package/docs/pl/cli/watch.md +5 -1
  457. package/docs/pl/compat/i18n-js.md +1 -1
  458. package/docs/pl/compat/i18next.md +1 -1
  459. package/docs/pl/compat/lingui.md +1 -1
  460. package/docs/pl/compat/next-i18next.md +1 -1
  461. package/docs/pl/compat/next-intl.md +1 -1
  462. package/docs/pl/compat/next-translate.md +1 -1
  463. package/docs/pl/compat/ngx-translate.md +1 -1
  464. package/docs/pl/compat/nuxtjs-i18n.md +1 -1
  465. package/docs/pl/compat/polyglot.md +1 -1
  466. package/docs/pl/compat/react-i18next.md +1 -1
  467. package/docs/pl/compat/react-intl.md +1 -1
  468. package/docs/pl/compat/svelte-i18n.md +1 -1
  469. package/docs/pl/compat/transloco.md +1 -1
  470. package/docs/pl/compat/vue-i18n.md +1 -1
  471. package/docs/pl/intlayer_with_remix_3.md +551 -0
  472. package/docs/pt/benchmark/index.md +4 -1
  473. package/docs/pt/benchmark/nextjs.md +32 -27
  474. package/docs/pt/benchmark/solid.md +13 -10
  475. package/docs/pt/benchmark/svelte.md +12 -9
  476. package/docs/pt/benchmark/tanstack.md +29 -24
  477. package/docs/pt/benchmark/vue.md +11 -7
  478. package/docs/pt/cli/build.md +8 -1
  479. package/docs/pt/cli/configuration.md +3 -1
  480. package/docs/pt/cli/doc-review.md +8 -1
  481. package/docs/pt/cli/doc-translate.md +5 -1
  482. package/docs/pt/cli/extract.md +2 -1
  483. package/docs/pt/cli/fill.md +5 -1
  484. package/docs/pt/cli/index.md +4 -5
  485. package/docs/pt/cli/live.md +5 -1
  486. package/docs/pt/cli/login.md +2 -2
  487. package/docs/pt/cli/pull.md +5 -1
  488. package/docs/pt/cli/push.md +5 -1
  489. package/docs/pt/cli/scan.md +5 -1
  490. package/docs/pt/cli/standalone.md +5 -1
  491. package/docs/pt/cli/test.md +5 -1
  492. package/docs/pt/cli/watch.md +5 -1
  493. package/docs/pt/compat/i18n-js.md +1 -1
  494. package/docs/pt/compat/i18next.md +1 -1
  495. package/docs/pt/compat/lingui.md +1 -1
  496. package/docs/pt/compat/next-i18next.md +1 -1
  497. package/docs/pt/compat/next-intl.md +1 -1
  498. package/docs/pt/compat/next-translate.md +1 -1
  499. package/docs/pt/compat/ngx-translate.md +1 -1
  500. package/docs/pt/compat/nuxtjs-i18n.md +1 -1
  501. package/docs/pt/compat/polyglot.md +1 -1
  502. package/docs/pt/compat/react-i18next.md +1 -1
  503. package/docs/pt/compat/react-intl.md +1 -1
  504. package/docs/pt/compat/svelte-i18n.md +1 -1
  505. package/docs/pt/compat/transloco.md +1 -1
  506. package/docs/pt/compat/vue-i18n.md +1 -1
  507. package/docs/pt/intlayer_with_remix_3.md +558 -0
  508. package/docs/ru/benchmark/index.md +4 -1
  509. package/docs/ru/benchmark/nextjs.md +32 -27
  510. package/docs/ru/benchmark/solid.md +13 -10
  511. package/docs/ru/benchmark/svelte.md +12 -9
  512. package/docs/ru/benchmark/tanstack.md +29 -24
  513. package/docs/ru/benchmark/vue.md +11 -7
  514. package/docs/ru/cli/build.md +8 -1
  515. package/docs/ru/cli/configuration.md +3 -1
  516. package/docs/ru/cli/doc-review.md +8 -1
  517. package/docs/ru/cli/doc-translate.md +5 -1
  518. package/docs/ru/cli/extract.md +2 -1
  519. package/docs/ru/cli/fill.md +5 -1
  520. package/docs/ru/cli/index.md +4 -5
  521. package/docs/ru/cli/live.md +5 -1
  522. package/docs/ru/cli/login.md +2 -2
  523. package/docs/ru/cli/pull.md +5 -1
  524. package/docs/ru/cli/push.md +5 -1
  525. package/docs/ru/cli/scan.md +5 -1
  526. package/docs/ru/cli/standalone.md +5 -1
  527. package/docs/ru/cli/test.md +5 -1
  528. package/docs/ru/cli/watch.md +5 -1
  529. package/docs/ru/compat/i18n-js.md +1 -1
  530. package/docs/ru/compat/i18next.md +1 -1
  531. package/docs/ru/compat/lingui.md +1 -1
  532. package/docs/ru/compat/next-i18next.md +1 -1
  533. package/docs/ru/compat/next-intl.md +1 -1
  534. package/docs/ru/compat/next-translate.md +1 -1
  535. package/docs/ru/compat/ngx-translate.md +1 -1
  536. package/docs/ru/compat/nuxtjs-i18n.md +1 -1
  537. package/docs/ru/compat/polyglot.md +1 -1
  538. package/docs/ru/compat/react-i18next.md +1 -1
  539. package/docs/ru/compat/react-intl.md +1 -1
  540. package/docs/ru/compat/svelte-i18n.md +1 -1
  541. package/docs/ru/compat/transloco.md +1 -1
  542. package/docs/ru/compat/vue-i18n.md +1 -1
  543. package/docs/ru/intlayer_with_remix_3.md +558 -0
  544. package/docs/tr/benchmark/index.md +4 -1
  545. package/docs/tr/benchmark/nextjs.md +32 -27
  546. package/docs/tr/benchmark/solid.md +13 -10
  547. package/docs/tr/benchmark/svelte.md +12 -9
  548. package/docs/tr/benchmark/tanstack.md +29 -24
  549. package/docs/tr/benchmark/vue.md +11 -7
  550. package/docs/tr/cli/build.md +8 -1
  551. package/docs/tr/cli/configuration.md +3 -1
  552. package/docs/tr/cli/doc-review.md +8 -1
  553. package/docs/tr/cli/doc-translate.md +5 -1
  554. package/docs/tr/cli/extract.md +2 -1
  555. package/docs/tr/cli/fill.md +5 -1
  556. package/docs/tr/cli/index.md +4 -5
  557. package/docs/tr/cli/live.md +5 -1
  558. package/docs/tr/cli/login.md +2 -2
  559. package/docs/tr/cli/pull.md +5 -1
  560. package/docs/tr/cli/push.md +5 -1
  561. package/docs/tr/cli/scan.md +5 -1
  562. package/docs/tr/cli/standalone.md +5 -1
  563. package/docs/tr/cli/test.md +5 -1
  564. package/docs/tr/cli/watch.md +5 -1
  565. package/docs/tr/compat/i18n-js.md +1 -1
  566. package/docs/tr/compat/i18next.md +1 -1
  567. package/docs/tr/compat/lingui.md +1 -1
  568. package/docs/tr/compat/next-i18next.md +1 -1
  569. package/docs/tr/compat/next-intl.md +1 -1
  570. package/docs/tr/compat/next-translate.md +1 -1
  571. package/docs/tr/compat/ngx-translate.md +1 -1
  572. package/docs/tr/compat/nuxtjs-i18n.md +1 -1
  573. package/docs/tr/compat/polyglot.md +1 -1
  574. package/docs/tr/compat/react-i18next.md +1 -1
  575. package/docs/tr/compat/react-intl.md +1 -1
  576. package/docs/tr/compat/svelte-i18n.md +1 -1
  577. package/docs/tr/compat/transloco.md +1 -1
  578. package/docs/tr/compat/vue-i18n.md +1 -1
  579. package/docs/tr/intlayer_with_remix_3.md +566 -0
  580. package/docs/uk/benchmark/index.md +4 -1
  581. package/docs/uk/benchmark/nextjs.md +32 -27
  582. package/docs/uk/benchmark/solid.md +13 -10
  583. package/docs/uk/benchmark/svelte.md +12 -9
  584. package/docs/uk/benchmark/tanstack.md +29 -24
  585. package/docs/uk/benchmark/vue.md +11 -7
  586. package/docs/uk/cli/build.md +8 -1
  587. package/docs/uk/cli/configuration.md +3 -1
  588. package/docs/uk/cli/doc-review.md +8 -1
  589. package/docs/uk/cli/doc-translate.md +5 -1
  590. package/docs/uk/cli/extract.md +2 -1
  591. package/docs/uk/cli/fill.md +5 -1
  592. package/docs/uk/cli/index.md +4 -5
  593. package/docs/uk/cli/live.md +5 -1
  594. package/docs/uk/cli/login.md +2 -2
  595. package/docs/uk/cli/pull.md +5 -1
  596. package/docs/uk/cli/push.md +5 -1
  597. package/docs/uk/cli/scan.md +5 -1
  598. package/docs/uk/cli/standalone.md +5 -1
  599. package/docs/uk/cli/test.md +5 -1
  600. package/docs/uk/cli/watch.md +5 -1
  601. package/docs/uk/compat/i18n-js.md +1 -1
  602. package/docs/uk/compat/i18next.md +1 -1
  603. package/docs/uk/compat/lingui.md +1 -1
  604. package/docs/uk/compat/next-i18next.md +1 -1
  605. package/docs/uk/compat/next-intl.md +1 -1
  606. package/docs/uk/compat/next-translate.md +1 -1
  607. package/docs/uk/compat/ngx-translate.md +1 -1
  608. package/docs/uk/compat/nuxtjs-i18n.md +1 -1
  609. package/docs/uk/compat/polyglot.md +1 -1
  610. package/docs/uk/compat/react-i18next.md +1 -1
  611. package/docs/uk/compat/react-intl.md +1 -1
  612. package/docs/uk/compat/svelte-i18n.md +1 -1
  613. package/docs/uk/compat/transloco.md +1 -1
  614. package/docs/uk/compat/vue-i18n.md +1 -1
  615. package/docs/uk/intlayer_with_remix_3.md +566 -0
  616. package/docs/ur/cli/index.md +4 -5
  617. package/docs/ur/cli/scan.md +5 -1
  618. package/docs/ur/cli/standalone.md +5 -1
  619. package/docs/vi/benchmark/index.md +4 -1
  620. package/docs/vi/benchmark/nextjs.md +32 -27
  621. package/docs/vi/benchmark/solid.md +13 -10
  622. package/docs/vi/benchmark/svelte.md +12 -9
  623. package/docs/vi/benchmark/tanstack.md +29 -24
  624. package/docs/vi/benchmark/vue.md +11 -7
  625. package/docs/vi/cli/build.md +8 -1
  626. package/docs/vi/cli/configuration.md +3 -1
  627. package/docs/vi/cli/doc-review.md +8 -1
  628. package/docs/vi/cli/doc-translate.md +5 -1
  629. package/docs/vi/cli/extract.md +2 -1
  630. package/docs/vi/cli/fill.md +5 -1
  631. package/docs/vi/cli/index.md +4 -5
  632. package/docs/vi/cli/live.md +5 -1
  633. package/docs/vi/cli/login.md +2 -2
  634. package/docs/vi/cli/pull.md +5 -1
  635. package/docs/vi/cli/push.md +5 -1
  636. package/docs/vi/cli/scan.md +5 -1
  637. package/docs/vi/cli/standalone.md +5 -1
  638. package/docs/vi/cli/test.md +5 -1
  639. package/docs/vi/cli/watch.md +5 -1
  640. package/docs/vi/compat/i18n-js.md +1 -1
  641. package/docs/vi/compat/i18next.md +1 -1
  642. package/docs/vi/compat/lingui.md +1 -1
  643. package/docs/vi/compat/next-i18next.md +1 -1
  644. package/docs/vi/compat/next-intl.md +1 -1
  645. package/docs/vi/compat/next-translate.md +1 -1
  646. package/docs/vi/compat/ngx-translate.md +1 -1
  647. package/docs/vi/compat/nuxtjs-i18n.md +1 -1
  648. package/docs/vi/compat/polyglot.md +1 -1
  649. package/docs/vi/compat/react-i18next.md +1 -1
  650. package/docs/vi/compat/react-intl.md +1 -1
  651. package/docs/vi/compat/svelte-i18n.md +1 -1
  652. package/docs/vi/compat/transloco.md +1 -1
  653. package/docs/vi/compat/vue-i18n.md +1 -1
  654. package/docs/vi/intlayer_with_remix_3.md +566 -0
  655. package/docs/zh/benchmark/index.md +4 -1
  656. package/docs/zh/benchmark/nextjs.md +32 -27
  657. package/docs/zh/benchmark/solid.md +13 -10
  658. package/docs/zh/benchmark/svelte.md +12 -9
  659. package/docs/zh/benchmark/tanstack.md +29 -24
  660. package/docs/zh/benchmark/vue.md +11 -7
  661. package/docs/zh/cli/build.md +8 -1
  662. package/docs/zh/cli/configuration.md +3 -1
  663. package/docs/zh/cli/doc-review.md +8 -1
  664. package/docs/zh/cli/doc-translate.md +5 -1
  665. package/docs/zh/cli/extract.md +2 -1
  666. package/docs/zh/cli/fill.md +5 -1
  667. package/docs/zh/cli/index.md +4 -5
  668. package/docs/zh/cli/live.md +5 -1
  669. package/docs/zh/cli/login.md +2 -2
  670. package/docs/zh/cli/pull.md +5 -1
  671. package/docs/zh/cli/push.md +5 -1
  672. package/docs/zh/cli/scan.md +5 -1
  673. package/docs/zh/cli/standalone.md +5 -1
  674. package/docs/zh/cli/test.md +5 -1
  675. package/docs/zh/cli/watch.md +5 -1
  676. package/docs/zh/compat/i18n-js.md +1 -1
  677. package/docs/zh/compat/i18next.md +1 -1
  678. package/docs/zh/compat/lingui.md +1 -1
  679. package/docs/zh/compat/next-i18next.md +1 -1
  680. package/docs/zh/compat/next-intl.md +1 -1
  681. package/docs/zh/compat/next-translate.md +1 -1
  682. package/docs/zh/compat/ngx-translate.md +1 -1
  683. package/docs/zh/compat/nuxtjs-i18n.md +1 -1
  684. package/docs/zh/compat/polyglot.md +1 -1
  685. package/docs/zh/compat/react-i18next.md +1 -1
  686. package/docs/zh/compat/react-intl.md +1 -1
  687. package/docs/zh/compat/svelte-i18n.md +1 -1
  688. package/docs/zh/compat/transloco.md +1 -1
  689. package/docs/zh/compat/vue-i18n.md +1 -1
  690. package/docs/zh/intlayer_with_remix_3.md +558 -0
  691. package/package.json +7 -7
  692. package/src/generated/blog.entry.ts +20 -0
  693. package/src/generated/docs.entry.ts +0 -20
  694. package/docs/ar/cli/ci.md +0 -186
  695. package/docs/de/cli/ci.md +0 -186
  696. package/docs/en/cli/ci.md +0 -216
  697. package/docs/en-GB/cli/ci.md +0 -186
  698. package/docs/es/cli/ci.md +0 -186
  699. package/docs/fr/cli/ci.md +0 -186
  700. package/docs/hi/cli/ci.md +0 -186
  701. package/docs/id/cli/ci.md +0 -186
  702. package/docs/it/cli/ci.md +0 -186
  703. package/docs/ja/cli/ci.md +0 -186
  704. package/docs/ko/cli/ci.md +0 -186
  705. package/docs/pl/cli/ci.md +0 -186
  706. package/docs/pt/cli/ci.md +0 -186
  707. package/docs/ru/cli/ci.md +0 -186
  708. package/docs/tr/cli/ci.md +0 -186
  709. package/docs/uk/cli/ci.md +0 -186
  710. package/docs/vi/cli/ci.md +0 -186
  711. 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: "Sejarah i18n JavaScript: Dari 2011 hingga 2026"
5
+ description: Pelajari evolusi internasionalisasi frontend dari tahun 2011 hingga 2026. Temukan tanggal rilis, tantangan arsitektur, dan inovasi utama di React, Vue, Next.js, Angular, Svelte, dan Solid.
6
+ keywords:
7
+ - sejarah i18n
8
+ - internasionalisasi 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
+ # Sejarah Internasionalisasi JavaScript (i18n)
24
+
25
+ Internasionalisasi bukanlah hal baru. Jauh sebelum JavaScript dan web modern hadir, perangkat lunak sudah harus menangani berbagai bahasa, mata uang, format tanggal, dan konvensi regional. Sistem operasi grafis awal seperti GEM dan Mac OS telah memecahkan banyak masalah ini sejak tahun 1980-an.
26
+
27
+ Konsep yang sama akhirnya diadopsi oleh framework backend. Ruby on Rails, Django, framework Java, dan aplikasi PHP masing-masing mengembangkan pendekatan internasionalisasi mereka sendiri. Masalah dasarnya sudah cukup dipahami dengan baik:
28
+
29
+ - Di mana terjemahan harus disimpan?
30
+ - Bagaimana kita memformat tanggal, angka, dan mata uang?
31
+ - Bagaimana kita menangani bentuk jamak dan perbedaan tata bahasa?
32
+ - Bagaimana kita menentukan bahasa mana yang harus dilihat pengguna?
33
+
34
+ Ketika server me-render halaman, prosesnya relatif mudah. Aplikasi dapat memuat terjemahan yang sesuai, me-render HTML, dan mengirimkan hasilnya ke browser.
35
+
36
+ > Perhatikan bahwa PHP dan GNU gettext merupakan cikal bakal pola helper `t()` yang kemudian menjadi standar di JavaScript dan JSX.
37
+
38
+ Kemudian JavaScript mulai mengambil alih browser.
39
+
40
+ Ketika aplikasi beralih dari halaman yang di-render server ke aplikasi client-side yang semakin kompleks, internasionalisasi juga menjadi tantangan di frontend. Tiba-tiba, browser harus memuat terjemahan, beralih bahasa, memformat nilai, menangani bentuk jamak, dan memperbarui UI tanpa memuat ulang halaman.
41
+
42
+ Dan itu memunculkan pertanyaan baru:
43
+
44
+ **Bagaimana cara membuat aplikasi multibahasa tanpa mengirimkan data terjemahan dan kode runtime dalam jumlah besar ke setiap pengguna?**
45
+
46
+ Pertanyaan tersebut telah membentuk arah pengembangan JavaScript i18n selama lebih dari satu dekade.
47
+
48
+ Solusinya telah banyak berubah. Kita beralih dari objek global JavaScript dan pemanggilan `t('some.key')`, ke pustaka khusus framework, ekstraksi waktu kompilasi (compile-time), tipe yang dibuat oleh TypeScript, komponen server, tree-shaking, hingga pendekatan berbasis compiler di mana terjemahan diubah menjadi kode JavaScript selama proses build.
49
+
50
+ Artikel ini mengulas evolusi tersebut dari sekitar tahun 2011 hingga 2026: apa yang dicoba diselesaikan oleh setiap generasi alat, apa yang berhasil, apa yang tidak, dan bagaimana arsitektur aplikasi frontend memengaruhi cara kita menangani i18n saat ini.
51
+
52
+ ![Ekosistem Pustaka Internasionalisasi JavaScript](https://github.com/aymericzip/intlayer/blob/main/docs/assets/cloud_i18n_logo.png?raw=true)
53
+
54
+ ## Daftar Isi
55
+
56
+ <TOC/>
57
+
58
+ ## Era Web Awal: Internasionalisasi JavaScript Sebelum 2016
59
+
60
+ Untuk memahami posisi alat i18n modern saat ini, kita perlu melihat kembali bagaimana rasanya membangun aplikasi web antara tahun 2011 dan 2015.
61
+
62
+ ### Migrasi Logika ke Client
63
+
64
+ Pada awal dekade 2010-an, internasionalisasi sebagian besar merupakan tanggung jawab sisi server. JavaScript umumnya hanya berfungsi sebagai lapisan tambahan untuk animasi, validasi formulir, dan widget DOM sederhana melalui jQuery.
65
+
66
+ Seiring meningkatnya popularitas Single-Page Applications (SPA) dengan Backbone.js, Knockout.js, dan versi awal AngularJS, logika rendering berpindah langsung ke browser. Kode client-side tiba-tiba perlu menampilkan tanggal lokal, memformat mata uang, menangani bentuk jamak, dan menukar teks secara dinamis tanpa refresh halaman penuh.
67
+
68
+ Namun lingkungan browser pada tahun 2011 belum siap menghadapi tantangan ini:
69
+
70
+ <AccordionGroup>
71
+ <Accordion header="Tidak ada API internasionalisasi bawaan">
72
+
73
+ Spesifikasi ECMAScript Internationalization API (ECMA-402) baru diselesaikan pada Desember 2012, memperkenalkan objek global `Intl`. Sebelum vendor browser mengadopsi `Intl`, pemformatan tanggal dan angka paling mendasar sekalipun memerlukan fungsi kustom atau polyfill yang berat.
74
+
75
+ </Accordion>
76
+ <Accordion header="Belum ada bundler modul modern">
77
+
78
+ Alat seperti Webpack masih dalam tahap awal, dan ESM belum didukung langsung di browser. Pengembang memuat skrip melalui tag `<script>`, sering kali menyuntikkan terjemahan ke dalam objek global seperti `window.translations = { ... }`.
79
+
80
+ </Accordion>
81
+ <Accordion header="Payload JSON monolitik">
82
+
83
+ Terjemahan ditulis dalam file JSON terpusat yang sangat besar. Seorang pengguna di Tokyo yang membuka halaman beranda tetap mengunduh string untuk pengaturan akun, panel penagihan, dan dasbor admin.
84
+
85
+ </Accordion>
86
+ </AccordionGroup>
87
+
88
+ ### Gelombang Pertama Pustaka Client-Side
89
+
90
+ Antara tahun 2012 dan 2015, fondasi awal i18n JavaScript modern mulai dibangun:
91
+
92
+ <AccordionGroup>
93
+ <Accordion header="i18next (Januari 2012)">
94
+
95
+ Diciptakan oleh Jan Mühlemann, `i18next` menetapkan cetak biru untuk kamus key-value runtime di JavaScript. Pustaka ini memperkenalkan penelusuran kunci, interpolasi variabel, aturan pluralisasi, serta arsitektur yang dapat diperluas untuk detektor bahasa dan backend. Pustaka ini segera menjadi standar di vanilla JS dan backend awal Node.js.
96
+
97
+ </Accordion>
98
+ <Accordion header="vue-i18n (Mei 2014)">
99
+
100
+ Diciptakan oleh Kazupon (Kazuya Kawaguchi), `vue-i18n` mengadaptasi internasionalisasi langsung ke model data-binding reaktif Vue.js, memperkenalkan direktif template (`v-t`) dan helper `$t()`.
101
+
102
+ </Accordion>
103
+ <Accordion header="react-intl (Juni 2014)">
104
+
105
+ Diciptakan oleh Yahoo! sebagai bagian dari proyek FormatJS, `react-intl` membawa standar ICU MessageFormat dan API browser `Intl` ke React melalui komponen deklaratif seperti `<FormattedMessage>` dan `<FormattedDate>`.
106
+
107
+ </Accordion>
108
+ <Accordion header="react-i18next (Desember 2015)">
109
+
110
+ Jan Mühlemann membawa `i18next` ke komunitas React yang berkembang pesat, memanfaatkan Higher-Order Components (`withTranslation`) dan React context untuk me-render ulang komponen saat terjadi pergantian bahasa.
111
+
112
+ </Accordion>
113
+ </AccordionGroup>
114
+
115
+ ### Keterbatasan Era Pra-2016
116
+
117
+ Meskipun alat-alat ini memungkinkan aplikasi client multibahasa, kendala arsitektur pada era tersebut menimbulkan masalah berkelanjutan:
118
+
119
+ <AccordionGroup>
120
+ <Accordion header="Kunci String yang Rapuh">
121
+
122
+ Pencarian seperti `t('marketing.landing.hero.cta')` tidak menyediakan verifikasi statis. Kesalahan ketik pada kunci gagal secara diam-diam di lingkungan produksi, menampilkan teks kosong atau ID kunci mentah kepada pengguna akhir.
123
+
124
+ </Accordion>
125
+ <Accordion header="Beban Parsing Runtime">
126
+
127
+ Mem-parsing sintaks pesan ICU dan mengevaluasi interpolasi berbasis regex saat runtime menghabiskan siklus CPU pada perangkat seluler.
128
+
129
+ </Accordion>
130
+ <Accordion header="Ukuran Bundle yang Membengkak">
131
+
132
+ Tanpa pemisahan kode berbasis rute atau komponen, semua string terlokalisasi dimuat sekaligus, memperlambat metrik pemuatan halaman awal.
133
+
134
+ </Accordion>
135
+ <Accordion header="Jarak antara Pengembang dan Penerjemah">
136
+
137
+ Kamus disimpan dalam file JSON terpusat yang jauh dari komponen yang menampilkannya, menyebabkan kunci terbengkalai dan terjemahan yang hilang menjadi hal yang biasa.
138
+
139
+ </Accordion>
140
+ </AccordionGroup>
141
+
142
+ ## Era Framework: Evolusi di Berbagai Ekosistem
143
+
144
+ Antara tahun 2016 dan 2026, arsitektur frontend berubah secara mendasar. TypeScript menjadi standar industri, arsitektur berbasis komponen semakin matang, bundler seperti Webpack, Vite, dan Turbopack memperkenalkan code-splitting, React Server Components mengembalikan rendering ke server, dan compiler mulai menganalisis kode aplikasi.
145
+
146
+ Tab berikut menyajikan bagaimana setiap framework dan ekosistem menjawab tantangan ini, mendokumentasikan tanggal rilis, motivasi utama, dan inovasi penting dalam tabel perbandingan. Di seluruh ekosistem ini, `react-intlayer` dan seluruh padanannya (`next-intlayer`, `vue-intlayer`, `angular-intlayer`, `svelte-intlayer`, dan `solid-intlayer`) merupakan implementasi berkinerja tinggi yang dirancang khusus untuk lingkungan runtime masing-masing.
147
+
148
+ <Tabs>
149
+
150
+ <Tab label="Core JavaScript" value="javascript">
151
+
152
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
153
+ | ------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
154
+ | Januari 2012 | `i18next` | Menstandarisasi pencarian kamus runtime untuk browser dan Node.js tanpa keterikatan framework. | Arsitektur runtime modular yang memisahkan terjemahan inti dari pemuat, detektor, dan caching. |
155
+ | Februari 2021 | `typesafe-i18n` | Mencegah kesalahan runtime diam-diam akibat kunci string tanpa tipe data. | Fungsi terjemahan bertipe penuh yang dibuat langsung dari objek terjemahan tanpa dependensi runtime. |
156
+ | Oktober 2023 | `paraglide` (`@inlang/paraglide-js`) | Menghilangkan pencarian kamus runtime, parser berat, dan pembengkakan ukuran bundle. | Mengompilasi pesan menjadi modul ECMAScript yang mendukung tree-shaking dan fungsi JS murni. |
157
+ | April 2024 | `intlayer` | Menggantikan namespace yang sulit dipelihara, menghindari kebocoran konten antarhalaman, dan menyelesaikan kurangnya keamanan tipe bawaan di era TypeScript. | Menempatkan file `.content` langsung di tempat fungsi dipanggil, membuat tipe TypeScript otomatis, serta menyediakan CMS visual dan alat CLI terjemahan AI bawaan. |
158
+ | Juni 2025 | `wuchale` | Menghilangkan kerumitan mengekstrak string teks secara manual dan membuat kunci terjemahan saat pengembangan. | Pra-pemrosesan tingkat AST yang mendeteksi teks inline dan mengompilasinya menjadi fungsi lokal tanpa wrapper saat build. |
159
+
160
+ </Tab>
161
+
162
+ <Tab label="React" value="react">
163
+
164
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
165
+ | ------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
166
+ | Juni 2014 | `react-intl` | Menstandarisasi pemformatan angka, tanggal, mata uang, dan jamak kompleks di React. | Komponen deklaratif (`<FormattedMessage>`, `<FormattedDate>`) yang mengimplementasikan standar ICU MessageFormat dan ECMA-402. |
167
+ | Desember 2015 | `react-i18next` | Menyediakan binding React yang idiomatis untuk `i18next` dengan rendering ulang reaktif. | Berkembang bersama React dari Higher-Order Components ke interpolasi JSX `<Trans>` dan hook `useTranslation`. |
168
+ | Januari 2018 | `@lingui/react` | Mengurangi penalti ukuran bundle JavaScript yang disebabkan oleh parser ICU runtime. | Makro Babel/SWC waktu kompilasi yang menyusun `<Trans>` dan `t` menjadi array terindeks yang ringkas saat build. |
169
+ | Desember 2020 | `use-intl` | Memberikan alternatif ringan, berbasis hook, dan aman secara tipe untuk pustaka i18n React tradisional. | Hook ergonomis `useTranslations` dan `useFormatter` dengan integrasi TypeScript yang mendalam. |
170
+ | Februari 2021 | `@tolgee/react` | Menghilangkan siklus umpan balik yang lambat antara pengembang, penerjemah, dan desainer. | Pengeditan kontekstual di browser yang memungkinkan pengguna menekan Alt-klik pada teks untuk mengedit langsung dan mengambil screenshot. |
171
+ | April 2024 | `react-intlayer` | Menyediakan implementasi Intlayer berkinerja tinggi untuk siklus hidup React, meniadakan kamus JSON terpusat dan namespace rumit. | Hook `useIntlayer` yang dioptimalkan untuk rendering React, tipe TypeScript otomatis, tree-shaking per komponen, dan sinkronisasi CMS visual langsung. |
172
+ | Juli 2024 | `gt-react` | Mengotomatiskan ekspor file manual, serah terima penerjemah, dan pemeliharaan terjemahan. | Lokalisasi AI otomatis cloud-native langsung di dalam komponen React dengan jalur terjemahan mesin. |
173
+ | Agustus 2025 | `@wuchale/jsx` | Menghilangkan penamaan kunci manual dan boilerplate hook terjemahan dalam JSX React. | Transformasi AST yang mengekstrak node teks JSX mentah secara otomatis dan mengompilasinya menjadi bentuk lokal. |
174
+
175
+ </Tab>
176
+
177
+ <Tab label="Next.js" value="nextjs">
178
+
179
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
180
+ | -------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | November 2018 | `next-i18next` | Mendukung SSR dan SSG dengan `i18next` di Next.js Pages Router tanpa request waterfall di client. | `serverSideTranslations` dan `appWithTranslation` meneruskan namespace lokal ke page props. |
182
+ | Desember 2019 | `next-translate` | Menyederhanakan konfigurasi dan mengurangi bobot bundle pada aplikasi Next.js Pages Router. | Plugin Webpack loader yang menyuntikkan hanya namespace terjemahan yang diperlukan per halaman secara otomatis. |
183
+ | November 2020 | `next-intl` | Merancang ulang i18n Next.js untuk App Router, React Server Components (RSC), dan streaming SSR. | Integrasi native dengan middleware Next.js App Router, Server Actions, dan Server Components asinkron tanpa JS di client. |
184
+ | Juli 2022 | `next-international` | Memaksimalkan keamanan tipe TypeScript dengan overhead bundle client minimal untuk Next.js. | Pembuatan tipe ketat untuk kunci terjemahan terlingkup dengan adapter ringan untuk App Router dan Pages Router. |
185
+ | April 2024 | `paraglide-next` (`@inlang/paraglide-next`) | Membawa pesan terkompilasi zero-runtime ke Next.js App Router dan Pages Router. | Perutean middleware yang dipadukan dengan fungsi pesan tree-shakable, menghindari parsing JSON runtime di RSC dan bundle client. |
186
+ | April 2024 | `next-intlayer` | Menyediakan adapter Server Component berkinerja tinggi untuk Next.js App Router dan Pages Router tanpa meneruskan `t()` sebagai props. | Adapter Server Component bawaan yang memungkinkan `useIntlayer` dipanggil langsung di komponen server sinkron (seperti Navbar) tanpa prop-drilling, disertai rendering server instan dan CMS visual. |
187
+ | September 2024 | `gt-next` | Mengotomatiskan pembuatan konten multibahasa dan perutean lokal dinamis di Next.js menggunakan AI. | Integrasi App Router yang memadukan terjemahan mesin berbasis cloud dengan edge middleware dan lapisan caching Next.js. |
188
+
189
+ </Tab>
190
+
191
+ <Tab label="Vue & Nuxt" value="vue">
192
+
193
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
194
+ | ------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
195
+ | Mei 2014 | `vue-i18n` | Menyediakan internasionalisasi reaktif dan idiomatis untuk aplikasi Vue. | Integrasi reaktivitas mendalam, direktif template (`v-t`), helper `$t`, dan custom block `<i18n>` pada Single-File Component. |
196
+ | November 2017 | `@nuxt/i18n` | Menangani routing URL lokal, tag SEO hreflang, dan hidrasi SSR di Nuxt. | Modul perutean full-stack yang menghasilkan rute lokal, header meta SEO, dan pemuatan chunk secara lazy. |
197
+ | Agustus 2019 | `fluent-vue` | Menangani gender tata bahasa, kasus gramatikal yang kompleks, dan struktur bahasa asimetris di Vue. | Integrasi sintaks Mozilla Project Fluent di Vue untuk menghindari logika kondisional yang rumit dalam variasi linguistik. |
198
+ | April 2025 | `vue-intlayer` | Menyediakan implementasi Intlayer yang dirancang langsung untuk Vue 3 Composition API dan Nuxt tanpa polusi namespace global. | Composable `useIntlayer` yang disesuaikan untuk pelacakan reaktivitas Vue 3, pelingkupan komponen langsung, autocompletion TypeScript penuh, dan editor visual. |
199
+
200
+ </Tab>
201
+
202
+ <Tab label="Angular" value="angular">
203
+
204
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
205
+ | -------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
206
+ | Februari 2017 | `ngx-translate` | Menyediakan terjemahan dinamis saat runtime di Angular tanpa perlu build terpisah untuk setiap bahasa. | `TranslateService` dan pipe `translate` yang memungkinkan pemuatan terjemahan dinamis dan pergantian bahasa runtime. |
207
+ | Juli 2019 | `@ngneat/transloco` | Menyelesaikan masalah performa, ketiadaan scoping, dan fitur yang kurang pada pustaka Angular lama. | Direktif struktural (`*transloco`), terjemahan terlingkup untuk modul lazy-load, dukungan SSR, dan CLI ekstraksi. |
208
+ | September 2019 | `@angular/localize` | Memodernisasi i18n bawaan Angular untuk menghindari kompilasi ulang TypeScript untuk setiap bahasa. | Tagged template literals dengan `$localize` yang disuntikkan sebagai tahap cepat pasca-build di mesin compiler Ivy. |
209
+ | Februari 2021 | `@tolgee/ngx` | Mengintegrasikan lokalisasi in-context kolaboratif dan tangkapan layar ke dalam alur kerja Angular. | Pipe dan direktif Angular yang terhubung langsung ke Tolgee untuk penerjemahan langsung di browser. |
210
+ | April 2025 | `angular-intlayer` | Menyediakan implementasi Intlayer berkinerja tinggi untuk Angular modern (Signals, komponen standalone, dan SSR). | Integrasi konten reaktif berbasis Signal untuk deteksi perubahan modern, injeksi dependensi standalone, dan sinkronisasi CMS visual. |
211
+
212
+ </Tab>
213
+
214
+ <Tab label="Svelte & SvelteKit" value="svelte">
215
+
216
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
217
+ | ------------- | ----------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
218
+ | Juli 2018 | `svelte-i18n` | Menyediakan pustaka i18n reaktif yang selaras dengan reactive store bawaan Svelte. | Pencarian `$t` berbasis store yang memastikan pembaruan DOM secara presisi saat locale berubah. |
219
+ | Desember 2021 | `sveltekit-i18n` | Menangani pemuatan terjemahan berbasis rute dan SSR secara rapi di aplikasi SvelteKit. | Arsitektur pemuat modular yang hanya mengambil terjemahan dan pemformat yang diperlukan untuk rute aktif. |
220
+ | November 2021 | `@tolgee/svelte` | Mengaktifkan lokalisasi in-context di aplikasi Svelte. | Binding store Svelte yang terintegrasi dengan overlay terjemahan Tolgee di browser dan pembuatan screenshot otomatis. |
221
+ | April 2025 | `svelte-intlayer` | Menyediakan implementasi Intlayer berkinerja tinggi untuk Svelte 5 dan SvelteKit. | Binding konten reaktif yang disesuaikan untuk Svelte 5 Runes (`$state`), deklarasi `.content` per komponen, dan pengeditan CMS visual. |
222
+ | Juli 2025 | `@wuchale/svelte` | Menghilangkan boilerplate deklarasi kamus dan impor fungsi `$t` di komponen Svelte. | Preprocessor Svelte yang mem-parsing template saat build dan menyusun node teks menjadi output lokal tanpa wrapper. |
223
+
224
+ </Tab>
225
+
226
+ <Tab label="SolidJS" value="solid">
227
+
228
+ | Rilis Pertama | Pustaka | Masalah yang Ingin Dipecahkan | Inovasi Utama |
229
+ | -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
230
+ | September 2021 | `@solid-primitives/i18n` | Menyediakan primitif i18n yang sesuai dengan reaktivitas halus (fine-grained) SolidJS. | Resolver terjemahan reaktif berbasis sinyal yang memperbarui node DOM tanpa virtual DOM atau re-render yang tidak perlu. |
231
+ | April 2025 | `solid-intlayer` | Menyediakan implementasi Intlayer berkinerja tinggi yang dirancang untuk SolidJS dan SolidStart. | Binding konten sadar sinyal tanpa overhead Virtual DOM, autokompleksi skema TypeScript penuh, dan integrasi editor visual. |
232
+ | Juni 2026 | `@lingui/solid` | Memperluas ekstraksi makro waktu kompilasi dan dukungan ICU MessageFormat ke SolidJS. | Transformasi makro yang disesuaikan dengan reaktivitas Solid, mengompilasi pesan menjadi struktur runtime yang ringkas. |
233
+
234
+ </Tab>
235
+
236
+ </Tabs>
237
+
238
+ ## Empat Era Arsitektur JavaScript i18n
239
+
240
+ ![Sejarah Pustaka JavaScript i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/history_i18n.png?raw=true)
241
+
242
+ Melihat kembali perkembangan selama lima belas tahun, kita dapat membagi sejarah internasionalisasi JavaScript ke dalam empat era arsitektur:
243
+
244
+ <AccordionGroup>
245
+ <Accordion header="1. Era Kamus Runtime (2011 hingga 2017)">
246
+
247
+ Ditandai oleh `i18next`, `react-intl`, dan `vue-i18n`. Aplikasi memuat katalog JSON statis ke memori, dan fungsi runtime mencocokkan string kunci dengan objek bersarang. Pluralisasi dan interpolasi diproses di browser melalui pencocokan regex dan parser ICU runtime.
248
+
249
+ </Accordion>
250
+ <Accordion header="2. Era Makro Waktu Kompilasi dan Type Safety (2018 hingga 2021)">
251
+
252
+ Ditandai oleh `lingui`, `next-translate`, `transloco`, dan `typesafe-i18n`. Pengembang menyadari dampak buruk parsing runtime terhadap kinerja serta kelemahan kunci tanpa tipe data. Makro Babel mengekstrak pesan saat build, plugin bundler membagi kamus per halaman, dan compiler TypeScript mulai memverifikasi argumen terjemahan.
253
+
254
+ </Accordion>
255
+ <Accordion header="3. Era Server Component dan Streaming (2022 hingga 2024)">
256
+
257
+ Ditandai oleh `next-intl`, `next-international`, dan adapter RSC generasi awal. Dengan hadirnya React Server Components dan Next.js App Router, fokus beralih ke rendering konten lokal di server tanpa mengirimkan kamus terjemahan atau runtime i18n client ke browser.
258
+
259
+ </Accordion>
260
+ <Accordion header="4. Era Kompiler Modern dan Konten Terpadu (2024 hingga 2026)">
261
+
262
+ Ditandai oleh `paraglide`, `intlayer`, dan `wuchale`. Alat-alat modern memandang internasionalisasi bukan sekadar penggantian teks, melainkan sebagai arsitektur konten yang terintegrasi. Kompiler mengubah pesan langsung menjadi fungsi kode yang mendukung tree-shaking, deklarasi konten ditempatkan bersama komponen, dan editor visual, alat MCP, serta jalur otomatisasi AI terintegrasi langsung ke alur kerja pengembang. Dalam model ini, Intlayer memisahkan deklarasi konten dan pembuatan tipe otomatis dari pengiriman runtime, menyediakan implementasi berkinerja tinggi (`react-intlayer`, `next-intlayer`, `vue-intlayer`, `angular-intlayer`, `svelte-intlayer`, dan `solid-intlayer`) yang disesuaikan secara khusus untuk setiap framework.
263
+
264
+ </Accordion>
265
+ </AccordionGroup>
266
+
267
+ ## Kesimpulan: Menyeimbangkan DX, Performa, dan Disrupsi AI
268
+
269
+ Selama lima belas tahun dan empat gelombang arsitektur, tantangan utama internasionalisasi JavaScript tetap konsisten: menyelaraskan pengalaman pengembang (DX) dan pemeliharaan kode jangka panjang sambil menyajikan kinerja optimal di sisi klien.
270
+
271
+ Apa yang berawal dari variabel global dan file JSON terpusat yang sulit dikelola kini telah berkembang menjadi konten yang ditempatkan bersama komponen, keamanan tipe TypeScript otomatis, rendering server tanpa waterfall, dan tree-shaking pada waktu build.
272
+
273
+ ### Disrupsi AI dan Model SaaS Tradisional
274
+
275
+ Katalis penting dalam beberapa tahun terakhir adalah pembuatan terjemahan AI otomatis, yang secara mendasar menantang model bisnis platform pelokalan tradisional (TMS).
276
+
277
+ Secara historis, mengumpulkan konten ke dalam file JSON monolitik adalah kompromi untuk mempermudah integrasi Sistem Manajemen Terjemahan (TMS). Repositori terpusat memberi penerjemah non-teknis dan platform TMS pihak ketiga target impor dan ekspor yang mudah. Namun, kemudahan bagi layanan eksternal ini menimbulkan biaya arsitektur yang tinggi bagi pengembang: konflik git merge yang sering terjadi pada feature branch, kunci terabaikan yang sulit dilacak, kurangnya konteks tingkat komponen, dan namespace global yang rumit.
278
+
279
+ Dengan hadirnya AI generatif dan perkakas kompilasi modern, Pengalaman Pengembang (DX) kini menjadi prioritas utama. Build tools dan CLI kini dapat menemukan, memvalidasi, dan menerjemahkan file konten per komponen secara otomatis, meniadakan kebutuhan untuk mengorbankan arsitektur yang bersih demi alur kerja penerjemahan.
280
+
281
+ Selama lebih dari satu dekade, platform komersial membangun pendapatan berulang di sekitar friksi TMS manual tersebut:
282
+
283
+ - Solusi seperti **Locize** (platform SaaS komersial di balik `i18next`) dan **Crowdin** (sponsor utama dan mitra integrasi untuk `vue-i18n`, `next-intl`, `use-intl`, dan `lingui`) memusatkan model bisnis mereka pada penyimpanan terjemahan berbayar, batasan paket bertingkat, dan biaya per kata.
284
+ - Karena platform lawas ini memonetisasi volume dan proses kerja manual, mereka memiliki sedikit insentif ekonomi untuk mengotomatiskan pembuatan terjemahan end-to-end secara gratis langsung di rantai alat pengembang.
285
+
286
+ ### Gelombang AI Baru vs. Biaya Penyedia Langsung
287
+
288
+ Ketika Model Bahasa Besar (LLM) modern menurunkan biaya terjemahan hingga pecahan sen sekaligus meningkatkan akurasi linguistik, generasi alat komersial baru muncul untuk memanfaatkan pasar ini:
289
+
290
+ - Platform seperti Paraglide dengan **linguo.dev** atau **General Translation** (`gt-react`, `gt-next`) telah berusaha memanfaatkan tren AI dengan memperkenalkan langganan berbayar baru dan perantara cloud berbayar.
291
+ - Sebaliknya, **Intlayer** menyediakan terjemahan AI otomatis langsung dari CLI-nya, memungkinkan tim menghubungkan kunci API mereka sendiri (seperti OpenAI, Anthropic, Mistral, atau Google Gemini). Tidak ada mark-up, komisi, atau vendor lock-in, beroperasi sepenuhnya pada biaya langsung penyedia AI pilihan Anda.
292
+
293
+ ### Lebih dari Sekadar i18n: Sistem Konten Multibahasa yang Lengkap
294
+
295
+ Terakhir, pengembangan web modern telah melangkah jauh melampaui penggantian teks sederhana. Aplikasi saat ini tidak hanya perlu menerjemahkan kata tunggal seperti `"Submit"` atau `"Log In"`, tetapi juga membutuhkan konten terstruktur yang dinamis di seluruh alur interaksi pengguna.
296
+
297
+ Intlayer memandang masalah ini bukan sebagai alat pencarian kunci string yang sempit, melainkan sebagai sistem konten multibahasa yang komprehensif. Dengan dukungan kelas satu untuk dokumen Markdown, struktur HTML, skema data bersarang, dan pengeditan visual CMS yang mulus, Intlayer menjembatani rekayasa tingkat kode, alur kerja AI otomatis, dan manajemen konten.
298
+
299
+ Untuk perbandingan arsitektur lebih mendalam dan panduan migrasi praktis, jelajahi sumber daya berikut:
300
+
301
+ - [Compiler vs. Declarative Internationalization](https://github.com/aymericzip/intlayer/blob/main/docs/blog/id/compiler_vs_declarative_i18n.md)
302
+ - [Per-Component vs. Centralized i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/id/per-component_vs_centralized_i18n.md)
303
+ - [Kinerja dan Tolok Ukur](https://intlayer.org/doc/benchmark)
304
+ - [Adapter Kompatibilitas Intlayer](https://intlayer.org/doc/concept/compatibility)