@intlayer/docs 8.4.10 → 8.5.1

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 (382) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +40 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +40 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +2 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/dictionary/html.md +32 -25
  8. package/docs/ar/dictionary/markdown.md +33 -35
  9. package/docs/ar/intlayer_with_analog.md +10 -27
  10. package/docs/ar/intlayer_with_angular.md +1 -12
  11. package/docs/ar/intlayer_with_nextjs_14.md +1 -1
  12. package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
  13. package/docs/ar/intlayer_with_react_router_v7.md +6 -1
  14. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +6 -1
  15. package/docs/ar/intlayer_with_storybook.md +2 -5
  16. package/docs/ar/intlayer_with_svelte_kit.md +9 -5
  17. package/docs/ar/intlayer_with_vite+lit.md +689 -0
  18. package/docs/ar/intlayer_with_vite+react.md +16 -4
  19. package/docs/ar/intlayer_with_vite+solid.md +1 -1
  20. package/docs/ar/intlayer_with_vite+svelte.md +13 -6
  21. package/docs/ar/intlayer_with_vite+vanilla.md +722 -0
  22. package/docs/ar/intlayer_with_vite+vue.md +24 -8
  23. package/docs/ar/packages/react-intlayer/MarkdownRenderer.md +1 -1
  24. package/docs/ar/packages/svelte-intlayer/useRewriteURL.md +1 -1
  25. package/docs/ar/releases/v8.md +27 -27
  26. package/docs/bn/intlayer_with_storybook.md +2 -5
  27. package/docs/bn/intlayer_with_vite+lit.md +689 -0
  28. package/docs/bn/intlayer_with_vite+vanilla.md +722 -0
  29. package/docs/cs/intlayer_with_storybook.md +2 -5
  30. package/docs/cs/intlayer_with_vite+lit.md +689 -0
  31. package/docs/cs/intlayer_with_vite+vanilla.md +722 -0
  32. package/docs/de/compiler.md +6 -1
  33. package/docs/de/configuration.md +12 -9
  34. package/docs/de/dictionary/html.md +151 -26
  35. package/docs/de/dictionary/markdown.md +154 -42
  36. package/docs/de/intlayer_with_analog.md +10 -27
  37. package/docs/de/intlayer_with_angular.md +1 -12
  38. package/docs/de/intlayer_with_nextjs_14.md +1 -1
  39. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  40. package/docs/de/intlayer_with_react_router_v7.md +6 -1
  41. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +6 -1
  42. package/docs/de/intlayer_with_storybook.md +2 -5
  43. package/docs/de/intlayer_with_svelte_kit.md +9 -5
  44. package/docs/de/intlayer_with_vite+lit.md +698 -0
  45. package/docs/de/intlayer_with_vite+react.md +16 -4
  46. package/docs/de/intlayer_with_vite+solid.md +1 -1
  47. package/docs/de/intlayer_with_vite+svelte.md +19 -6
  48. package/docs/de/intlayer_with_vite+vanilla.md +722 -0
  49. package/docs/de/intlayer_with_vite+vue.md +24 -8
  50. package/docs/de/packages/react-intlayer/MarkdownRenderer.md +1 -1
  51. package/docs/de/packages/svelte-intlayer/useRewriteURL.md +1 -1
  52. package/docs/de/releases/v8.md +27 -27
  53. package/docs/en/compiler.md +6 -1
  54. package/docs/en/configuration.md +12 -9
  55. package/docs/en/dictionary/html.md +152 -27
  56. package/docs/en/dictionary/markdown.md +154 -38
  57. package/docs/en/intlayer_with_analog.md +10 -27
  58. package/docs/en/intlayer_with_angular.md +1 -12
  59. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  60. package/docs/en/intlayer_with_nextjs_16.md +12 -3
  61. package/docs/en/intlayer_with_nextjs_compiler.md +16 -4
  62. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  63. package/docs/en/intlayer_with_react_router_v7.md +17 -4
  64. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +18 -4
  65. package/docs/en/intlayer_with_storybook.md +2 -5
  66. package/docs/en/intlayer_with_svelte_kit.md +21 -8
  67. package/docs/en/intlayer_with_tanstack.md +12 -3
  68. package/docs/en/intlayer_with_vite+lit.md +703 -0
  69. package/docs/en/intlayer_with_vite+preact.md +31 -3
  70. package/docs/en/intlayer_with_vite+react.md +28 -7
  71. package/docs/en/intlayer_with_vite+react_compiler.md +4 -1
  72. package/docs/en/intlayer_with_vite+solid.md +31 -3
  73. package/docs/en/intlayer_with_vite+svelte.md +30 -9
  74. package/docs/en/intlayer_with_vite+vanilla.md +725 -0
  75. package/docs/en/intlayer_with_vite+vue.md +41 -10
  76. package/docs/en/packages/react-intlayer/MarkdownRenderer.md +1 -1
  77. package/docs/en/packages/svelte-intlayer/useRewriteURL.md +1 -1
  78. package/docs/en/readme.md +1 -0
  79. package/docs/en/releases/v8.md +27 -27
  80. package/docs/en-GB/compiler.md +4 -1
  81. package/docs/en-GB/configuration.md +4 -1
  82. package/docs/en-GB/dictionary/html.md +32 -25
  83. package/docs/en-GB/dictionary/markdown.md +34 -36
  84. package/docs/en-GB/intlayer_with_analog.md +10 -27
  85. package/docs/en-GB/intlayer_with_angular.md +1 -12
  86. package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
  87. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  88. package/docs/en-GB/intlayer_with_react_router_v7.md +6 -1
  89. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +6 -1
  90. package/docs/en-GB/intlayer_with_storybook.md +2 -5
  91. package/docs/en-GB/intlayer_with_svelte_kit.md +9 -5
  92. package/docs/en-GB/intlayer_with_vite+lit.md +703 -0
  93. package/docs/en-GB/intlayer_with_vite+react.md +15 -3
  94. package/docs/en-GB/intlayer_with_vite+solid.md +1 -1
  95. package/docs/en-GB/intlayer_with_vite+svelte.md +17 -5
  96. package/docs/en-GB/intlayer_with_vite+vanilla.md +725 -0
  97. package/docs/en-GB/intlayer_with_vite+vue.md +19 -7
  98. package/docs/en-GB/packages/react-intlayer/MarkdownRenderer.md +1 -1
  99. package/docs/en-GB/packages/svelte-intlayer/useRewriteURL.md +1 -1
  100. package/docs/en-GB/releases/v8.md +27 -27
  101. package/docs/es/compiler.md +6 -1
  102. package/docs/es/configuration.md +12 -9
  103. package/docs/es/dictionary/html.md +152 -27
  104. package/docs/es/dictionary/markdown.md +155 -43
  105. package/docs/es/intlayer_with_analog.md +10 -27
  106. package/docs/es/intlayer_with_angular.md +1 -12
  107. package/docs/es/intlayer_with_nextjs_14.md +1 -1
  108. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  109. package/docs/es/intlayer_with_react_router_v7.md +6 -1
  110. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +6 -1
  111. package/docs/es/intlayer_with_storybook.md +2 -5
  112. package/docs/es/intlayer_with_svelte_kit.md +9 -5
  113. package/docs/es/intlayer_with_vite+lit.md +698 -0
  114. package/docs/es/intlayer_with_vite+react.md +16 -4
  115. package/docs/es/intlayer_with_vite+solid.md +1 -1
  116. package/docs/es/intlayer_with_vite+svelte.md +16 -6
  117. package/docs/es/intlayer_with_vite+vanilla.md +722 -0
  118. package/docs/es/intlayer_with_vite+vue.md +24 -8
  119. package/docs/es/packages/react-intlayer/MarkdownRenderer.md +1 -1
  120. package/docs/es/packages/svelte-intlayer/useRewriteURL.md +1 -1
  121. package/docs/es/releases/v8.md +27 -27
  122. package/docs/fr/compiler.md +8 -3
  123. package/docs/fr/configuration.md +12 -9
  124. package/docs/fr/dictionary/html.md +151 -26
  125. package/docs/fr/dictionary/markdown.md +155 -43
  126. package/docs/fr/intlayer_with_analog.md +10 -27
  127. package/docs/fr/intlayer_with_angular.md +1 -12
  128. package/docs/fr/intlayer_with_nextjs_14.md +1 -1
  129. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  130. package/docs/fr/intlayer_with_react_router_v7.md +6 -1
  131. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +6 -1
  132. package/docs/fr/intlayer_with_storybook.md +2 -5
  133. package/docs/fr/intlayer_with_svelte_kit.md +9 -5
  134. package/docs/fr/intlayer_with_vite+lit.md +698 -0
  135. package/docs/fr/intlayer_with_vite+react.md +16 -4
  136. package/docs/fr/intlayer_with_vite+solid.md +1 -1
  137. package/docs/fr/intlayer_with_vite+svelte.md +19 -6
  138. package/docs/fr/intlayer_with_vite+vanilla.md +722 -0
  139. package/docs/fr/intlayer_with_vite+vue.md +24 -8
  140. package/docs/fr/packages/react-intlayer/MarkdownRenderer.md +1 -1
  141. package/docs/fr/packages/svelte-intlayer/useRewriteURL.md +1 -1
  142. package/docs/fr/releases/v8.md +27 -27
  143. package/docs/hi/dictionary/html.md +32 -25
  144. package/docs/hi/dictionary/markdown.md +35 -37
  145. package/docs/hi/intlayer_with_analog.md +10 -27
  146. package/docs/hi/intlayer_with_angular.md +1 -12
  147. package/docs/hi/intlayer_with_nextjs_14.md +1 -1
  148. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  149. package/docs/hi/intlayer_with_react_router_v7.md +6 -1
  150. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +6 -1
  151. package/docs/hi/intlayer_with_storybook.md +2 -5
  152. package/docs/hi/intlayer_with_svelte_kit.md +9 -5
  153. package/docs/hi/intlayer_with_vite+lit.md +689 -0
  154. package/docs/hi/intlayer_with_vite+react.md +16 -4
  155. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  156. package/docs/hi/intlayer_with_vite+svelte.md +13 -6
  157. package/docs/hi/intlayer_with_vite+vanilla.md +722 -0
  158. package/docs/hi/intlayer_with_vite+vue.md +24 -8
  159. package/docs/hi/packages/react-intlayer/MarkdownRenderer.md +1 -1
  160. package/docs/hi/packages/svelte-intlayer/useRewriteURL.md +1 -1
  161. package/docs/hi/releases/v8.md +27 -27
  162. package/docs/id/dictionary/html.md +32 -25
  163. package/docs/id/dictionary/markdown.md +35 -37
  164. package/docs/id/intlayer_with_analog.md +10 -27
  165. package/docs/id/intlayer_with_angular.md +1 -12
  166. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  167. package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
  168. package/docs/id/intlayer_with_react_router_v7.md +6 -1
  169. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +6 -1
  170. package/docs/id/intlayer_with_storybook.md +2 -5
  171. package/docs/id/intlayer_with_svelte_kit.md +9 -5
  172. package/docs/id/intlayer_with_vite+lit.md +689 -0
  173. package/docs/id/intlayer_with_vite+react.md +16 -4
  174. package/docs/id/intlayer_with_vite+solid.md +1 -1
  175. package/docs/id/intlayer_with_vite+svelte.md +13 -6
  176. package/docs/id/intlayer_with_vite+vanilla.md +722 -0
  177. package/docs/id/intlayer_with_vite+vue.md +19 -7
  178. package/docs/id/packages/react-intlayer/MarkdownRenderer.md +1 -1
  179. package/docs/id/packages/svelte-intlayer/useRewriteURL.md +1 -1
  180. package/docs/id/releases/v8.md +27 -27
  181. package/docs/it/compiler.md +8 -3
  182. package/docs/it/configuration.md +12 -9
  183. package/docs/it/dictionary/html.md +151 -26
  184. package/docs/it/dictionary/markdown.md +155 -39
  185. package/docs/it/intlayer_with_analog.md +10 -27
  186. package/docs/it/intlayer_with_angular.md +1 -12
  187. package/docs/it/intlayer_with_nextjs_14.md +1 -1
  188. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  189. package/docs/it/intlayer_with_react_router_v7.md +6 -1
  190. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +6 -1
  191. package/docs/it/intlayer_with_storybook.md +2 -5
  192. package/docs/it/intlayer_with_svelte_kit.md +9 -5
  193. package/docs/it/intlayer_with_vite+lit.md +698 -0
  194. package/docs/it/intlayer_with_vite+react.md +16 -4
  195. package/docs/it/intlayer_with_vite+solid.md +1 -1
  196. package/docs/it/intlayer_with_vite+svelte.md +13 -6
  197. package/docs/it/intlayer_with_vite+vanilla.md +722 -0
  198. package/docs/it/intlayer_with_vite+vue.md +24 -8
  199. package/docs/it/packages/react-intlayer/MarkdownRenderer.md +1 -1
  200. package/docs/it/packages/svelte-intlayer/useRewriteURL.md +1 -1
  201. package/docs/it/releases/v8.md +27 -27
  202. package/docs/ja/dictionary/html.md +153 -29
  203. package/docs/ja/dictionary/markdown.md +154 -42
  204. package/docs/ja/intlayer_with_analog.md +10 -27
  205. package/docs/ja/intlayer_with_angular.md +1 -12
  206. package/docs/ja/intlayer_with_nextjs_14.md +1 -1
  207. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  208. package/docs/ja/intlayer_with_react_router_v7.md +6 -1
  209. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +6 -1
  210. package/docs/ja/intlayer_with_storybook.md +2 -5
  211. package/docs/ja/intlayer_with_vite+lit.md +698 -0
  212. package/docs/ja/intlayer_with_vite+solid.md +1 -1
  213. package/docs/ja/intlayer_with_vite+svelte.md +13 -6
  214. package/docs/ja/intlayer_with_vite+vanilla.md +722 -0
  215. package/docs/ja/intlayer_with_vite+vue.md +24 -8
  216. package/docs/ja/packages/react-intlayer/MarkdownRenderer.md +1 -1
  217. package/docs/ja/packages/svelte-intlayer/useRewriteURL.md +1 -1
  218. package/docs/ja/releases/v8.md +27 -27
  219. package/docs/ko/dictionary/html.md +154 -30
  220. package/docs/ko/dictionary/markdown.md +155 -43
  221. package/docs/ko/intlayer_with_analog.md +10 -27
  222. package/docs/ko/intlayer_with_angular.md +1 -12
  223. package/docs/ko/intlayer_with_nextjs_14.md +1 -1
  224. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  225. package/docs/ko/intlayer_with_react_router_v7.md +6 -1
  226. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +6 -1
  227. package/docs/ko/intlayer_with_storybook.md +2 -5
  228. package/docs/ko/intlayer_with_svelte_kit.md +9 -5
  229. package/docs/ko/intlayer_with_vite+lit.md +698 -0
  230. package/docs/ko/intlayer_with_vite+react.md +16 -4
  231. package/docs/ko/intlayer_with_vite+solid.md +1 -1
  232. package/docs/ko/intlayer_with_vite+svelte.md +13 -6
  233. package/docs/ko/intlayer_with_vite+vanilla.md +722 -0
  234. package/docs/ko/intlayer_with_vite+vue.md +24 -8
  235. package/docs/ko/packages/react-intlayer/MarkdownRenderer.md +1 -1
  236. package/docs/ko/packages/svelte-intlayer/useRewriteURL.md +1 -1
  237. package/docs/ko/releases/v8.md +27 -27
  238. package/docs/nl/intlayer_with_storybook.md +2 -5
  239. package/docs/nl/intlayer_with_vite+lit.md +689 -0
  240. package/docs/nl/intlayer_with_vite+vanilla.md +722 -0
  241. package/docs/pl/dictionary/html.md +151 -26
  242. package/docs/pl/dictionary/markdown.md +155 -43
  243. package/docs/pl/intlayer_with_analog.md +10 -27
  244. package/docs/pl/intlayer_with_angular.md +1 -12
  245. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  246. package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
  247. package/docs/pl/intlayer_with_react_router_v7.md +6 -1
  248. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +6 -1
  249. package/docs/pl/intlayer_with_storybook.md +2 -5
  250. package/docs/pl/intlayer_with_svelte_kit.md +9 -5
  251. package/docs/pl/intlayer_with_vite+lit.md +689 -0
  252. package/docs/pl/intlayer_with_vite+react.md +16 -4
  253. package/docs/pl/intlayer_with_vite+solid.md +1 -1
  254. package/docs/pl/intlayer_with_vite+svelte.md +13 -6
  255. package/docs/pl/intlayer_with_vite+vanilla.md +722 -0
  256. package/docs/pl/intlayer_with_vite+vue.md +19 -7
  257. package/docs/pl/packages/react-intlayer/MarkdownRenderer.md +1 -1
  258. package/docs/pl/packages/svelte-intlayer/useRewriteURL.md +1 -1
  259. package/docs/pl/releases/v8.md +27 -27
  260. package/docs/pt/compiler.md +7 -2
  261. package/docs/pt/configuration.md +11 -9
  262. package/docs/pt/dictionary/html.md +132 -26
  263. package/docs/pt/dictionary/markdown.md +155 -43
  264. package/docs/pt/intlayer_with_analog.md +10 -27
  265. package/docs/pt/intlayer_with_angular.md +1 -12
  266. package/docs/pt/intlayer_with_nextjs_14.md +1 -1
  267. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  268. package/docs/pt/intlayer_with_react_router_v7.md +6 -1
  269. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +6 -1
  270. package/docs/pt/intlayer_with_storybook.md +2 -5
  271. package/docs/pt/intlayer_with_svelte_kit.md +9 -5
  272. package/docs/pt/intlayer_with_vite+lit.md +698 -0
  273. package/docs/pt/intlayer_with_vite+react.md +16 -4
  274. package/docs/pt/intlayer_with_vite+solid.md +1 -1
  275. package/docs/pt/intlayer_with_vite+svelte.md +16 -6
  276. package/docs/pt/intlayer_with_vite+vanilla.md +722 -0
  277. package/docs/pt/intlayer_with_vite+vue.md +24 -8
  278. package/docs/pt/packages/react-intlayer/MarkdownRenderer.md +1 -1
  279. package/docs/pt/packages/svelte-intlayer/useRewriteURL.md +1 -1
  280. package/docs/pt/releases/v8.md +27 -27
  281. package/docs/ru/dictionary/html.md +153 -29
  282. package/docs/ru/dictionary/markdown.md +155 -41
  283. package/docs/ru/intlayer_with_analog.md +10 -27
  284. package/docs/ru/intlayer_with_angular.md +1 -12
  285. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  286. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  287. package/docs/ru/intlayer_with_react_router_v7.md +6 -1
  288. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +6 -1
  289. package/docs/ru/intlayer_with_storybook.md +2 -5
  290. package/docs/ru/intlayer_with_svelte_kit.md +9 -5
  291. package/docs/ru/intlayer_with_vite+lit.md +698 -0
  292. package/docs/ru/intlayer_with_vite+react.md +16 -4
  293. package/docs/ru/intlayer_with_vite+solid.md +1 -1
  294. package/docs/ru/intlayer_with_vite+svelte.md +13 -6
  295. package/docs/ru/intlayer_with_vite+vanilla.md +722 -0
  296. package/docs/ru/intlayer_with_vite+vue.md +24 -8
  297. package/docs/ru/packages/react-intlayer/MarkdownRenderer.md +1 -1
  298. package/docs/ru/packages/svelte-intlayer/useRewriteURL.md +1 -1
  299. package/docs/ru/releases/v8.md +27 -27
  300. package/docs/tr/dictionary/html.md +134 -29
  301. package/docs/tr/dictionary/markdown.md +155 -41
  302. package/docs/tr/intlayer_with_analog.md +10 -27
  303. package/docs/tr/intlayer_with_angular.md +1 -12
  304. package/docs/tr/intlayer_with_nextjs_14.md +1 -1
  305. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  306. package/docs/tr/intlayer_with_react_router_v7.md +6 -1
  307. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +6 -1
  308. package/docs/tr/intlayer_with_storybook.md +2 -5
  309. package/docs/tr/intlayer_with_svelte_kit.md +9 -5
  310. package/docs/tr/intlayer_with_vite+lit.md +689 -0
  311. package/docs/tr/intlayer_with_vite+react.md +16 -4
  312. package/docs/tr/intlayer_with_vite+solid.md +1 -1
  313. package/docs/tr/intlayer_with_vite+svelte.md +13 -6
  314. package/docs/tr/intlayer_with_vite+vanilla.md +722 -0
  315. package/docs/tr/intlayer_with_vite+vue.md +19 -7
  316. package/docs/tr/packages/react-intlayer/MarkdownRenderer.md +1 -1
  317. package/docs/tr/packages/svelte-intlayer/useRewriteURL.md +1 -1
  318. package/docs/tr/releases/v8.md +27 -27
  319. package/docs/uk/dictionary/html.md +32 -25
  320. package/docs/uk/dictionary/markdown.md +35 -37
  321. package/docs/uk/intlayer_with_analog.md +10 -27
  322. package/docs/uk/intlayer_with_angular.md +1 -12
  323. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  324. package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
  325. package/docs/uk/intlayer_with_react_router_v7.md +5 -1
  326. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +6 -1
  327. package/docs/uk/intlayer_with_storybook.md +2 -5
  328. package/docs/uk/intlayer_with_svelte_kit.md +9 -5
  329. package/docs/uk/intlayer_with_vite+lit.md +689 -0
  330. package/docs/uk/intlayer_with_vite+react.md +16 -4
  331. package/docs/uk/intlayer_with_vite+solid.md +1 -1
  332. package/docs/uk/intlayer_with_vite+svelte.md +18 -6
  333. package/docs/uk/intlayer_with_vite+vanilla.md +722 -0
  334. package/docs/uk/intlayer_with_vite+vue.md +19 -7
  335. package/docs/uk/packages/react-intlayer/MarkdownRenderer.md +1 -1
  336. package/docs/uk/packages/svelte-intlayer/useRewriteURL.md +1 -1
  337. package/docs/uk/releases/v8.md +27 -27
  338. package/docs/ur/intlayer_with_storybook.md +2 -5
  339. package/docs/ur/intlayer_with_vite+lit.md +689 -0
  340. package/docs/ur/intlayer_with_vite+vanilla.md +722 -0
  341. package/docs/vi/dictionary/html.md +32 -25
  342. package/docs/vi/dictionary/markdown.md +35 -37
  343. package/docs/vi/intlayer_with_analog.md +10 -27
  344. package/docs/vi/intlayer_with_angular.md +1 -12
  345. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  346. package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
  347. package/docs/vi/intlayer_with_react_router_v7.md +6 -1
  348. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +6 -1
  349. package/docs/vi/intlayer_with_storybook.md +2 -5
  350. package/docs/vi/intlayer_with_svelte_kit.md +9 -5
  351. package/docs/vi/intlayer_with_vite+lit.md +689 -0
  352. package/docs/vi/intlayer_with_vite+react.md +16 -4
  353. package/docs/vi/intlayer_with_vite+solid.md +1 -1
  354. package/docs/vi/intlayer_with_vite+svelte.md +17 -5
  355. package/docs/vi/intlayer_with_vite+vanilla.md +722 -0
  356. package/docs/vi/intlayer_with_vite+vue.md +19 -7
  357. package/docs/vi/packages/react-intlayer/MarkdownRenderer.md +1 -1
  358. package/docs/vi/packages/svelte-intlayer/useRewriteURL.md +1 -1
  359. package/docs/vi/releases/v8.md +27 -27
  360. package/docs/zh/compiler.md +8 -3
  361. package/docs/zh/configuration.md +4 -1
  362. package/docs/zh/dictionary/html.md +153 -29
  363. package/docs/zh/dictionary/markdown.md +155 -39
  364. package/docs/zh/intlayer_with_analog.md +10 -27
  365. package/docs/zh/intlayer_with_angular.md +1 -12
  366. package/docs/zh/intlayer_with_nextjs_14.md +1 -1
  367. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  368. package/docs/zh/intlayer_with_react_router_v7.md +6 -1
  369. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +6 -1
  370. package/docs/zh/intlayer_with_storybook.md +2 -5
  371. package/docs/zh/intlayer_with_svelte_kit.md +9 -5
  372. package/docs/zh/intlayer_with_vite+lit.md +698 -0
  373. package/docs/zh/intlayer_with_vite+react.md +16 -4
  374. package/docs/zh/intlayer_with_vite+solid.md +1 -1
  375. package/docs/zh/intlayer_with_vite+svelte.md +16 -6
  376. package/docs/zh/intlayer_with_vite+vanilla.md +722 -0
  377. package/docs/zh/intlayer_with_vite+vue.md +19 -7
  378. package/docs/zh/packages/react-intlayer/MarkdownRenderer.md +1 -1
  379. package/docs/zh/packages/svelte-intlayer/useRewriteURL.md +1 -1
  380. package/docs/zh/releases/v8.md +27 -27
  381. package/package.json +6 -6
  382. package/src/generated/docs.entry.ts +40 -0
@@ -0,0 +1,698 @@
1
+ ---
2
+ createdAt: 2026-03-23
3
+ updatedAt: 2026-03-23
4
+ title: i18n Vite + Lit — Как перевести приложение на Lit в 2026 году
5
+ description: Узнайте, как сделать ваш веб-сайт на Vite и Lit многоязычным. Следуйте документации для интернационализации (i18n) и перевода.
6
+ keywords:
7
+ - Интернационализация
8
+ - Документация
9
+ - Intlayer
10
+ - Vite
11
+ - Lit
12
+ - Web Components
13
+ - JavaScript
14
+ slugs:
15
+ - doc
16
+ - environment
17
+ - vite-and-lit
18
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-lit-template
19
+ history:
20
+ - version: 8.4.10
21
+ date: 2026-03-23
22
+ changes: "Init history"
23
+ ---
24
+
25
+ # Переведите ваш веб-сайт на Vite и Lit с помощью Intlayer | Интернационализация (i18n)
26
+
27
+ <iframe
28
+ src="https://stackblitz.com/github/aymericzip/intlayer-vite-lit-template?embed=1&ctl=1&file=intlayer.config.ts"
29
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
30
+ title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
31
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
32
+ loading="lazy"
33
+ />
34
+
35
+ ## Содержание
36
+
37
+ <TOC/>
38
+
39
+ ## Что такое Intlayer?
40
+
41
+ **Intlayer** — это инновационная библиотека интернационализации (i18n) с открытым исходным кодом, разработанная для упрощения многоязычной поддержки в современных веб-приложениях.
42
+
43
+ С помощью Intlayer вы можете:
44
+
45
+ - **Легко управлять переводами**, используя декларативные словари на уровне компонентов.
46
+ - **Динамически локализовать метаданные**, маршруты и контент.
47
+ - **Обеспечить поддержку TypeScript** с помощью автогенерируемых типов, что улучшает автодополнение и обнаружение ошибок.
48
+ - **Пользоваться расширенными функциями**, такими как динамическое определение и переключение языка.
49
+
50
+ ---
51
+
52
+ ## Пошаговое руководство по настройке Intlayer в приложении на Vite и Lit
53
+
54
+ ### Шаг 1: Установка зависимостей
55
+
56
+ Установите необходимые пакеты с помощью npm:
57
+
58
+ ```bash packageManager="npm"
59
+ npm install intlayer lit-intlayer
60
+ npm install vite-intlayer --save-dev
61
+ npx intlayer init
62
+ ```
63
+
64
+ ```bash packageManager="pnpm"
65
+ pnpm add intlayer lit-intlayer
66
+ pnpm add vite-intlayer --save-dev
67
+ pnpm intlayer init
68
+ ```
69
+
70
+ ```bash packageManager="yarn"
71
+ yarn add intlayer lit-intlayer
72
+ yarn add vite-intlayer --save-dev
73
+ yarn intlayer init
74
+ ```
75
+
76
+ ```bash packageManager="bun"
77
+ bun add intlayer lit-intlayer
78
+ bun add vite-intlayer --dev
79
+ bunx intlayer init
80
+ ```
81
+
82
+ - **intlayer**
83
+
84
+ Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, [декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md), транспиляции и [CLI-команд](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/index.md).
85
+
86
+ - **lit-intlayer**
87
+ Пакет, интегрирующий Intlayer с приложениями на Lit. Он предоставляет хуки на основе `ReactiveController` (`useIntlayer`, `useLocale` и т. д.), чтобы LitElement автоматически перерисовывались при смене языка.
88
+
89
+ - **vite-intlayer**
90
+ Включает плагин Vite для интеграции Intlayer с [бандлером Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также промежуточное ПО (middleware) для определения предпочтительного языка пользователя, управления куки и обработки перенаправления URL.
91
+
92
+ ### Шаг 2: Конфигурация вашего проекта
93
+
94
+ Создайте файл конфигурации для настройки языков вашего приложения:
95
+
96
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
97
+ import { Locales, type IntlayerConfig } from "intlayer";
98
+
99
+ const config: IntlayerConfig = {
100
+ internationalization: {
101
+ locales: [
102
+ Locales.ENGLISH,
103
+ Locales.FRENCH,
104
+ Locales.SPANISH,
105
+ // Ваши другие локали
106
+ ],
107
+ defaultLocale: Locales.ENGLISH,
108
+ },
109
+ };
110
+
111
+ export default config;
112
+ ```
113
+
114
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
115
+ import { Locales } from "intlayer";
116
+
117
+ /** @type {import('intlayer').IntlayerConfig} */
118
+ const config = {
119
+ internationalization: {
120
+ locales: [
121
+ Locales.ENGLISH,
122
+ Locales.FRENCH,
123
+ Locales.SPANISH,
124
+ // Ваши другие локали
125
+ ],
126
+ defaultLocale: Locales.ENGLISH,
127
+ },
128
+ };
129
+
130
+ export default config;
131
+ ```
132
+
133
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
134
+ const { Locales } = require("intlayer");
135
+
136
+ /** @type {import('intlayer').IntlayerConfig} */
137
+ const config = {
138
+ internationalization: {
139
+ locales: [
140
+ Locales.ENGLISH,
141
+ Locales.FRENCH,
142
+ Locales.SPANISH,
143
+ // Ваши другие локали
144
+ ],
145
+ defaultLocale: Locales.ENGLISH,
146
+ },
147
+ };
148
+
149
+ module.exports = config;
150
+ ```
151
+
152
+ > Через этот файл конфигурации вы можете настроить локализованные URL, перенаправление middleware, имена куки, местоположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Полный список доступных параметров см. в [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
153
+
154
+ ### Шаг 3: Интеграция Intlayer в конфигурацию Vite
155
+
156
+ Добавьте плагин intlayer в вашу конфигурацию.
157
+
158
+ ```typescript fileName="vite.config.ts" codeFormat="typescript"
159
+ import { defineConfig } from "vite";
160
+ import { intlayer } from "vite-intlayer";
161
+
162
+ // https://vitejs.dev/config/
163
+ export default defineConfig({
164
+ plugins: [intlayer()],
165
+ });
166
+ ```
167
+
168
+ ```javascript fileName="vite.config.mjs" codeFormat="esm"
169
+ import { defineConfig } from "vite";
170
+ import { intlayer } from "vite-intlayer";
171
+
172
+ // https://vitejs.dev/config/
173
+ export default defineConfig({
174
+ plugins: [intlayer()],
175
+ });
176
+ ```
177
+
178
+ ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
179
+ const { defineConfig } = require("vite");
180
+ const { intlayer } = require("vite-intlayer");
181
+
182
+ // https://vitejs.dev/config/
183
+ module.exports = defineConfig({
184
+ plugins: [intlayer()],
185
+ });
186
+ ```
187
+
188
+ > Плагин Vite `intlayer()` используется для интеграции Intlayer с Vite. Он обеспечивает создание файлов декларации контента и отслеживает их изменения в режиме разработки. Он определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, он предоставляет псевдонимы (aliases) для оптимизации производительности.
189
+
190
+ ### Шаг 4: Инициализация Intlayer в вашей точке входа
191
+
192
+ Вызовите `installIntlayer()` **перед** регистрацией любых кастомных элементов, чтобы глобальный синглтон локали был готов к моменту подключения первого элемента.
193
+
194
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
195
+ import { installIntlayer } from "lit-intlayer";
196
+
197
+ // Должно быть вызвано до того, как любой LitElement будет подключен к DOM.
198
+ installIntlayer();
199
+
200
+ // Импорт и регистрация ваших кастомных элементов.
201
+ import "./my-element.js";
202
+ ```
203
+
204
+ Если вы также используете декларации контента `md()` (Markdown), установите также рендерер макдауна:
205
+
206
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
207
+ import { installIntlayer, installIntlayerMarkdown } from "lit-intlayer";
208
+
209
+ installIntlayer();
210
+ installIntlayerMarkdown();
211
+
212
+ import "./my-element.js";
213
+ ```
214
+
215
+ ### Шаг 5: Декларация вашего контента
216
+
217
+ Создавайте и управляйте декларациями контента для хранения переводов:
218
+
219
+ ```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
220
+ import { t, type Dictionary } from "intlayer";
221
+
222
+ const appContent = {
223
+ key: "app",
224
+ content: {
225
+ title: "Vite + Lit",
226
+
227
+ viteLogo: t({
228
+ en: "Vite logo",
229
+ fr: "Logo Vite",
230
+ es: "Logo Vite",
231
+ }),
232
+ litLogo: t({
233
+ en: "Lit logo",
234
+ fr: "Logo Lit",
235
+ es: "Logo Lit",
236
+ }),
237
+
238
+ count: t({
239
+ en: "count is {{count}}",
240
+ fr: "le compte est {{count}}",
241
+ es: "el recuento es {{count}}",
242
+ }),
243
+
244
+ readTheDocs: t({
245
+ en: "Click on the Vite and Lit logos to learn more",
246
+ fr: "Cliqueз sur les logos Vite et Lit pour en savoir plus",
247
+ es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
248
+ }),
249
+ },
250
+ } satisfies Dictionary;
251
+
252
+ export default appContent;
253
+ ```
254
+
255
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
256
+ import { t } from "intlayer";
257
+
258
+ /** @type {import('intlayer').Dictionary} */
259
+ const appContent = {
260
+ key: "app",
261
+ content: {
262
+ title: "Vite + Lit",
263
+
264
+ viteLogo: t({
265
+ en: "Vite logo",
266
+ fr: "Logo Vite",
267
+ es: "Logo Vite",
268
+ }),
269
+ litLogo: t({
270
+ en: "Lit logo",
271
+ fr: "Logo Lit",
272
+ es: "Logo Lit",
273
+ }),
274
+
275
+ count: t({
276
+ en: "count is {{count}}",
277
+ fr: "le compte est {{count}}",
278
+ es: "el recuento es {{count}}",
279
+ }),
280
+
281
+ readTheDocs: t({
282
+ en: "Click on the Vite and Lit logos to learn more",
283
+ fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
284
+ es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
285
+ }),
286
+ },
287
+ };
288
+
289
+ export default appContent;
290
+ ```
291
+
292
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
293
+ const { t } = require("intlayer");
294
+
295
+ /** @type {import('intlayer').Dictionary} */
296
+ const appContent = {
297
+ key: "app",
298
+ content: {
299
+ title: "Vite + Lit",
300
+
301
+ viteLogo: t({
302
+ en: "Vite logo",
303
+ fr: "Logo Vite",
304
+ es: "Logo Vite",
305
+ }),
306
+ litLogo: t({
307
+ en: "Lit logo",
308
+ fr: "Logo Lit",
309
+ es: "Logo Lit",
310
+ }),
311
+
312
+ count: t({
313
+ en: "count is {{count}}",
314
+ fr: "le compte est {{count}}",
315
+ es: "el recuento es {{count}}",
316
+ }),
317
+
318
+ readTheDocs: t({
319
+ en: "Click on the Vite and Lit logos to learn more",
320
+ fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
321
+ es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
322
+ }),
323
+ },
324
+ };
325
+
326
+ module.exports = appContent;
327
+ ```
328
+
329
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
330
+ {
331
+ "$schema": "https://intlayer.org/schema.json",
332
+ "key": "app",
333
+ "content": {
334
+ "title": "Vite + Lit",
335
+ "viteLogo": {
336
+ "nodeType": "translation",
337
+ "translation": {
338
+ "en": "Vite logo",
339
+ "fr": "Logo Vite",
340
+ "es": "Logo Vite"
341
+ }
342
+ },
343
+ "litLogo": {
344
+ "nodeType": "translation",
345
+ "translation": {
346
+ "en": "Lit logo",
347
+ "fr": "Logo Lit",
348
+ "es": "Logo Lit"
349
+ }
350
+ },
351
+ "count": {
352
+ "nodeType": "translation",
353
+ "translation": {
354
+ "en": "count is {{count}}",
355
+ "fr": "le compte est {{count}}",
356
+ "es": "el recuento es {{count}}"
357
+ }
358
+ },
359
+ "readTheDocs": {
360
+ "nodeType": "translation",
361
+ "translation": {
362
+ "en": "Click on the Vite and Lit logos to learn more",
363
+ "fr": "Cliquez sur les logos Vite et Lit pour en savoir plus",
364
+ "es": "Haga clic en los logotipos de Vite y Lit para obtener más información"
365
+ }
366
+ }
367
+ }
368
+ }
369
+ ```
370
+
371
+ > Декларации контента могут быть определены в любом месте вашего приложения, если они включены в директорию `contentDir` (по умолчанию `./src`) и соответствуют расширению файлов декларации контента (по умолчанию `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
372
+ >
373
+ > Подробнее см. в [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md).
374
+
375
+ ### Шаг 6: Использование Intlayer в вашем LitElement
376
+
377
+ Используйте `useIntlayer` внутри `LitElement`. Он возвращает прокси `ReactiveController`, который автоматически вызывает перерисовку при изменении активного языка — никакой дополнительной настройки не требуется.
378
+
379
+ ```typescript fileName="src/my-element.ts" codeFormat="typescript"
380
+ import { LitElement, html } from "lit";
381
+ import { customElement, property } from "lit/decorators.js";
382
+ import { useIntlayer } from "lit-intlayer";
383
+
384
+ @customElement("my-element")
385
+ export class MyElement extends LitElement {
386
+ @property({ type: Number })
387
+ count = 0;
388
+
389
+ // useIntlayer регистрирует себя как ReactiveController.
390
+ // Элемент перерисовывается автоматически при смене языка.
391
+ private content = useIntlayer(this, "app");
392
+
393
+ override render() {
394
+ const { content } = this;
395
+
396
+ return html`
397
+ <h1>${content.title}</h1>
398
+
399
+ <img src="/vite.svg" alt=${content.viteLogo.value} />
400
+ <img src="/lit.svg" alt=${content.litLogo.value} />
401
+
402
+ <button @click=${() => this.count++}>
403
+ ${content.count({ count: this.count })}
404
+ </button>
405
+
406
+ <p>${content.readTheDocs}</p>
407
+ `;
408
+ }
409
+ }
410
+ ```
411
+
412
+ > [!NOTE]
413
+ > Если вам нужна переведенная строка в нативном HTML-атрибуте (например, `alt`, `aria-label`, `title`), вызовите `.value` на конечном узле:
414
+ >
415
+ > ```typescript
416
+ > html`<img alt=${content.viteLogo.value} />`;
417
+ > ```
418
+
419
+ ### (Опционально) Шаг 7: Изменение языка вашего контента
420
+
421
+ Чтобы изменить язык контента, используйте метод `setLocale`, предоставляемый контроллером `useLocale`.
422
+
423
+ ```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
424
+ import { LitElement, html } from "lit";
425
+ import { customElement } from "lit/decorators.js";
426
+ import { getLocaleName } from "intlayer";
427
+ import { useLocale } from "lit-intlayer";
428
+
429
+ @customElement("locale-switcher")
430
+ export class LocaleSwitcher extends LitElement {
431
+ private locale = useLocale(this);
432
+
433
+ private _onChange(e: Event) {
434
+ const select = e.target as HTMLSelectElement;
435
+ this.locale.setLocale(select.value as any);
436
+ }
437
+
438
+ override render() {
439
+ return html`
440
+ <select @change=${this._onChange}>
441
+ ${this.locale.availableLocales.map(
442
+ (loc) => html`
443
+ <option value=${loc} ?selected=${loc === this.locale.locale}>
444
+ ${getLocaleName(loc)}
445
+ </option>
446
+ `
447
+ )}
448
+ </select>
449
+ `;
450
+ }
451
+ }
452
+ ```
453
+
454
+ ### (Опционально) Шаг 8: Рендеринг Markdown и HTML контента
455
+
456
+ Intlayer поддерживает декларации контента `md()` и `html()`. В Lit скомпилированный результат вставляется как необработанный HTML через директиву `unsafeHTML`.
457
+
458
+ ```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
459
+ import { md, t, type Dictionary } from "intlayer";
460
+
461
+ const appContent = {
462
+ key: "app",
463
+ content: {
464
+ // ...
465
+ editNote: md(
466
+ t({
467
+ en: "Edit `src/my-element.ts` and save to test **HMR**",
468
+ fr: "Modifiez `src/my-element.ts` et enregistrez pour tester **HMR**",
469
+ es: "Edite `src/my-element.ts` y guarde para probar **HMR**",
470
+ })
471
+ ),
472
+ },
473
+ } satisfies Dictionary;
474
+
475
+ export default appContent;
476
+ ```
477
+
478
+ Рендеринг скомпилированного HTML в вашем элементе:
479
+
480
+ ```typescript fileName="src/my-element.ts" codeFormat="typescript"
481
+ import { LitElement, html } from "lit";
482
+ import { customElement } from "lit/decorators.js";
483
+ import { unsafeHTML } from "lit/directives/unsafe-html.js";
484
+ import { useIntlayer } from "lit-intlayer";
485
+ import { compileMarkdown } from "lit-intlayer/markdown";
486
+
487
+ @customElement("my-element")
488
+ export class MyElement extends LitElement {
489
+ private content = useIntlayer(this, "app");
490
+
491
+ override render() {
492
+ return html`
493
+ <div class="edit-note">
494
+ ${unsafeHTML(compileMarkdown(String(this.content.editNote)))}
495
+ </div>
496
+ `;
497
+ }
498
+ }
499
+ ```
500
+
501
+ > [!TIP]
502
+ > `String(content.editNote)` вызывает `toString()` на `IntlayerNode`, который возвращает необработанную строку Markdown. Передайте ее в `compileMarkdown`, чтобы получить HTML-строку, а затем отрендерите ее с помощью директивы `unsafeHTML` от Lit.
503
+
504
+ ### (Опционально) Шаг 9: Добавление локализованной маршрутизации (Routing)
505
+
506
+ Чтобы создать уникальные маршруты для каждого языка (полезно для SEO), вы можете использовать клиентский роутер вместе с помощниками Intlayer `localeMap` / `localeFlatMap` и плагином Vite `intlayerProxy` для определения языка на стороне сервера.
507
+
508
+ Сначала добавьте `intlayerProxy` в конфигурацию Vite:
509
+
510
+ > Обратите внимание, что для использования `intlayerProxy` в продакшене вам нужно переместить `vite-intlayer` из `devDependencies` в `dependencies`.
511
+
512
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
513
+ import { defineConfig } from "vite";
514
+ import { intlayer, intlayerProxy } from "vite-intlayer";
515
+
516
+ export default defineConfig({
517
+ plugins: [
518
+ intlayerProxy(), // should be placed first
519
+ intlayer(),
520
+ ],
521
+ });
522
+ ```
523
+
524
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
525
+ import { defineConfig } from "vite";
526
+ import { intlayer, intlayerProxy } from "vite-intlayer";
527
+
528
+ export default defineConfig({
529
+ plugins: [
530
+ intlayerProxy(), // should be placed first
531
+ intlayer(),
532
+ ],
533
+ });
534
+ ```
535
+
536
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
537
+ const { defineConfig } = require("vite");
538
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
539
+
540
+ module.exports = defineConfig({
541
+ plugins: [
542
+ intlayerProxy(), // should be placed first
543
+ intlayer(),
544
+ ],
545
+ });
546
+ ```
547
+
548
+ ### (Опционально) Шаг 10: Изменение URL при смене языка
549
+
550
+ Чтобы обновлять URL браузера при смене языка, используйте `useRewriteURL` вместе с переключателем языка:
551
+
552
+ ```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
553
+ import { LitElement, html } from "lit";
554
+ import { customElement } from "lit/decorators.js";
555
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
556
+ import { useLocale, useRewriteURL } from "lit-intlayer";
557
+
558
+ @customElement("locale-switcher")
559
+ export class LocaleSwitcher extends LitElement {
560
+ private locale = useLocale(this);
561
+
562
+ // Автоматически перезаписывает текущий URL при смене языка.
563
+ private _rewriteURL = useRewriteURL(this);
564
+
565
+ private _onChange(e: Event) {
566
+ const select = e.target as HTMLSelectElement;
567
+ this.locale.setLocale(select.value as any);
568
+ }
569
+
570
+ override render() {
571
+ return html`
572
+ <select @change=${this._onChange}>
573
+ ${this.locale.availableLocales.map(
574
+ (loc) => html`
575
+ <option value=${loc} ?selected=${loc === this.locale.locale}>
576
+ ${getLocaleName(loc)}
577
+ </option>
578
+ `
579
+ )}
580
+ </select>
581
+ `;
582
+ }
583
+ }
584
+ ```
585
+
586
+ ### (Опционально) Шаг 11: Переключение атрибутов языка и направления текста в HTML
587
+
588
+ Обновляйте атрибуты `lang` и `dir` тега `<html>` в соответствии с текущим языком для обеспечения доступности и SEO.
589
+
590
+ ```typescript fileName="src/my-element.ts" codeFormat="typescript"
591
+ import { LitElement, html } from "lit";
592
+ import { customElement } from "lit/decorators.js";
593
+ import { getHTMLTextDir } from "intlayer";
594
+ import { useLocale } from "lit-intlayer";
595
+
596
+ @customElement("my-element")
597
+ export class MyElement extends LitElement {
598
+ private locale = useLocale(this, {
599
+ onLocaleChange: (loc) => {
600
+ document.documentElement.lang = loc;
601
+ document.documentElement.dir = getHTMLTextDir(loc);
602
+ },
603
+ });
604
+
605
+ override render() {
606
+ return html`<!-- ваш контент -->`;
607
+ }
608
+ }
609
+ ```
610
+
611
+ ### (Опционально) Шаг 12: Извлечение контента из ваших компонентов
612
+
613
+ Если у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
614
+
615
+ Чтобы облегчить этот процесс, Intlayer предлагает [компилятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/compiler.md) / [экстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/extract.md) для преобразования ваших компонентов и извлечения контента.
616
+
617
+ Чтобы настроить его, вы можете добавить раздел `compiler` в файл `intlayer.config.ts`:
618
+
619
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
620
+ import { type IntlayerConfig } from "intlayer";
621
+
622
+ const config: IntlayerConfig = {
623
+ // ... Остальная часть вашей конфигурации
624
+ compiler: {
625
+ /**
626
+ * Указывает, должен ли быть включен компилятор.
627
+ */
628
+ enabled: true,
629
+
630
+ /**
631
+ * Определяет путь к выходным файлам
632
+ */
633
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
634
+
635
+ /**
636
+ * Указывает, должны ли компоненты сохраняться после преобразования.
637
+ * Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
638
+ */
639
+ saveComponents: false,
640
+
641
+ /**
642
+ * Префикс ключа словаря
643
+ */
644
+ dictionaryKeyPrefix: "",
645
+ },
646
+ };
647
+
648
+ export default config;
649
+ ```
650
+
651
+ ### Настройка TypeScript
652
+
653
+ Убедитесь, что ваша конфигурация TypeScript включает автогенерируемые типы.
654
+
655
+ ```json5 fileName="tsconfig.json"
656
+ {
657
+ "compilerOptions": {
658
+ // ...
659
+ "experimentalDecorators": true,
660
+ "useDefineForClassFields": false,
661
+ },
662
+ "include": ["src", ".intlayer/**/*.ts"],
663
+ }
664
+ ```
665
+
666
+ > `experimentalDecorators` и `useDefineForClassFields: false` требуются Lit для поддержки декораторов.
667
+
668
+ ### Конфигурация Git
669
+
670
+ Рекомендуется игнорировать файлы, генерируемые Intlayer. Это позволит избежать их фиксации в вашем Git-репозитории.
671
+
672
+ Для этого вы можете добавить следующие инструкции в файл `.gitignore`:
673
+
674
+ ```bash
675
+ # Игнорировать файлы, генерируемые Intlayer
676
+ .intlayer
677
+ ```
678
+
679
+ ### Расширение для VS Code
680
+
681
+ Чтобы улучшить процесс разработки с Intlayer, вы можете установить официальное **расширение Intlayer для VS Code**.
682
+
683
+ [Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
684
+
685
+ Это расширение предоставляет:
686
+
687
+ - **Автодополнение** ключей перевода.
688
+ - **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
689
+ - **Встроенные превью** переведенного контента.
690
+ - **Быстрые действия** для легкого создания и обновления переводов.
691
+
692
+ Подробнее о том, как использовать расширение, см. в [документации расширения Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
693
+
694
+ ---
695
+
696
+ ### Идти дальше
697
+
698
+ Чтобы пойти дальше, вы можете внедрить [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) или вынести ваш контент во внешнюю систему с помощью [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).