@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: Узнайте, как объявлять и использовать Markdown-контент на вашем многоязычном сайте с помощью Intlayer. Следуйте инструкциям в этой документации, чтобы легко интегрировать Markdown в ваш проект.
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
@@ -494,6 +496,111 @@ Intlayer предоставляет два независимых способа
494
496
  ```
495
497
 
496
498
  </Tab>
499
+ <Tab label="Remix" value="remix">
500
+ В Remix 3 узлы Markdown рендерятся на сервере в строку HTML. Внедрите ее с помощью пропа `innerHTML` в Remix JSX или с помощью `html.raw` в представлении `html-template`.
501
+
502
+ ```tsx fileName="src/views/home.tsx"
503
+ import { useIntlayer } from "remix-intlayer";
504
+
505
+ export const HomePage = () => () => {
506
+ const { myMarkdownContent } = useIntlayer("app");
507
+
508
+ return <div innerHTML={myMarkdownContent.value} />;
509
+ };
510
+ ```
511
+
512
+ ```ts fileName="src/views/home.ts"
513
+ import { html } from "remix/html-template";
514
+ import { useIntlayer } from "remix-intlayer";
515
+
516
+ export const renderHomePage = () => {
517
+ const { myMarkdownContent } = useIntlayer("app");
518
+
519
+ return html.raw`<div>${myMarkdownContent.value}</div>`;
520
+ };
521
+ ```
522
+
523
+ > Remix экранирует интерполированные значения по умолчанию. `innerHTML` и `html.raw` — это два способа отказа от экранирования, что и требуется для отрендеренной строки Markdown.
524
+
525
+ Вы также можете предоставить локальные переопределения для определенных тегов с помощью метода `.use()`. Переопределения — это функции, возвращающие строку HTML:
526
+
527
+ ```tsx
528
+ <div
529
+ innerHTML={myMarkdownContent.use({
530
+ h1: ({ children }) => `<h1 class="text-3xl font-bold">${children}</h1>`,
531
+ })}
532
+ />
533
+ ```
534
+
535
+ `.value` — это отрендеренная HTML-строка, в то время как `String()` / `.toString()` возвращают исходный код Markdown:
536
+
537
+ ```tsx
538
+ myMarkdownContent.value // "<h1>…</h1>"
539
+ String(myMarkdownContent) // "# …"
540
+ myMarkdownContent.toString() // "# …"
541
+ ```
542
+
543
+ И вы можете получить доступ к метаданным markdown следующим образом:
544
+
545
+ ```tsx
546
+ myMarkdownContent.metadata
547
+ myMarkdownContent.metadata.title
548
+ ```
549
+
550
+ </Tab>
551
+ <Tab label="Astro" value="astro">
552
+ В Astro узлы Markdown рендерятся в строку HTML. Внедрите ее с помощью директивы `set:html` в шаблоне или с помощью `innerHTML` в клиентском теге `<script>`.
553
+
554
+ ```astro fileName="src/pages/index.astro"
555
+ ---
556
+ import { useIntlayer } from "astro-intlayer";
557
+
558
+ const { myMarkdownContent } = useIntlayer("app");
559
+ ---
560
+
561
+ <div set:html={myMarkdownContent.value} />
562
+ ```
563
+
564
+ ```astro fileName="src/components/Content.astro"
565
+ <div id="content"></div>
566
+
567
+ <script>
568
+ import { useIntlayer } from "astro-intlayer";
569
+
570
+ const { myMarkdownContent } = useIntlayer("app");
571
+
572
+ document.querySelector("#content")!.innerHTML = myMarkdownContent.value;
573
+ </script>
574
+ ```
575
+
576
+ > Astro экранирует `{выражения}` по умолчанию. `set:html` — это способ отказа от экранирования, что и требуется для отрендеренной строки Markdown.
577
+
578
+ Вы также можете предоставить локальные переопределения для определенных тегов с помощью метода `.use()`. Переопределения — это функции, возвращающие строку HTML:
579
+
580
+ ```astro
581
+ <div
582
+ set:html={myMarkdownContent.use({
583
+ h1: ({ children }) => `<h1 class="text-3xl font-bold">${children}</h1>`,
584
+ })}
585
+ />
586
+ ```
587
+
588
+ `.value` — это отрендеренная HTML-строка, в то время как `String()` / `.toString()` возвращают исходный код Markdown:
589
+
590
+ ```astro
591
+ myMarkdownContent.value // "<h1>…</h1>"
592
+ String(myMarkdownContent) // "# …"
593
+ myMarkdownContent.toString() // "# …"
594
+ ```
595
+
596
+ И вы можете получить доступ к метаданным markdown следующим образом:
597
+
598
+ ```astro
599
+ myMarkdownContent.metadata
600
+ myMarkdownContent.metadata.title
601
+ ```
602
+
603
+ </Tab>
497
604
  </Tabs>
498
605
 
499
606
  ### 2. Вспомогательные утилиты (только строки Markdown)
@@ -705,6 +812,60 @@ Intlayer предоставляет два независимых способа
705
812
  ```
706
813
 
707
814
  </Tab>
815
+ <Tab label="Remix" value="remix">
816
+ #### Хук `useMarkdownRenderer()`
817
+
818
+ Получите функцию рендеринга, предварительно настроенную с помощью `installIntlayerMarkdown()`. Она возвращает строку HTML.
819
+
820
+ ```tsx
821
+ import { useMarkdownRenderer } from "remix-intlayer/markdown";
822
+
823
+ const renderMarkdown = useMarkdownRenderer({ forceBlock: true });
824
+
825
+ return <div innerHTML={renderMarkdown("# My Title")} />;
826
+ ```
827
+
828
+ #### Утилита `renderMarkdown()`
829
+
830
+ Автономная утилита, игнорирующая глобальную конфигурацию.
831
+
832
+ ```tsx
833
+ import { renderMarkdown } from "remix-intlayer/markdown";
834
+
835
+ const html = renderMarkdown("# My Title", { forceBlock: true });
836
+ ```
837
+
838
+ </Tab>
839
+ <Tab label="Astro" value="astro">
840
+ #### Хук `useMarkdownRenderer()`
841
+
842
+ Получите функцию рендеринга, предварительно настроенную с помощью `installIntlayerMarkdown()`. Она возвращает строку HTML.
843
+
844
+ ```astro
845
+ ---
846
+ import { useMarkdownRenderer } from "astro-intlayer/markdown";
847
+
848
+ const renderMarkdown = useMarkdownRenderer({ forceBlock: true });
849
+ ---
850
+
851
+ <div set:html={renderMarkdown("# My Title")} />
852
+ ```
853
+
854
+ #### Утилита `renderMarkdown()`
855
+
856
+ Автономная утилита, игнорирующая глобальную конфигурацию.
857
+
858
+ ```astro
859
+ ---
860
+ import { renderMarkdown } from "astro-intlayer/markdown";
861
+
862
+ const html = renderMarkdown("# My Title", { forceBlock: true });
863
+ ---
864
+
865
+ <div set:html={html} />
866
+ ```
867
+
868
+ </Tab>
708
869
  </Tabs>
709
870
 
710
871
  ## Глобальная конфигурация с `MarkdownProvider`
@@ -1004,6 +1165,73 @@ Intlayer предоставляет два независимых способа
1004
1165
  > Динамический импорт вашего renderer Markdown — это хороший способ уменьшить размер bundle приложения.
1005
1166
 
1006
1167
  </Tab>
1168
+ <Tab label="Remix" value="remix">
1169
+
1170
+ В Remix нет дерева компонентов для размещения провайдера, поэтому конфигурация устанавливается один раз как синглтон при запуске сервера. Она настраивает рендерер, возвращаемый `useMarkdownRenderer()`. Узлы `md`, возвращаемые `useIntlayer`, рендерятся с помощью компилятора по умолчанию; переопределяйте их теги для каждого узла с помощью `.use()`.
1171
+
1172
+ ```typescript fileName="src/router.ts"
1173
+ import { installIntlayerMarkdown } from "remix-intlayer/markdown";
1174
+
1175
+ installIntlayerMarkdown({
1176
+ forceBlock: true,
1177
+ components: {
1178
+ h1: ({ children }) => `<h1 class="text-2xl font-bold">${children}</h1>`,
1179
+ },
1180
+ });
1181
+ ```
1182
+
1183
+ Вы также можете использовать собственный рендерер markdown:
1184
+
1185
+ ```typescript fileName="src/router.ts"
1186
+ import { installIntlayerMarkdown } from "remix-intlayer/markdown";
1187
+
1188
+ installIntlayerMarkdown({
1189
+ renderMarkdown: async (md) => {
1190
+ const { marked } = await import("marked");
1191
+ return marked(md) as string;
1192
+ },
1193
+ });
1194
+ ```
1195
+
1196
+ > Используйте `installIntlayerMarkdownDynamic(async () => …)` для отложенной загрузки самого рендерера; загрузчик выполняется только при первом вызове.
1197
+
1198
+ </Tab>
1199
+ <Tab label="Astro" value="astro">
1200
+
1201
+ В Astro нет дерева компонентов для размещения провайдера, поэтому конфигурация устанавливается один раз как синглтон в middleware (сервер) и в клиентском теге `<script>` (браузер). Она настраивает рендерер, возвращаемый `useMarkdownRenderer()`. Узлы `md`, возвращаемые `useIntlayer`, рендерятся с помощью компилятора по умолчанию; переопределяйте их теги для каждого узла с помощью `.use()`.
1202
+
1203
+ ```typescript fileName="src/middleware.ts"
1204
+ import { installIntlayerMarkdown } from "astro-intlayer/markdown";
1205
+ import { defineMiddleware } from "astro:middleware";
1206
+
1207
+ // Запускается один раз при старте сервера; сам middleware Intlayer
1208
+ // регистрируется интеграцией перед этим файлом.
1209
+ installIntlayerMarkdown({
1210
+ forceBlock: true,
1211
+ components: {
1212
+ h1: ({ children }) => `<h1 class="text-2xl font-bold">${children}</h1>`,
1213
+ },
1214
+ });
1215
+
1216
+ export const onRequest = defineMiddleware((_context, next) => next());
1217
+ ```
1218
+
1219
+ Вы также можете использовать собственный рендерер markdown:
1220
+
1221
+ ```typescript fileName="src/middleware.ts"
1222
+ import { installIntlayerMarkdown } from "astro-intlayer/markdown";
1223
+
1224
+ installIntlayerMarkdown({
1225
+ renderMarkdown: async (md) => {
1226
+ const { marked } = await import("marked");
1227
+ return marked(md) as string;
1228
+ },
1229
+ });
1230
+ ```
1231
+
1232
+ > Используйте `installIntlayerMarkdownDynamic(async () => …)` для отложенной загрузки самого рендерера; загрузчик выполняется только при первом вызове.
1233
+
1234
+ </Tab>
1007
1235
  </Tabs>
1008
1236
 
1009
1237
  ## Suspense
@@ -1332,6 +1560,40 @@ export class MyComponent {
1332
1560
  ```
1333
1561
 
1334
1562
  </Tab>
1563
+ <Tab label="Remix" value="remix">
1564
+
1565
+ Remix 3 выполняет рендеринг на сервере и передает HTML потоком, поэтому AST не требуется передавать клиенту. Выполните парсинг один раз и рендерите AST везде, где строится страница:
1566
+
1567
+ ```tsx fileName="src/views/article.tsx"
1568
+ import { parseMarkdown, renderMarkdown } from "remix-intlayer/markdown";
1569
+
1570
+ // 1. Парсинг markdown в сериализуемый AST (например, один раз при загрузке модуля)
1571
+ const ast = parseMarkdown("## My title \n\nLorem Ipsum");
1572
+
1573
+ export const ArticlePage = () => () => (
1574
+ // 2. Рендеринг AST: рендерер принимает исходную строку или спарсенный AST
1575
+ <article innerHTML={renderMarkdown(ast)} />
1576
+ );
1577
+ ```
1578
+
1579
+ </Tab>
1580
+ <Tab label="Astro" value="astro">
1581
+
1582
+ Страницы Astro рендерятся на сервере, поэтому AST не требуется передавать клиенту. Выполните парсинг Markdown во frontmatter и отрендерите его с помощью `set:html`:
1583
+
1584
+ ```astro fileName="src/pages/article.astro"
1585
+ ---
1586
+ import { parseMarkdown, renderMarkdown } from "astro-intlayer/markdown";
1587
+
1588
+ // 1. Парсинг markdown в сериализуемый AST
1589
+ const ast = parseMarkdown("## My title \n\nLorem Ipsum");
1590
+ ---
1591
+
1592
+ <!-- 2. Рендеринг AST: рендерер принимает исходную строку или спарсенный AST -->
1593
+ <article set:html={renderMarkdown(ast)} />
1594
+ ```
1595
+
1596
+ </Tab>
1335
1597
  </Tabs>
1336
1598
 
1337
1599
  Этот подход гарантирует, что логика анализа Markdown полностью выполняется на сервере, что значительно сокращает время выполнения на стороне клиента и повышает скорость первоначальной гидратации.
@@ -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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Analog. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -157,6 +157,28 @@ bun add intlayer angular-intlayer vite-intlayer
157
157
  </Step>
158
158
  <Step number={2} title="Конфигурация вашего проекта">
159
159
 
160
+ ### Архитектура
161
+
162
+ В этой архитектуре `angular-intlayer` предоставляет `provideIntlayer()`, зарегистрированный в `src/app/app.config.ts`, чтобы каждый компонент и файловая страница могли читать свой контент через сигнал `useIntlayer`. Analog построен на Vite, поэтому плагин `intlayer()` из `vite-intlayer` добавляется рядом с `analog()` в `vite.config.ts` для отслеживания и пересборки ваших объявлений контента, а также для работы прокси локали. Объявления контента размещаются рядом с компонентами и страницами в `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
+ ### Конфигурация
181
+
160
182
  Создайте конфигурационный файл для настройки языков вашего приложения:
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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Angular 19. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -164,6 +164,29 @@ bun add @angular-builders/custom-webpack --dev
164
164
  </Step>
165
165
  <Step number={2} title="Конфигурация вашего проекта">
166
166
 
167
+ ### Архитектура
168
+
169
+ В этой архитектуре `angular-intlayer` предоставляет `provideIntlayer()`, зарегистрированный в `src/app/app.config.ts`, чтобы каждый компонент мог читать свой контент через сигнал `useIntlayer`. Angular CLI переключается на кастомный сборщик Webpack, а `webpack.config.ts` объединяет плагин Intlayer со сборкой для отслеживания и пересборки объявлений контента. Объявления контента размещаются рядом с компонентами в `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
+ ### Конфигурация
189
+
167
190
  Создайте файл конфигурации для настройки языков вашего приложения:
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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Angular 22. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -166,6 +166,29 @@ bun add @angular-builders/custom-esbuild --dev
166
166
  </Step>
167
167
  <Step number={2} title="Настройка вашего проекта">
168
168
 
169
+ ### Архитектура
170
+
171
+ В этой архитектуре `angular-intlayer` предоставляет `provideIntlayer()`, зарегистрированный в `src/app/app.config.ts`, чтобы каждый компонент мог читать свой контент через сигнал `useIntlayer`. Angular CLI переключается на кастомный сборщик esbuild, а `esbuild.plugins.ts` регистрирует плагин Intlayer в сборке для отслеживания и пересборки объявлений контента. Объявления контента размещаются рядом с компонентами в `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
+ ### Конфигурация
191
+
169
192
  Создайте конфигурационный файл для настройки языков вашего приложения:
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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Astro. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -160,6 +160,29 @@ bun add intlayer astro-intlayer
160
160
  </Step>
161
161
  <Step number={2} title="Настройка вашего проекта">
162
162
 
163
+ ### Архитектура
164
+
165
+ В этой архитектуре интеграция `intlayer()`, зарегистрированная в `astro.config.ts`, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её в `Astro.locals.intlayer`. Страницы располагаются в сегменте rest `src/pages/[...locale]/`, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы `.astro` читают контент с помощью хуков `useIntlayer` / `useLocale` из `astro-intlayer`, а объявления контента размещаются рядом с вашими компонентами в `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
+ ### Конфигурация
185
+
163
186
  Создайте конфигурационный файл для настройки языков вашего приложения:
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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Astro + Lit. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -180,6 +180,30 @@ bun x intlayer init
180
180
  </Step>
181
181
  <Step number={2} title="Настройка вашего проекта">
182
182
 
183
+ ### Архитектура
184
+
185
+ В этой архитектуре интеграция `intlayer()`, зарегистрированная в `astro.config.ts`, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её в `Astro.locals.intlayer`. Страницы располагаются в сегменте rest `src/pages/[...locale]/`, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы `.astro` читают контент с помощью хуков `useIntlayer` / `useLocale` из `astro-intlayer` для серверного рендеринга, а остров Lit (`src/components/lit/LitDemo.ts`) получает определённую сервером локаль в качестве пропа и передаёт её в `lit-intlayer` для интерактивной части. Объявления контента размещаются рядом с вашими компонентами в `src/`.
186
+
187
+ ```bash
188
+ .
189
+ ├── src
190
+ │ ├── components
191
+ │ │ └── lit
192
+ │ │ ├── app.content.ts # App content declaration
193
+ │ │ └── LitDemo.ts # Lit custom element (content + locale switcher)
194
+ │ └── pages
195
+ │ ├── [...locale]
196
+ │ │ └── index.astro # Localized page mounting the custom element
197
+ │ ├── robots.txt.ts # robots.txt endpoint
198
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
199
+ ├── astro.config.ts # Astro config with the intlayer() and lit() integrations
200
+ ├── intlayer.config.ts
201
+ ├── package.json
202
+ └── tsconfig.json
203
+ ```
204
+
205
+ ### Конфигурация
206
+
183
207
  Создайте конфигурационный файл для настройки языков вашего приложения:
184
208
 
185
209
  ```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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Astro + Preact. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -179,6 +179,31 @@ bun x intlayer init
179
179
  </Step>
180
180
  <Step number={2} title="Настройка вашего проекта">
181
181
 
182
+ ### Архитектура
183
+
184
+ В этой архитектуре интеграция `intlayer()`, зарегистрированная в `astro.config.ts`, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её в `Astro.locals.intlayer`. Страницы располагаются в сегменте rest `src/pages/[...locale]/`, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы `.astro` читают контент с помощью хуков `useIntlayer` / `useLocale` из `astro-intlayer` для серверного рендеринга, а остров Preact (`src/components/preact/PreactIsland.tsx`) получает определённую сервером локаль в качестве пропа и передаёт её в `preact-intlayer` для интерактивной части. Объявления контента размещаются рядом с вашими компонентами в `src/`.
185
+
186
+ ```bash
187
+ .
188
+ ├── src
189
+ │ ├── app.content.tsx # App content declaration
190
+ │ ├── components
191
+ │ │ └── preact
192
+ │ │ ├── LocaleSwitcher.tsx # Locale switcher rendered inside the island
193
+ │ │ └── PreactIsland.tsx # Preact island wrapping the tree in IntlayerProvider
194
+ │ └── pages
195
+ │ ├── [...locale]
196
+ │ │ └── index.astro # Localized page mounting the island
197
+ │ ├── robots.txt.ts # robots.txt endpoint
198
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
199
+ ├── astro.config.ts # Astro config with the intlayer() and preact() integrations
200
+ ├── intlayer.config.ts
201
+ ├── package.json
202
+ └── tsconfig.json
203
+ ```
204
+
205
+ ### Конфигурация
206
+
182
207
  Создайте конфигурационный файл для настройки языков вашего приложения:
183
208
 
184
209
  ```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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Astro + React. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -182,6 +182,31 @@ bun x intlayer init
182
182
  </Step>
183
183
  <Step number={2} title="Настройка вашего проекта">
184
184
 
185
+ ### Архитектура
186
+
187
+ В этой архитектуре интеграция `intlayer()`, зарегистрированная в `astro.config.ts`, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её в `Astro.locals.intlayer`. Страницы располагаются в сегменте rest `src/pages/[...locale]/`, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы `.astro` читают контент с помощью хуков `useIntlayer` / `useLocale` из `astro-intlayer` для серверного рендеринга, а остров React (`src/components/react/ReactIsland.tsx`) получает определённую сервером локаль в качестве пропа и передаёт её в `react-intlayer` для интерактивной части. Объявления контента размещаются рядом с вашими компонентами в `src/`.
188
+
189
+ ```bash
190
+ .
191
+ ├── src
192
+ │ ├── app.content.tsx # App content declaration
193
+ │ ├── components
194
+ │ │ └── react
195
+ │ │ ├── LocaleSwitcher.tsx # Locale switcher rendered inside the island
196
+ │ │ └── ReactIsland.tsx # React island wrapping the tree in IntlayerProvider
197
+ │ └── pages
198
+ │ ├── [...locale]
199
+ │ │ └── index.astro # Localized page mounting the island
200
+ │ ├── robots.txt.ts # robots.txt endpoint
201
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
202
+ ├── astro.config.ts # Astro config with the intlayer() and react() integrations
203
+ ├── intlayer.config.ts
204
+ ├── package.json
205
+ └── tsconfig.json
206
+ ```
207
+
208
+ ### Конфигурация
209
+
185
210
  Создайте конфигурационный файл для настройки языков вашего приложения:
186
211
 
187
212
  ```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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Astro + Solid. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -179,6 +179,31 @@ bun x intlayer init
179
179
  </Step>
180
180
  <Step number={2} title="Настройка вашего проекта">
181
181
 
182
+ ### Архитектура
183
+
184
+ В этой архитектуре интеграция `intlayer()`, зарегистрированная в `astro.config.ts`, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её в `Astro.locals.intlayer`. Страницы располагаются в сегменте rest `src/pages/[...locale]/`, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы `.astro` читают контент с помощью хуков `useIntlayer` / `useLocale` из `astro-intlayer` для серверного рендеринга, а остров Solid (`src/components/solid/SolidIsland.tsx`) получает определённую сервером локаль в качестве пропа и передаёт её в `solid-intlayer` для интерактивной части. Объявления контента размещаются рядом с вашими компонентами в `src/`.
185
+
186
+ ```bash
187
+ .
188
+ ├── src
189
+ │ ├── app.content.tsx # App content declaration
190
+ │ ├── components
191
+ │ │ └── solid
192
+ │ │ ├── LocaleSwitcher.tsx # Locale switcher rendered inside the island
193
+ │ │ └── SolidIsland.tsx # Solid island wrapping the tree in IntlayerProvider
194
+ │ └── pages
195
+ │ ├── [...locale]
196
+ │ │ └── index.astro # Localized page mounting the island
197
+ │ ├── robots.txt.ts # robots.txt endpoint
198
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
199
+ ├── astro.config.ts # Astro config with the intlayer() and solid() integrations
200
+ ├── intlayer.config.ts
201
+ ├── package.json
202
+ └── tsconfig.json
203
+ ```
204
+
205
+ ### Конфигурация
206
+
182
207
  Создайте конфигурационный файл для настройки языков вашего приложения:
183
208
 
184
209
  ```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 - Полное руководство по переводу вашего приложения"
5
5
  description: "Больше никакого i18next. Руководство 2026 по созданию многоязычного (i18n) приложения Astro + Svelte. Переводите с помощью ИИ-агентов и оптимизируйте размер бандла, SEO и производительность."
6
6
  keywords:
@@ -179,6 +179,30 @@ bun x intlayer init
179
179
  </Step>
180
180
  <Step number={2} title="Настройка вашего проекта">
181
181
 
182
+ ### Архитектура
183
+
184
+ В этой архитектуре интеграция `intlayer()`, зарегистрированная в `astro.config.ts`, собирает ваши словари и добавляет middleware, который определяет локаль каждого запроса и предоставляет её в `Astro.locals.intlayer`. Страницы располагаются в сегменте rest `src/pages/[...locale]/`, благодаря чему локаль по умолчанию отдается без префикса, а каждая другая локаль получает собственный выделенный URL. Файлы `.astro` читают контент с помощью хуков `useIntlayer` / `useLocale` из `astro-intlayer` для серверного рендеринга, а остров Svelte (`src/components/svelte/SvelteIsland.svelte`) получает определённую сервером локаль в качестве пропа и передаёт её в `svelte-intlayer` для интерактивной части. Объявления контента размещаются рядом с вашими компонентами в `src/`.
185
+
186
+ ```bash
187
+ .
188
+ ├── src
189
+ │ ├── app.content.ts # App content declaration
190
+ │ ├── components
191
+ │ │ └── svelte
192
+ │ │ └── SvelteIsland.svelte # Svelte island (content + locale switcher)
193
+ │ └── pages
194
+ │ ├── [...locale]
195
+ │ │ └── index.astro # Localized page mounting the island
196
+ │ ├── robots.txt.ts # robots.txt endpoint
197
+ │ └── sitemap.xml.ts # Localized sitemap endpoint
198
+ ├── astro.config.ts # Astro config with the intlayer() and svelte() integrations
199
+ ├── intlayer.config.ts
200
+ ├── package.json
201
+ └── tsconfig.json
202
+ ```
203
+
204
+ ### Конфигурация
205
+
182
206
  Создайте конфигурационный файл для настройки языков вашего приложения:
183
207
 
184
208
  ```typescript fileName="intlayer.config.ts"