@intlayer/docs 9.5.6 → 9.5.7

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 (601) 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/lingui_vs_intlayer.md +122 -15
  4. package/blog/ar/next-intl_vs_intlayer-next-intl.md +124 -15
  5. package/blog/ar/next-intl_vs_intlayer.md +136 -20
  6. package/blog/ar/vue-i18n_vs_intlayer-vue-i18n.md +119 -17
  7. package/blog/ar/vue-i18n_vs_intlayer.md +193 -31
  8. package/blog/ar/vue-i18n_vs_intlayer_benchmark.md +361 -0
  9. package/blog/de/i18next_vs_intlayer-i18next.md +122 -15
  10. package/blog/de/i18next_vs_intlayer.md +128 -14
  11. package/blog/de/lingui_vs_intlayer.md +122 -15
  12. package/blog/de/next-intl_vs_intlayer-next-intl.md +124 -15
  13. package/blog/de/next-intl_vs_intlayer.md +125 -15
  14. package/blog/de/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  15. package/blog/de/vue-i18n_vs_intlayer.md +193 -31
  16. package/blog/en/i18next_vs_intlayer-i18next.md +121 -14
  17. package/blog/en/i18next_vs_intlayer.md +128 -14
  18. package/blog/en/lingui_vs_intlayer.md +124 -15
  19. package/blog/en/next-intl_vs_intlayer-next-intl.md +123 -14
  20. package/blog/en/next-intl_vs_intlayer.md +125 -13
  21. package/blog/en/vue-i18n_vs_intlayer-vue-i18n.md +115 -15
  22. package/blog/en/vue-i18n_vs_intlayer.md +188 -27
  23. package/blog/en-GB/i18next_vs_intlayer-i18next.md +121 -14
  24. package/blog/en-GB/i18next_vs_intlayer.md +128 -14
  25. package/blog/en-GB/lingui_vs_intlayer.md +122 -15
  26. package/blog/en-GB/next-intl_vs_intlayer-next-intl.md +124 -15
  27. package/blog/en-GB/next-intl_vs_intlayer.md +125 -15
  28. package/blog/en-GB/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +187 -25
  30. package/blog/en-GB/vue-i18n_vs_intlayer_benchmark.md +116 -0
  31. package/blog/es/i18next_vs_intlayer-i18next.md +122 -15
  32. package/blog/es/i18next_vs_intlayer.md +128 -14
  33. package/blog/es/lingui_vs_intlayer.md +122 -15
  34. package/blog/es/next-intl_vs_intlayer-next-intl.md +124 -15
  35. package/blog/es/next-intl_vs_intlayer.md +125 -15
  36. package/blog/es/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  37. package/blog/es/vue-i18n_vs_intlayer.md +193 -31
  38. package/blog/fr/i18next_vs_intlayer-i18next.md +122 -15
  39. package/blog/fr/i18next_vs_intlayer.md +128 -14
  40. package/blog/fr/lingui_vs_intlayer.md +122 -15
  41. package/blog/fr/next-intl_vs_intlayer-next-intl.md +124 -15
  42. package/blog/fr/next-intl_vs_intlayer.md +127 -15
  43. package/blog/fr/vue-i18n_vs_intlayer-vue-i18n.md +118 -17
  44. package/blog/fr/vue-i18n_vs_intlayer.md +192 -31
  45. package/blog/fr/vue-i18n_vs_intlayer_benchmark.md +329 -7
  46. package/blog/hi/i18next_vs_intlayer-i18next.md +122 -15
  47. package/blog/hi/i18next_vs_intlayer.md +130 -16
  48. package/blog/hi/lingui_vs_intlayer.md +122 -15
  49. package/blog/hi/next-intl_vs_intlayer-next-intl.md +124 -15
  50. package/blog/hi/next-intl_vs_intlayer.md +135 -19
  51. package/blog/hi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  52. package/blog/hi/vue-i18n_vs_intlayer.md +193 -31
  53. package/blog/hi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  54. package/blog/id/i18next_vs_intlayer-i18next.md +122 -15
  55. package/blog/id/i18next_vs_intlayer.md +128 -14
  56. package/blog/id/lingui_vs_intlayer.md +122 -15
  57. package/blog/id/next-intl_vs_intlayer-next-intl.md +124 -15
  58. package/blog/id/next-intl_vs_intlayer.md +135 -19
  59. package/blog/id/vue-i18n_vs_intlayer-vue-i18n.md +354 -2
  60. package/blog/id/vue-i18n_vs_intlayer.md +188 -26
  61. package/blog/id/vue-i18n_vs_intlayer_benchmark.md +327 -7
  62. package/blog/it/i18next_vs_intlayer-i18next.md +122 -15
  63. package/blog/it/i18next_vs_intlayer.md +128 -14
  64. package/blog/it/lingui_vs_intlayer.md +122 -15
  65. package/blog/it/next-intl_vs_intlayer-next-intl.md +124 -15
  66. package/blog/it/next-intl_vs_intlayer.md +125 -15
  67. package/blog/it/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  68. package/blog/it/vue-i18n_vs_intlayer.md +191 -31
  69. package/blog/it/vue-i18n_vs_intlayer_benchmark.md +332 -5
  70. package/blog/ja/i18next_vs_intlayer-i18next.md +122 -15
  71. package/blog/ja/i18next_vs_intlayer.md +129 -17
  72. package/blog/ja/lingui_vs_intlayer.md +122 -15
  73. package/blog/ja/next-intl_vs_intlayer-next-intl.md +124 -15
  74. package/blog/ja/next-intl_vs_intlayer.md +124 -14
  75. package/blog/ja/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  76. package/blog/ja/vue-i18n_vs_intlayer.md +193 -31
  77. package/blog/ja/vue-i18n_vs_intlayer_benchmark.md +361 -0
  78. package/blog/ko/i18next_vs_intlayer-i18next.md +122 -15
  79. package/blog/ko/i18next_vs_intlayer.md +129 -17
  80. package/blog/ko/lingui_vs_intlayer.md +122 -15
  81. package/blog/ko/next-intl_vs_intlayer-next-intl.md +124 -15
  82. package/blog/ko/next-intl_vs_intlayer.md +134 -18
  83. package/blog/ko/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  84. package/blog/ko/vue-i18n_vs_intlayer.md +193 -31
  85. package/blog/pl/i18next_vs_intlayer-i18next.md +122 -15
  86. package/blog/pl/i18next_vs_intlayer.md +128 -14
  87. package/blog/pl/lingui_vs_intlayer.md +122 -15
  88. package/blog/pl/next-intl_vs_intlayer-next-intl.md +124 -15
  89. package/blog/pl/next-intl_vs_intlayer.md +134 -18
  90. package/blog/pl/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  91. package/blog/pl/vue-i18n_vs_intlayer.md +188 -26
  92. package/blog/pl/vue-i18n_vs_intlayer_benchmark.md +361 -0
  93. package/blog/pt/i18next_vs_intlayer-i18next.md +122 -15
  94. package/blog/pt/i18next_vs_intlayer.md +128 -14
  95. package/blog/pt/lingui_vs_intlayer.md +122 -15
  96. package/blog/pt/next-intl_vs_intlayer-next-intl.md +124 -15
  97. package/blog/pt/next-intl_vs_intlayer.md +131 -15
  98. package/blog/pt/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  99. package/blog/pt/vue-i18n_vs_intlayer.md +193 -31
  100. package/blog/pt/vue-i18n_vs_intlayer_benchmark.md +361 -0
  101. package/blog/ru/i18next_vs_intlayer-i18next.md +122 -15
  102. package/blog/ru/i18next_vs_intlayer.md +130 -16
  103. package/blog/ru/lingui_vs_intlayer.md +122 -15
  104. package/blog/ru/next-intl_vs_intlayer-next-intl.md +125 -16
  105. package/blog/ru/next-intl_vs_intlayer.md +123 -13
  106. package/blog/ru/vue-i18n_vs_intlayer-vue-i18n.md +127 -27
  107. package/blog/ru/vue-i18n_vs_intlayer.md +193 -31
  108. package/blog/ru/vue-i18n_vs_intlayer_benchmark.md +326 -19
  109. package/blog/tr/i18next_vs_intlayer-i18next.md +122 -15
  110. package/blog/tr/i18next_vs_intlayer.md +128 -14
  111. package/blog/tr/lingui_vs_intlayer.md +122 -15
  112. package/blog/tr/next-intl_vs_intlayer-next-intl.md +124 -15
  113. package/blog/tr/next-intl_vs_intlayer.md +136 -20
  114. package/blog/tr/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  115. package/blog/tr/vue-i18n_vs_intlayer.md +188 -26
  116. package/blog/tr/vue-i18n_vs_intlayer_benchmark.md +361 -0
  117. package/blog/uk/i18next_vs_intlayer-i18next.md +122 -15
  118. package/blog/uk/i18next_vs_intlayer.md +130 -16
  119. package/blog/uk/lingui_vs_intlayer.md +122 -15
  120. package/blog/uk/next-intl_vs_intlayer-next-intl.md +124 -15
  121. package/blog/uk/next-intl_vs_intlayer.md +135 -19
  122. package/blog/uk/vue-i18n_vs_intlayer-vue-i18n.md +135 -17
  123. package/blog/uk/vue-i18n_vs_intlayer.md +188 -27
  124. package/blog/uk/vue-i18n_vs_intlayer_benchmark.md +361 -0
  125. package/blog/vi/i18next_vs_intlayer-i18next.md +122 -15
  126. package/blog/vi/i18next_vs_intlayer.md +128 -14
  127. package/blog/vi/lingui_vs_intlayer.md +122 -15
  128. package/blog/vi/next-intl_vs_intlayer-next-intl.md +124 -15
  129. package/blog/vi/next-intl_vs_intlayer.md +135 -19
  130. package/blog/vi/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  131. package/blog/vi/vue-i18n_vs_intlayer.md +188 -26
  132. package/blog/vi/vue-i18n_vs_intlayer_benchmark.md +361 -0
  133. package/blog/zh/i18next_vs_intlayer-i18next.md +122 -15
  134. package/blog/zh/i18next_vs_intlayer.md +128 -14
  135. package/blog/zh/lingui_vs_intlayer.md +122 -15
  136. package/blog/zh/next-intl_vs_intlayer-next-intl.md +124 -15
  137. package/blog/zh/next-intl_vs_intlayer.md +125 -15
  138. package/blog/zh/vue-i18n_vs_intlayer-vue-i18n.md +117 -17
  139. package/blog/zh/vue-i18n_vs_intlayer.md +192 -31
  140. package/blog/zh/vue-i18n_vs_intlayer_benchmark.md +340 -9
  141. package/dist/cjs/generated/docs.entry.cjs +40 -40
  142. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  143. package/dist/cjs/index.cjs +2 -2
  144. package/dist/esm/generated/docs.entry.mjs +40 -40
  145. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  146. package/dist/esm/index.mjs +2 -2
  147. package/dist/types/generated/docs.entry.d.ts +2 -2
  148. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  149. package/docs/ar/benchmark/nextjs.md +13 -13
  150. package/docs/ar/benchmark/solid.md +5 -5
  151. package/docs/ar/benchmark/svelte.md +4 -4
  152. package/docs/ar/benchmark/tanstack.md +14 -13
  153. package/docs/ar/benchmark/vue.md +5 -5
  154. package/docs/ar/chrome_extension.md +130 -0
  155. package/docs/ar/cli/index.md +6 -1
  156. package/docs/ar/cli/infra.md +162 -0
  157. package/docs/ar/cli/init.md +24 -1
  158. package/docs/ar/dictionary/html.md +173 -5
  159. package/docs/ar/dictionary/markdown.md +263 -1
  160. package/docs/ar/intlayer_with_analog.md +23 -1
  161. package/docs/ar/intlayer_with_angular_19.md +24 -1
  162. package/docs/ar/intlayer_with_angular_21.md +24 -1
  163. package/docs/ar/intlayer_with_astro.md +24 -1
  164. package/docs/ar/intlayer_with_astro_lit.md +25 -1
  165. package/docs/ar/intlayer_with_astro_preact.md +26 -1
  166. package/docs/ar/intlayer_with_astro_react.md +26 -1
  167. package/docs/ar/intlayer_with_astro_solid.md +26 -1
  168. package/docs/ar/intlayer_with_astro_svelte.md +25 -1
  169. package/docs/ar/intlayer_with_astro_vue.md +25 -1
  170. package/docs/ar/intlayer_with_remix_3.md +22 -1
  171. package/docs/ar/self_hosting.md +406 -231
  172. package/docs/de/benchmark/nextjs.md +13 -13
  173. package/docs/de/benchmark/solid.md +5 -5
  174. package/docs/de/benchmark/svelte.md +4 -4
  175. package/docs/de/benchmark/tanstack.md +14 -13
  176. package/docs/de/benchmark/vue.md +5 -5
  177. package/docs/de/chrome_extension.md +130 -0
  178. package/docs/de/cli/index.md +6 -1
  179. package/docs/de/cli/infra.md +162 -0
  180. package/docs/de/cli/init.md +24 -1
  181. package/docs/de/dictionary/html.md +173 -5
  182. package/docs/de/dictionary/markdown.md +263 -1
  183. package/docs/de/intlayer_with_analog.md +23 -1
  184. package/docs/de/intlayer_with_angular_19.md +24 -1
  185. package/docs/de/intlayer_with_angular_21.md +24 -1
  186. package/docs/de/intlayer_with_astro.md +24 -1
  187. package/docs/de/intlayer_with_astro_lit.md +25 -1
  188. package/docs/de/intlayer_with_astro_preact.md +26 -1
  189. package/docs/de/intlayer_with_astro_react.md +26 -1
  190. package/docs/de/intlayer_with_astro_solid.md +26 -1
  191. package/docs/de/intlayer_with_astro_svelte.md +25 -1
  192. package/docs/de/intlayer_with_astro_vue.md +25 -1
  193. package/docs/de/intlayer_with_remix_3.md +22 -1
  194. package/docs/de/self_hosting.md +404 -227
  195. package/docs/en/benchmark/nextjs.md +13 -13
  196. package/docs/en/benchmark/solid.md +5 -5
  197. package/docs/en/benchmark/svelte.md +4 -4
  198. package/docs/en/benchmark/tanstack.md +14 -13
  199. package/docs/en/benchmark/vue.md +5 -5
  200. package/docs/en/chrome_extension.md +130 -0
  201. package/docs/en/cli/index.md +6 -1
  202. package/docs/en/cli/infra.md +175 -0
  203. package/docs/en/cli/init.md +25 -1
  204. package/docs/en/dictionary/html.md +173 -5
  205. package/docs/en/dictionary/markdown.md +263 -1
  206. package/docs/en/intlayer_with_analog.md +23 -1
  207. package/docs/en/intlayer_with_angular_19.md +24 -1
  208. package/docs/en/intlayer_with_angular_21.md +24 -1
  209. package/docs/en/intlayer_with_astro.md +24 -1
  210. package/docs/en/intlayer_with_astro_lit.md +25 -1
  211. package/docs/en/intlayer_with_astro_preact.md +26 -1
  212. package/docs/en/intlayer_with_astro_react.md +26 -1
  213. package/docs/en/intlayer_with_astro_solid.md +26 -1
  214. package/docs/en/intlayer_with_astro_svelte.md +25 -1
  215. package/docs/en/intlayer_with_astro_vue.md +25 -1
  216. package/docs/en/intlayer_with_remix_3.md +22 -1
  217. package/docs/en/self_hosting.md +418 -176
  218. package/docs/en-GB/benchmark/nextjs.md +13 -13
  219. package/docs/en-GB/benchmark/solid.md +5 -5
  220. package/docs/en-GB/benchmark/svelte.md +4 -4
  221. package/docs/en-GB/benchmark/tanstack.md +14 -13
  222. package/docs/en-GB/benchmark/vue.md +5 -5
  223. package/docs/en-GB/chrome_extension.md +130 -0
  224. package/docs/en-GB/cli/index.md +6 -1
  225. package/docs/en-GB/cli/infra.md +162 -0
  226. package/docs/en-GB/cli/init.md +24 -1
  227. package/docs/en-GB/dictionary/html.md +173 -5
  228. package/docs/en-GB/dictionary/markdown.md +263 -1
  229. package/docs/en-GB/intlayer_with_analog.md +23 -1
  230. package/docs/en-GB/intlayer_with_angular_19.md +24 -1
  231. package/docs/en-GB/intlayer_with_angular_21.md +24 -1
  232. package/docs/en-GB/intlayer_with_astro.md +24 -1
  233. package/docs/en-GB/intlayer_with_astro_lit.md +25 -1
  234. package/docs/en-GB/intlayer_with_astro_preact.md +26 -1
  235. package/docs/en-GB/intlayer_with_astro_react.md +26 -1
  236. package/docs/en-GB/intlayer_with_astro_solid.md +26 -1
  237. package/docs/en-GB/intlayer_with_astro_svelte.md +25 -1
  238. package/docs/en-GB/intlayer_with_astro_vue.md +25 -1
  239. package/docs/en-GB/intlayer_with_remix_3.md +22 -1
  240. package/docs/en-GB/self_hosting.md +381 -206
  241. package/docs/es/benchmark/nextjs.md +13 -13
  242. package/docs/es/benchmark/solid.md +5 -5
  243. package/docs/es/benchmark/svelte.md +4 -4
  244. package/docs/es/benchmark/tanstack.md +14 -13
  245. package/docs/es/benchmark/vue.md +5 -5
  246. package/docs/es/chrome_extension.md +130 -0
  247. package/docs/es/cli/index.md +6 -1
  248. package/docs/es/cli/infra.md +162 -0
  249. package/docs/es/cli/init.md +24 -1
  250. package/docs/es/dictionary/html.md +173 -5
  251. package/docs/es/dictionary/markdown.md +263 -1
  252. package/docs/es/intlayer_with_analog.md +23 -1
  253. package/docs/es/intlayer_with_angular_19.md +24 -1
  254. package/docs/es/intlayer_with_angular_21.md +24 -1
  255. package/docs/es/intlayer_with_astro.md +24 -1
  256. package/docs/es/intlayer_with_astro_lit.md +25 -1
  257. package/docs/es/intlayer_with_astro_preact.md +26 -1
  258. package/docs/es/intlayer_with_astro_react.md +26 -1
  259. package/docs/es/intlayer_with_astro_solid.md +26 -1
  260. package/docs/es/intlayer_with_astro_svelte.md +25 -1
  261. package/docs/es/intlayer_with_astro_vue.md +25 -1
  262. package/docs/es/intlayer_with_remix_3.md +22 -1
  263. package/docs/es/self_hosting.md +400 -223
  264. package/docs/fr/benchmark/nextjs.md +13 -13
  265. package/docs/fr/benchmark/solid.md +5 -5
  266. package/docs/fr/benchmark/svelte.md +4 -4
  267. package/docs/fr/benchmark/tanstack.md +14 -13
  268. package/docs/fr/benchmark/vue.md +5 -5
  269. package/docs/fr/chrome_extension.md +130 -0
  270. package/docs/fr/cli/index.md +6 -1
  271. package/docs/fr/cli/infra.md +162 -0
  272. package/docs/fr/cli/init.md +24 -1
  273. package/docs/fr/dictionary/html.md +173 -5
  274. package/docs/fr/dictionary/markdown.md +265 -4
  275. package/docs/fr/intlayer_with_analog.md +23 -1
  276. package/docs/fr/intlayer_with_angular_19.md +24 -1
  277. package/docs/fr/intlayer_with_angular_21.md +24 -1
  278. package/docs/fr/intlayer_with_astro.md +24 -1
  279. package/docs/fr/intlayer_with_astro_lit.md +25 -1
  280. package/docs/fr/intlayer_with_astro_preact.md +26 -1
  281. package/docs/fr/intlayer_with_astro_react.md +26 -1
  282. package/docs/fr/intlayer_with_astro_solid.md +26 -1
  283. package/docs/fr/intlayer_with_astro_svelte.md +25 -1
  284. package/docs/fr/intlayer_with_astro_vue.md +25 -1
  285. package/docs/fr/intlayer_with_remix_3.md +22 -1
  286. package/docs/fr/self_hosting.md +401 -224
  287. package/docs/hi/benchmark/nextjs.md +13 -13
  288. package/docs/hi/benchmark/solid.md +5 -5
  289. package/docs/hi/benchmark/svelte.md +4 -4
  290. package/docs/hi/benchmark/tanstack.md +14 -13
  291. package/docs/hi/benchmark/vue.md +5 -5
  292. package/docs/hi/chrome_extension.md +130 -0
  293. package/docs/hi/cli/index.md +6 -1
  294. package/docs/hi/cli/infra.md +162 -0
  295. package/docs/hi/cli/init.md +24 -1
  296. package/docs/hi/dictionary/html.md +173 -5
  297. package/docs/hi/dictionary/markdown.md +263 -1
  298. package/docs/hi/intlayer_with_analog.md +23 -1
  299. package/docs/hi/intlayer_with_angular_19.md +24 -1
  300. package/docs/hi/intlayer_with_angular_21.md +24 -1
  301. package/docs/hi/intlayer_with_astro.md +24 -1
  302. package/docs/hi/intlayer_with_astro_lit.md +25 -1
  303. package/docs/hi/intlayer_with_astro_preact.md +26 -1
  304. package/docs/hi/intlayer_with_astro_react.md +26 -1
  305. package/docs/hi/intlayer_with_astro_solid.md +26 -1
  306. package/docs/hi/intlayer_with_astro_svelte.md +25 -1
  307. package/docs/hi/intlayer_with_astro_vue.md +25 -1
  308. package/docs/hi/intlayer_with_remix_3.md +22 -1
  309. package/docs/hi/self_hosting.md +409 -235
  310. package/docs/id/benchmark/nextjs.md +13 -13
  311. package/docs/id/benchmark/solid.md +5 -5
  312. package/docs/id/benchmark/svelte.md +4 -4
  313. package/docs/id/benchmark/tanstack.md +14 -13
  314. package/docs/id/benchmark/vue.md +5 -5
  315. package/docs/id/chrome_extension.md +130 -0
  316. package/docs/id/cli/index.md +6 -1
  317. package/docs/id/cli/infra.md +162 -0
  318. package/docs/id/cli/init.md +24 -1
  319. package/docs/id/dictionary/html.md +173 -5
  320. package/docs/id/dictionary/markdown.md +263 -1
  321. package/docs/id/intlayer_with_analog.md +23 -1
  322. package/docs/id/intlayer_with_angular_19.md +24 -1
  323. package/docs/id/intlayer_with_angular_21.md +24 -1
  324. package/docs/id/intlayer_with_astro.md +24 -1
  325. package/docs/id/intlayer_with_astro_lit.md +25 -1
  326. package/docs/id/intlayer_with_astro_preact.md +26 -1
  327. package/docs/id/intlayer_with_astro_react.md +26 -1
  328. package/docs/id/intlayer_with_astro_solid.md +26 -1
  329. package/docs/id/intlayer_with_astro_svelte.md +25 -1
  330. package/docs/id/intlayer_with_astro_vue.md +25 -1
  331. package/docs/id/intlayer_with_remix_3.md +22 -1
  332. package/docs/id/self_hosting.md +416 -243
  333. package/docs/it/benchmark/nextjs.md +13 -13
  334. package/docs/it/benchmark/solid.md +5 -5
  335. package/docs/it/benchmark/svelte.md +4 -4
  336. package/docs/it/benchmark/tanstack.md +14 -13
  337. package/docs/it/benchmark/vue.md +5 -5
  338. package/docs/it/chrome_extension.md +130 -0
  339. package/docs/it/cli/index.md +6 -1
  340. package/docs/it/cli/infra.md +162 -0
  341. package/docs/it/cli/init.md +24 -1
  342. package/docs/it/dictionary/html.md +173 -5
  343. package/docs/it/dictionary/markdown.md +263 -1
  344. package/docs/it/intlayer_with_analog.md +23 -1
  345. package/docs/it/intlayer_with_angular_19.md +24 -1
  346. package/docs/it/intlayer_with_angular_21.md +24 -1
  347. package/docs/it/intlayer_with_astro.md +24 -1
  348. package/docs/it/intlayer_with_astro_lit.md +25 -1
  349. package/docs/it/intlayer_with_astro_preact.md +26 -1
  350. package/docs/it/intlayer_with_astro_react.md +26 -1
  351. package/docs/it/intlayer_with_astro_solid.md +26 -1
  352. package/docs/it/intlayer_with_astro_svelte.md +25 -1
  353. package/docs/it/intlayer_with_astro_vue.md +25 -1
  354. package/docs/it/intlayer_with_remix_3.md +22 -1
  355. package/docs/it/self_hosting.md +412 -237
  356. package/docs/ja/benchmark/nextjs.md +13 -13
  357. package/docs/ja/benchmark/solid.md +5 -5
  358. package/docs/ja/benchmark/svelte.md +4 -4
  359. package/docs/ja/benchmark/tanstack.md +13 -12
  360. package/docs/ja/benchmark/vue.md +5 -5
  361. package/docs/ja/chrome_extension.md +130 -0
  362. package/docs/ja/cli/index.md +6 -1
  363. package/docs/ja/cli/infra.md +162 -0
  364. package/docs/ja/cli/init.md +24 -1
  365. package/docs/ja/dictionary/html.md +173 -5
  366. package/docs/ja/dictionary/markdown.md +263 -1
  367. package/docs/ja/intlayer_with_analog.md +23 -1
  368. package/docs/ja/intlayer_with_angular_19.md +24 -1
  369. package/docs/ja/intlayer_with_angular_21.md +24 -1
  370. package/docs/ja/intlayer_with_astro.md +24 -1
  371. package/docs/ja/intlayer_with_astro_lit.md +25 -1
  372. package/docs/ja/intlayer_with_astro_preact.md +26 -1
  373. package/docs/ja/intlayer_with_astro_react.md +26 -1
  374. package/docs/ja/intlayer_with_astro_solid.md +26 -1
  375. package/docs/ja/intlayer_with_astro_svelte.md +25 -1
  376. package/docs/ja/intlayer_with_astro_vue.md +25 -1
  377. package/docs/ja/intlayer_with_remix_3.md +22 -1
  378. package/docs/ja/self_hosting.md +398 -223
  379. package/docs/ko/benchmark/nextjs.md +13 -13
  380. package/docs/ko/benchmark/solid.md +5 -5
  381. package/docs/ko/benchmark/svelte.md +4 -4
  382. package/docs/ko/benchmark/tanstack.md +14 -13
  383. package/docs/ko/benchmark/vue.md +5 -5
  384. package/docs/ko/chrome_extension.md +130 -0
  385. package/docs/ko/cli/index.md +6 -1
  386. package/docs/ko/cli/infra.md +162 -0
  387. package/docs/ko/cli/init.md +24 -1
  388. package/docs/ko/dictionary/html.md +173 -5
  389. package/docs/ko/dictionary/markdown.md +263 -1
  390. package/docs/ko/intlayer_with_analog.md +23 -1
  391. package/docs/ko/intlayer_with_angular_19.md +24 -1
  392. package/docs/ko/intlayer_with_angular_21.md +24 -1
  393. package/docs/ko/intlayer_with_astro.md +24 -1
  394. package/docs/ko/intlayer_with_astro_lit.md +25 -1
  395. package/docs/ko/intlayer_with_astro_preact.md +26 -1
  396. package/docs/ko/intlayer_with_astro_react.md +26 -1
  397. package/docs/ko/intlayer_with_astro_solid.md +26 -1
  398. package/docs/ko/intlayer_with_astro_svelte.md +25 -1
  399. package/docs/ko/intlayer_with_astro_vue.md +25 -1
  400. package/docs/ko/intlayer_with_remix_3.md +22 -1
  401. package/docs/ko/self_hosting.md +411 -238
  402. package/docs/pl/benchmark/nextjs.md +13 -13
  403. package/docs/pl/benchmark/solid.md +5 -5
  404. package/docs/pl/benchmark/svelte.md +4 -4
  405. package/docs/pl/benchmark/tanstack.md +14 -13
  406. package/docs/pl/benchmark/vue.md +5 -5
  407. package/docs/pl/chrome_extension.md +130 -0
  408. package/docs/pl/cli/index.md +6 -1
  409. package/docs/pl/cli/infra.md +162 -0
  410. package/docs/pl/cli/init.md +24 -1
  411. package/docs/pl/dictionary/html.md +173 -5
  412. package/docs/pl/dictionary/markdown.md +263 -1
  413. package/docs/pl/intlayer_with_analog.md +23 -1
  414. package/docs/pl/intlayer_with_angular_19.md +24 -1
  415. package/docs/pl/intlayer_with_angular_21.md +24 -1
  416. package/docs/pl/intlayer_with_astro.md +24 -1
  417. package/docs/pl/intlayer_with_astro_lit.md +25 -1
  418. package/docs/pl/intlayer_with_astro_preact.md +26 -1
  419. package/docs/pl/intlayer_with_astro_react.md +26 -1
  420. package/docs/pl/intlayer_with_astro_solid.md +26 -1
  421. package/docs/pl/intlayer_with_astro_svelte.md +25 -1
  422. package/docs/pl/intlayer_with_astro_vue.md +25 -1
  423. package/docs/pl/intlayer_with_remix_3.md +22 -1
  424. package/docs/pl/self_hosting.md +408 -233
  425. package/docs/pt/benchmark/nextjs.md +13 -13
  426. package/docs/pt/benchmark/solid.md +5 -5
  427. package/docs/pt/benchmark/svelte.md +4 -4
  428. package/docs/pt/benchmark/tanstack.md +14 -13
  429. package/docs/pt/benchmark/vue.md +5 -5
  430. package/docs/pt/chrome_extension.md +130 -0
  431. package/docs/pt/cli/index.md +6 -1
  432. package/docs/pt/cli/infra.md +162 -0
  433. package/docs/pt/cli/init.md +24 -1
  434. package/docs/pt/dictionary/html.md +173 -5
  435. package/docs/pt/dictionary/markdown.md +263 -1
  436. package/docs/pt/intlayer_with_analog.md +23 -1
  437. package/docs/pt/intlayer_with_angular_19.md +24 -1
  438. package/docs/pt/intlayer_with_angular_21.md +24 -1
  439. package/docs/pt/intlayer_with_astro.md +24 -1
  440. package/docs/pt/intlayer_with_astro_lit.md +25 -1
  441. package/docs/pt/intlayer_with_astro_preact.md +26 -1
  442. package/docs/pt/intlayer_with_astro_react.md +26 -1
  443. package/docs/pt/intlayer_with_astro_solid.md +26 -1
  444. package/docs/pt/intlayer_with_astro_svelte.md +25 -1
  445. package/docs/pt/intlayer_with_astro_vue.md +25 -1
  446. package/docs/pt/intlayer_with_remix_3.md +22 -1
  447. package/docs/pt/self_hosting.md +399 -224
  448. package/docs/ru/benchmark/nextjs.md +13 -13
  449. package/docs/ru/benchmark/solid.md +5 -5
  450. package/docs/ru/benchmark/svelte.md +4 -4
  451. package/docs/ru/benchmark/tanstack.md +14 -13
  452. package/docs/ru/benchmark/vue.md +5 -5
  453. package/docs/ru/chrome_extension.md +130 -0
  454. package/docs/ru/cli/index.md +6 -1
  455. package/docs/ru/cli/infra.md +162 -0
  456. package/docs/ru/cli/init.md +24 -1
  457. package/docs/ru/dictionary/html.md +173 -5
  458. package/docs/ru/dictionary/markdown.md +263 -1
  459. package/docs/ru/intlayer_with_analog.md +23 -1
  460. package/docs/ru/intlayer_with_angular_19.md +24 -1
  461. package/docs/ru/intlayer_with_angular_21.md +24 -1
  462. package/docs/ru/intlayer_with_astro.md +24 -1
  463. package/docs/ru/intlayer_with_astro_lit.md +25 -1
  464. package/docs/ru/intlayer_with_astro_preact.md +26 -1
  465. package/docs/ru/intlayer_with_astro_react.md +26 -1
  466. package/docs/ru/intlayer_with_astro_solid.md +26 -1
  467. package/docs/ru/intlayer_with_astro_svelte.md +25 -1
  468. package/docs/ru/intlayer_with_astro_vue.md +25 -1
  469. package/docs/ru/intlayer_with_remix_3.md +22 -1
  470. package/docs/ru/self_hosting.md +403 -228
  471. package/docs/tr/benchmark/nextjs.md +13 -13
  472. package/docs/tr/benchmark/solid.md +5 -5
  473. package/docs/tr/benchmark/svelte.md +4 -4
  474. package/docs/tr/benchmark/tanstack.md +14 -13
  475. package/docs/tr/benchmark/vue.md +5 -5
  476. package/docs/tr/chrome_extension.md +130 -0
  477. package/docs/tr/cli/index.md +6 -1
  478. package/docs/tr/cli/infra.md +162 -0
  479. package/docs/tr/cli/init.md +24 -1
  480. package/docs/tr/dictionary/html.md +173 -5
  481. package/docs/tr/dictionary/markdown.md +263 -1
  482. package/docs/tr/intlayer_with_analog.md +23 -1
  483. package/docs/tr/intlayer_with_angular_19.md +24 -1
  484. package/docs/tr/intlayer_with_angular_21.md +24 -1
  485. package/docs/tr/intlayer_with_astro.md +24 -1
  486. package/docs/tr/intlayer_with_astro_lit.md +25 -1
  487. package/docs/tr/intlayer_with_astro_preact.md +26 -1
  488. package/docs/tr/intlayer_with_astro_react.md +26 -1
  489. package/docs/tr/intlayer_with_astro_solid.md +26 -1
  490. package/docs/tr/intlayer_with_astro_svelte.md +25 -1
  491. package/docs/tr/intlayer_with_astro_vue.md +25 -1
  492. package/docs/tr/intlayer_with_remix_3.md +22 -1
  493. package/docs/tr/self_hosting.md +410 -234
  494. package/docs/uk/benchmark/nextjs.md +13 -13
  495. package/docs/uk/benchmark/solid.md +5 -5
  496. package/docs/uk/benchmark/svelte.md +4 -4
  497. package/docs/uk/benchmark/tanstack.md +14 -13
  498. package/docs/uk/benchmark/vue.md +5 -5
  499. package/docs/uk/chrome_extension.md +130 -0
  500. package/docs/uk/cli/index.md +6 -1
  501. package/docs/uk/cli/infra.md +162 -0
  502. package/docs/uk/cli/init.md +24 -1
  503. package/docs/uk/dictionary/html.md +173 -5
  504. package/docs/uk/dictionary/markdown.md +263 -1
  505. package/docs/uk/intlayer_with_analog.md +23 -1
  506. package/docs/uk/intlayer_with_angular_19.md +24 -1
  507. package/docs/uk/intlayer_with_angular_21.md +24 -1
  508. package/docs/uk/intlayer_with_astro.md +24 -1
  509. package/docs/uk/intlayer_with_astro_lit.md +25 -1
  510. package/docs/uk/intlayer_with_astro_preact.md +26 -1
  511. package/docs/uk/intlayer_with_astro_react.md +26 -1
  512. package/docs/uk/intlayer_with_astro_solid.md +26 -1
  513. package/docs/uk/intlayer_with_astro_svelte.md +25 -1
  514. package/docs/uk/intlayer_with_astro_vue.md +25 -1
  515. package/docs/uk/intlayer_with_remix_3.md +22 -1
  516. package/docs/uk/self_hosting.md +413 -238
  517. package/docs/vi/benchmark/nextjs.md +13 -13
  518. package/docs/vi/benchmark/solid.md +5 -5
  519. package/docs/vi/benchmark/svelte.md +4 -4
  520. package/docs/vi/benchmark/tanstack.md +14 -13
  521. package/docs/vi/benchmark/vue.md +5 -5
  522. package/docs/vi/chrome_extension.md +130 -0
  523. package/docs/vi/cli/index.md +6 -1
  524. package/docs/vi/cli/infra.md +162 -0
  525. package/docs/vi/cli/init.md +24 -1
  526. package/docs/vi/dictionary/html.md +173 -5
  527. package/docs/vi/dictionary/markdown.md +263 -1
  528. package/docs/vi/intlayer_with_analog.md +23 -1
  529. package/docs/vi/intlayer_with_angular_19.md +24 -1
  530. package/docs/vi/intlayer_with_angular_21.md +24 -1
  531. package/docs/vi/intlayer_with_astro.md +24 -1
  532. package/docs/vi/intlayer_with_astro_lit.md +25 -1
  533. package/docs/vi/intlayer_with_astro_preact.md +26 -1
  534. package/docs/vi/intlayer_with_astro_react.md +26 -1
  535. package/docs/vi/intlayer_with_astro_solid.md +26 -1
  536. package/docs/vi/intlayer_with_astro_svelte.md +25 -1
  537. package/docs/vi/intlayer_with_astro_vue.md +25 -1
  538. package/docs/vi/intlayer_with_remix_3.md +22 -1
  539. package/docs/vi/self_hosting.md +408 -234
  540. package/docs/zh/benchmark/nextjs.md +13 -13
  541. package/docs/zh/benchmark/solid.md +5 -5
  542. package/docs/zh/benchmark/svelte.md +4 -4
  543. package/docs/zh/benchmark/tanstack.md +14 -13
  544. package/docs/zh/benchmark/vue.md +5 -5
  545. package/docs/zh/chrome_extension.md +130 -0
  546. package/docs/zh/cli/index.md +6 -1
  547. package/docs/zh/cli/infra.md +162 -0
  548. package/docs/zh/cli/init.md +24 -1
  549. package/docs/zh/dictionary/html.md +172 -5
  550. package/docs/zh/dictionary/markdown.md +262 -1
  551. package/docs/zh/intlayer_with_analog.md +23 -1
  552. package/docs/zh/intlayer_with_angular_19.md +24 -1
  553. package/docs/zh/intlayer_with_angular_21.md +24 -1
  554. package/docs/zh/intlayer_with_astro.md +24 -1
  555. package/docs/zh/intlayer_with_astro_lit.md +25 -1
  556. package/docs/zh/intlayer_with_astro_preact.md +26 -1
  557. package/docs/zh/intlayer_with_astro_react.md +26 -1
  558. package/docs/zh/intlayer_with_astro_solid.md +26 -1
  559. package/docs/zh/intlayer_with_astro_svelte.md +25 -1
  560. package/docs/zh/intlayer_with_astro_vue.md +25 -1
  561. package/docs/zh/intlayer_with_remix_3.md +22 -1
  562. package/docs/zh/self_hosting.md +410 -237
  563. package/legal/ar/privacy_notice.md +9 -3
  564. package/legal/de/privacy_notice.md +9 -3
  565. package/legal/en/privacy_notice.md +10 -3
  566. package/legal/en-GB/privacy_notice.md +9 -3
  567. package/legal/es/privacy_notice.md +9 -3
  568. package/legal/fr/privacy_notice.md +9 -3
  569. package/legal/hi/privacy_notice.md +9 -3
  570. package/legal/id/privacy_notice.md +9 -3
  571. package/legal/it/privacy_notice.md +9 -3
  572. package/legal/ja/privacy_notice.md +9 -3
  573. package/legal/ko/privacy_notice.md +9 -3
  574. package/legal/pl/privacy_notice.md +9 -3
  575. package/legal/pt/privacy_notice.md +9 -3
  576. package/legal/ru/privacy_notice.md +9 -3
  577. package/legal/tr/privacy_notice.md +9 -3
  578. package/legal/uk/privacy_notice.md +9 -3
  579. package/legal/vi/privacy_notice.md +9 -3
  580. package/legal/zh/privacy_notice.md +9 -3
  581. package/package.json +1 -1
  582. package/src/generated/docs.entry.ts +40 -40
  583. package/docs/ar/roadmap.md +0 -321
  584. package/docs/de/roadmap.md +0 -322
  585. package/docs/en/intlayer_with_astro_vanilla.md +0 -713
  586. package/docs/en/roadmap.md +0 -325
  587. package/docs/en-GB/roadmap.md +0 -322
  588. package/docs/es/roadmap.md +0 -322
  589. package/docs/fr/roadmap.md +0 -322
  590. package/docs/hi/roadmap.md +0 -322
  591. package/docs/id/roadmap.md +0 -325
  592. package/docs/it/roadmap.md +0 -322
  593. package/docs/ja/roadmap.md +0 -322
  594. package/docs/ko/roadmap.md +0 -322
  595. package/docs/pl/roadmap.md +0 -325
  596. package/docs/pt/roadmap.md +0 -322
  597. package/docs/ru/roadmap.md +0 -322
  598. package/docs/tr/roadmap.md +0 -325
  599. package/docs/uk/roadmap.md +0 -325
  600. package/docs/vi/roadmap.md +0 -325
  601. package/docs/zh/roadmap.md +0 -322
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-01-20
3
- updatedAt: 2026-03-24
3
+ updatedAt: 2026-09-21
4
4
  title: HTML-контент
5
5
  description: Узнайте, как объявлять и использовать HTML-контент с пользовательскими компонентами в Intlayer. Следуйте этой документации, чтобы встроить богатый HTML-подобный контент с динамической заменой компонентов в ваш проект с поддержкой интернационализации.
6
6
  keywords:
@@ -13,6 +13,8 @@ keywords:
13
13
  - React
14
14
  - Vue
15
15
  - Svelte
16
+ - Remix
17
+ - Astro
16
18
  - Solid
17
19
  - Angular
18
20
  slugs:
@@ -238,6 +240,83 @@ const myContent = html(
238
240
  ```
239
241
 
240
242
  </Tab>
243
+ <Tab label="Remix" value="remix">
244
+ В Remix 3 узлы HTML преобразуются в строку HTML. Внедрите ее с помощью пропа `innerHTML` в Remix JSX или с помощью `html.raw` в представлении `html-template`.
245
+
246
+ ```tsx fileName="src/views/home.tsx"
247
+ import { useIntlayer } from "remix-intlayer";
248
+
249
+ export const HomePage = () => () => {
250
+ const { myHtmlContent } = useIntlayer("app");
251
+
252
+ return <div innerHTML={myHtmlContent.value} />;
253
+ };
254
+ ```
255
+
256
+ ```ts fileName="src/views/home.ts"
257
+ import { html } from "remix/html-template";
258
+ import { useIntlayer } from "remix-intlayer";
259
+
260
+ export const renderHomePage = () => {
261
+ const { myHtmlContent } = useIntlayer("app");
262
+
263
+ return html.raw`<div>${myHtmlContent.value}</div>`;
264
+ };
265
+ ```
266
+
267
+ > Remix экранирует интерполированные значения по умолчанию. `innerHTML` и `html.raw` — это два способа отказа от экранирования, что и требуется для строки HTML.
268
+
269
+ Используйте метод `.use()` для переопределения тегов или сопоставления пользовательских компонентов. Переопределения — это функции, возвращающие строку HTML:
270
+
271
+ ```tsx
272
+ <div
273
+ innerHTML={myHtmlContent.use({
274
+ p: ({ children }) => `<p class="prose">${children}</p>`,
275
+ CustomLink: ({ children }) => `<a href="/details">${children}</a>`,
276
+ })}
277
+ />
278
+ ```
279
+
280
+ </Tab>
281
+ <Tab label="Astro" value="astro">
282
+ В Astro узлы HTML преобразуются в строку HTML. Внедрите ее с помощью директивы `set:html` в шаблоне или с помощью `innerHTML` в клиентском теге `<script>`.
283
+
284
+ ```astro fileName="src/pages/index.astro"
285
+ ---
286
+ import { useIntlayer } from "astro-intlayer";
287
+
288
+ const { myHtmlContent } = useIntlayer("app");
289
+ ---
290
+
291
+ <div set:html={myHtmlContent.value} />
292
+ ```
293
+
294
+ ```astro fileName="src/components/Content.astro"
295
+ <div id="content"></div>
296
+
297
+ <script>
298
+ import { useIntlayer } from "astro-intlayer";
299
+
300
+ const { myHtmlContent } = useIntlayer("app");
301
+
302
+ document.querySelector("#content")!.innerHTML = myHtmlContent.value;
303
+ </script>
304
+ ```
305
+
306
+ > Astro экранирует `{выражения}` по умолчанию. `set:html` — это способ отказа от экранирования, что и требуется для строки HTML.
307
+
308
+ Используйте метод `.use()` для переопределения тегов или сопоставления пользовательских компонентов. Переопределения — это функции, возвращающие строку HTML:
309
+
310
+ ```astro
311
+ <div
312
+ set:html={myHtmlContent.use({
313
+ p: ({ children }) => `<p class="prose">${children}</p>`,
314
+ CustomLink: ({ children }) => `<a href="/details">${children}</a>`,
315
+ })}
316
+ />
317
+ ```
318
+
319
+ </Tab>
241
320
  </Tabs>
242
321
 
243
322
  ## Глобальная конфигурация с `HTMLProvider`
@@ -473,6 +552,41 @@ const myContent = html(
473
552
  > Динамический импорт рендерера HTML - хороший способ уменьшить размер бандла вашего приложения.
474
553
 
475
554
  </Tab>
555
+ <Tab label="Remix" value="remix">
556
+
557
+ В Remix нет дерева компонентов для размещения провайдера, поэтому конфигурация устанавливается один раз как синглтон при запуске сервера. Она настраивает рендерер, возвращаемый `useHTMLRenderer()`. Узлы `html`, возвращаемые `useIntlayer`, отображаются как есть; переопределяйте их теги для каждого узла с помощью `.use()`.
558
+
559
+ ```typescript fileName="src/router.ts"
560
+ import { installIntlayerHTML } from "remix-intlayer/html";
561
+
562
+ installIntlayerHTML({
563
+ renderHTML: (html) => html.replaceAll("<p>", '<p class="prose">'),
564
+ });
565
+ ```
566
+
567
+ > Используйте `installIntlayerHTMLDynamic(async () => …)` для отложенной загрузки самого рендерера; загрузчик выполняется только при первом вызове.
568
+
569
+ </Tab>
570
+ <Tab label="Astro" value="astro">
571
+
572
+ В Astro нет дерева компонентов для размещения провайдера, поэтому конфигурация устанавливается один раз как синглтон в middleware (сервер) и в клиентском теге `<script>` (браузер). Она настраивает рендерер, возвращаемый `useHTMLRenderer()`. Узлы `html`, возвращаемые `useIntlayer`, отображаются как есть; переопределяйте их теги для каждого узла с помощью `.use()`.
573
+
574
+ ```typescript fileName="src/middleware.ts"
575
+ import { installIntlayerHTML } from "astro-intlayer/html";
576
+ import { defineMiddleware } from "astro:middleware";
577
+
578
+ // Запускается один раз при старте сервера; сам middleware Intlayer
579
+ // регистрируется интеграцией перед этим файлом.
580
+ installIntlayerHTML({
581
+ renderHTML: (html) => html.replaceAll("<p>", '<p class="prose">'),
582
+ });
583
+
584
+ export const onRequest = defineMiddleware((_context, next) => next());
585
+ ```
586
+
587
+ > Используйте `installIntlayerHTMLDynamic(async () => …)` для отложенной загрузки самого рендерера; загрузчик выполняется только при первом вызове.
588
+
589
+ </Tab>
476
590
  </Tabs>
477
591
 
478
592
  ### Ручной рендеринг и расширенные инструменты
@@ -646,15 +760,69 @@ const myContent = html(
646
760
  ```
647
761
 
648
762
  </Tab>
763
+ <Tab label="Remix" value="remix">
764
+ #### Хук `useHTMLRenderer()`
765
+
766
+ Получите функцию рендеринга, предварительно настроенную с помощью `installIntlayerHTML()`. Она возвращает строку HTML.
767
+
768
+ ```tsx
769
+ import { useHTMLRenderer } from "remix-intlayer/html";
770
+
771
+ const renderHTML = useHTMLRenderer();
772
+
773
+ return <div innerHTML={renderHTML("<p>Hello <strong>World</strong></p>")} />;
774
+ ```
775
+
776
+ #### Утилита `renderHTML()`
777
+
778
+ Автономная утилита, игнорирующая глобальную конфигурацию.
779
+
780
+ ```tsx
781
+ import { renderHTML } from "remix-intlayer/html";
782
+
783
+ const html = renderHTML("<p>Hello</p>");
784
+ ```
785
+
786
+ </Tab>
787
+ <Tab label="Astro" value="astro">
788
+ #### Хук `useHTMLRenderer()`
789
+
790
+ Получите функцию рендеринга, предварительно настроенную с помощью `installIntlayerHTML()`. Она возвращает строку HTML.
791
+
792
+ ```astro
793
+ ---
794
+ import { useHTMLRenderer } from "astro-intlayer/html";
795
+
796
+ const renderHTML = useHTMLRenderer();
797
+ ---
798
+
799
+ <div set:html={renderHTML("<p>Hello <strong>World</strong></p>")} />
800
+ ```
801
+
802
+ #### Утилита `renderHTML()`
803
+
804
+ Автономная утилита, игнорирующая глобальную конфигурацию.
805
+
806
+ ```astro
807
+ ---
808
+ import { renderHTML } from "astro-intlayer/html";
809
+
810
+ const html = renderHTML("<p>Hello</p>");
811
+ ---
812
+
813
+ <div set:html={html} />
814
+ ```
815
+
816
+ </Tab>
649
817
  </Tabs>
650
818
 
651
819
  ## Справочник опций
652
820
 
653
821
  Эти опции могут быть переданы в `HTMLProvider`, `HTMLRenderer`, `useHTMLRenderer` и `renderHTML`.
654
822
 
655
- | Опция | Тип | По умолчанию | Описание |
656
- | :----------- | :-------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------- |
657
- | `components` | `Record<string, any>` | `{}` | Отображение HTML-тегов или имён пользовательских компонентов на соответствующие компоненты. |
658
- | `renderHTML` | `Function` | `null` | Пользовательская функция рендеринга для полной замены стандартного HTML-парсера (только для провайдеров Vue/Svelte). |
823
+ | Опция | Тип | По умолчанию | Описание |
824
+ | :----------- | :-------------------- | :----------- | :----------------------------------------------------------------------------------------------------------------------- |
825
+ | `components` | `Record<string, any>` | `{}` | Отображение HTML-тегов или имён пользовательских компонентов на соответствующие компоненты. |
826
+ | `renderHTML` | `Function` | `null` | Пользовательская функция рендеринга для полной замены стандартного HTML-парсера (провайдеры Vue, Svelte, Remix и Astro). |
659
827
 
660
828
  > Примечание: для React и Preact стандартные HTML-теги предоставляются автоматически. Вам нужно передавать проп `components` только если вы хотите переопределить их или добавить пользовательские компоненты.
@@ -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"