@intlayer/docs 9.5.6 → 9.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (643) hide show
  1. package/blog/ar/i18next_vs_intlayer-i18next.md +122 -15
  2. package/blog/ar/i18next_vs_intlayer.md +130 -16
  3. package/blog/ar/is_intlayer_lighter_than_paraglide.md +284 -0
  4. package/blog/ar/lingui_vs_intlayer.md +122 -15
  5. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  6. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  7. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  8. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  9. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  10. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  11. package/blog/de/i18next_vs_intlayer.md +128 -14
  12. package/blog/de/is_intlayer_lighter_than_paraglide.md +284 -0
  13. package/blog/de/lingui_vs_intlayer.md +122 -15
  14. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  15. package/blog/de/next-intl_vs_intlayer.md +125 -15
  16. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  17. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  18. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  19. package/blog/en/i18next_vs_intlayer.md +128 -14
  20. package/blog/en/is_intlayer_lighter_than_paraglide.md +288 -0
  21. package/blog/en/lingui_vs_intlayer.md +124 -15
  22. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  23. package/blog/en/next-intl_vs_intlayer.md +125 -13
  24. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  25. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  26. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  27. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  28. package/blog/en-GB/is_intlayer_lighter_than_paraglide.md +285 -0
  29. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  30. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  31. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  32. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  33. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  34. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  35. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  36. package/blog/es/i18next_vs_intlayer.md +128 -14
  37. package/blog/es/is_intlayer_lighter_than_paraglide.md +284 -0
  38. package/blog/es/lingui_vs_intlayer.md +122 -15
  39. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  40. package/blog/es/next-intl_vs_intlayer.md +125 -15
  41. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  42. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  43. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  44. package/blog/fr/i18next_vs_intlayer.md +128 -14
  45. package/blog/fr/is_intlayer_lighter_than_paraglide.md +284 -0
  46. package/blog/fr/lingui_vs_intlayer.md +122 -15
  47. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  48. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  49. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  50. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  51. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  52. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  53. package/blog/hi/i18next_vs_intlayer.md +130 -16
  54. package/blog/hi/is_intlayer_lighter_than_paraglide.md +284 -0
  55. package/blog/hi/lingui_vs_intlayer.md +122 -15
  56. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  57. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  58. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  59. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  60. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  61. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  62. package/blog/id/i18next_vs_intlayer.md +128 -14
  63. package/blog/id/is_intlayer_lighter_than_paraglide.md +284 -0
  64. package/blog/id/lingui_vs_intlayer.md +122 -15
  65. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/id/next-intl_vs_intlayer.md +135 -19
  67. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  68. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  69. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  70. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  71. package/blog/it/i18next_vs_intlayer.md +128 -14
  72. package/blog/it/is_intlayer_lighter_than_paraglide.md +284 -0
  73. package/blog/it/lingui_vs_intlayer.md +122 -15
  74. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  75. package/blog/it/next-intl_vs_intlayer.md +125 -15
  76. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  77. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  78. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  79. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  80. package/blog/ja/i18next_vs_intlayer.md +129 -17
  81. package/blog/ja/is_intlayer_lighter_than_paraglide.md +284 -0
  82. package/blog/ja/lingui_vs_intlayer.md +122 -15
  83. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  84. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  85. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  86. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  87. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  88. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  89. package/blog/ko/i18next_vs_intlayer.md +129 -17
  90. package/blog/ko/is_intlayer_lighter_than_paraglide.md +284 -0
  91. package/blog/ko/lingui_vs_intlayer.md +122 -15
  92. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  93. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  94. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  95. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  96. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  97. package/blog/pl/i18next_vs_intlayer.md +128 -14
  98. package/blog/pl/is_intlayer_lighter_than_paraglide.md +284 -0
  99. package/blog/pl/lingui_vs_intlayer.md +122 -15
  100. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  101. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  102. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  103. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  104. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  105. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  106. package/blog/pt/i18next_vs_intlayer.md +128 -14
  107. package/blog/pt/is_intlayer_lighter_than_paraglide.md +284 -0
  108. package/blog/pt/lingui_vs_intlayer.md +122 -15
  109. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  110. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  111. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  112. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  113. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  114. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  115. package/blog/ru/i18next_vs_intlayer.md +130 -16
  116. package/blog/ru/is_intlayer_lighter_than_paraglide.md +284 -0
  117. package/blog/ru/lingui_vs_intlayer.md +122 -15
  118. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  119. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  120. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  121. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  122. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  123. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  124. package/blog/tr/i18next_vs_intlayer.md +128 -14
  125. package/blog/tr/is_intlayer_lighter_than_paraglide.md +284 -0
  126. package/blog/tr/lingui_vs_intlayer.md +122 -15
  127. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  128. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  129. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  130. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  131. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  132. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  133. package/blog/uk/i18next_vs_intlayer.md +130 -16
  134. package/blog/uk/is_intlayer_lighter_than_paraglide.md +284 -0
  135. package/blog/uk/lingui_vs_intlayer.md +122 -15
  136. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  138. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  139. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  140. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  141. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  142. package/blog/vi/i18next_vs_intlayer.md +128 -14
  143. package/blog/vi/is_intlayer_lighter_than_paraglide.md +284 -0
  144. package/blog/vi/lingui_vs_intlayer.md +122 -15
  145. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  146. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  147. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  148. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  149. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  150. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  151. package/blog/zh/i18next_vs_intlayer.md +128 -14
  152. package/blog/zh/is_intlayer_lighter_than_paraglide.md +284 -0
  153. package/blog/zh/lingui_vs_intlayer.md +122 -15
  154. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  155. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  156. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  157. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  158. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  159. package/dist/cjs/generated/blog.entry.cjs +20 -0
  160. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  161. package/dist/cjs/generated/docs.entry.cjs +60 -40
  162. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  163. package/dist/esm/generated/blog.entry.mjs +20 -0
  164. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  165. package/dist/esm/generated/docs.entry.mjs +60 -40
  166. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  167. package/dist/types/generated/blog.entry.d.ts +1 -0
  168. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  169. package/dist/types/generated/docs.entry.d.ts +3 -2
  170. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  171. package/docs/ar/benchmark/nextjs.md +19 -16
  172. package/docs/ar/benchmark/solid.md +26 -9
  173. package/docs/ar/benchmark/svelte.md +22 -7
  174. package/docs/ar/benchmark/tanstack.md +20 -16
  175. package/docs/ar/benchmark/vue.md +19 -10
  176. package/docs/ar/chrome_extension.md +130 -0
  177. package/docs/ar/cli/index.md +11 -1
  178. package/docs/ar/cli/infra.md +162 -0
  179. package/docs/ar/cli/init.md +24 -1
  180. package/docs/ar/cli/upgrade.md +125 -0
  181. package/docs/ar/dictionary/html.md +173 -5
  182. package/docs/ar/dictionary/markdown.md +263 -1
  183. package/docs/ar/intlayer_with_analog.md +23 -1
  184. package/docs/ar/intlayer_with_angular_19.md +24 -1
  185. package/docs/ar/intlayer_with_angular_21.md +24 -1
  186. package/docs/ar/intlayer_with_astro.md +24 -1
  187. package/docs/ar/intlayer_with_astro_lit.md +25 -1
  188. package/docs/ar/intlayer_with_astro_preact.md +26 -1
  189. package/docs/ar/intlayer_with_astro_react.md +26 -1
  190. package/docs/ar/intlayer_with_astro_solid.md +26 -1
  191. package/docs/ar/intlayer_with_astro_svelte.md +25 -1
  192. package/docs/ar/intlayer_with_astro_vue.md +25 -1
  193. package/docs/ar/intlayer_with_remix_3.md +22 -1
  194. package/docs/ar/self_hosting.md +406 -231
  195. package/docs/de/benchmark/nextjs.md +19 -16
  196. package/docs/de/benchmark/solid.md +26 -9
  197. package/docs/de/benchmark/svelte.md +22 -7
  198. package/docs/de/benchmark/tanstack.md +20 -16
  199. package/docs/de/benchmark/vue.md +19 -10
  200. package/docs/de/chrome_extension.md +130 -0
  201. package/docs/de/cli/index.md +11 -1
  202. package/docs/de/cli/infra.md +162 -0
  203. package/docs/de/cli/init.md +24 -1
  204. package/docs/de/cli/upgrade.md +125 -0
  205. package/docs/de/dictionary/html.md +173 -5
  206. package/docs/de/dictionary/markdown.md +263 -1
  207. package/docs/de/intlayer_with_analog.md +23 -1
  208. package/docs/de/intlayer_with_angular_19.md +24 -1
  209. package/docs/de/intlayer_with_angular_21.md +24 -1
  210. package/docs/de/intlayer_with_astro.md +24 -1
  211. package/docs/de/intlayer_with_astro_lit.md +25 -1
  212. package/docs/de/intlayer_with_astro_preact.md +26 -1
  213. package/docs/de/intlayer_with_astro_react.md +26 -1
  214. package/docs/de/intlayer_with_astro_solid.md +26 -1
  215. package/docs/de/intlayer_with_astro_svelte.md +25 -1
  216. package/docs/de/intlayer_with_astro_vue.md +25 -1
  217. package/docs/de/intlayer_with_remix_3.md +22 -1
  218. package/docs/de/self_hosting.md +404 -227
  219. package/docs/en/agent_skills.md +29 -1
  220. package/docs/en/benchmark/nextjs.md +19 -16
  221. package/docs/en/benchmark/solid.md +26 -9
  222. package/docs/en/benchmark/svelte.md +22 -7
  223. package/docs/en/benchmark/tanstack.md +21 -17
  224. package/docs/en/benchmark/vue.md +20 -11
  225. package/docs/en/chrome_extension.md +130 -0
  226. package/docs/en/cli/index.md +11 -1
  227. package/docs/en/cli/infra.md +175 -0
  228. package/docs/en/cli/init.md +25 -1
  229. package/docs/en/cli/upgrade.md +125 -0
  230. package/docs/en/dictionary/html.md +173 -5
  231. package/docs/en/dictionary/markdown.md +263 -1
  232. package/docs/en/intlayer_with_analog.md +23 -1
  233. package/docs/en/intlayer_with_angular_19.md +24 -1
  234. package/docs/en/intlayer_with_angular_21.md +24 -1
  235. package/docs/en/intlayer_with_astro.md +24 -1
  236. package/docs/en/intlayer_with_astro_lit.md +25 -1
  237. package/docs/en/intlayer_with_astro_preact.md +26 -1
  238. package/docs/en/intlayer_with_astro_react.md +26 -1
  239. package/docs/en/intlayer_with_astro_solid.md +26 -1
  240. package/docs/en/intlayer_with_astro_svelte.md +25 -1
  241. package/docs/en/intlayer_with_astro_vue.md +25 -1
  242. package/docs/en/intlayer_with_remix_3.md +22 -1
  243. package/docs/en/self_hosting.md +418 -176
  244. package/docs/en-GB/benchmark/nextjs.md +19 -16
  245. package/docs/en-GB/benchmark/solid.md +26 -9
  246. package/docs/en-GB/benchmark/svelte.md +22 -7
  247. package/docs/en-GB/benchmark/tanstack.md +20 -16
  248. package/docs/en-GB/benchmark/vue.md +20 -11
  249. package/docs/en-GB/chrome_extension.md +130 -0
  250. package/docs/en-GB/cli/index.md +11 -1
  251. package/docs/en-GB/cli/infra.md +162 -0
  252. package/docs/en-GB/cli/init.md +24 -1
  253. package/docs/en-GB/cli/upgrade.md +125 -0
  254. package/docs/en-GB/dictionary/html.md +173 -5
  255. package/docs/en-GB/dictionary/markdown.md +263 -1
  256. package/docs/en-GB/intlayer_with_analog.md +23 -1
  257. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  258. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  259. package/docs/en-GB/intlayer_with_astro.md +24 -1
  260. package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
  261. package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
  262. package/docs/en-GB/intlayer_with_astro_react.md +26 -1
  263. package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
  264. package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
  265. package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
  266. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  267. package/docs/en-GB/self_hosting.md +381 -206
  268. package/docs/es/benchmark/nextjs.md +19 -16
  269. package/docs/es/benchmark/solid.md +26 -9
  270. package/docs/es/benchmark/svelte.md +22 -7
  271. package/docs/es/benchmark/tanstack.md +20 -16
  272. package/docs/es/benchmark/vue.md +19 -10
  273. package/docs/es/chrome_extension.md +130 -0
  274. package/docs/es/cli/index.md +11 -1
  275. package/docs/es/cli/infra.md +162 -0
  276. package/docs/es/cli/init.md +24 -1
  277. package/docs/es/cli/upgrade.md +125 -0
  278. package/docs/es/dictionary/html.md +173 -5
  279. package/docs/es/dictionary/markdown.md +263 -1
  280. package/docs/es/intlayer_with_analog.md +23 -1
  281. package/docs/es/intlayer_with_angular_19.md +24 -1
  282. package/docs/es/intlayer_with_angular_21.md +24 -1
  283. package/docs/es/intlayer_with_astro.md +24 -1
  284. package/docs/es/intlayer_with_astro_lit.md +25 -1
  285. package/docs/es/intlayer_with_astro_preact.md +26 -1
  286. package/docs/es/intlayer_with_astro_react.md +26 -1
  287. package/docs/es/intlayer_with_astro_solid.md +26 -1
  288. package/docs/es/intlayer_with_astro_svelte.md +25 -1
  289. package/docs/es/intlayer_with_astro_vue.md +25 -1
  290. package/docs/es/intlayer_with_remix_3.md +22 -1
  291. package/docs/es/self_hosting.md +400 -223
  292. package/docs/fr/benchmark/nextjs.md +19 -16
  293. package/docs/fr/benchmark/solid.md +26 -9
  294. package/docs/fr/benchmark/svelte.md +22 -7
  295. package/docs/fr/benchmark/tanstack.md +20 -16
  296. package/docs/fr/benchmark/vue.md +20 -11
  297. package/docs/fr/chrome_extension.md +130 -0
  298. package/docs/fr/cli/index.md +11 -1
  299. package/docs/fr/cli/infra.md +162 -0
  300. package/docs/fr/cli/init.md +24 -1
  301. package/docs/fr/cli/upgrade.md +125 -0
  302. package/docs/fr/dictionary/html.md +173 -5
  303. package/docs/fr/dictionary/markdown.md +265 -4
  304. package/docs/fr/intlayer_with_analog.md +23 -1
  305. package/docs/fr/intlayer_with_angular_19.md +24 -1
  306. package/docs/fr/intlayer_with_angular_21.md +24 -1
  307. package/docs/fr/intlayer_with_astro.md +24 -1
  308. package/docs/fr/intlayer_with_astro_lit.md +25 -1
  309. package/docs/fr/intlayer_with_astro_preact.md +26 -1
  310. package/docs/fr/intlayer_with_astro_react.md +26 -1
  311. package/docs/fr/intlayer_with_astro_solid.md +26 -1
  312. package/docs/fr/intlayer_with_astro_svelte.md +25 -1
  313. package/docs/fr/intlayer_with_astro_vue.md +25 -1
  314. package/docs/fr/intlayer_with_remix_3.md +22 -1
  315. package/docs/fr/self_hosting.md +401 -224
  316. package/docs/hi/benchmark/nextjs.md +19 -16
  317. package/docs/hi/benchmark/solid.md +26 -9
  318. package/docs/hi/benchmark/svelte.md +22 -7
  319. package/docs/hi/benchmark/tanstack.md +20 -16
  320. package/docs/hi/benchmark/vue.md +20 -11
  321. package/docs/hi/chrome_extension.md +130 -0
  322. package/docs/hi/cli/index.md +11 -1
  323. package/docs/hi/cli/infra.md +162 -0
  324. package/docs/hi/cli/init.md +24 -1
  325. package/docs/hi/cli/upgrade.md +125 -0
  326. package/docs/hi/dictionary/html.md +173 -5
  327. package/docs/hi/dictionary/markdown.md +263 -1
  328. package/docs/hi/intlayer_with_analog.md +23 -1
  329. package/docs/hi/intlayer_with_angular_19.md +24 -1
  330. package/docs/hi/intlayer_with_angular_21.md +24 -1
  331. package/docs/hi/intlayer_with_astro.md +24 -1
  332. package/docs/hi/intlayer_with_astro_lit.md +25 -1
  333. package/docs/hi/intlayer_with_astro_preact.md +26 -1
  334. package/docs/hi/intlayer_with_astro_react.md +26 -1
  335. package/docs/hi/intlayer_with_astro_solid.md +26 -1
  336. package/docs/hi/intlayer_with_astro_svelte.md +25 -1
  337. package/docs/hi/intlayer_with_astro_vue.md +25 -1
  338. package/docs/hi/intlayer_with_remix_3.md +22 -1
  339. package/docs/hi/self_hosting.md +409 -235
  340. package/docs/id/benchmark/nextjs.md +19 -16
  341. package/docs/id/benchmark/solid.md +26 -9
  342. package/docs/id/benchmark/svelte.md +22 -7
  343. package/docs/id/benchmark/tanstack.md +20 -16
  344. package/docs/id/benchmark/vue.md +20 -11
  345. package/docs/id/chrome_extension.md +130 -0
  346. package/docs/id/cli/index.md +11 -1
  347. package/docs/id/cli/infra.md +162 -0
  348. package/docs/id/cli/init.md +24 -1
  349. package/docs/id/cli/upgrade.md +125 -0
  350. package/docs/id/dictionary/html.md +173 -5
  351. package/docs/id/dictionary/markdown.md +263 -1
  352. package/docs/id/intlayer_with_analog.md +23 -1
  353. package/docs/id/intlayer_with_angular_19.md +24 -1
  354. package/docs/id/intlayer_with_angular_21.md +24 -1
  355. package/docs/id/intlayer_with_astro.md +24 -1
  356. package/docs/id/intlayer_with_astro_lit.md +25 -1
  357. package/docs/id/intlayer_with_astro_preact.md +26 -1
  358. package/docs/id/intlayer_with_astro_react.md +26 -1
  359. package/docs/id/intlayer_with_astro_solid.md +26 -1
  360. package/docs/id/intlayer_with_astro_svelte.md +25 -1
  361. package/docs/id/intlayer_with_astro_vue.md +25 -1
  362. package/docs/id/intlayer_with_remix_3.md +22 -1
  363. package/docs/id/self_hosting.md +416 -243
  364. package/docs/it/benchmark/nextjs.md +19 -16
  365. package/docs/it/benchmark/solid.md +26 -9
  366. package/docs/it/benchmark/svelte.md +22 -7
  367. package/docs/it/benchmark/tanstack.md +20 -16
  368. package/docs/it/benchmark/vue.md +19 -10
  369. package/docs/it/chrome_extension.md +130 -0
  370. package/docs/it/cli/index.md +11 -1
  371. package/docs/it/cli/infra.md +162 -0
  372. package/docs/it/cli/init.md +24 -1
  373. package/docs/it/cli/upgrade.md +125 -0
  374. package/docs/it/dictionary/html.md +173 -5
  375. package/docs/it/dictionary/markdown.md +263 -1
  376. package/docs/it/intlayer_with_analog.md +23 -1
  377. package/docs/it/intlayer_with_angular_19.md +24 -1
  378. package/docs/it/intlayer_with_angular_21.md +24 -1
  379. package/docs/it/intlayer_with_astro.md +24 -1
  380. package/docs/it/intlayer_with_astro_lit.md +25 -1
  381. package/docs/it/intlayer_with_astro_preact.md +26 -1
  382. package/docs/it/intlayer_with_astro_react.md +26 -1
  383. package/docs/it/intlayer_with_astro_solid.md +26 -1
  384. package/docs/it/intlayer_with_astro_svelte.md +25 -1
  385. package/docs/it/intlayer_with_astro_vue.md +25 -1
  386. package/docs/it/intlayer_with_remix_3.md +22 -1
  387. package/docs/it/self_hosting.md +412 -237
  388. package/docs/ja/benchmark/nextjs.md +19 -16
  389. package/docs/ja/benchmark/solid.md +26 -9
  390. package/docs/ja/benchmark/svelte.md +22 -7
  391. package/docs/ja/benchmark/tanstack.md +18 -14
  392. package/docs/ja/benchmark/vue.md +19 -10
  393. package/docs/ja/chrome_extension.md +130 -0
  394. package/docs/ja/cli/index.md +11 -1
  395. package/docs/ja/cli/infra.md +162 -0
  396. package/docs/ja/cli/init.md +24 -1
  397. package/docs/ja/cli/upgrade.md +125 -0
  398. package/docs/ja/dictionary/html.md +173 -5
  399. package/docs/ja/dictionary/markdown.md +263 -1
  400. package/docs/ja/intlayer_with_analog.md +23 -1
  401. package/docs/ja/intlayer_with_angular_19.md +24 -1
  402. package/docs/ja/intlayer_with_angular_21.md +24 -1
  403. package/docs/ja/intlayer_with_astro.md +24 -1
  404. package/docs/ja/intlayer_with_astro_lit.md +25 -1
  405. package/docs/ja/intlayer_with_astro_preact.md +26 -1
  406. package/docs/ja/intlayer_with_astro_react.md +26 -1
  407. package/docs/ja/intlayer_with_astro_solid.md +26 -1
  408. package/docs/ja/intlayer_with_astro_svelte.md +25 -1
  409. package/docs/ja/intlayer_with_astro_vue.md +25 -1
  410. package/docs/ja/intlayer_with_remix_3.md +22 -1
  411. package/docs/ja/self_hosting.md +398 -223
  412. package/docs/ko/benchmark/nextjs.md +19 -16
  413. package/docs/ko/benchmark/solid.md +26 -9
  414. package/docs/ko/benchmark/svelte.md +22 -7
  415. package/docs/ko/benchmark/tanstack.md +20 -16
  416. package/docs/ko/benchmark/vue.md +20 -11
  417. package/docs/ko/chrome_extension.md +130 -0
  418. package/docs/ko/cli/index.md +11 -1
  419. package/docs/ko/cli/infra.md +162 -0
  420. package/docs/ko/cli/init.md +24 -1
  421. package/docs/ko/cli/upgrade.md +126 -0
  422. package/docs/ko/dictionary/html.md +173 -5
  423. package/docs/ko/dictionary/markdown.md +263 -1
  424. package/docs/ko/intlayer_with_analog.md +23 -1
  425. package/docs/ko/intlayer_with_angular_19.md +24 -1
  426. package/docs/ko/intlayer_with_angular_21.md +24 -1
  427. package/docs/ko/intlayer_with_astro.md +24 -1
  428. package/docs/ko/intlayer_with_astro_lit.md +25 -1
  429. package/docs/ko/intlayer_with_astro_preact.md +26 -1
  430. package/docs/ko/intlayer_with_astro_react.md +26 -1
  431. package/docs/ko/intlayer_with_astro_solid.md +26 -1
  432. package/docs/ko/intlayer_with_astro_svelte.md +25 -1
  433. package/docs/ko/intlayer_with_astro_vue.md +25 -1
  434. package/docs/ko/intlayer_with_remix_3.md +22 -1
  435. package/docs/ko/self_hosting.md +411 -238
  436. package/docs/pl/benchmark/nextjs.md +19 -16
  437. package/docs/pl/benchmark/solid.md +26 -9
  438. package/docs/pl/benchmark/svelte.md +22 -7
  439. package/docs/pl/benchmark/tanstack.md +20 -16
  440. package/docs/pl/benchmark/vue.md +20 -11
  441. package/docs/pl/chrome_extension.md +130 -0
  442. package/docs/pl/cli/index.md +11 -1
  443. package/docs/pl/cli/infra.md +162 -0
  444. package/docs/pl/cli/init.md +24 -1
  445. package/docs/pl/cli/upgrade.md +125 -0
  446. package/docs/pl/dictionary/html.md +173 -5
  447. package/docs/pl/dictionary/markdown.md +263 -1
  448. package/docs/pl/intlayer_with_analog.md +23 -1
  449. package/docs/pl/intlayer_with_angular_19.md +24 -1
  450. package/docs/pl/intlayer_with_angular_21.md +24 -1
  451. package/docs/pl/intlayer_with_astro.md +24 -1
  452. package/docs/pl/intlayer_with_astro_lit.md +25 -1
  453. package/docs/pl/intlayer_with_astro_preact.md +26 -1
  454. package/docs/pl/intlayer_with_astro_react.md +26 -1
  455. package/docs/pl/intlayer_with_astro_solid.md +26 -1
  456. package/docs/pl/intlayer_with_astro_svelte.md +25 -1
  457. package/docs/pl/intlayer_with_astro_vue.md +25 -1
  458. package/docs/pl/intlayer_with_remix_3.md +22 -1
  459. package/docs/pl/self_hosting.md +408 -233
  460. package/docs/pt/benchmark/nextjs.md +19 -16
  461. package/docs/pt/benchmark/solid.md +26 -9
  462. package/docs/pt/benchmark/svelte.md +22 -7
  463. package/docs/pt/benchmark/tanstack.md +20 -16
  464. package/docs/pt/benchmark/vue.md +19 -10
  465. package/docs/pt/chrome_extension.md +130 -0
  466. package/docs/pt/cli/index.md +11 -1
  467. package/docs/pt/cli/infra.md +162 -0
  468. package/docs/pt/cli/init.md +24 -1
  469. package/docs/pt/cli/upgrade.md +125 -0
  470. package/docs/pt/dictionary/html.md +173 -5
  471. package/docs/pt/dictionary/markdown.md +263 -1
  472. package/docs/pt/intlayer_with_analog.md +23 -1
  473. package/docs/pt/intlayer_with_angular_19.md +24 -1
  474. package/docs/pt/intlayer_with_angular_21.md +24 -1
  475. package/docs/pt/intlayer_with_astro.md +24 -1
  476. package/docs/pt/intlayer_with_astro_lit.md +25 -1
  477. package/docs/pt/intlayer_with_astro_preact.md +26 -1
  478. package/docs/pt/intlayer_with_astro_react.md +26 -1
  479. package/docs/pt/intlayer_with_astro_solid.md +26 -1
  480. package/docs/pt/intlayer_with_astro_svelte.md +25 -1
  481. package/docs/pt/intlayer_with_astro_vue.md +25 -1
  482. package/docs/pt/intlayer_with_remix_3.md +22 -1
  483. package/docs/pt/self_hosting.md +399 -224
  484. package/docs/ru/benchmark/nextjs.md +19 -16
  485. package/docs/ru/benchmark/solid.md +26 -9
  486. package/docs/ru/benchmark/svelte.md +22 -7
  487. package/docs/ru/benchmark/tanstack.md +20 -16
  488. package/docs/ru/benchmark/vue.md +20 -11
  489. package/docs/ru/chrome_extension.md +130 -0
  490. package/docs/ru/cli/index.md +11 -1
  491. package/docs/ru/cli/infra.md +162 -0
  492. package/docs/ru/cli/init.md +24 -1
  493. package/docs/ru/cli/upgrade.md +125 -0
  494. package/docs/ru/dictionary/html.md +173 -5
  495. package/docs/ru/dictionary/markdown.md +263 -1
  496. package/docs/ru/intlayer_with_analog.md +23 -1
  497. package/docs/ru/intlayer_with_angular_19.md +24 -1
  498. package/docs/ru/intlayer_with_angular_21.md +24 -1
  499. package/docs/ru/intlayer_with_astro.md +24 -1
  500. package/docs/ru/intlayer_with_astro_lit.md +25 -1
  501. package/docs/ru/intlayer_with_astro_preact.md +26 -1
  502. package/docs/ru/intlayer_with_astro_react.md +26 -1
  503. package/docs/ru/intlayer_with_astro_solid.md +26 -1
  504. package/docs/ru/intlayer_with_astro_svelte.md +25 -1
  505. package/docs/ru/intlayer_with_astro_vue.md +25 -1
  506. package/docs/ru/intlayer_with_remix_3.md +22 -1
  507. package/docs/ru/self_hosting.md +403 -228
  508. package/docs/tr/benchmark/nextjs.md +19 -16
  509. package/docs/tr/benchmark/solid.md +26 -9
  510. package/docs/tr/benchmark/svelte.md +22 -7
  511. package/docs/tr/benchmark/tanstack.md +20 -16
  512. package/docs/tr/benchmark/vue.md +20 -11
  513. package/docs/tr/chrome_extension.md +130 -0
  514. package/docs/tr/cli/index.md +11 -1
  515. package/docs/tr/cli/infra.md +162 -0
  516. package/docs/tr/cli/init.md +24 -1
  517. package/docs/tr/cli/upgrade.md +125 -0
  518. package/docs/tr/dictionary/html.md +173 -5
  519. package/docs/tr/dictionary/markdown.md +263 -1
  520. package/docs/tr/intlayer_with_analog.md +23 -1
  521. package/docs/tr/intlayer_with_angular_19.md +24 -1
  522. package/docs/tr/intlayer_with_angular_21.md +24 -1
  523. package/docs/tr/intlayer_with_astro.md +24 -1
  524. package/docs/tr/intlayer_with_astro_lit.md +25 -1
  525. package/docs/tr/intlayer_with_astro_preact.md +26 -1
  526. package/docs/tr/intlayer_with_astro_react.md +26 -1
  527. package/docs/tr/intlayer_with_astro_solid.md +26 -1
  528. package/docs/tr/intlayer_with_astro_svelte.md +25 -1
  529. package/docs/tr/intlayer_with_astro_vue.md +25 -1
  530. package/docs/tr/intlayer_with_remix_3.md +22 -1
  531. package/docs/tr/self_hosting.md +410 -234
  532. package/docs/uk/benchmark/nextjs.md +19 -16
  533. package/docs/uk/benchmark/solid.md +26 -9
  534. package/docs/uk/benchmark/svelte.md +22 -7
  535. package/docs/uk/benchmark/tanstack.md +20 -16
  536. package/docs/uk/benchmark/vue.md +20 -11
  537. package/docs/uk/chrome_extension.md +130 -0
  538. package/docs/uk/cli/index.md +11 -1
  539. package/docs/uk/cli/infra.md +162 -0
  540. package/docs/uk/cli/init.md +24 -1
  541. package/docs/uk/cli/upgrade.md +125 -0
  542. package/docs/uk/dictionary/html.md +173 -5
  543. package/docs/uk/dictionary/markdown.md +263 -1
  544. package/docs/uk/intlayer_with_analog.md +23 -1
  545. package/docs/uk/intlayer_with_angular_19.md +24 -1
  546. package/docs/uk/intlayer_with_angular_21.md +24 -1
  547. package/docs/uk/intlayer_with_astro.md +24 -1
  548. package/docs/uk/intlayer_with_astro_lit.md +25 -1
  549. package/docs/uk/intlayer_with_astro_preact.md +26 -1
  550. package/docs/uk/intlayer_with_astro_react.md +26 -1
  551. package/docs/uk/intlayer_with_astro_solid.md +26 -1
  552. package/docs/uk/intlayer_with_astro_svelte.md +25 -1
  553. package/docs/uk/intlayer_with_astro_vue.md +25 -1
  554. package/docs/uk/intlayer_with_remix_3.md +22 -1
  555. package/docs/uk/self_hosting.md +413 -238
  556. package/docs/vi/benchmark/nextjs.md +19 -16
  557. package/docs/vi/benchmark/solid.md +26 -9
  558. package/docs/vi/benchmark/svelte.md +22 -7
  559. package/docs/vi/benchmark/tanstack.md +20 -16
  560. package/docs/vi/benchmark/vue.md +20 -11
  561. package/docs/vi/chrome_extension.md +130 -0
  562. package/docs/vi/cli/index.md +11 -1
  563. package/docs/vi/cli/infra.md +162 -0
  564. package/docs/vi/cli/init.md +24 -1
  565. package/docs/vi/cli/upgrade.md +125 -0
  566. package/docs/vi/dictionary/html.md +173 -5
  567. package/docs/vi/dictionary/markdown.md +263 -1
  568. package/docs/vi/intlayer_with_analog.md +23 -1
  569. package/docs/vi/intlayer_with_angular_19.md +24 -1
  570. package/docs/vi/intlayer_with_angular_21.md +24 -1
  571. package/docs/vi/intlayer_with_astro.md +24 -1
  572. package/docs/vi/intlayer_with_astro_lit.md +25 -1
  573. package/docs/vi/intlayer_with_astro_preact.md +26 -1
  574. package/docs/vi/intlayer_with_astro_react.md +26 -1
  575. package/docs/vi/intlayer_with_astro_solid.md +26 -1
  576. package/docs/vi/intlayer_with_astro_svelte.md +25 -1
  577. package/docs/vi/intlayer_with_astro_vue.md +25 -1
  578. package/docs/vi/intlayer_with_remix_3.md +22 -1
  579. package/docs/vi/self_hosting.md +408 -234
  580. package/docs/zh/benchmark/nextjs.md +19 -16
  581. package/docs/zh/benchmark/solid.md +26 -9
  582. package/docs/zh/benchmark/svelte.md +22 -7
  583. package/docs/zh/benchmark/tanstack.md +19 -15
  584. package/docs/zh/benchmark/vue.md +20 -11
  585. package/docs/zh/chrome_extension.md +130 -0
  586. package/docs/zh/cli/index.md +11 -1
  587. package/docs/zh/cli/infra.md +162 -0
  588. package/docs/zh/cli/init.md +24 -1
  589. package/docs/zh/cli/upgrade.md +125 -0
  590. package/docs/zh/dictionary/html.md +172 -5
  591. package/docs/zh/dictionary/markdown.md +262 -1
  592. package/docs/zh/intlayer_with_analog.md +23 -1
  593. package/docs/zh/intlayer_with_angular_19.md +24 -1
  594. package/docs/zh/intlayer_with_angular_21.md +24 -1
  595. package/docs/zh/intlayer_with_astro.md +24 -1
  596. package/docs/zh/intlayer_with_astro_lit.md +25 -1
  597. package/docs/zh/intlayer_with_astro_preact.md +26 -1
  598. package/docs/zh/intlayer_with_astro_react.md +26 -1
  599. package/docs/zh/intlayer_with_astro_solid.md +26 -1
  600. package/docs/zh/intlayer_with_astro_svelte.md +25 -1
  601. package/docs/zh/intlayer_with_astro_vue.md +25 -1
  602. package/docs/zh/intlayer_with_remix_3.md +22 -1
  603. package/docs/zh/self_hosting.md +410 -237
  604. package/legal/ar/privacy_notice.md +9 -3
  605. package/legal/de/privacy_notice.md +9 -3
  606. package/legal/en/privacy_notice.md +10 -3
  607. package/legal/en-GB/privacy_notice.md +9 -3
  608. package/legal/es/privacy_notice.md +9 -3
  609. package/legal/fr/privacy_notice.md +9 -3
  610. package/legal/hi/privacy_notice.md +9 -3
  611. package/legal/id/privacy_notice.md +9 -3
  612. package/legal/it/privacy_notice.md +9 -3
  613. package/legal/ja/privacy_notice.md +9 -3
  614. package/legal/ko/privacy_notice.md +9 -3
  615. package/legal/pl/privacy_notice.md +9 -3
  616. package/legal/pt/privacy_notice.md +9 -3
  617. package/legal/ru/privacy_notice.md +9 -3
  618. package/legal/tr/privacy_notice.md +9 -3
  619. package/legal/uk/privacy_notice.md +9 -3
  620. package/legal/vi/privacy_notice.md +9 -3
  621. package/legal/zh/privacy_notice.md +9 -3
  622. package/package.json +6 -6
  623. package/src/generated/blog.entry.ts +20 -0
  624. package/src/generated/docs.entry.ts +60 -40
  625. package/docs/ar/roadmap.md +0 -321
  626. package/docs/de/roadmap.md +0 -322
  627. package/docs/en/intlayer_with_astro_vanilla.md +0 -713
  628. package/docs/en/roadmap.md +0 -325
  629. package/docs/en-GB/roadmap.md +0 -322
  630. package/docs/es/roadmap.md +0 -322
  631. package/docs/fr/roadmap.md +0 -322
  632. package/docs/hi/roadmap.md +0 -322
  633. package/docs/id/roadmap.md +0 -325
  634. package/docs/it/roadmap.md +0 -322
  635. package/docs/ja/roadmap.md +0 -322
  636. package/docs/ko/roadmap.md +0 -322
  637. package/docs/pl/roadmap.md +0 -325
  638. package/docs/pt/roadmap.md +0 -322
  639. package/docs/ru/roadmap.md +0 -322
  640. package/docs/tr/roadmap.md +0 -325
  641. package/docs/uk/roadmap.md +0 -325
  642. package/docs/vi/roadmap.md +0 -325
  643. package/docs/zh/roadmap.md +0 -322
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-02-07
3
- updatedAt: 2026-05-19
3
+ updatedAt: 2026-09-21
4
4
  title: Markdown
5
5
  description: Aprenda cómo declarar y usar contenido Markdown en su sitio web multilingüe con Intlayer. Siga los pasos de esta documentación en línea para integrar Markdown sin problemas en su proyecto.
6
6
  keywords:
@@ -11,6 +11,8 @@ keywords:
11
11
  - Next.js
12
12
  - JavaScript
13
13
  - React
14
+ - Remix
15
+ - Astro
14
16
  slugs:
15
17
  - doc
16
18
  - concept
@@ -487,6 +489,111 @@ La renderización de Markdown admite **MDX** — use cualquier componente JSX/fr
487
489
  ```
488
490
 
489
491
  </Tab>
492
+ <Tab label="Remix" value="remix">
493
+ En Remix 3, los nodos Markdown se renderizan en el servidor en una cadena HTML. Inyéctala con la prop `innerHTML` de Remix JSX, o con `html.raw` en una vista `html-template`.
494
+
495
+ ```tsx fileName="src/views/home.tsx"
496
+ import { useIntlayer } from "remix-intlayer";
497
+
498
+ export const HomePage = () => () => {
499
+ const { myMarkdownContent } = useIntlayer("app");
500
+
501
+ return <div innerHTML={myMarkdownContent.value} />;
502
+ };
503
+ ```
504
+
505
+ ```ts fileName="src/views/home.ts"
506
+ import { html } from "remix/html-template";
507
+ import { useIntlayer } from "remix-intlayer";
508
+
509
+ export const renderHomePage = () => {
510
+ const { myMarkdownContent } = useIntlayer("app");
511
+
512
+ return html.raw`<div>${myMarkdownContent.value}</div>`;
513
+ };
514
+ ```
515
+
516
+ > Remix escapa los valores interpolados por defecto. `innerHTML` y `html.raw` son las dos opciones de exclusión, que es lo que necesita una cadena Markdown renderizada.
517
+
518
+ También puedes proporcionar anulaciones locales para etiquetas específicas utilizando el método `.use()`. Las anulaciones son funciones que devuelven una cadena HTML:
519
+
520
+ ```tsx
521
+ <div
522
+ innerHTML={myMarkdownContent.use({
523
+ h1: ({ children }) => `<h1 class="text-3xl font-bold">${children}</h1>`,
524
+ })}
525
+ />
526
+ ```
527
+
528
+ `.value` es la cadena HTML renderizada, mientras que `String()` / `.toString()` devuelven la fuente Markdown sin procesar:
529
+
530
+ ```tsx
531
+ myMarkdownContent.value // "<h1>…</h1>"
532
+ String(myMarkdownContent) // "# …"
533
+ myMarkdownContent.toString() // "# …"
534
+ ```
535
+
536
+ Y puedes acceder a los metadatos de tu markdown así:
537
+
538
+ ```tsx
539
+ myMarkdownContent.metadata
540
+ myMarkdownContent.metadata.title
541
+ ```
542
+
543
+ </Tab>
544
+ <Tab label="Astro" value="astro">
545
+ En Astro, los nodos Markdown se renderizan en una cadena HTML. Inyéctala con la directiva `set:html` en la plantilla, o con `innerHTML` en un `<script>` del cliente.
546
+
547
+ ```astro fileName="src/pages/index.astro"
548
+ ---
549
+ import { useIntlayer } from "astro-intlayer";
550
+
551
+ const { myMarkdownContent } = useIntlayer("app");
552
+ ---
553
+
554
+ <div set:html={myMarkdownContent.value} />
555
+ ```
556
+
557
+ ```astro fileName="src/components/Content.astro"
558
+ <div id="content"></div>
559
+
560
+ <script>
561
+ import { useIntlayer } from "astro-intlayer";
562
+
563
+ const { myMarkdownContent } = useIntlayer("app");
564
+
565
+ document.querySelector("#content")!.innerHTML = myMarkdownContent.value;
566
+ </script>
567
+ ```
568
+
569
+ > Astro escapa las `{expresiones}` por defecto. `set:html` es la opción de exclusión, que es lo que necesita una cadena Markdown renderizada.
570
+
571
+ También puedes proporcionar anulaciones locales para etiquetas específicas utilizando el método `.use()`. Las anulaciones son funciones que devuelven una cadena HTML:
572
+
573
+ ```astro
574
+ <div
575
+ set:html={myMarkdownContent.use({
576
+ h1: ({ children }) => `<h1 class="text-3xl font-bold">${children}</h1>`,
577
+ })}
578
+ />
579
+ ```
580
+
581
+ `.value` es la cadena HTML renderizada, mientras que `String()` / `.toString()` devuelven la fuente Markdown sin procesar:
582
+
583
+ ```astro
584
+ myMarkdownContent.value // "<h1>…</h1>"
585
+ String(myMarkdownContent) // "# …"
586
+ myMarkdownContent.toString() // "# …"
587
+ ```
588
+
589
+ Y puedes acceder a los metadatos de tu markdown así:
590
+
591
+ ```astro
592
+ myMarkdownContent.metadata
593
+ myMarkdownContent.metadata.title
594
+ ```
595
+
596
+ </Tab>
490
597
  </Tabs>
491
598
 
492
599
  ### 2. Utilidades Auxiliares (Solo Cadenas Markdown)
@@ -698,6 +805,60 @@ Estas utilidades renderizan **únicamente cadenas Markdown puras** y son indepen
698
805
  ```
699
806
 
700
807
  </Tab>
808
+ <Tab label="Remix" value="remix">
809
+ #### Hook `useMarkdownRenderer()`
810
+
811
+ Obtén una función de renderizado preconfigurada por `installIntlayerMarkdown()`. Devuelve una cadena HTML.
812
+
813
+ ```tsx
814
+ import { useMarkdownRenderer } from "remix-intlayer/markdown";
815
+
816
+ const renderMarkdown = useMarkdownRenderer({ forceBlock: true });
817
+
818
+ return <div innerHTML={renderMarkdown("# My Title")} />;
819
+ ```
820
+
821
+ #### Utilidad `renderMarkdown()`
822
+
823
+ Utilidad independiente que ignora la configuración global.
824
+
825
+ ```tsx
826
+ import { renderMarkdown } from "remix-intlayer/markdown";
827
+
828
+ const html = renderMarkdown("# My Title", { forceBlock: true });
829
+ ```
830
+
831
+ </Tab>
832
+ <Tab label="Astro" value="astro">
833
+ #### Hook `useMarkdownRenderer()`
834
+
835
+ Obtén una función de renderizado preconfigurada por `installIntlayerMarkdown()`. Devuelve una cadena HTML.
836
+
837
+ ```astro
838
+ ---
839
+ import { useMarkdownRenderer } from "astro-intlayer/markdown";
840
+
841
+ const renderMarkdown = useMarkdownRenderer({ forceBlock: true });
842
+ ---
843
+
844
+ <div set:html={renderMarkdown("# My Title")} />
845
+ ```
846
+
847
+ #### Utilidad `renderMarkdown()`
848
+
849
+ Utilidad independiente que ignora la configuración global.
850
+
851
+ ```astro
852
+ ---
853
+ import { renderMarkdown } from "astro-intlayer/markdown";
854
+
855
+ const html = renderMarkdown("# My Title", { forceBlock: true });
856
+ ---
857
+
858
+ <div set:html={html} />
859
+ ```
860
+
861
+ </Tab>
701
862
  </Tabs>
702
863
 
703
864
  ## Configuración Global con `MarkdownProvider`
@@ -998,6 +1159,73 @@ También puedes usar tu propio renderizador de markdown:
998
1159
  > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del bundle de su aplicación.
999
1160
 
1000
1161
  </Tab>
1162
+ <Tab label="Remix" value="remix">
1163
+
1164
+ Remix no tiene un árbol de componentes para contener un proveedor, por lo que la configuración se instala una vez, como un singleton, al inicio del servidor. Configura el renderizador devuelto por `useMarkdownRenderer()`. Los nodos `md` devueltos por `useIntlayer` se renderizan con el compilador predeterminado; anula sus etiquetas por nodo con `.use()`.
1165
+
1166
+ ```typescript fileName="src/router.ts"
1167
+ import { installIntlayerMarkdown } from "remix-intlayer/markdown";
1168
+
1169
+ installIntlayerMarkdown({
1170
+ forceBlock: true,
1171
+ components: {
1172
+ h1: ({ children }) => `<h1 class="text-2xl font-bold">${children}</h1>`,
1173
+ },
1174
+ });
1175
+ ```
1176
+
1177
+ También puedes usar tu propio renderizador de markdown:
1178
+
1179
+ ```typescript fileName="src/router.ts"
1180
+ import { installIntlayerMarkdown } from "remix-intlayer/markdown";
1181
+
1182
+ installIntlayerMarkdown({
1183
+ renderMarkdown: async (md) => {
1184
+ const { marked } = await import("marked");
1185
+ return marked(md) as string;
1186
+ },
1187
+ });
1188
+ ```
1189
+
1190
+ > Usa `installIntlayerMarkdownDynamic(async () => …)` para cargar el renderizador de forma perezosa; el cargador solo se ejecuta en la primera llamada.
1191
+
1192
+ </Tab>
1193
+ <Tab label="Astro" value="astro">
1194
+
1195
+ Astro no tiene un árbol de componentes para contener un proveedor, por lo que la configuración se instala una vez, como un singleton, en el middleware (servidor) y en un `<script>` del cliente (navegador). Configura el renderizador devuelto por `useMarkdownRenderer()`. Los nodos `md` devueltos por `useIntlayer` se renderizan con el compilador predeterminado; anula sus etiquetas por nodo con `.use()`.
1196
+
1197
+ ```typescript fileName="src/middleware.ts"
1198
+ import { installIntlayerMarkdown } from "astro-intlayer/markdown";
1199
+ import { defineMiddleware } from "astro:middleware";
1200
+
1201
+ // Se ejecuta una vez cuando el servidor se inicia; el middleware de Intlayer es
1202
+ // registrado por la integración, antes de este archivo.
1203
+ installIntlayerMarkdown({
1204
+ forceBlock: true,
1205
+ components: {
1206
+ h1: ({ children }) => `<h1 class="text-2xl font-bold">${children}</h1>`,
1207
+ },
1208
+ });
1209
+
1210
+ export const onRequest = defineMiddleware((_context, next) => next());
1211
+ ```
1212
+
1213
+ También puedes usar tu propio renderizador de markdown:
1214
+
1215
+ ```typescript fileName="src/middleware.ts"
1216
+ import { installIntlayerMarkdown } from "astro-intlayer/markdown";
1217
+
1218
+ installIntlayerMarkdown({
1219
+ renderMarkdown: async (md) => {
1220
+ const { marked } = await import("marked");
1221
+ return marked(md) as string;
1222
+ },
1223
+ });
1224
+ ```
1225
+
1226
+ > Usa `installIntlayerMarkdownDynamic(async () => …)` para cargar el renderizador de forma perezosa; el cargador solo se ejecuta en la primera llamada.
1227
+
1228
+ </Tab>
1001
1229
  </Tabs>
1002
1230
 
1003
1231
  ## Suspense
@@ -1326,6 +1554,40 @@ Puede usar la función `parseMarkdown` del paquete Intlayer de su framework en e
1326
1554
  ```
1327
1555
 
1328
1556
  </Tab>
1557
+ <Tab label="Remix" value="remix">
1558
+
1559
+ Remix 3 renderiza en el servidor y transmite HTML, por lo que ningún AST necesita pasar al cliente. Analiza una vez y renderiza el AST donde se construya la página:
1560
+
1561
+ ```tsx fileName="src/views/article.tsx"
1562
+ import { parseMarkdown, renderMarkdown } from "remix-intlayer/markdown";
1563
+
1564
+ // 1. Analizar el markdown en un AST serializable (por ejemplo, una vez, al cargar el módulo)
1565
+ const ast = parseMarkdown("## My title \n\nLorem Ipsum");
1566
+
1567
+ export const ArticlePage = () => () => (
1568
+ // 2. Renderizar el AST: el renderizador acepta una cadena cruda o el AST analizado
1569
+ <article innerHTML={renderMarkdown(ast)} />
1570
+ );
1571
+ ```
1572
+
1573
+ </Tab>
1574
+ <Tab label="Astro" value="astro">
1575
+
1576
+ Las páginas de Astro se renderizan en el servidor, por lo que ningún AST necesita pasar al cliente. Analiza el Markdown en el frontmatter y renderízalo con `set:html`:
1577
+
1578
+ ```astro fileName="src/pages/article.astro"
1579
+ ---
1580
+ import { parseMarkdown, renderMarkdown } from "astro-intlayer/markdown";
1581
+
1582
+ // 1. Analizar el markdown en un AST serializable
1583
+ const ast = parseMarkdown("## My title \n\nLorem Ipsum");
1584
+ ---
1585
+
1586
+ <!-- 2. Renderizar el AST: el renderizador acepta una cadena cruda o el AST analizado -->
1587
+ <article set:html={renderMarkdown(ast)} />
1588
+ ```
1589
+
1590
+ </Tab>
1329
1591
  </Tabs>
1330
1592
 
1331
1593
  Este patrón garantiza que la lógica de análisis de Markdown se ejecute completamente en el servidor, lo que reduce significativamente el tiempo de ejecución en el cliente y mejora la velocidad de hidratación inicial.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2026-08-30
3
+ updatedAt: 2026-09-21
4
4
  title: "Analog i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Analog multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -157,6 +157,28 @@ bun add intlayer angular-intlayer vite-intlayer
157
157
  </Step>
158
158
  <Step number={2} title="Configuración de tu proyecto">
159
159
 
160
+ ### Arquitectura
161
+
162
+ En esta arquitectura, `angular-intlayer` proporciona `provideIntlayer()`, registrado en `src/app/app.config.ts` para que cada componente y página basada en archivos pueda leer su contenido a través de la señal `useIntlayer`. Analog se basa en Vite, por lo que el plugin `intlayer()` de `vite-intlayer` se agrega junto a `analog()` en `vite.config.ts` para observar y reconstruir tus declaraciones de contenido y ejecutar el proxy de locale. Las declaraciones de contenido se ubican junto a los componentes y páginas en `src/app/`.
163
+
164
+ ```bash
165
+ .
166
+ ├── src
167
+ │ ├── app
168
+ │ │ ├── pages
169
+ │ │ │ └── index.page.ts # File-based route using useIntlayer
170
+ │ │ ├── app.config.ts # Application config with provideIntlayer()
171
+ │ │ ├── app.content.ts # App content declaration
172
+ │ │ └── locale-switcher.component.ts
173
+ │ └── main.ts
174
+ ├── intlayer.config.ts
175
+ ├── package.json
176
+ ├── tsconfig.json
177
+ └── vite.config.ts # analog() and intlayer() Vite plugins
178
+ ```
179
+
180
+ ### Configuración
181
+
160
182
  Crea un archivo de configuración para configurar los idiomas de tu aplicación:
161
183
 
162
184
  ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2026-08-30
3
+ updatedAt: 2026-09-21
4
4
  title: "Angular 19 i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Angular 19 multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -164,6 +164,29 @@ bun add @angular-builders/custom-webpack --dev
164
164
  </Step>
165
165
  <Step number={2} title="Configuración de tu proyecto">
166
166
 
167
+ ### Arquitectura
168
+
169
+ En esta arquitectura, `angular-intlayer` proporciona `provideIntlayer()`, registrado en `src/app/app.config.ts` para que cada componente pueda leer su contenido a través de la señal `useIntlayer`. La CLI de Angular se cambia al builder personalizado de Webpack, y `webpack.config.ts` combina el plugin de Intlayer en la compilación para observar y reconstruir tus declaraciones de contenido. Las declaraciones de contenido se ubican junto a los componentes en `src/app/`.
170
+
171
+ ```bash
172
+ .
173
+ ├── src
174
+ │ ├── app
175
+ │ │ ├── app.component.html # Root template reading the content signal
176
+ │ │ ├── app.component.ts # Root component using useIntlayer
177
+ │ │ ├── app.config.ts # Application config with provideIntlayer()
178
+ │ │ ├── app.content.ts # App content declaration
179
+ │ │ └── locale-switcher.component.ts
180
+ │ └── main.ts
181
+ ├── angular.json # Custom Webpack builder for build and serve
182
+ ├── intlayer.config.ts
183
+ ├── package.json
184
+ ├── tsconfig.json
185
+ └── webpack.config.ts # mergeConfig() from angular-intlayer/webpack
186
+ ```
187
+
188
+ ### Configuración
189
+
167
190
  Crea un archivo de configuración para configurar los idiomas de tu aplicación:
168
191
 
169
192
  ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2026-08-30
3
+ updatedAt: 2026-09-21
4
4
  title: "Angular 22 i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Angular 22 multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -166,6 +166,29 @@ bun add @angular-builders/custom-esbuild --dev
166
166
  </Step>
167
167
  <Step number={2} title="Configuración de tu proyecto">
168
168
 
169
+ ### Arquitectura
170
+
171
+ En esta arquitectura, `angular-intlayer` proporciona `provideIntlayer()`, registrado en `src/app/app.config.ts` para que cada componente pueda leer su contenido a través de la señal `useIntlayer`. La CLI de Angular se cambia al builder personalizado de esbuild, y `esbuild.plugins.ts` registra el plugin de Intlayer en la compilación para observar y reconstruir tus declaraciones de contenido. Las declaraciones de contenido se ubican junto a los componentes en `src/app/`.
172
+
173
+ ```bash
174
+ .
175
+ ├── src
176
+ │ ├── app
177
+ │ │ ├── app.component.html # Root template reading the content signal
178
+ │ │ ├── app.component.ts # Root component using useIntlayer
179
+ │ │ ├── app.config.ts # Application config with provideIntlayer()
180
+ │ │ ├── app.content.ts # App content declaration
181
+ │ │ └── locale-switcher.component.ts
182
+ │ └── main.ts
183
+ ├── angular.json # Custom esbuild builder for build and serve
184
+ ├── esbuild.plugins.ts # intlayerEsbuildPlugin() from angular-intlayer/esbuild
185
+ ├── intlayer.config.ts
186
+ ├── package.json
187
+ └── tsconfig.json
188
+ ```
189
+
190
+ ### Configuración
191
+
169
192
  Crea un archivo de configuración para establecer los idiomas de tu aplicación:
170
193
 
171
194
  ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-03-07
3
- updatedAt: 2026-09-20
3
+ updatedAt: 2026-09-21
4
4
  title: "Astro i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Astro multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -160,6 +160,29 @@ bun add intlayer astro-intlayer
160
160
  </Step>
161
161
  <Step number={2} title="Configurar tu proyecto">
162
162
 
163
+ ### Arquitectura
164
+
165
+ En esta arquitectura, la integración `intlayer()` registrada en `astro.config.ts` compila tus diccionarios y agrega un middleware que resuelve la locale de cada solicitud y la expone en `Astro.locals.intlayer`. Las páginas residen bajo un segmento rest `src/pages/[...locale]/`, de modo que la locale predeterminada se sirve sin prefijo y cada otra locale obtiene su propia URL dedicada. Los archivos `.astro` leen el contenido con los hooks `useIntlayer` / `useLocale` de `astro-intlayer`, y las declaraciones de contenido se ubican junto a tus componentes en `src/`.
166
+
167
+ ```bash
168
+ .
169
+ ├── src
170
+ │ ├── app.content.tsx # App content declaration
171
+ │ ├── components
172
+ │ │ └── LocaleSwitcher.astro # Locale switcher component
173
+ │ └── pages
174
+ │ ├── [...locale]
175
+ │ │ └── index.astro # Localized page (rest param also serves the default locale)
176
+ │ ├── robots.txt.ts # robots.txt endpoint
177
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
178
+ ├── astro.config.ts # Astro config with the intlayer() integration
179
+ ├── intlayer.config.ts
180
+ ├── package.json
181
+ └── tsconfig.json
182
+ ```
183
+
184
+ ### Configuración
185
+
163
186
  Crea un archivo de configuración para definir los idiomas de tu aplicación:
164
187
 
165
188
  ```typescript fileName="intlayer.config.ts"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-24
3
- updatedAt: 2026-09-20
3
+ updatedAt: 2026-09-21
4
4
  title: "Astro + Lit i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Astro + Lit multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -168,6 +168,30 @@ bun add intlayer astro-intlayer lit lit-intlayer @astrojs/lit
168
168
  </Step>
169
169
  <Step number={2} title="Configurar tu proyecto">
170
170
 
171
+ ### Arquitectura
172
+
173
+ En esta arquitectura, la integración `intlayer()` registrada en `astro.config.ts` compila tus diccionarios y agrega un middleware que resuelve la locale de cada solicitud y la expone en `Astro.locals.intlayer`. Las páginas residen bajo un segmento rest `src/pages/[...locale]/`, de modo que la locale predeterminada se sirve sin prefijo y cada otra locale obtiene su propia URL dedicada. Los archivos `.astro` leen el contenido con los hooks `useIntlayer` / `useLocale` de `astro-intlayer` para el renderizado en el servidor, y la isla de Lit (`src/components/lit/LitDemo.ts`) recibe la locale detectada por el servidor como prop y la pasa a `lit-intlayer` para la parte interactiva. Las declaraciones de contenido se ubican junto a tus componentes en `src/`.
174
+
175
+ ```bash
176
+ .
177
+ ├── src
178
+ │ ├── components
179
+ │ │ └── lit
180
+ │ │ ├── app.content.ts # App content declaration
181
+ │ │ └── LitDemo.ts # Lit custom element (content + locale switcher)
182
+ │ └── pages
183
+ │ ├── [...locale]
184
+ │ │ └── index.astro # Localized page mounting the custom element
185
+ │ ├── robots.txt.ts # robots.txt endpoint
186
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
187
+ ├── astro.config.ts # Astro config with the intlayer() and lit() integrations
188
+ ├── intlayer.config.ts
189
+ ├── package.json
190
+ └── tsconfig.json
191
+ ```
192
+
193
+ ### Configuración
194
+
171
195
  Crea un archivo de configuración para definir los idiomas de tu aplicación:
172
196
 
173
197
  ```typescript fileName="intlayer.config.ts"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-24
3
- updatedAt: 2026-09-20
3
+ updatedAt: 2026-09-21
4
4
  title: "Astro + Preact i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Astro + Preact multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -167,6 +167,31 @@ bun add intlayer astro-intlayer preact preact-intlayer @astrojs/preact
167
167
  </Step>
168
168
  <Step number={2} title="Configurar tu proyecto">
169
169
 
170
+ ### Arquitectura
171
+
172
+ En esta arquitectura, la integración `intlayer()` registrada en `astro.config.ts` compila tus diccionarios y agrega un middleware que resuelve la locale de cada solicitud y la expone en `Astro.locals.intlayer`. Las páginas residen bajo un segmento rest `src/pages/[...locale]/`, de modo que la locale predeterminada se sirve sin prefijo y cada otra locale obtiene su propia URL dedicada. Los archivos `.astro` leen el contenido con los hooks `useIntlayer` / `useLocale` de `astro-intlayer` para el renderizado en el servidor, y la isla de Preact (`src/components/preact/PreactIsland.tsx`) recibe la locale detectada por el servidor como prop y la pasa a `preact-intlayer` para la parte interactiva. Las declaraciones de contenido se ubican junto a tus componentes en `src/`.
173
+
174
+ ```bash
175
+ .
176
+ ├── src
177
+ │ ├── app.content.tsx # App content declaration
178
+ │ ├── components
179
+ │ │ └── preact
180
+ │ │ ├── LocaleSwitcher.tsx # Locale switcher rendered inside the island
181
+ │ │ └── PreactIsland.tsx # Preact island wrapping the tree in IntlayerProvider
182
+ │ └── pages
183
+ │ ├── [...locale]
184
+ │ │ └── index.astro # Localized page mounting the island
185
+ │ ├── robots.txt.ts # robots.txt endpoint
186
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
187
+ ├── astro.config.ts # Astro config with the intlayer() and preact() integrations
188
+ ├── intlayer.config.ts
189
+ ├── package.json
190
+ └── tsconfig.json
191
+ ```
192
+
193
+ ### Configuración
194
+
170
195
  Crea un archivo de configuración para definir los idiomas de tu aplicación:
171
196
 
172
197
  ```typescript fileName="intlayer.config.ts"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-03-07
3
- updatedAt: 2026-09-20
3
+ updatedAt: 2026-09-21
4
4
  title: "Astro + React i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Astro + React multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -170,6 +170,31 @@ bun add intlayer astro-intlayer react react-dom react-intlayer @astrojs/react
170
170
  </Step>
171
171
  <Step number={2} title="Configurar tu proyecto">
172
172
 
173
+ ### Arquitectura
174
+
175
+ En esta arquitectura, la integración `intlayer()` registrada en `astro.config.ts` compila tus diccionarios y agrega un middleware que resuelve la locale de cada solicitud y la expone en `Astro.locals.intlayer`. Las páginas residen bajo un segmento rest `src/pages/[...locale]/`, de modo que la locale predeterminada se sirve sin prefijo y cada otra locale obtiene su propia URL dedicada. Los archivos `.astro` leen el contenido con los hooks `useIntlayer` / `useLocale` de `astro-intlayer` para el renderizado en el servidor, y la isla de React (`src/components/react/ReactIsland.tsx`) recibe la locale detectada por el servidor como prop y la pasa a `react-intlayer` para la parte interactiva. Las declaraciones de contenido se ubican junto a tus componentes en `src/`.
176
+
177
+ ```bash
178
+ .
179
+ ├── src
180
+ │ ├── app.content.tsx # App content declaration
181
+ │ ├── components
182
+ │ │ └── react
183
+ │ │ ├── LocaleSwitcher.tsx # Locale switcher rendered inside the island
184
+ │ │ └── ReactIsland.tsx # React island wrapping the tree in IntlayerProvider
185
+ │ └── pages
186
+ │ ├── [...locale]
187
+ │ │ └── index.astro # Localized page mounting the island
188
+ │ ├── robots.txt.ts # robots.txt endpoint
189
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
190
+ ├── astro.config.ts # Astro config with the intlayer() and react() integrations
191
+ ├── intlayer.config.ts
192
+ ├── package.json
193
+ └── tsconfig.json
194
+ ```
195
+
196
+ ### Configuración
197
+
173
198
  Crea un archivo de configuración para definir los idiomas de tu aplicación:
174
199
 
175
200
  ```typescript fileName="intlayer.config.ts"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-24
3
- updatedAt: 2026-09-20
3
+ updatedAt: 2026-09-21
4
4
  title: "Astro + Solid i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Astro + Solid multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -167,6 +167,31 @@ bun add intlayer astro-intlayer solid-js solid-intlayer @astrojs/solid-js
167
167
  </Step>
168
168
  <Step number={2} title="Configurar tu proyecto">
169
169
 
170
+ ### Arquitectura
171
+
172
+ En esta arquitectura, la integración `intlayer()` registrada en `astro.config.ts` compila tus diccionarios y agrega un middleware que resuelve la locale de cada solicitud y la expone en `Astro.locals.intlayer`. Las páginas residen bajo un segmento rest `src/pages/[...locale]/`, de modo que la locale predeterminada se sirve sin prefijo y cada otra locale obtiene su propia URL dedicada. Los archivos `.astro` leen el contenido con los hooks `useIntlayer` / `useLocale` de `astro-intlayer` para el renderizado en el servidor, y la isla de Solid (`src/components/solid/SolidIsland.tsx`) recibe la locale detectada por el servidor como prop y la pasa a `solid-intlayer` para la parte interactiva. Las declaraciones de contenido se ubican junto a tus componentes en `src/`.
173
+
174
+ ```bash
175
+ .
176
+ ├── src
177
+ │ ├── app.content.tsx # App content declaration
178
+ │ ├── components
179
+ │ │ └── solid
180
+ │ │ ├── LocaleSwitcher.tsx # Locale switcher rendered inside the island
181
+ │ │ └── SolidIsland.tsx # Solid island wrapping the tree in IntlayerProvider
182
+ │ └── pages
183
+ │ ├── [...locale]
184
+ │ │ └── index.astro # Localized page mounting the island
185
+ │ ├── robots.txt.ts # robots.txt endpoint
186
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
187
+ ├── astro.config.ts # Astro config with the intlayer() and solid() integrations
188
+ ├── intlayer.config.ts
189
+ ├── package.json
190
+ └── tsconfig.json
191
+ ```
192
+
193
+ ### Configuración
194
+
170
195
  Crea un archivo de configuración para definir los idiomas de tu aplicación:
171
196
 
172
197
  ```typescript fileName="intlayer.config.ts"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-24
3
- updatedAt: 2026-09-20
3
+ updatedAt: 2026-09-21
4
4
  title: "Astro + Svelte i18n - Guía completa para traducir tu aplicación"
5
5
  description: "Sin más i18next. La guía 2026 para crear una aplicación Astro + Svelte multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
6
6
  keywords:
@@ -167,6 +167,30 @@ bun add intlayer astro-intlayer svelte svelte-intlayer @astrojs/svelte
167
167
  </Step>
168
168
  <Step number={2} title="Configurar tu proyecto">
169
169
 
170
+ ### Arquitectura
171
+
172
+ En esta arquitectura, la integración `intlayer()` registrada en `astro.config.ts` compila tus diccionarios y agrega un middleware que resuelve la locale de cada solicitud y la expone en `Astro.locals.intlayer`. Las páginas residen bajo un segmento rest `src/pages/[...locale]/`, de modo que la locale predeterminada se sirve sin prefijo y cada otra locale obtiene su propia URL dedicada. Los archivos `.astro` leen el contenido con los hooks `useIntlayer` / `useLocale` de `astro-intlayer` para el renderizado en el servidor, y la isla de Svelte (`src/components/svelte/SvelteIsland.svelte`) recibe la locale detectada por el servidor como prop y la pasa a `svelte-intlayer` para la parte interactiva. Las declaraciones de contenido se ubican junto a tus componentes en `src/`.
173
+
174
+ ```bash
175
+ .
176
+ ├── src
177
+ │ ├── app.content.ts # App content declaration
178
+ │ ├── components
179
+ │ │ └── svelte
180
+ │ │ └── SvelteIsland.svelte # Svelte island (content + locale switcher)
181
+ │ └── pages
182
+ │ ├── [...locale]
183
+ │ │ └── index.astro # Localized page mounting the island
184
+ │ ├── robots.txt.ts # robots.txt endpoint
185
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
186
+ ├── astro.config.ts # Astro config with the intlayer() and svelte() integrations
187
+ ├── intlayer.config.ts
188
+ ├── package.json
189
+ └── tsconfig.json
190
+ ```
191
+
192
+ ### Configuración
193
+
170
194
  Crea un archivo de configuración para definir los idiomas de tu aplicación:
171
195
 
172
196
  ```typescript fileName="intlayer.config.ts"