@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,558 @@
1
+ ---
2
+ createdAt: 2026-09-09
3
+ updatedAt: 2026-09-11
4
+ title: "Remix 3 i18n - Guia completo para traduzir a sua aplicação"
5
+ description: "Esqueça o i18next. O guia 2026 para criar uma aplicação Remix 3 multilíngue (i18n). Traduza com agentes de IA e otimize o tamanho do bundle, SEO e desempenho."
6
+ keywords:
7
+ - Internacionalização
8
+ - Documentação
9
+ - Intlayer
10
+ - Remix 3
11
+ - Remix
12
+ - JavaScript
13
+ - TypeScript
14
+ - Padrões Web
15
+ slugs:
16
+ - doc
17
+ - environment
18
+ - remix-3
19
+ applicationTemplate: https://github.com/aymericzip/intlayer-remix-3-template
20
+ applicationShowcase: https://intlayer-remix-3-template.vercel.app
21
+ history:
22
+ - version: 9.5.0
23
+ date: 2026-09-09
24
+ changes: "Documentação inicial para Remix 3"
25
+ author: aymericzip
26
+ ---
27
+
28
+ # Traduza o seu site Remix 3 utilizando o Intlayer | Internacionalização (i18n)
29
+
30
+ Este guia demonstra como integrar o **Intlayer** para uma internacionalização perfeita em aplicações **Remix 3**, com roteamento com suporte a idiomas, declarações de conteúdo com segurança de tipos, componentes JSX renderizados no servidor e compatibilidade multi-runtime no Node.js, Bun, Deno e Cloudflare Workers.
31
+
32
+ ## O que é o Remix 3?
33
+
34
+ O **Remix 3** representa uma mudança arquitetural fundamental em direção a um **framework web combinável e independente de runtime, construído inteiramente sobre padrões web**. Em vez de estar vinculado a empacotadores específicos ou a APIs proprietárias de servidor, o Remix 3 é distribuído em pacotes combináveis de propósito único:
35
+
36
+ - **`remix/fetch-router`** (ou `remix/router`): Roteamento leve e em conformidade com os padrões, baseado na Fetch API (`Request` e `Response`).
37
+ - **`remix/ui`**: Um modelo de componentes JSX (`jsxImportSource: "remix/ui"`). Um componente é uma função de setup que retorna uma função de renderização, parecendo React, mas mantendo o estado em closures simples de JavaScript.
38
+ - **`remix/middleware/render`**: Instala `context.render(<Page />)` em cada requisição, transmitindo a árvore JSX em uma `Response` HTML.
39
+ - **`remix/node-fetch-server`**: Adaptadores de servidor para Node.js, com suporte nativo para Bun, Deno e runtimes edge.
40
+ - **`remix/cookie`**: Análise e serialização de cookies criptograficamente seguros.
41
+
42
+ Combinado com o **Intlayer**, obtém um sistema de internacionalização completo que oferece segurança em tempo de compilação, traduções automatizadas com IA, renderização no servidor sem overhead e roteamento fluido por idioma.
43
+
44
+ ## Índice
45
+
46
+ <TOC/>
47
+
48
+ ## Por que escolher o Intlayer em vez de alternativas?
49
+
50
+ Em comparação com soluções tradicionais como o `i18next` ou carregadores de tradução sob medida, o Intlayer oferece uma experiência de desenvolvimento integrada e otimizada para a arquitetura web moderna:
51
+
52
+ <AccordionGroup>
53
+ <Accordion header="Cobertura total do Remix 3 e Padrões Web">
54
+
55
+ O Intlayer foi desenvolvido para funcionar nativamente com os padrões web (`Request`, `Response`, `Headers` e `URL`). Ele integra-se sem esforço no roteador Fetch do Remix 3 através de um middleware leve, extraindo idiomas de caminhos de URL, cookies ou cabeçalhos `Accept-Language` sem prendê-lo a um runtime específico.
56
+
57
+ </Accordion>
58
+ <Accordion header="Declarações de Conteúdo com Segurança de Tipos">
59
+
60
+ Diga adeus às chaves JSON soltas e a falhas em tempo de execução causadas por chaves ausentes. O Intlayer aplica verificações do TypeScript em todos os idiomas declarados, avisando-o no momento da compilação caso falte uma tradução ou haja alguma inconsistência.
61
+
62
+ </Accordion>
63
+ <Accordion header="Zero Overhead de Pacote no Servidor">
64
+
65
+ O Remix 3 renderiza componentes JSX no servidor e transmite o HTML para o cliente. Apenas o texto resolvido para o idioma solicitado é enviado no fluxo de resposta. Nenhum bundle de hidratação no cliente ou catálogo pesado de tradução é necessário, a menos que um componente seja explicitamente marcado como `clientEntry`.
66
+
67
+ </Accordion>
68
+ <Accordion header="Pronto para Agentes de IA e Automação">
69
+
70
+ O Intlayer coloca as declarações de conteúdo (`.content.ts`) diretamente junto da lógica de rotas, reduzindo o contexto de tokens exigido por Grandes Modelos de Linguagem (LLMs). Comandos CLI integrados como `intlayer fill` e `intlayer test` permitem automatizar traduções em pipelines de CI/CD pelo custo direto do seu provedor de IA.
71
+
72
+ </Accordion>
73
+ <Accordion header="Editor Visual e Integração CMS">
74
+
75
+ Além dos fluxos de trabalho baseados em código, o Intlayer disponibiliza um [Editor Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) auto-hospedado e um [CMS Remoto](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md), permitindo que editores e tradutores atualizem o conteúdo sem necessidade de novo deploy.
76
+
77
+ </Accordion>
78
+ </AccordionGroup>
79
+
80
+ ## Guia Passo a Passo
81
+
82
+ <Tabs defaultTab="code">
83
+ <Tab label="Código" value="code">
84
+
85
+ <iframe
86
+ src="https://ide.intlayer.org/aymericzip/intlayer-remix-3-template?file=intlayer.config.ts"
87
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
88
+ title="Demo CodeSandbox - Como internacionalizar a sua aplicação com o Intlayer"
89
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
90
+ loading="lazy"
91
+ />
92
+
93
+ </Tab>
94
+ <Tab label="Demo" value="demo">
95
+
96
+ <iframe
97
+ src="https://intlayer-remix-3-template.vercel.app"
98
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
99
+ title="Demo Intlayer Remix 3 Template"
100
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
101
+ loading="lazy"
102
+ />
103
+
104
+ </Tab>
105
+ </Tabs>
106
+
107
+ Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-remix-3-template) no GitHub.
108
+
109
+ <Steps>
110
+ <Step number={1} title="Instalar Dependências">
111
+
112
+ Instale o `intlayer` e o `remix` (versão 3) usando o seu gestor de pacotes preferido:
113
+
114
+ ```bash packageManager="npm"
115
+ npm install intlayer remix@next
116
+ ```
117
+
118
+ ```bash packageManager="pnpm"
119
+ pnpm add intlayer remix@next
120
+ ```
121
+
122
+ ```bash packageManager="yarn"
123
+ yarn add intlayer remix@next
124
+ ```
125
+
126
+ ```bash packageManager="bun"
127
+ bun add intlayer remix@next
128
+ ```
129
+
130
+ - **`intlayer`**: Motor principal de internacionalização que fornece gestão de configurações, declaração de dicionários (`t()`, `Dictionary`), ferramentas CLI e interpretador em tempo de execução.
131
+ - **`remix`**: O pacote unificado do framework Remix 3 que exporta `remix/router`, `remix/routes`, `remix/ui`, `remix/middleware/render` e `remix/node-fetch-server`.
132
+
133
+ </Step>
134
+ <Step number={2} title="Configurar o Intlayer">
135
+
136
+ Crie um arquivo `intlayer.config.ts` na raiz do seu projeto para declarar os idiomas suportados e as configurações de internacionalização:
137
+
138
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
139
+ import { Locales, type IntlayerConfig } from "intlayer";
140
+
141
+ const config: IntlayerConfig = {
142
+ internationalization: {
143
+ locales: [
144
+ Locales.ENGLISH,
145
+ Locales.FRENCH,
146
+ Locales.SPANISH,
147
+ Locales.PORTUGUESE,
148
+ ],
149
+ defaultLocale: Locales.ENGLISH,
150
+ },
151
+ };
152
+
153
+ export default config;
154
+ ```
155
+
156
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
157
+ import { Locales } from "intlayer";
158
+
159
+ /** @type {import('intlayer').IntlayerConfig} */
160
+ const config = {
161
+ internationalization: {
162
+ locales: [
163
+ Locales.ENGLISH,
164
+ Locales.FRENCH,
165
+ Locales.SPANISH,
166
+ Locales.PORTUGUESE,
167
+ ],
168
+ defaultLocale: Locales.ENGLISH,
169
+ },
170
+ };
171
+
172
+ export default config;
173
+ ```
174
+
175
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
176
+ const { Locales } = require("intlayer");
177
+
178
+ /** @type {import('intlayer').IntlayerConfig} */
179
+ const config = {
180
+ internationalization: {
181
+ locales: [
182
+ Locales.ENGLISH,
183
+ Locales.FRENCH,
184
+ Locales.SPANISH,
185
+ Locales.PORTUGUESE,
186
+ ],
187
+ defaultLocale: Locales.ENGLISH,
188
+ },
189
+ };
190
+
191
+ module.exports = config;
192
+ ```
193
+
194
+ > Para configurações adicionais, consulte a [documentação de configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md).
195
+
196
+ </Step>
197
+ <Step number={3} title="Declarar o Conteúdo Multilíngue">
198
+
199
+ Declare o seu conteúdo localizado em um arquivo `.content.ts`:
200
+
201
+ ```typescript fileName="src/home.content.ts" contentDeclarationFormat={["typescript", "esm"]}
202
+ import { t, type Dictionary } from "intlayer";
203
+
204
+ const homeContent = {
205
+ key: "home",
206
+ content: {
207
+ title: t({
208
+ pt: "Bem-vindo ao Remix 3",
209
+ en: "Welcome to Remix 3",
210
+ fr: "Bienvenue sur Remix 3",
211
+ es: "Bienvenido a Remix 3",
212
+ }),
213
+ description: t({
214
+ pt: "Uma aplicação combinável baseada em padrões web com i18n nativa.",
215
+ en: "A composable, web-standard application with native i18n.",
216
+ fr: "Une application composable basée sur les standards web avec i18n native.",
217
+ es: "Una aplicación componible basada en estándares web con i18n nativa.",
218
+ }),
219
+ switchLanguage: t({
220
+ pt: "Alterar idioma:",
221
+ en: "Switch language:",
222
+ fr: "Changer de langue :",
223
+ es: "Cambiar idioma:",
224
+ }),
225
+ },
226
+ } satisfies Dictionary;
227
+
228
+ export default homeContent;
229
+ ```
230
+
231
+ > O Intlayer também suporta formatos JSON, YAML e CommonJS. Veja a [Documentação sobre Declaração de Conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/content_file.md).
232
+
233
+ </Step>
234
+ <Step number={4} title="Compilar os Dicionários Intlayer">
235
+
236
+ Compile as definições do dicionário para gerar os tipos TypeScript e registros de execução:
237
+
238
+ ```bash packageManager="npm"
239
+ npx intlayer build
240
+ ```
241
+
242
+ ```bash packageManager="pnpm"
243
+ pnpm dlx intlayer build
244
+ ```
245
+
246
+ ```bash packageManager="yarn"
247
+ yarn dlx intlayer build
248
+ ```
249
+
250
+ ```bash packageManager="bun"
251
+ bun x intlayer build
252
+ ```
253
+
254
+ Isso compila o seu conteúdo no diretório de artefatos `.intlayer`, permitindo autocompletar completo no TypeScript e consulta rápida aos dicionários.
255
+
256
+ </Step>
257
+ <Step number={5} title="Implementar o Middleware do Intlayer">
258
+
259
+ O Remix 3 fornece um pipeline de middleware combinável por meio de `createRouter({ middleware: [...] })`.
260
+
261
+ Crie um middleware do Intlayer que resolva o idioma de cada requisição seguindo:
262
+
263
+ 1. O prefixo do caminho da URL via `getLocaleFromPath` do Intlayer (por exemplo, `/pt` ou `/fr`).
264
+ 2. O utilitário `getLocale` do Intlayer, que negocia automaticamente através de cookies (`INTLAYER_LOCALE`), cabeçalhos customizados (`x-intlayer-locale`), cabeçalhos padrão `Accept-Language` e o seu `defaultLocale`.
265
+
266
+ ```typescript fileName="src/middleware/intlayer.ts" codeFormat={["typescript", "esm"]}
267
+ import {
268
+ defaultLocale,
269
+ getCookie,
270
+ getLocale,
271
+ getLocaleFromPath,
272
+ type Locale,
273
+ } from "intlayer";
274
+ import { createContextKey, type Middleware } from "remix/router";
275
+
276
+ /**
277
+ * Chave de contexto tipada para recuperar o idioma resolvido do RequestContext do Remix 3.
278
+ */
279
+ export const localeKey = createContextKey<Locale>(defaultLocale);
280
+
281
+ /**
282
+ * Middleware do Intlayer para Remix 3.
283
+ *
284
+ * Resolve o idioma da requisição com base na prioridade:
285
+ * 1. Prefixo da URL (ex. `/pt/...`) via `getLocaleFromPath`
286
+ * 2. Negociação de cabeçalhos e cookies via `getLocale` (cookie, cabeçalho personalizado, negociação Accept-Language, fallback defaultLocale)
287
+ *
288
+ * Anexa o idioma resolvido ao RequestContext do Remix 3.
289
+ */
290
+ export const intlayer = (): Middleware => {
291
+ return async (context, next) => {
292
+ // Detecção do caminho (/pt/about -> "pt", /about -> undefined)
293
+ const pathLocale = getLocaleFromPath(context.url.pathname);
294
+
295
+ if (pathLocale) {
296
+ // Anexar idioma resolvido ao contexto de requisição do Remix 3
297
+ context.set(localeKey, pathLocale);
298
+
299
+ return next();
300
+ }
301
+
302
+ const storedLocale = await getLocale({
303
+ getHeader: (name) => context.headers.get(name),
304
+ getCookie: (name) =>
305
+ getCookie(name, context.headers.get("cookie") ?? undefined),
306
+ });
307
+
308
+ // Anexar idioma resolvido ao contexto de requisição do Remix 3
309
+ context.set(localeKey, storedLocale ?? defaultLocale);
310
+
311
+ return next();
312
+ };
313
+ };
314
+ ```
315
+
316
+ </Step>
317
+ <Step number={6} title="Definir Rotas com Segurança de Tipos">
318
+
319
+ Defina as rotas da sua aplicação utilizando `route()` de `remix/routes`:
320
+
321
+ ```typescript fileName="src/routes.ts" codeFormat={["typescript", "esm"]}
322
+ import { route } from "remix/routes";
323
+
324
+ export const routes = route({
325
+ // Rota padrão do idioma
326
+ home: "/",
327
+
328
+ // Rota localizada com segmento dinâmico :locale
329
+ localizedHome: "/:locale",
330
+ });
331
+ ```
332
+
333
+ O uso de `route()` garante geração de URLs tipadas em toda a sua aplicação:
334
+
335
+ ```typescript
336
+ routes.home.href(); // "/"
337
+ routes.localizedHome.href({ locale: "pt" }); // "/pt"
338
+ ```
339
+
340
+ </Step>
341
+ <Step number={7} title="Renderizar Páginas Localizadas com JSX">
342
+
343
+ O Remix 3 renderiza a interface do usuário com componentes JSX de `remix/ui`. Um componente é uma **função de setup** que recebe um `Handle` e retorna uma **função de renderização**. O setup é executado uma vez por instância, o render a cada atualização, e as props são lidas através de `handle.props`.
344
+
345
+ Comece com um shell compartilhado `Document` que defina os atributos `<html lang="..." dir="...">` a partir do idioma resolvido:
346
+
347
+ ```tsx fileName="src/views/document.tsx" codeFormat={["typescript", "esm"]}
348
+ import { getHTMLTextDir, type Locale } from "intlayer";
349
+ import type { Handle, RemixNode } from "remix/ui";
350
+
351
+ type DocumentProps = {
352
+ locale: Locale;
353
+ title: string;
354
+ children?: RemixNode;
355
+ };
356
+
357
+ export const Document = (handle: Handle<DocumentProps>) => () => {
358
+ const { locale, title, children } = handle.props;
359
+
360
+ return (
361
+ <html lang={locale} dir={getHTMLTextDir(locale)}>
362
+ <head>
363
+ <meta charSet="utf-8" />
364
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
365
+ <title>{title}</title>
366
+ </head>
367
+ <body>{children}</body>
368
+ </html>
369
+ );
370
+ };
371
+ ```
372
+
373
+ Em seguida, crie a página inicial. Ela extrai o dicionário localizado com `getIntlayer` e exibe um seletor de idiomas:
374
+
375
+ ```tsx fileName="src/views/home.tsx" codeFormat={["typescript", "esm"]}
376
+ import {
377
+ getIntlayer,
378
+ getLocaleName,
379
+ getLocalizedPath,
380
+ type Locale,
381
+ locales,
382
+ } from "intlayer";
383
+ import type { Handle } from "remix/ui";
384
+ import { routes } from "../routes";
385
+ import { Document } from "./document";
386
+
387
+ type HomePageProps = {
388
+ locale: Locale;
389
+ };
390
+
391
+ export const HomePage = (handle: Handle<HomePageProps>) => () => {
392
+ const { locale } = handle.props;
393
+ const home = getIntlayer("home", locale);
394
+
395
+ return (
396
+ <Document locale={locale} title={home.title}>
397
+ <header>
398
+ <nav aria-label="Languages">
399
+ <span>{home.switchLanguage}</span>
400
+ {locales.map((targetLocale) => {
401
+ const isActive = targetLocale === locale;
402
+
403
+ return (
404
+ <a
405
+ key={targetLocale}
406
+ href={getLocalizedPath(routes.home.href(), targetLocale)}
407
+ class={isActive ? "active" : undefined}
408
+ aria-current={isActive ? "page" : undefined}
409
+ >
410
+ {getLocaleName(targetLocale, locale)}
411
+ </a>
412
+ );
413
+ })}
414
+ </nav>
415
+ </header>
416
+ <main>
417
+ <h1>{home.title}</h1>
418
+ <p>{home.description}</p>
419
+ </main>
420
+ </Document>
421
+ );
422
+ };
423
+ ```
424
+
425
+ > O JSX do Remix não é React: não há hooks, `class` é escrito como está (`className` também é aceito) e novas renderizações são disparadas explicitamente com `handle.update()`. Os valores interpolados passam por escape automaticamente.
426
+
427
+ </Step>
428
+ <Step number={8} title="Ligar o Roteador e o Servidor">
429
+
430
+ Adicione o middleware `render()` de `remix/middleware/render` junto com o middleware do Intlayer. Ele instala `context.render(node, init)` em cada requisição, transmitindo a árvore JSX em uma `Response` HTML (adicionando `<!DOCTYPE html>` no início e configurando o cabeçalho `Content-Type`):
431
+
432
+ ```tsx fileName="src/router.tsx" codeFormat={["typescript", "esm"]}
433
+ import { isDeclaredLocale } from "intlayer";
434
+ import { render } from "remix/middleware/render";
435
+ import { createRouter } from "remix/router";
436
+ import { intlayer, localeKey } from "./middleware/intlayer";
437
+ import { routes } from "./routes";
438
+ import { HomePage } from "./views/home";
439
+
440
+ // 1. Inicializar o roteador com os middlewares Intlayer + render
441
+ export const router = createRouter({
442
+ middleware: [intlayer(), render()],
443
+ });
444
+
445
+ // 2. Mapear manipuladores de rota
446
+ router.map(routes, {
447
+ actions: {
448
+ // Rota de idioma padrão
449
+ home(context) {
450
+ const locale = context.get(localeKey);
451
+ return context.render(<HomePage locale={locale} />);
452
+ },
453
+
454
+ // Rota localizada
455
+ localizedHome(context) {
456
+ if (!isDeclaredLocale(context.params.locale)) {
457
+ return new Response("Not Found", { status: 404 });
458
+ }
459
+ const locale = context.get(localeKey);
460
+ return context.render(<HomePage locale={locale} />);
461
+ },
462
+ },
463
+ });
464
+ ```
465
+
466
+ > `context.render` aceita um `ResponseInit` opcional como segundo argumento, por exemplo: `context.render(<NotFoundPage locale={locale} />, { status: 404 })`.
467
+
468
+ Por fim, exponha o roteador através de um manipulador `fetch` padrão. O mesmo roteador funciona no Node.js, Bun, Deno e Cloudflare Workers:
469
+
470
+ ```typescript fileName="src/server.ts" codeFormat={["typescript", "esm"]}
471
+ import * as http from "node:http";
472
+ import { createRequestListener } from "remix/node-fetch-server";
473
+ import { router } from "./router";
474
+
475
+ const PORT = Number(process.env.PORT || 3000);
476
+
477
+ // Node.js
478
+ const server = http.createServer(
479
+ createRequestListener((request) => router.fetch(request))
480
+ );
481
+
482
+ server.listen(PORT, () => {
483
+ console.log(`Servidor em execução em http://localhost:${PORT}`);
484
+ });
485
+
486
+ // Bun / Deno / Cloudflare Workers
487
+ export default {
488
+ port: PORT,
489
+ fetch(request: Request) {
490
+ return router.fetch(request);
491
+ },
492
+ };
493
+ ```
494
+
495
+ </Step>
496
+ <Step number={9} title="Auditar e Preencher Traduções Automaticamente">
497
+
498
+ O Intlayer disponibiliza uma CLI para verificar traduções em falta e preenchê-las automaticamente usando IA:
499
+
500
+ ```bash packageManager="npm"
501
+ # Auditar traduções ausentes
502
+ npx intlayer test
503
+
504
+ # Preencher traduções ausentes usando IA
505
+ npx intlayer fill
506
+ ```
507
+
508
+ ```bash packageManager="pnpm"
509
+ # Auditar traduções ausentes
510
+ pnpm dlx intlayer test
511
+
512
+ # Preencher traduções ausentes usando IA
513
+ pnpm dlx intlayer fill
514
+ ```
515
+
516
+ ```bash packageManager="yarn"
517
+ # Auditar traduções ausentes
518
+ yarn dlx intlayer test
519
+
520
+ # Preencher traduções ausentes usando IA
521
+ yarn dlx intlayer fill
522
+ ```
523
+
524
+ ```bash packageManager="bun"
525
+ # Auditar traduções ausentes
526
+ bun x intlayer test
527
+
528
+ # Preencher traduções ausentes usando IA
529
+ bun x intlayer fill
530
+ ```
531
+
532
+ </Step>
533
+ </Steps>
534
+
535
+ ## Configuração do TypeScript
536
+
537
+ Aponte o JSX para o runtime `remix/ui` e certifique-se de que o seu `tsconfig.json` inclui os tipos gerados do `.intlayer`:
538
+
539
+ ```json fileName="tsconfig.json"
540
+ {
541
+ "compilerOptions": {
542
+ "moduleResolution": "Bundler",
543
+ "module": "ESNext",
544
+ "target": "ESNext",
545
+ "jsx": "react-jsx",
546
+ "jsxImportSource": "remix/ui",
547
+ "skipLibCheck": true,
548
+ "strict": true
549
+ },
550
+ "include": ["src/**/*", ".intlayer/**/*.ts"]
551
+ }
552
+ ```
553
+
554
+ > `jsxImportSource: "remix/ui"` é o que faz com que `<HomePage />` resolva para o `createElement` do Remix em vez do React.
555
+
556
+ ## Conclusão
557
+
558
+ Com o Remix 3 e o Intlayer, você obtém uma stack enxuta, totalmente tipada e portável, alinhada com os padrões da web aberta. A sua aplicação escala facilmente de páginas de marketing simples para serviços globais renderizados na borda (edge).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-20
3
+ updatedAt: 2026-09-11
4
4
  title: Сравнение библиотек i18n
5
5
  description: Узнайте, как Intlayer сопоставим с другими библиотеками i18n с точки зрения производительности и размера бандла.
6
6
  keywords:
@@ -14,6 +14,9 @@ slugs:
14
14
  - doc
15
15
  - benchmark
16
16
  history:
17
+ - version: 9.5.1
18
+ date: 2026-09-11
19
+ changes: "Обновление результатов бенчмарка"
17
20
  - version: 8.7.5
18
21
  date: 2026-01-06
19
22
  changes: "Инициализация бенчмарка"