@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,16 +1,17 @@
1
1
  ---
2
2
  createdAt: 2025-02-07
3
- updatedAt: 2026-05-19
3
+ updatedAt: 2026-09-21
4
4
  title: Markdown
5
- description: Découvrez comment déclarer et utiliser du contenu Markdown sur votre site multilingue avec Intlayer. Suivez les étapes de cette documentation en ligne pour intégrer facilement Markdown à votre projet.
5
+ description: Apprenez à déclarer et à utiliser du contenu Markdown dans votre site Web multilingue avec Intlayer. Suivez les étapes de cette documentation en ligne pour intégrer Markdown de manière transparente dans votre projet.
6
6
  keywords:
7
7
  - Markdown
8
- - Internationalisation
9
- - Documentation
8
+ - Dictionnaire
10
9
  - Intlayer
11
10
  - Next.js
12
11
  - JavaScript
13
12
  - React
13
+ - Remix
14
+ - Astro
14
15
  slugs:
15
16
  - doc
16
17
  - concept
@@ -487,6 +488,111 @@ Le rendu Markdown prend en charge **MDX** — utilisez n'importe quel composant
487
488
  ```
488
489
 
489
490
  </Tab>
491
+ <Tab label="Remix" value="remix">
492
+ Dans Remix 3, les nœuds Markdown sont rendus sur le serveur en une chaîne HTML. Injectez-la avec la prop `innerHTML` de Remix JSX, ou avec `html.raw` dans une vue `html-template`.
493
+
494
+ ```tsx fileName="src/views/home.tsx"
495
+ import { useIntlayer } from "remix-intlayer";
496
+
497
+ export const HomePage = () => () => {
498
+ const { myMarkdownContent } = useIntlayer("app");
499
+
500
+ return <div innerHTML={myMarkdownContent.value} />;
501
+ };
502
+ ```
503
+
504
+ ```ts fileName="src/views/home.ts"
505
+ import { html } from "remix/html-template";
506
+ import { useIntlayer } from "remix-intlayer";
507
+
508
+ export const renderHomePage = () => {
509
+ const { myMarkdownContent } = useIntlayer("app");
510
+
511
+ return html.raw`<div>${myMarkdownContent.value}</div>`;
512
+ };
513
+ ```
514
+
515
+ > Remix échappe les valeurs interpolées par défaut. `innerHTML` et `html.raw` sont les deux mécanismes d'exclusion, ce dont une chaîne Markdown rendue a besoin.
516
+
517
+ Vous pouvez également fournir des surcharges locales pour des balises spécifiques à l'aide de la méthode `.use()`. Les surcharges sont des fonctions renvoyant une chaîne HTML :
518
+
519
+ ```tsx
520
+ <div
521
+ innerHTML={myMarkdownContent.use({
522
+ h1: ({ children }) => `<h1 class="text-3xl font-bold">${children}</h1>`,
523
+ })}
524
+ />
525
+ ```
526
+
527
+ `.value` est la chaîne HTML rendue, tandis que `String()` / `.toString()` renvoient la source Markdown brute :
528
+
529
+ ```tsx
530
+ myMarkdownContent.value // "<h1>…</h1>"
531
+ String(myMarkdownContent) // "# …"
532
+ myMarkdownContent.toString() // "# …"
533
+ ```
534
+
535
+ Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
536
+
537
+ ```tsx
538
+ myMarkdownContent.metadata
539
+ myMarkdownContent.metadata.title
540
+ ```
541
+
542
+ </Tab>
543
+ <Tab label="Astro" value="astro">
544
+ Dans Astro, les nœuds Markdown sont rendus en une chaîne HTML. Injectez-la avec la directive `set:html` dans le template, ou avec `innerHTML` dans un `<script>` côté client.
545
+
546
+ ```astro fileName="src/pages/index.astro"
547
+ ---
548
+ import { useIntlayer } from "astro-intlayer";
549
+
550
+ const { myMarkdownContent } = useIntlayer("app");
551
+ ---
552
+
553
+ <div set:html={myMarkdownContent.value} />
554
+ ```
555
+
556
+ ```astro fileName="src/components/Content.astro"
557
+ <div id="content"></div>
558
+
559
+ <script>
560
+ import { useIntlayer } from "astro-intlayer";
561
+
562
+ const { myMarkdownContent } = useIntlayer("app");
563
+
564
+ document.querySelector("#content")!.innerHTML = myMarkdownContent.value;
565
+ </script>
566
+ ```
567
+
568
+ > Astro échappe les `{expressions}` par défaut. `set:html` est le mécanisme d'exclusion, ce dont une chaîne Markdown rendue a besoin.
569
+
570
+ Vous pouvez également fournir des surcharges locales pour des balises spécifiques à l'aide de la méthode `.use()`. Les surcharges sont des fonctions renvoyant une chaîne HTML :
571
+
572
+ ```astro
573
+ <div
574
+ set:html={myMarkdownContent.use({
575
+ h1: ({ children }) => `<h1 class="text-3xl font-bold">${children}</h1>`,
576
+ })}
577
+ />
578
+ ```
579
+
580
+ `.value` est la chaîne HTML rendue, tandis que `String()` / `.toString()` renvoient la source Markdown brute :
581
+
582
+ ```astro
583
+ myMarkdownContent.value // "<h1>…</h1>"
584
+ String(myMarkdownContent) // "# …"
585
+ myMarkdownContent.toString() // "# …"
586
+ ```
587
+
588
+ Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
589
+
590
+ ```astro
591
+ myMarkdownContent.metadata
592
+ myMarkdownContent.metadata.title
593
+ ```
594
+
595
+ </Tab>
490
596
  </Tabs>
491
597
 
492
598
  ### 2. Utilitaires d'aide (Chaînes Markdown Uniquement)
@@ -698,6 +804,60 @@ Ces utilitaires rendent **des chaînes Markdown brutes** et sont indépendants d
698
804
  ```
699
805
 
700
806
  </Tab>
807
+ <Tab label="Remix" value="remix">
808
+ #### Hook `useMarkdownRenderer()`
809
+
810
+ Obtenez une fonction de rendu préconfigurée par `installIntlayerMarkdown()`. Elle renvoie une chaîne HTML.
811
+
812
+ ```tsx
813
+ import { useMarkdownRenderer } from "remix-intlayer/markdown";
814
+
815
+ const renderMarkdown = useMarkdownRenderer({ forceBlock: true });
816
+
817
+ return <div innerHTML={renderMarkdown("# My Title")} />;
818
+ ```
819
+
820
+ #### Utilitaire `renderMarkdown()`
821
+
822
+ Utilitaire autonome qui ignore la configuration globale.
823
+
824
+ ```tsx
825
+ import { renderMarkdown } from "remix-intlayer/markdown";
826
+
827
+ const html = renderMarkdown("# My Title", { forceBlock: true });
828
+ ```
829
+
830
+ </Tab>
831
+ <Tab label="Astro" value="astro">
832
+ #### Hook `useMarkdownRenderer()`
833
+
834
+ Obtenez une fonction de rendu préconfigurée par `installIntlayerMarkdown()`. Elle renvoie une chaîne HTML.
835
+
836
+ ```astro
837
+ ---
838
+ import { useMarkdownRenderer } from "astro-intlayer/markdown";
839
+
840
+ const renderMarkdown = useMarkdownRenderer({ forceBlock: true });
841
+ ---
842
+
843
+ <div set:html={renderMarkdown("# My Title")} />
844
+ ```
845
+
846
+ #### Utilitaire `renderMarkdown()`
847
+
848
+ Utilitaire autonome qui ignore la configuration globale.
849
+
850
+ ```astro
851
+ ---
852
+ import { renderMarkdown } from "astro-intlayer/markdown";
853
+
854
+ const html = renderMarkdown("# My Title", { forceBlock: true });
855
+ ---
856
+
857
+ <div set:html={html} />
858
+ ```
859
+
860
+ </Tab>
701
861
  </Tabs>
702
862
 
703
863
  ## Configuration Globale avec `MarkdownProvider`
@@ -998,6 +1158,73 @@ Vous pouvez également utiliser votre propre moteur de rendu Markdown :
998
1158
  > L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
999
1159
 
1000
1160
  </Tab>
1161
+ <Tab label="Remix" value="remix">
1162
+
1163
+ Remix n'a pas d'arbre de composants pour contenir un provider, la configuration est donc installée une seule fois, en tant que singleton, au démarrage du serveur. Elle configure le renderer renvoyé par `useMarkdownRenderer()`. Les nœuds `md` renvoyés par `useIntlayer` sont rendus avec le compilateur par défaut ; surchargez leurs balises par nœud avec `.use()`.
1164
+
1165
+ ```typescript fileName="src/router.ts"
1166
+ import { installIntlayerMarkdown } from "remix-intlayer/markdown";
1167
+
1168
+ installIntlayerMarkdown({
1169
+ forceBlock: true,
1170
+ components: {
1171
+ h1: ({ children }) => `<h1 class="text-2xl font-bold">${children}</h1>`,
1172
+ },
1173
+ });
1174
+ ```
1175
+
1176
+ Vous pouvez également utiliser votre propre rendu de markdown :
1177
+
1178
+ ```typescript fileName="src/router.ts"
1179
+ import { installIntlayerMarkdown } from "remix-intlayer/markdown";
1180
+
1181
+ installIntlayerMarkdown({
1182
+ renderMarkdown: async (md) => {
1183
+ const { marked } = await import("marked");
1184
+ return marked(md) as string;
1185
+ },
1186
+ });
1187
+ ```
1188
+
1189
+ > Utilisez `installIntlayerMarkdownDynamic(async () => …)` pour charger le renderer lui-même de manière paresseuse ; le chargeur ne s'exécute qu'au premier appel.
1190
+
1191
+ </Tab>
1192
+ <Tab label="Astro" value="astro">
1193
+
1194
+ Astro n'a pas d'arbre de composants pour contenir un provider, la configuration est donc installée une seule fois, en tant que singleton, dans le middleware (serveur) et dans un `<script>` côté client (navigateur). Elle configure le renderer renvoyé par `useMarkdownRenderer()`. Les nœuds `md` renvoyés par `useIntlayer` sont rendus avec le compilateur par défaut ; surchargez leurs balises par nœud avec `.use()`.
1195
+
1196
+ ```typescript fileName="src/middleware.ts"
1197
+ import { installIntlayerMarkdown } from "astro-intlayer/markdown";
1198
+ import { defineMiddleware } from "astro:middleware";
1199
+
1200
+ // S'exécute une fois au démarrage du serveur ; le middleware Intlayer lui-même est
1201
+ // enregistré par l'intégration, en amont de ce fichier.
1202
+ installIntlayerMarkdown({
1203
+ forceBlock: true,
1204
+ components: {
1205
+ h1: ({ children }) => `<h1 class="text-2xl font-bold">${children}</h1>`,
1206
+ },
1207
+ });
1208
+
1209
+ export const onRequest = defineMiddleware((_context, next) => next());
1210
+ ```
1211
+
1212
+ Vous pouvez également utiliser votre propre rendu de markdown :
1213
+
1214
+ ```typescript fileName="src/middleware.ts"
1215
+ import { installIntlayerMarkdown } from "astro-intlayer/markdown";
1216
+
1217
+ installIntlayerMarkdown({
1218
+ renderMarkdown: async (md) => {
1219
+ const { marked } = await import("marked");
1220
+ return marked(md) as string;
1221
+ },
1222
+ });
1223
+ ```
1224
+
1225
+ > Utilisez `installIntlayerMarkdownDynamic(async () => …)` pour charger le renderer lui-même de manière paresseuse ; le chargeur ne s'exécute qu'au premier appel.
1226
+
1227
+ </Tab>
1001
1228
  </Tabs>
1002
1229
 
1003
1230
  ## Suspense
@@ -1326,6 +1553,40 @@ Vous pouvez utiliser la fonction `parseMarkdown` du package Intlayer de votre fr
1326
1553
  ```
1327
1554
 
1328
1555
  </Tab>
1556
+ <Tab label="Remix" value="remix">
1557
+
1558
+ Remix 3 effectue le rendu sur le serveur et diffuse le HTML, aucun AST n'a donc besoin d'être transmis au client. Analysez-le une seule fois et rendez l'AST là où la page est construite :
1559
+
1560
+ ```tsx fileName="src/views/article.tsx"
1561
+ import { parseMarkdown, renderMarkdown } from "remix-intlayer/markdown";
1562
+
1563
+ // 1. Analyser le markdown en un AST sérialisable (ex. une fois, au chargement du module)
1564
+ const ast = parseMarkdown("## My title \n\nLorem Ipsum");
1565
+
1566
+ export const ArticlePage = () => () => (
1567
+ // 2. Rendre l'AST : le renderer accepte une chaîne brute ou l'AST analysé
1568
+ <article innerHTML={renderMarkdown(ast)} />
1569
+ );
1570
+ ```
1571
+
1572
+ </Tab>
1573
+ <Tab label="Astro" value="astro">
1574
+
1575
+ Les pages Astro sont rendues sur le serveur, aucun AST n'a donc besoin d'être transmis au client. Analysez le Markdown dans le frontmatter et rendez-le avec `set:html` :
1576
+
1577
+ ```astro fileName="src/pages/article.astro"
1578
+ ---
1579
+ import { parseMarkdown, renderMarkdown } from "astro-intlayer/markdown";
1580
+
1581
+ // 1. Analyser le markdown en un AST sérialisable
1582
+ const ast = parseMarkdown("## My title \n\nLorem Ipsum");
1583
+ ---
1584
+
1585
+ <!-- 2. Rendre l'AST : le renderer accepte une chaîne brute ou l'AST analysé -->
1586
+ <article set:html={renderMarkdown(ast)} />
1587
+ ```
1588
+
1589
+ </Tab>
1329
1590
  </Tabs>
1330
1591
 
1331
1592
  Ce modèle garantit que la logique d'analyse Markdown est entièrement exécutée sur le serveur, ce qui réduit considérablement le temps d'exécution côté client et améliore la vitesse d'hydratation initiale.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2026-08-29
3
+ updatedAt: 2026-09-21
4
4
  title: "Analog i18n - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Analog multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
6
6
  keywords:
@@ -157,6 +157,28 @@ bun add intlayer angular-intlayer vite-intlayer
157
157
  </Step>
158
158
  <Step number={2} title="Configuration de votre projet">
159
159
 
160
+ ### Architecture
161
+
162
+ Dans cette architecture, `angular-intlayer` fournit `provideIntlayer()`, enregistré dans `src/app/app.config.ts` afin que chaque composant et chaque page basée sur les fichiers puissent lire leur contenu via le signal `useIntlayer`. Analog repose sur Vite, le plugin `intlayer()` de `vite-intlayer` est donc ajouté aux côtés d'`analog()` dans `vite.config.ts` pour observer et reconstruire vos déclarations de contenu et exécuter le proxy de locale. Les déclarations de contenu sont placées aux côtés des composants et des pages dans `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
+ ### Configuration
181
+
160
182
  Créez un fichier de configuration pour configurer les langues de votre application :
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-29
3
+ updatedAt: 2026-09-21
4
4
  title: "Angular 19 i18n - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Angular 19 multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
6
6
  keywords:
@@ -164,6 +164,29 @@ bun add @angular-builders/custom-webpack --dev
164
164
  </Step>
165
165
  <Step number={2} title="Configuration de votre projet">
166
166
 
167
+ ### Architecture
168
+
169
+ Dans cette architecture, `angular-intlayer` fournit `provideIntlayer()`, enregistré dans `src/app/app.config.ts` afin que chaque composant puisse lire son contenu via le signal `useIntlayer`. L'Angular CLI est configurée avec le builder Webpack personnalisé, et `webpack.config.ts` fusionne le plugin Intlayer dans le build pour observer et reconstruire vos déclarations de contenu. Les déclarations de contenu sont placées aux côtés des composants dans `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
+ ### Configuration
189
+
167
190
  Créez un fichier de configuration pour configurer les langues de votre application :
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-29
3
+ updatedAt: 2026-09-21
4
4
  title: "Angular 22 i18n - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Angular 22 multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
6
6
  keywords:
@@ -166,6 +166,29 @@ bun add @angular-builders/custom-esbuild --dev
166
166
  </Step>
167
167
  <Step number={2} title="Configuration de votre projet">
168
168
 
169
+ ### Architecture
170
+
171
+ Dans cette architecture, `angular-intlayer` fournit `provideIntlayer()`, enregistré dans `src/app/app.config.ts` afin que chaque composant puisse lire son contenu via le signal `useIntlayer`. L'Angular CLI est configurée avec le builder esbuild personnalisé, et `esbuild.plugins.ts` enregistre le plugin Intlayer dans le build pour observer et reconstruire vos déclarations de contenu. Les déclarations de contenu sont placées aux côtés des composants dans `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
+ ### Configuration
191
+
169
192
  Créez un fichier de configuration pour configurer les langues de votre application :
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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Astro multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
6
6
  keywords:
@@ -160,6 +160,29 @@ bun add intlayer astro-intlayer
160
160
  </Step>
161
161
  <Step number={2} title="Configurer votre projet">
162
162
 
163
+ ### Architecture
164
+
165
+ Dans cette architecture, l'intégration `intlayer()` enregistrée dans `astro.config.ts` compile vos dictionnaires et ajoute un middleware qui résout la locale de chaque requête et l'expose sur `Astro.locals.intlayer`. Les pages résident sous un segment rest `src/pages/[...locale]/`, ainsi la locale par défaut est servie sans préfixe et chaque autre locale dispose de sa propre URL dédiée. Les fichiers `.astro` lisent le contenu avec les hooks `useIntlayer` / `useLocale` d'`astro-intlayer`, et les déclarations de contenu sont placées aux côtés de vos composants dans `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
+ ### Configuration
185
+
163
186
  Créez un fichier de configuration pour définir les langues de votre application :
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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Astro + Lit multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
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="Configurer votre projet">
170
170
 
171
+ ### Architecture
172
+
173
+ Dans cette architecture, l'intégration `intlayer()` enregistrée dans `astro.config.ts` compile vos dictionnaires et ajoute un middleware qui résout la locale de chaque requête et l'expose sur `Astro.locals.intlayer`. Les pages résident sous un segment rest `src/pages/[...locale]/`, ainsi la locale par défaut est servie sans préfixe et chaque autre locale dispose de sa propre URL dédiée. Les fichiers `.astro` lisent le contenu avec les hooks `useIntlayer` / `useLocale` d'`astro-intlayer` pour le rendu serveur, et l'îlot Lit (`src/components/lit/LitDemo.ts`) reçoit la locale détectée par le serveur en prop et la transmet à `lit-intlayer` pour la partie interactive. Les déclarations de contenu sont placées aux côtés de vos composants dans `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
+ ### Configuration
194
+
171
195
  Créez un fichier de configuration pour définir les langues de votre application :
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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Astro + Preact multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
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="Configurer votre projet">
169
169
 
170
+ ### Architecture
171
+
172
+ Dans cette architecture, l'intégration `intlayer()` enregistrée dans `astro.config.ts` compile vos dictionnaires et ajoute un middleware qui résout la locale de chaque requête et l'expose sur `Astro.locals.intlayer`. Les pages résident sous un segment rest `src/pages/[...locale]/`, ainsi la locale par défaut est servie sans préfixe et chaque autre locale dispose de sa propre URL dédiée. Les fichiers `.astro` lisent le contenu avec les hooks `useIntlayer` / `useLocale` d'`astro-intlayer` pour le rendu serveur, et l'îlot Preact (`src/components/preact/PreactIsland.tsx`) reçoit la locale détectée par le serveur en prop et la transmet à `preact-intlayer` pour la partie interactive. Les déclarations de contenu sont placées aux côtés de vos composants dans `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
+ ### Configuration
194
+
170
195
  Créez un fichier de configuration pour définir les langues de votre application :
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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Astro + React multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
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="Configurer votre projet">
172
172
 
173
+ ### Architecture
174
+
175
+ Dans cette architecture, l'intégration `intlayer()` enregistrée dans `astro.config.ts` compile vos dictionnaires et ajoute un middleware qui résout la locale de chaque requête et l'expose sur `Astro.locals.intlayer`. Les pages résident sous un segment rest `src/pages/[...locale]/`, ainsi la locale par défaut est servie sans préfixe et chaque autre locale dispose de sa propre URL dédiée. Les fichiers `.astro` lisent le contenu avec les hooks `useIntlayer` / `useLocale` d'`astro-intlayer` pour le rendu serveur, et l'îlot React (`src/components/react/ReactIsland.tsx`) reçoit la locale détectée par le serveur en prop et la transmet à `react-intlayer` pour la partie interactive. Les déclarations de contenu sont placées aux côtés de vos composants dans `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
+ ### Configuration
197
+
173
198
  Créez un fichier de configuration pour définir les langues de votre application :
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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Astro + Solid multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
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="Configurer votre projet">
169
169
 
170
+ ### Architecture
171
+
172
+ Dans cette architecture, l'intégration `intlayer()` enregistrée dans `astro.config.ts` compile vos dictionnaires et ajoute un middleware qui résout la locale de chaque requête et l'expose sur `Astro.locals.intlayer`. Les pages résident sous un segment rest `src/pages/[...locale]/`, ainsi la locale par défaut est servie sans préfixe et chaque autre locale dispose de sa propre URL dédiée. Les fichiers `.astro` lisent le contenu avec les hooks `useIntlayer` / `useLocale` d'`astro-intlayer` pour le rendu serveur, et l'îlot Solid (`src/components/solid/SolidIsland.tsx`) reçoit la locale détectée par le serveur en prop et la transmet à `solid-intlayer` pour la partie interactive. Les déclarations de contenu sont placées aux côtés de vos composants dans `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
+ ### Configuration
194
+
170
195
  Créez un fichier de configuration pour définir les langues de votre application :
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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Astro + Svelte multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
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="Configurer votre projet">
169
169
 
170
+ ### Architecture
171
+
172
+ Dans cette architecture, l'intégration `intlayer()` enregistrée dans `astro.config.ts` compile vos dictionnaires et ajoute un middleware qui résout la locale de chaque requête et l'expose sur `Astro.locals.intlayer`. Les pages résident sous un segment rest `src/pages/[...locale]/`, ainsi la locale par défaut est servie sans préfixe et chaque autre locale dispose de sa propre URL dédiée. Les fichiers `.astro` lisent le contenu avec les hooks `useIntlayer` / `useLocale` d'`astro-intlayer` pour le rendu serveur, et l'îlot Svelte (`src/components/svelte/SvelteIsland.svelte`) reçoit la locale détectée par le serveur en prop et la transmet à `svelte-intlayer` pour la partie interactive. Les déclarations de contenu sont placées aux côtés de vos composants dans `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
+ ### Configuration
193
+
170
194
  Créez un fichier de configuration pour définir les langues de votre application :
171
195
 
172
196
  ```typescript fileName="intlayer.config.ts"