@intlayer/docs 8.4.10 → 8.5.0

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 (370) 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 +22 -22
  8. package/docs/ar/dictionary/markdown.md +18 -18
  9. package/docs/ar/intlayer_with_analog.md +2 -13
  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 +738 -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 +21 -5
  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 +738 -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 +738 -0
  31. package/docs/cs/intlayer_with_vite+vanilla.md +722 -0
  32. package/docs/de/dictionary/html.md +146 -24
  33. package/docs/de/dictionary/markdown.md +143 -25
  34. package/docs/de/intlayer_with_analog.md +2 -13
  35. package/docs/de/intlayer_with_angular.md +1 -12
  36. package/docs/de/intlayer_with_nextjs_14.md +1 -1
  37. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  38. package/docs/de/intlayer_with_react_router_v7.md +6 -1
  39. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +6 -1
  40. package/docs/de/intlayer_with_storybook.md +2 -5
  41. package/docs/de/intlayer_with_svelte_kit.md +9 -5
  42. package/docs/de/intlayer_with_vite+lit.md +747 -0
  43. package/docs/de/intlayer_with_vite+react.md +16 -4
  44. package/docs/de/intlayer_with_vite+solid.md +1 -1
  45. package/docs/de/intlayer_with_vite+svelte.md +19 -6
  46. package/docs/de/intlayer_with_vite+vanilla.md +722 -0
  47. package/docs/de/intlayer_with_vite+vue.md +21 -5
  48. package/docs/de/packages/react-intlayer/MarkdownRenderer.md +1 -1
  49. package/docs/de/packages/svelte-intlayer/useRewriteURL.md +1 -1
  50. package/docs/de/releases/v8.md +27 -27
  51. package/docs/en/compiler.md +4 -1
  52. package/docs/en/configuration.md +4 -1
  53. package/docs/en/dictionary/html.md +146 -24
  54. package/docs/en/dictionary/markdown.md +143 -21
  55. package/docs/en/intlayer_with_analog.md +3 -14
  56. package/docs/en/intlayer_with_angular.md +1 -12
  57. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  58. package/docs/en/intlayer_with_nextjs_16.md +12 -3
  59. package/docs/en/intlayer_with_nextjs_compiler.md +16 -4
  60. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  61. package/docs/en/intlayer_with_react_router_v7.md +17 -4
  62. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +18 -4
  63. package/docs/en/intlayer_with_storybook.md +2 -5
  64. package/docs/en/intlayer_with_svelte_kit.md +21 -8
  65. package/docs/en/intlayer_with_tanstack.md +12 -3
  66. package/docs/en/intlayer_with_vite+lit.md +750 -0
  67. package/docs/en/intlayer_with_vite+preact.md +31 -3
  68. package/docs/en/intlayer_with_vite+react.md +28 -7
  69. package/docs/en/intlayer_with_vite+react_compiler.md +4 -1
  70. package/docs/en/intlayer_with_vite+solid.md +31 -3
  71. package/docs/en/intlayer_with_vite+svelte.md +30 -9
  72. package/docs/en/intlayer_with_vite+vanilla.md +725 -0
  73. package/docs/en/intlayer_with_vite+vue.md +28 -7
  74. package/docs/en/packages/react-intlayer/MarkdownRenderer.md +1 -1
  75. package/docs/en/packages/svelte-intlayer/useRewriteURL.md +1 -1
  76. package/docs/en/readme.md +1 -0
  77. package/docs/en/releases/v8.md +27 -27
  78. package/docs/en-GB/compiler.md +4 -1
  79. package/docs/en-GB/configuration.md +4 -1
  80. package/docs/en-GB/dictionary/html.md +22 -22
  81. package/docs/en-GB/dictionary/markdown.md +18 -18
  82. package/docs/en-GB/intlayer_with_analog.md +2 -13
  83. package/docs/en-GB/intlayer_with_angular.md +1 -12
  84. package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
  85. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  86. package/docs/en-GB/intlayer_with_react_router_v7.md +6 -1
  87. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +6 -1
  88. package/docs/en-GB/intlayer_with_storybook.md +2 -5
  89. package/docs/en-GB/intlayer_with_svelte_kit.md +9 -5
  90. package/docs/en-GB/intlayer_with_vite+lit.md +750 -0
  91. package/docs/en-GB/intlayer_with_vite+react.md +15 -3
  92. package/docs/en-GB/intlayer_with_vite+solid.md +1 -1
  93. package/docs/en-GB/intlayer_with_vite+svelte.md +17 -5
  94. package/docs/en-GB/intlayer_with_vite+vanilla.md +725 -0
  95. package/docs/en-GB/intlayer_with_vite+vue.md +16 -4
  96. package/docs/en-GB/packages/react-intlayer/MarkdownRenderer.md +1 -1
  97. package/docs/en-GB/packages/svelte-intlayer/useRewriteURL.md +1 -1
  98. package/docs/en-GB/releases/v8.md +27 -27
  99. package/docs/es/dictionary/html.md +147 -25
  100. package/docs/es/dictionary/markdown.md +143 -25
  101. package/docs/es/intlayer_with_analog.md +2 -13
  102. package/docs/es/intlayer_with_angular.md +1 -12
  103. package/docs/es/intlayer_with_nextjs_14.md +1 -1
  104. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  105. package/docs/es/intlayer_with_react_router_v7.md +6 -1
  106. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +6 -1
  107. package/docs/es/intlayer_with_storybook.md +2 -5
  108. package/docs/es/intlayer_with_svelte_kit.md +9 -5
  109. package/docs/es/intlayer_with_vite+lit.md +747 -0
  110. package/docs/es/intlayer_with_vite+react.md +16 -4
  111. package/docs/es/intlayer_with_vite+solid.md +1 -1
  112. package/docs/es/intlayer_with_vite+svelte.md +16 -6
  113. package/docs/es/intlayer_with_vite+vanilla.md +722 -0
  114. package/docs/es/intlayer_with_vite+vue.md +21 -5
  115. package/docs/es/packages/react-intlayer/MarkdownRenderer.md +1 -1
  116. package/docs/es/packages/svelte-intlayer/useRewriteURL.md +1 -1
  117. package/docs/es/releases/v8.md +27 -27
  118. package/docs/fr/dictionary/html.md +146 -24
  119. package/docs/fr/dictionary/markdown.md +143 -25
  120. package/docs/fr/intlayer_with_analog.md +2 -13
  121. package/docs/fr/intlayer_with_angular.md +1 -12
  122. package/docs/fr/intlayer_with_nextjs_14.md +1 -1
  123. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  124. package/docs/fr/intlayer_with_react_router_v7.md +6 -1
  125. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +6 -1
  126. package/docs/fr/intlayer_with_storybook.md +2 -5
  127. package/docs/fr/intlayer_with_svelte_kit.md +9 -5
  128. package/docs/fr/intlayer_with_vite+lit.md +747 -0
  129. package/docs/fr/intlayer_with_vite+react.md +16 -4
  130. package/docs/fr/intlayer_with_vite+solid.md +1 -1
  131. package/docs/fr/intlayer_with_vite+svelte.md +19 -6
  132. package/docs/fr/intlayer_with_vite+vanilla.md +722 -0
  133. package/docs/fr/intlayer_with_vite+vue.md +21 -5
  134. package/docs/fr/packages/react-intlayer/MarkdownRenderer.md +1 -1
  135. package/docs/fr/packages/svelte-intlayer/useRewriteURL.md +1 -1
  136. package/docs/fr/releases/v8.md +27 -27
  137. package/docs/hi/dictionary/html.md +22 -22
  138. package/docs/hi/dictionary/markdown.md +18 -18
  139. package/docs/hi/intlayer_with_analog.md +2 -13
  140. package/docs/hi/intlayer_with_angular.md +1 -12
  141. package/docs/hi/intlayer_with_nextjs_14.md +1 -1
  142. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  143. package/docs/hi/intlayer_with_react_router_v7.md +6 -1
  144. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +6 -1
  145. package/docs/hi/intlayer_with_storybook.md +2 -5
  146. package/docs/hi/intlayer_with_svelte_kit.md +9 -5
  147. package/docs/hi/intlayer_with_vite+lit.md +738 -0
  148. package/docs/hi/intlayer_with_vite+react.md +16 -4
  149. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  150. package/docs/hi/intlayer_with_vite+svelte.md +13 -6
  151. package/docs/hi/intlayer_with_vite+vanilla.md +722 -0
  152. package/docs/hi/intlayer_with_vite+vue.md +21 -5
  153. package/docs/hi/packages/react-intlayer/MarkdownRenderer.md +1 -1
  154. package/docs/hi/packages/svelte-intlayer/useRewriteURL.md +1 -1
  155. package/docs/hi/releases/v8.md +27 -27
  156. package/docs/id/dictionary/html.md +22 -22
  157. package/docs/id/dictionary/markdown.md +18 -18
  158. package/docs/id/intlayer_with_analog.md +2 -13
  159. package/docs/id/intlayer_with_angular.md +1 -12
  160. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  161. package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
  162. package/docs/id/intlayer_with_react_router_v7.md +6 -1
  163. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +6 -1
  164. package/docs/id/intlayer_with_storybook.md +2 -5
  165. package/docs/id/intlayer_with_svelte_kit.md +9 -5
  166. package/docs/id/intlayer_with_vite+lit.md +738 -0
  167. package/docs/id/intlayer_with_vite+react.md +16 -4
  168. package/docs/id/intlayer_with_vite+solid.md +1 -1
  169. package/docs/id/intlayer_with_vite+svelte.md +13 -6
  170. package/docs/id/intlayer_with_vite+vanilla.md +722 -0
  171. package/docs/id/intlayer_with_vite+vue.md +16 -4
  172. package/docs/id/packages/react-intlayer/MarkdownRenderer.md +1 -1
  173. package/docs/id/packages/svelte-intlayer/useRewriteURL.md +1 -1
  174. package/docs/id/releases/v8.md +27 -27
  175. package/docs/it/dictionary/html.md +146 -24
  176. package/docs/it/dictionary/markdown.md +143 -21
  177. package/docs/it/intlayer_with_analog.md +2 -13
  178. package/docs/it/intlayer_with_angular.md +1 -12
  179. package/docs/it/intlayer_with_nextjs_14.md +1 -1
  180. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  181. package/docs/it/intlayer_with_react_router_v7.md +6 -1
  182. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +6 -1
  183. package/docs/it/intlayer_with_storybook.md +2 -5
  184. package/docs/it/intlayer_with_svelte_kit.md +9 -5
  185. package/docs/it/intlayer_with_vite+lit.md +747 -0
  186. package/docs/it/intlayer_with_vite+react.md +16 -4
  187. package/docs/it/intlayer_with_vite+solid.md +1 -1
  188. package/docs/it/intlayer_with_vite+svelte.md +13 -6
  189. package/docs/it/intlayer_with_vite+vanilla.md +722 -0
  190. package/docs/it/intlayer_with_vite+vue.md +21 -5
  191. package/docs/it/packages/react-intlayer/MarkdownRenderer.md +1 -1
  192. package/docs/it/packages/svelte-intlayer/useRewriteURL.md +1 -1
  193. package/docs/it/releases/v8.md +27 -27
  194. package/docs/ja/dictionary/html.md +148 -27
  195. package/docs/ja/dictionary/markdown.md +139 -24
  196. package/docs/ja/intlayer_with_analog.md +2 -13
  197. package/docs/ja/intlayer_with_angular.md +1 -12
  198. package/docs/ja/intlayer_with_nextjs_14.md +1 -1
  199. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  200. package/docs/ja/intlayer_with_react_router_v7.md +6 -1
  201. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +6 -1
  202. package/docs/ja/intlayer_with_storybook.md +2 -5
  203. package/docs/ja/intlayer_with_vite+lit.md +747 -0
  204. package/docs/ja/intlayer_with_vite+solid.md +1 -1
  205. package/docs/ja/intlayer_with_vite+svelte.md +13 -6
  206. package/docs/ja/intlayer_with_vite+vanilla.md +722 -0
  207. package/docs/ja/intlayer_with_vite+vue.md +21 -5
  208. package/docs/ja/packages/react-intlayer/MarkdownRenderer.md +1 -1
  209. package/docs/ja/packages/svelte-intlayer/useRewriteURL.md +1 -1
  210. package/docs/ja/releases/v8.md +27 -27
  211. package/docs/ko/dictionary/html.md +149 -28
  212. package/docs/ko/dictionary/markdown.md +143 -25
  213. package/docs/ko/intlayer_with_analog.md +2 -13
  214. package/docs/ko/intlayer_with_angular.md +1 -12
  215. package/docs/ko/intlayer_with_nextjs_14.md +1 -1
  216. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  217. package/docs/ko/intlayer_with_react_router_v7.md +6 -1
  218. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +6 -1
  219. package/docs/ko/intlayer_with_storybook.md +2 -5
  220. package/docs/ko/intlayer_with_svelte_kit.md +9 -5
  221. package/docs/ko/intlayer_with_vite+lit.md +747 -0
  222. package/docs/ko/intlayer_with_vite+react.md +16 -4
  223. package/docs/ko/intlayer_with_vite+solid.md +1 -1
  224. package/docs/ko/intlayer_with_vite+svelte.md +13 -6
  225. package/docs/ko/intlayer_with_vite+vanilla.md +722 -0
  226. package/docs/ko/intlayer_with_vite+vue.md +21 -5
  227. package/docs/ko/packages/react-intlayer/MarkdownRenderer.md +1 -1
  228. package/docs/ko/packages/svelte-intlayer/useRewriteURL.md +1 -1
  229. package/docs/ko/releases/v8.md +27 -27
  230. package/docs/nl/intlayer_with_storybook.md +2 -5
  231. package/docs/nl/intlayer_with_vite+lit.md +738 -0
  232. package/docs/nl/intlayer_with_vite+vanilla.md +722 -0
  233. package/docs/pl/dictionary/html.md +146 -24
  234. package/docs/pl/dictionary/markdown.md +143 -25
  235. package/docs/pl/intlayer_with_analog.md +2 -13
  236. package/docs/pl/intlayer_with_angular.md +1 -12
  237. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  238. package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
  239. package/docs/pl/intlayer_with_react_router_v7.md +6 -1
  240. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +6 -1
  241. package/docs/pl/intlayer_with_storybook.md +2 -5
  242. package/docs/pl/intlayer_with_svelte_kit.md +9 -5
  243. package/docs/pl/intlayer_with_vite+lit.md +738 -0
  244. package/docs/pl/intlayer_with_vite+react.md +16 -4
  245. package/docs/pl/intlayer_with_vite+solid.md +1 -1
  246. package/docs/pl/intlayer_with_vite+svelte.md +13 -6
  247. package/docs/pl/intlayer_with_vite+vanilla.md +722 -0
  248. package/docs/pl/intlayer_with_vite+vue.md +16 -4
  249. package/docs/pl/packages/react-intlayer/MarkdownRenderer.md +1 -1
  250. package/docs/pl/packages/svelte-intlayer/useRewriteURL.md +1 -1
  251. package/docs/pl/releases/v8.md +27 -27
  252. package/docs/pt/dictionary/html.md +127 -24
  253. package/docs/pt/dictionary/markdown.md +143 -25
  254. package/docs/pt/intlayer_with_analog.md +2 -13
  255. package/docs/pt/intlayer_with_angular.md +1 -12
  256. package/docs/pt/intlayer_with_nextjs_14.md +1 -1
  257. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  258. package/docs/pt/intlayer_with_react_router_v7.md +6 -1
  259. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +6 -1
  260. package/docs/pt/intlayer_with_storybook.md +2 -5
  261. package/docs/pt/intlayer_with_svelte_kit.md +9 -5
  262. package/docs/pt/intlayer_with_vite+lit.md +747 -0
  263. package/docs/pt/intlayer_with_vite+react.md +16 -4
  264. package/docs/pt/intlayer_with_vite+solid.md +1 -1
  265. package/docs/pt/intlayer_with_vite+svelte.md +16 -6
  266. package/docs/pt/intlayer_with_vite+vanilla.md +722 -0
  267. package/docs/pt/intlayer_with_vite+vue.md +21 -5
  268. package/docs/pt/packages/react-intlayer/MarkdownRenderer.md +1 -1
  269. package/docs/pt/packages/svelte-intlayer/useRewriteURL.md +1 -1
  270. package/docs/pt/releases/v8.md +27 -27
  271. package/docs/ru/dictionary/html.md +148 -27
  272. package/docs/ru/dictionary/markdown.md +143 -23
  273. package/docs/ru/intlayer_with_analog.md +2 -13
  274. package/docs/ru/intlayer_with_angular.md +1 -12
  275. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  276. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  277. package/docs/ru/intlayer_with_react_router_v7.md +6 -1
  278. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +6 -1
  279. package/docs/ru/intlayer_with_storybook.md +2 -5
  280. package/docs/ru/intlayer_with_svelte_kit.md +9 -5
  281. package/docs/ru/intlayer_with_vite+lit.md +747 -0
  282. package/docs/ru/intlayer_with_vite+react.md +16 -4
  283. package/docs/ru/intlayer_with_vite+solid.md +1 -1
  284. package/docs/ru/intlayer_with_vite+svelte.md +13 -6
  285. package/docs/ru/intlayer_with_vite+vanilla.md +722 -0
  286. package/docs/ru/intlayer_with_vite+vue.md +21 -5
  287. package/docs/ru/packages/react-intlayer/MarkdownRenderer.md +1 -1
  288. package/docs/ru/packages/svelte-intlayer/useRewriteURL.md +1 -1
  289. package/docs/ru/releases/v8.md +27 -27
  290. package/docs/tr/dictionary/html.md +129 -27
  291. package/docs/tr/dictionary/markdown.md +143 -23
  292. package/docs/tr/intlayer_with_analog.md +2 -13
  293. package/docs/tr/intlayer_with_angular.md +1 -12
  294. package/docs/tr/intlayer_with_nextjs_14.md +1 -1
  295. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  296. package/docs/tr/intlayer_with_react_router_v7.md +6 -1
  297. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +6 -1
  298. package/docs/tr/intlayer_with_storybook.md +2 -5
  299. package/docs/tr/intlayer_with_svelte_kit.md +9 -5
  300. package/docs/tr/intlayer_with_vite+lit.md +738 -0
  301. package/docs/tr/intlayer_with_vite+react.md +16 -4
  302. package/docs/tr/intlayer_with_vite+solid.md +1 -1
  303. package/docs/tr/intlayer_with_vite+svelte.md +13 -6
  304. package/docs/tr/intlayer_with_vite+vanilla.md +722 -0
  305. package/docs/tr/intlayer_with_vite+vue.md +16 -4
  306. package/docs/tr/packages/react-intlayer/MarkdownRenderer.md +1 -1
  307. package/docs/tr/packages/svelte-intlayer/useRewriteURL.md +1 -1
  308. package/docs/tr/releases/v8.md +27 -27
  309. package/docs/uk/dictionary/html.md +22 -22
  310. package/docs/uk/dictionary/markdown.md +18 -18
  311. package/docs/uk/intlayer_with_analog.md +2 -13
  312. package/docs/uk/intlayer_with_angular.md +1 -12
  313. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  314. package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
  315. package/docs/uk/intlayer_with_react_router_v7.md +5 -1
  316. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +6 -1
  317. package/docs/uk/intlayer_with_storybook.md +2 -5
  318. package/docs/uk/intlayer_with_svelte_kit.md +9 -5
  319. package/docs/uk/intlayer_with_vite+lit.md +738 -0
  320. package/docs/uk/intlayer_with_vite+react.md +16 -4
  321. package/docs/uk/intlayer_with_vite+solid.md +1 -1
  322. package/docs/uk/intlayer_with_vite+svelte.md +18 -6
  323. package/docs/uk/intlayer_with_vite+vanilla.md +722 -0
  324. package/docs/uk/intlayer_with_vite+vue.md +16 -4
  325. package/docs/uk/packages/react-intlayer/MarkdownRenderer.md +1 -1
  326. package/docs/uk/packages/svelte-intlayer/useRewriteURL.md +1 -1
  327. package/docs/uk/releases/v8.md +27 -27
  328. package/docs/ur/intlayer_with_storybook.md +2 -5
  329. package/docs/ur/intlayer_with_vite+lit.md +738 -0
  330. package/docs/ur/intlayer_with_vite+vanilla.md +722 -0
  331. package/docs/vi/dictionary/html.md +22 -22
  332. package/docs/vi/dictionary/markdown.md +18 -18
  333. package/docs/vi/intlayer_with_analog.md +2 -13
  334. package/docs/vi/intlayer_with_angular.md +1 -12
  335. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  336. package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
  337. package/docs/vi/intlayer_with_react_router_v7.md +6 -1
  338. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +6 -1
  339. package/docs/vi/intlayer_with_storybook.md +2 -5
  340. package/docs/vi/intlayer_with_svelte_kit.md +9 -5
  341. package/docs/vi/intlayer_with_vite+lit.md +738 -0
  342. package/docs/vi/intlayer_with_vite+react.md +16 -4
  343. package/docs/vi/intlayer_with_vite+solid.md +1 -1
  344. package/docs/vi/intlayer_with_vite+svelte.md +17 -5
  345. package/docs/vi/intlayer_with_vite+vanilla.md +722 -0
  346. package/docs/vi/intlayer_with_vite+vue.md +16 -4
  347. package/docs/vi/packages/react-intlayer/MarkdownRenderer.md +1 -1
  348. package/docs/vi/packages/svelte-intlayer/useRewriteURL.md +1 -1
  349. package/docs/vi/releases/v8.md +27 -27
  350. package/docs/zh/dictionary/html.md +148 -27
  351. package/docs/zh/dictionary/markdown.md +143 -21
  352. package/docs/zh/intlayer_with_analog.md +2 -13
  353. package/docs/zh/intlayer_with_angular.md +1 -12
  354. package/docs/zh/intlayer_with_nextjs_14.md +1 -1
  355. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  356. package/docs/zh/intlayer_with_react_router_v7.md +6 -1
  357. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +6 -1
  358. package/docs/zh/intlayer_with_storybook.md +2 -5
  359. package/docs/zh/intlayer_with_svelte_kit.md +9 -5
  360. package/docs/zh/intlayer_with_vite+lit.md +747 -0
  361. package/docs/zh/intlayer_with_vite+react.md +16 -4
  362. package/docs/zh/intlayer_with_vite+solid.md +1 -1
  363. package/docs/zh/intlayer_with_vite+svelte.md +16 -6
  364. package/docs/zh/intlayer_with_vite+vanilla.md +722 -0
  365. package/docs/zh/intlayer_with_vite+vue.md +16 -4
  366. package/docs/zh/packages/react-intlayer/MarkdownRenderer.md +1 -1
  367. package/docs/zh/packages/svelte-intlayer/useRewriteURL.md +1 -1
  368. package/docs/zh/releases/v8.md +27 -27
  369. package/package.json +6 -6
  370. package/src/generated/docs.entry.ts +40 -0
@@ -0,0 +1,747 @@
1
+ ---
2
+ createdAt: 2026-03-23
3
+ updatedAt: 2026-03-23
4
+ title: i18n Vite + Lit - Como traduzir uma app Lit em 2026
5
+ description: Descubra como tornar o seu website Vite e Lit multilíngue. Siga a documentação para internacionalizá-lo (i18n) e traduzi-lo.
6
+ keywords:
7
+ - Internacionalização
8
+ - Documentação
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
+ # Traduza o seu website Vite e Lit usando Intlayer | Internacionalização (i18n)
26
+
27
+ ## Tabela de Conteúdos
28
+
29
+ <TOC/>
30
+
31
+ ## O que é o Intlayer?
32
+
33
+ O **Intlayer** é uma biblioteca de internacionalização (i18n) inovadora e de código aberto, projetada para simplificar o suporte multilíngue em aplicações web modernas.
34
+
35
+ Com o Intlayer, pode:
36
+
37
+ - **Gerir facilmente as traduções** usando dicionários declarativos ao nível do componente.
38
+ - **Localizar dinamicamente metadados**, rotas e conteúdo.
39
+ - **Garantir o suporte a TypeScript** com tipos autogerados, melhorando o autocompletar e a deteção de erros.
40
+ - **Beneficiar de funcionalidades avançadas**, como a deteção e alternância dinâmica de idioma.
41
+
42
+ ---
43
+
44
+ ## Guia Passo-a-Passo para Configurar o Intlayer numa Aplicação Vite e Lit
45
+
46
+ ### Passo 1: Instalar Dependências
47
+
48
+ Instale os pacotes necessários usando npm:
49
+
50
+ ```bash packageManager="npm"
51
+ npm install intlayer lit-intlayer
52
+ npm install vite-intlayer --save-dev
53
+ npx intlayer init
54
+ ```
55
+
56
+ ```bash packageManager="pnpm"
57
+ pnpm add intlayer lit-intlayer
58
+ pnpm add vite-intlayer --save-dev
59
+ pnpm intlayer init
60
+ ```
61
+
62
+ ```bash packageManager="yarn"
63
+ yarn add intlayer lit-intlayer
64
+ yarn add vite-intlayer --save-dev
65
+ yarn intlayer init
66
+ ```
67
+
68
+ ```bash packageManager="bun"
69
+ bun add intlayer lit-intlayer
70
+ bun add vite-intlayer --dev
71
+ bunx intlayer init
72
+ ```
73
+
74
+ - **intlayer**
75
+
76
+ O pacote principal que fornece ferramentas de internacionalização para gestão de configuração, tradução, [declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/content_file.md), transpilação e [comandos CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/index.md).
77
+
78
+ - **lit-intlayer**
79
+ O pacote que integra o Intlayer com aplicações Lit. Fornece hooks baseados em `ReactiveController` (`useIntlayer`, `useLocale`, etc.) para que os LitElements sejam renderizados novamente de forma automática quando o idioma muda.
80
+
81
+ - **vite-intlayer**
82
+ Inclui o plugin Vite para integrar o Intlayer com o [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), bem como middleware para detetar o idioma preferido do utilizador, gerir cookies e lidar com redirecionamento de URL.
83
+
84
+ ### Passo 2: Configuração do seu projeto
85
+
86
+ Crie um ficheiro de configuração para configurar os idiomas da sua aplicação:
87
+
88
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
89
+ import { Locales, type IntlayerConfig } from "intlayer";
90
+
91
+ const config: IntlayerConfig = {
92
+ internationalization: {
93
+ locales: [
94
+ Locales.ENGLISH,
95
+ Locales.FRENCH,
96
+ Locales.SPANISH,
97
+ // Os seus outros idiomas
98
+ ],
99
+ defaultLocale: Locales.ENGLISH,
100
+ },
101
+ };
102
+
103
+ export default config;
104
+ ```
105
+
106
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
107
+ import { Locales } from "intlayer";
108
+
109
+ /** @type {import('intlayer').IntlayerConfig} */
110
+ const config = {
111
+ internationalization: {
112
+ locales: [
113
+ Locales.ENGLISH,
114
+ Locales.FRENCH,
115
+ Locales.SPANISH,
116
+ // Os seus outros idiomas
117
+ ],
118
+ defaultLocale: Locales.ENGLISH,
119
+ },
120
+ };
121
+
122
+ export default config;
123
+ ```
124
+
125
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
126
+ const { Locales } = require("intlayer");
127
+
128
+ /** @type {import('intlayer').IntlayerConfig} */
129
+ const config = {
130
+ internationalization: {
131
+ locales: [
132
+ Locales.ENGLISH,
133
+ Locales.FRENCH,
134
+ Locales.SPANISH,
135
+ // Os seus outros idiomas
136
+ ],
137
+ defaultLocale: Locales.ENGLISH,
138
+ },
139
+ };
140
+
141
+ module.exports = config;
142
+ ```
143
+
144
+ > Através deste ficheiro de configuração, pode configurar URLs localizados, redirecionamento de middleware, nomes de cookies, a localização e extensão das suas declarações de conteúdo, desativar os logs do Intlayer na consola e muito mais. Para uma lista completa de parâmetros disponíveis, consulte a [documentação de configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md).
145
+
146
+ ### Passo 3: Integrar o Intlayer na sua Configuração Vite
147
+
148
+ Adicione o plugin intlayer na sua configuração.
149
+
150
+ ```typescript fileName="vite.config.ts" codeFormat="typescript"
151
+ import { defineConfig } from "vite";
152
+ import { intlayer } from "vite-intlayer";
153
+
154
+ // https://vitejs.dev/config/
155
+ export default defineConfig({
156
+ plugins: [intlayer()],
157
+ });
158
+ ```
159
+
160
+ ```javascript fileName="vite.config.mjs" codeFormat="esm"
161
+ import { defineConfig } from "vite";
162
+ import { intlayer } from "vite-intlayer";
163
+
164
+ // https://vitejs.dev/config/
165
+ export default defineConfig({
166
+ plugins: [intlayer()],
167
+ });
168
+ ```
169
+
170
+ ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
171
+ const { defineConfig } = require("vite");
172
+ const { intlayer } = require("vite-intlayer");
173
+
174
+ // https://vitejs.dev/config/
175
+ module.exports = defineConfig({
176
+ plugins: [intlayer()],
177
+ });
178
+ ```
179
+
180
+ > O plugin Vite `intlayer()` é usado para integrar o Intlayer com o Vite. Garante a construção dos ficheiros de declaração de conteúdo e monitoriza-os em modo de desenvolvimento. Define variáveis de ambiente do Intlayer dentro da aplicação Vite. Adicionalmente, fornece pseudónimos para otimizar o desempenho.
181
+
182
+ ### Passo 4: Inicializar o Intlayer no seu ponto de entrada
183
+
184
+ Chame `installIntlayer()` **antes** de quaisquer elementos personalizados serem registados para que o singleton global de idioma esteja pronto quando o primeiro elemento se ligar.
185
+
186
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
187
+ import { installIntlayer } from "lit-intlayer";
188
+
189
+ // Deve ser chamado antes de qualquer LitElement ser ligado ao DOM.
190
+ installIntlayer();
191
+
192
+ // Importe e registe os seus elementos personalizados.
193
+ import "./my-element.js";
194
+ ```
195
+
196
+ Se também usar declarações de conteúdo `md()` (Markdown), instale também o renderizador de markdown:
197
+
198
+ ```typescript fileName="src/main.ts" codeFormat="typescript"
199
+ import { installIntlayer, installIntlayerMarkdown } from "lit-intlayer";
200
+
201
+ installIntlayer();
202
+ installIntlayerMarkdown();
203
+
204
+ import "./my-element.js";
205
+ ```
206
+
207
+ ### Passo 5: Declarar o Seu Conteúdo
208
+
209
+ Crie e gira as suas declarações de conteúdo para armazenar traduções:
210
+
211
+ ```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
212
+ import { t, type Dictionary } from "intlayer";
213
+
214
+ const appContent = {
215
+ key: "app",
216
+ content: {
217
+ title: "Vite + Lit",
218
+
219
+ viteLogo: t({
220
+ en: "Vite logo",
221
+ fr: "Logo Vite",
222
+ es: "Logo Vite",
223
+ }),
224
+ litLogo: t({
225
+ en: "Lit logo",
226
+ fr: "Logo Lit",
227
+ es: "Logo Lit",
228
+ }),
229
+
230
+ count: t({
231
+ en: "count is {{count}}",
232
+ fr: "le compte est {{count}}",
233
+ es: "el recuento es {{count}}",
234
+ }),
235
+
236
+ readTheDocs: t({
237
+ en: "Click on the Vite and Lit logos to learn more",
238
+ fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
239
+ es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
240
+ }),
241
+ },
242
+ } satisfies Dictionary;
243
+
244
+ export default appContent;
245
+ ```
246
+
247
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
248
+ import { t } from "intlayer";
249
+
250
+ /** @type {import('intlayer').Dictionary} */
251
+ const appContent = {
252
+ key: "app",
253
+ content: {
254
+ title: "Vite + Lit",
255
+
256
+ viteLogo: t({
257
+ en: "Vite logo",
258
+ fr: "Logo Vite",
259
+ es: "Logo Vite",
260
+ }),
261
+ litLogo: t({
262
+ en: "Lit logo",
263
+ fr: "Logo Lit",
264
+ es: "Logo Lit",
265
+ }),
266
+
267
+ count: t({
268
+ en: "count is {{count}}",
269
+ fr: "le compte est {{count}}",
270
+ es: "el recuento es {{count}}",
271
+ }),
272
+
273
+ readTheDocs: t({
274
+ en: "Click on the Vite and Lit logos to learn more",
275
+ fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
276
+ es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
277
+ }),
278
+ },
279
+ };
280
+
281
+ export default appContent;
282
+ ```
283
+
284
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
285
+ const { t } = require("intlayer");
286
+
287
+ /** @type {import('intlayer').Dictionary} */
288
+ const appContent = {
289
+ key: "app",
290
+ content: {
291
+ title: "Vite + Lit",
292
+
293
+ viteLogo: t({
294
+ en: "Vite logo",
295
+ fr: "Logo Vite",
296
+ es: "Logo Vite",
297
+ }),
298
+ litLogo: t({
299
+ en: "Lit logo",
300
+ fr: "Logo Lit",
301
+ es: "Logo Lit",
302
+ }),
303
+
304
+ count: t({
305
+ en: "count is {{count}}",
306
+ fr: "le compte est {{count}}",
307
+ es: "el recuento es {{count}}",
308
+ }),
309
+
310
+ readTheDocs: t({
311
+ en: "Click on the Vite and Lit logos to learn more",
312
+ fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
313
+ es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
314
+ }),
315
+ },
316
+ };
317
+
318
+ module.exports = appContent;
319
+ ```
320
+
321
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
322
+ {
323
+ "$schema": "https://intlayer.org/schema.json",
324
+ "key": "app",
325
+ "content": {
326
+ "title": "Vite + Lit",
327
+ "viteLogo": {
328
+ "nodeType": "translation",
329
+ "translation": {
330
+ "en": "Vite logo",
331
+ "fr": "Logo Vite",
332
+ "es": "Logo Vite"
333
+ }
334
+ },
335
+ "litLogo": {
336
+ "nodeType": "translation",
337
+ "translation": {
338
+ "en": "Lit logo",
339
+ "fr": "Logo Lit",
340
+ "es": "Logo Lit"
341
+ }
342
+ },
343
+ "count": {
344
+ "nodeType": "translation",
345
+ "translation": {
346
+ "en": "count is {{count}}",
347
+ "fr": "le compte est {{count}}",
348
+ "es": "el recuento es {{count}}"
349
+ }
350
+ },
351
+ "readTheDocs": {
352
+ "nodeType": "translation",
353
+ "translation": {
354
+ "en": "Click on the Vite and Lit logos to learn more",
355
+ "fr": "Cliquez sur les logos Vite et Lit pour en savoir plus",
356
+ "es": "Haga clic en los logotipos de Vite y Lit para obtener más información"
357
+ }
358
+ }
359
+ }
360
+ }
361
+ ```
362
+
363
+ > As suas declarações de conteúdo podem ser definidas em qualquer lugar da sua aplicação, desde que sejam incluídas no diretório `contentDir` (por padrão, `./src`) e correspondam à extensão do ficheiro de declaração de conteúdo (por padrão, `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
364
+ >
365
+ > Para mais detalhes, consulte a [documentação de declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/content_file.md).
366
+
367
+ ### Passo 6: Utilizar o Intlayer no seu LitElement
368
+
369
+ Use o `useIntlayer` dentro de um `LitElement`. Ele retorna um proxy `ReactiveController` que ativa automaticamente re-renderizações sempre que o idioma ativo muda — não é necessária configuração extra.
370
+
371
+ ```typescript fileName="src/my-element.ts" codeFormat="typescript"
372
+ import { LitElement, html } from "lit";
373
+ import { customElement, property } from "lit/decorators.js";
374
+ import { useIntlayer } from "lit-intlayer";
375
+
376
+ @customElement("my-element")
377
+ export class MyElement extends LitElement {
378
+ @property({ type: Number })
379
+ count = 0;
380
+
381
+ // useIntlayer regista-se como um ReactiveController.
382
+ // O elemento é renderizado novamente de forma automática quando o idioma muda.
383
+ private content = useIntlayer(this, "app");
384
+
385
+ override render() {
386
+ const { content } = this;
387
+
388
+ return html`
389
+ <h1>${content.title}</h1>
390
+
391
+ <img src="/vite.svg" alt=${content.viteLogo.value} />
392
+ <img src="/lit.svg" alt=${content.litLogo.value} />
393
+
394
+ <button @click=${() => this.count++}>
395
+ ${content.count({ count: this.count })}
396
+ </button>
397
+
398
+ <p>${content.readTheDocs}</p>
399
+ `;
400
+ }
401
+ }
402
+ ```
403
+
404
+ > [!NOTE]
405
+ > Quando precisar da string traduzida num atributo HTML nativo (ex: `alt`, `aria-label`, `title`), chame `.value` no nó folha:
406
+ >
407
+ > ```typescript
408
+ > html`<img alt=${content.viteLogo.value} />`;
409
+ > ```
410
+
411
+ ### (Opcional) Passo 7: Alterar o idioma do seu conteúdo
412
+
413
+ Para alterar o idioma do seu conteúdo, use o método `setLocale` exposto pelo controlador `useLocale`.
414
+
415
+ ```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
416
+ import { LitElement, html } from "lit";
417
+ import { customElement } from "lit/decorators.js";
418
+ import { getLocaleName } from "intlayer";
419
+ import { useLocale } from "lit-intlayer";
420
+
421
+ @customElement("locale-switcher")
422
+ export class LocaleSwitcher extends LitElement {
423
+ private locale = useLocale(this);
424
+
425
+ private _onChange(e: Event) {
426
+ const select = e.target as HTMLSelectElement;
427
+ this.locale.setLocale(select.value as any);
428
+ }
429
+
430
+ override render() {
431
+ return html`
432
+ <select @change=${this._onChange}>
433
+ ${this.locale.availableLocales.map(
434
+ (loc) => html`
435
+ <option value=${loc} ?selected=${loc === this.locale.locale}>
436
+ ${getLocaleName(loc)}
437
+ </option>
438
+ `
439
+ )}
440
+ </select>
441
+ `;
442
+ }
443
+ }
444
+ ```
445
+
446
+ ### (Opcional) Passo 8: Renderizar conteúdo Markdown e HTML
447
+
448
+ O Intlayer suporta declarações de conteúdo `md()` e `html()`. No Lit, a saída compilada é injetada como HTML bruto através da diretiva `unsafeHTML`.
449
+
450
+ ```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
451
+ import { md, t, type Dictionary } from "intlayer";
452
+
453
+ const appContent = {
454
+ key: "app",
455
+ content: {
456
+ // ...
457
+ editNote: md(
458
+ t({
459
+ en: "Edit `src/my-element.ts` and save to test **HMR**",
460
+ fr: "Modifiez `src/my-element.ts` et enregistrez pour tester **HMR**",
461
+ es: "Edite `src/my-element.ts` y guarde para probar **HMR**",
462
+ })
463
+ ),
464
+ },
465
+ } satisfies Dictionary;
466
+
467
+ export default appContent;
468
+ ```
469
+
470
+ Renderize o HTML compilado no seu elemento:
471
+
472
+ ```typescript fileName="src/my-element.ts" codeFormat="typescript"
473
+ import { LitElement, html } from "lit";
474
+ import { customElement } from "lit/decorators.js";
475
+ import { unsafeHTML } from "lit/directives/unsafe-html.js";
476
+ import { useIntlayer } from "lit-intlayer";
477
+ import { compileMarkdown } from "lit-intlayer/markdown";
478
+
479
+ @customElement("my-element")
480
+ export class MyElement extends LitElement {
481
+ private content = useIntlayer(this, "app");
482
+
483
+ override render() {
484
+ return html`
485
+ <div class="edit-note">
486
+ ${unsafeHTML(compileMarkdown(String(this.content.editNote)))}
487
+ </div>
488
+ `;
489
+ }
490
+ }
491
+ ```
492
+
493
+ > [!TIP]
494
+ > `String(content.editNote)` chama `toString()` no `IntlayerNode`, que retorna a string Markdown bruta. Passe-a para `compileMarkdown` para obter uma string HTML, e depois renderize-a com a diretiva `unsafeHTML` do Lit.
495
+
496
+ ### (Opcional) Passo 9: Adicionar Localized Routing à sua aplicação
497
+
498
+ Para criar rotas únicas para cada idioma (útil para SEO), pode usar um router do lado do cliente juntamente com os ajudantes `localeMap` / `localeFlatMap` do Intlayer, e o plugin Vite `intlayerProxy` para deteção de idioma do lado do servidor.
499
+
500
+ Primeiro, adicione o `intlayerProxy` à sua configuração Vite:
501
+
502
+ > Note que para usar o `intlayerProxy` em produção, precisa de mover o `vite-intlayer` de `devDependencies` para `dependencies`.
503
+
504
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
505
+ import { defineConfig } from "vite";
506
+ import { intlayer, intlayerProxy } from "vite-intlayer";
507
+
508
+ export default defineConfig({
509
+ plugins: [
510
+ intlayerProxy(), // should be placed first
511
+ intlayer(),
512
+ ],
513
+ });
514
+ ```
515
+
516
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
517
+ import { defineConfig } from "vite";
518
+ import { intlayer, intlayerProxy } from "vite-intlayer";
519
+
520
+ export default defineConfig({
521
+ plugins: [
522
+ intlayerProxy(), // should be placed first
523
+ intlayer(),
524
+ ],
525
+ });
526
+ ```
527
+
528
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
529
+ const { defineConfig } = require("vite");
530
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
531
+
532
+ module.exports = defineConfig({
533
+ plugins: [
534
+ intlayerProxy(), // should be placed first
535
+ intlayer(),
536
+ ],
537
+ });
538
+ ```
539
+
540
+ ### (Opcional) Passo 10: Alterar o URL quando o idioma muda
541
+
542
+ Para atualizar o URL do navegador quando o idioma muda, use o `useRewriteURL` juntamente com o seletor de idioma:
543
+
544
+ ```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
545
+ import { LitElement, html } from "lit";
546
+ import { customElement } from "lit/decorators.js";
547
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
548
+ import { useLocale, useRewriteURL } from "lit-intlayer";
549
+
550
+ @customElement("locale-switcher")
551
+ export class LocaleSwitcher extends LitElement {
552
+ private locale = useLocale(this);
553
+
554
+ // Re-escreve automaticamente o URL atual quando o idioma muda.
555
+ private _rewriteURL = useRewriteURL(this);
556
+
557
+ private _onChange(e: Event) {
558
+ const select = e.target as HTMLSelectElement;
559
+ this.locale.setLocale(select.value as any);
560
+ }
561
+
562
+ override render() {
563
+ return html`
564
+ <select @change=${this._onChange}>
565
+ ${this.locale.availableLocales.map(
566
+ (loc) => html`
567
+ <option value=${loc} ?selected=${loc === this.locale.locale}>
568
+ ${getLocaleName(loc)}
569
+ </option>
570
+ `
571
+ )}
572
+ </select>
573
+ `;
574
+ }
575
+ }
576
+ ```
577
+
578
+ ### (Opcional) Passo 11: Alternar os Atributos de Idioma e Direção HTML
579
+
580
+ Atualize os atributos `lang` e `dir` da tag `<html>` para corresponderem ao idioma atual para acessibilidade e SEO.
581
+
582
+ ```typescript fileName="src/my-element.ts" codeFormat="typescript"
583
+ import { LitElement, html } from "lit";
584
+ import { customElement } from "lit/decorators.js";
585
+ import { getHTMLTextDir } from "intlayer";
586
+ import { useLocale } from "lit-intlayer";
587
+
588
+ @customElement("my-element")
589
+ export class MyElement extends LitElement {
590
+ private locale = useLocale(this, {
591
+ onLocaleChange: (loc) => {
592
+ document.documentElement.lang = loc;
593
+ document.documentElement.dir = getHTMLTextDir(loc);
594
+ },
595
+ });
596
+
597
+ override render() {
598
+ return html`<!-- o seu conteúdo -->`;
599
+ }
600
+ }
601
+ ```
602
+
603
+ ### (Opcional) Passo 12: Extrair o conteúdo dos seus componentes
604
+
605
+ Se tiver uma base de código existente, transformar milhares de ficheiros pode ser demorado.
606
+
607
+ Para facilitar este processo, o Intlayer propõe um [compilador](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/compiler.md) / [extrator](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/extract.md) para transformar os seus componentes e extrair o conteúdo.
608
+
609
+ Para configurá-lo, pode adicionar uma secção `compiler` no seu ficheiro `intlayer.config.ts`:
610
+
611
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
612
+ import { type IntlayerConfig } from "intlayer";
613
+
614
+ const config: IntlayerConfig = {
615
+ // ... Restante da sua configuração
616
+ compiler: {
617
+ /**
618
+ * Indica se o compilador deve estar habilitado.
619
+ */
620
+ enabled: true,
621
+
622
+ /**
623
+ * Define o caminho dos ficheiros de saída
624
+ */
625
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
626
+
627
+ /**
628
+ * Indica se os componentes devem ser guardados após serem transformados.
629
+ * Dessa forma, o compilador pode ser executado apenas uma vez para transformar a app, e depois pode ser removido.
630
+ */
631
+ saveComponents: false,
632
+
633
+ /**
634
+ * Prefixo da chave do dicionário
635
+ */
636
+ dictionaryKeyPrefix: "",
637
+ },
638
+ };
639
+
640
+ export default config;
641
+ ```
642
+
643
+ <Tabs>
644
+ <Tab value='Comando Extract'>
645
+
646
+ Execute o extrator para transformar os seus componentes e extrair o conteúdo
647
+
648
+ ```bash packageManager="npm"
649
+ npx intlayer extract
650
+ ```
651
+
652
+ ```bash packageManager="pnpm"
653
+ pnpm intlayer extract
654
+ ```
655
+
656
+ ```bash packageManager="yarn"
657
+ yarn intlayer extract
658
+ ```
659
+
660
+ ```bash packageManager="bun"
661
+ bunx intlayer extract
662
+ ```
663
+
664
+ </Tab>
665
+ <Tab value='Compilador Babel'>
666
+
667
+ Atualize o seu `vite.config.ts` para incluir o plugin `intlayerCompiler`:
668
+
669
+ ```ts fileName="vite.config.ts"
670
+ import { defineConfig } from "vite";
671
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
672
+
673
+ export default defineConfig({
674
+ plugins: [
675
+ intlayer(),
676
+ intlayerCompiler(), // Adiciona o plugin do compilador
677
+ ],
678
+ });
679
+ ```
680
+
681
+ ```bash packageManager="npm"
682
+ npm run build # Ou npm run dev
683
+ ```
684
+
685
+ ```bash packageManager="pnpm"
686
+ pnpm run build # Ou pnpm run dev
687
+ ```
688
+
689
+ ```bash packageManager="yarn"
690
+ yarn build # Ou yarn dev
691
+ ```
692
+
693
+ ```bash packageManager="bun"
694
+ bun run build # Ou bun run dev
695
+ ```
696
+
697
+ </Tab>
698
+ </Tabs>
699
+
700
+ ### Configurar TypeScript
701
+
702
+ Certifique-se de que a sua configuração TypeScript inclui os tipos autogerados.
703
+
704
+ ```json5 fileName="tsconfig.json"
705
+ {
706
+ "compilerOptions": {
707
+ // ...
708
+ "experimentalDecorators": true,
709
+ "useDefineForClassFields": false,
710
+ },
711
+ "include": ["src", ".intlayer/**/*.ts"],
712
+ }
713
+ ```
714
+
715
+ > `experimentalDecorators` e `useDefineForClassFields: false` são exigidos pelo Lit para suporte a decoradores.
716
+
717
+ ### Configuração Git
718
+
719
+ Recomenda-se ignorar os ficheiros gerados pelo Intlayer. Isso permite-lhe evitar submetê-los para o seu repositório Git.
720
+
721
+ Para fazer isso, pode adicionar as seguintes instruções ao seu ficheiro `.gitignore`:
722
+
723
+ ```bash
724
+ # Ignorar os ficheiros gerados pelo Intlayer
725
+ .intlayer
726
+ ```
727
+
728
+ ### Extensão VS Code
729
+
730
+ Para melhorar a sua experiência de desenvolvimento com o Intlayer, pode instalar a **Extensão oficial Intlayer VS Code**.
731
+
732
+ [Instalar a partir do VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
733
+
734
+ Esta extensão fornece:
735
+
736
+ - **Autocompletar** para chaves de tradução.
737
+ - **Deteção de erros em tempo real** para traduções em falta.
738
+ - **Pré-visualizações inline** de conteúdo traduzido.
739
+ - **Ações rápidas** para criar e atualizar traduções facilmente.
740
+
741
+ Para mais detalhes sobre como usar a extensão, consulte a [documentação da Extensão Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
742
+
743
+ ---
744
+
745
+ ### Ir Mais Longe
746
+
747
+ Para ir mais longe, pode implementar o [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) ou externalizar o seu conteúdo usando o [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md).