@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.
- package/dist/cjs/generated/docs.entry.cjs +40 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +40 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/dictionary/html.md +22 -22
- package/docs/ar/dictionary/markdown.md +18 -18
- package/docs/ar/intlayer_with_analog.md +2 -13
- package/docs/ar/intlayer_with_angular.md +1 -12
- package/docs/ar/intlayer_with_nextjs_14.md +1 -1
- package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7.md +6 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ar/intlayer_with_storybook.md +2 -5
- package/docs/ar/intlayer_with_svelte_kit.md +9 -5
- package/docs/ar/intlayer_with_vite+lit.md +738 -0
- package/docs/ar/intlayer_with_vite+react.md +16 -4
- package/docs/ar/intlayer_with_vite+solid.md +1 -1
- package/docs/ar/intlayer_with_vite+svelte.md +13 -6
- package/docs/ar/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ar/intlayer_with_vite+vue.md +21 -5
- package/docs/ar/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ar/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ar/releases/v8.md +27 -27
- package/docs/bn/intlayer_with_storybook.md +2 -5
- package/docs/bn/intlayer_with_vite+lit.md +738 -0
- package/docs/bn/intlayer_with_vite+vanilla.md +722 -0
- package/docs/cs/intlayer_with_storybook.md +2 -5
- package/docs/cs/intlayer_with_vite+lit.md +738 -0
- package/docs/cs/intlayer_with_vite+vanilla.md +722 -0
- package/docs/de/dictionary/html.md +146 -24
- package/docs/de/dictionary/markdown.md +143 -25
- package/docs/de/intlayer_with_analog.md +2 -13
- package/docs/de/intlayer_with_angular.md +1 -12
- package/docs/de/intlayer_with_nextjs_14.md +1 -1
- package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/de/intlayer_with_react_router_v7.md +6 -1
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/de/intlayer_with_storybook.md +2 -5
- package/docs/de/intlayer_with_svelte_kit.md +9 -5
- package/docs/de/intlayer_with_vite+lit.md +747 -0
- package/docs/de/intlayer_with_vite+react.md +16 -4
- package/docs/de/intlayer_with_vite+solid.md +1 -1
- package/docs/de/intlayer_with_vite+svelte.md +19 -6
- package/docs/de/intlayer_with_vite+vanilla.md +722 -0
- package/docs/de/intlayer_with_vite+vue.md +21 -5
- package/docs/de/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/de/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/de/releases/v8.md +27 -27
- package/docs/en/compiler.md +4 -1
- package/docs/en/configuration.md +4 -1
- package/docs/en/dictionary/html.md +146 -24
- package/docs/en/dictionary/markdown.md +143 -21
- package/docs/en/intlayer_with_analog.md +3 -14
- package/docs/en/intlayer_with_angular.md +1 -12
- package/docs/en/intlayer_with_nextjs_14.md +1 -1
- package/docs/en/intlayer_with_nextjs_16.md +12 -3
- package/docs/en/intlayer_with_nextjs_compiler.md +16 -4
- package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en/intlayer_with_react_router_v7.md +17 -4
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +18 -4
- package/docs/en/intlayer_with_storybook.md +2 -5
- package/docs/en/intlayer_with_svelte_kit.md +21 -8
- package/docs/en/intlayer_with_tanstack.md +12 -3
- package/docs/en/intlayer_with_vite+lit.md +750 -0
- package/docs/en/intlayer_with_vite+preact.md +31 -3
- package/docs/en/intlayer_with_vite+react.md +28 -7
- package/docs/en/intlayer_with_vite+react_compiler.md +4 -1
- package/docs/en/intlayer_with_vite+solid.md +31 -3
- package/docs/en/intlayer_with_vite+svelte.md +30 -9
- package/docs/en/intlayer_with_vite+vanilla.md +725 -0
- package/docs/en/intlayer_with_vite+vue.md +28 -7
- package/docs/en/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/en/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/en/readme.md +1 -0
- package/docs/en/releases/v8.md +27 -27
- package/docs/en-GB/compiler.md +4 -1
- package/docs/en-GB/configuration.md +4 -1
- package/docs/en-GB/dictionary/html.md +22 -22
- package/docs/en-GB/dictionary/markdown.md +18 -18
- package/docs/en-GB/intlayer_with_analog.md +2 -13
- package/docs/en-GB/intlayer_with_angular.md +1 -12
- package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en-GB/intlayer_with_react_router_v7.md +6 -1
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/en-GB/intlayer_with_storybook.md +2 -5
- package/docs/en-GB/intlayer_with_svelte_kit.md +9 -5
- package/docs/en-GB/intlayer_with_vite+lit.md +750 -0
- package/docs/en-GB/intlayer_with_vite+react.md +15 -3
- package/docs/en-GB/intlayer_with_vite+solid.md +1 -1
- package/docs/en-GB/intlayer_with_vite+svelte.md +17 -5
- package/docs/en-GB/intlayer_with_vite+vanilla.md +725 -0
- package/docs/en-GB/intlayer_with_vite+vue.md +16 -4
- package/docs/en-GB/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/en-GB/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/en-GB/releases/v8.md +27 -27
- package/docs/es/dictionary/html.md +147 -25
- package/docs/es/dictionary/markdown.md +143 -25
- package/docs/es/intlayer_with_analog.md +2 -13
- package/docs/es/intlayer_with_angular.md +1 -12
- package/docs/es/intlayer_with_nextjs_14.md +1 -1
- package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +6 -1
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/es/intlayer_with_storybook.md +2 -5
- package/docs/es/intlayer_with_svelte_kit.md +9 -5
- package/docs/es/intlayer_with_vite+lit.md +747 -0
- package/docs/es/intlayer_with_vite+react.md +16 -4
- package/docs/es/intlayer_with_vite+solid.md +1 -1
- package/docs/es/intlayer_with_vite+svelte.md +16 -6
- package/docs/es/intlayer_with_vite+vanilla.md +722 -0
- package/docs/es/intlayer_with_vite+vue.md +21 -5
- package/docs/es/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/es/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/es/releases/v8.md +27 -27
- package/docs/fr/dictionary/html.md +146 -24
- package/docs/fr/dictionary/markdown.md +143 -25
- package/docs/fr/intlayer_with_analog.md +2 -13
- package/docs/fr/intlayer_with_angular.md +1 -12
- package/docs/fr/intlayer_with_nextjs_14.md +1 -1
- package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/fr/intlayer_with_react_router_v7.md +6 -1
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/fr/intlayer_with_storybook.md +2 -5
- package/docs/fr/intlayer_with_svelte_kit.md +9 -5
- package/docs/fr/intlayer_with_vite+lit.md +747 -0
- package/docs/fr/intlayer_with_vite+react.md +16 -4
- package/docs/fr/intlayer_with_vite+solid.md +1 -1
- package/docs/fr/intlayer_with_vite+svelte.md +19 -6
- package/docs/fr/intlayer_with_vite+vanilla.md +722 -0
- package/docs/fr/intlayer_with_vite+vue.md +21 -5
- package/docs/fr/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/fr/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/fr/releases/v8.md +27 -27
- package/docs/hi/dictionary/html.md +22 -22
- package/docs/hi/dictionary/markdown.md +18 -18
- package/docs/hi/intlayer_with_analog.md +2 -13
- package/docs/hi/intlayer_with_angular.md +1 -12
- package/docs/hi/intlayer_with_nextjs_14.md +1 -1
- package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7.md +6 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/hi/intlayer_with_storybook.md +2 -5
- package/docs/hi/intlayer_with_svelte_kit.md +9 -5
- package/docs/hi/intlayer_with_vite+lit.md +738 -0
- package/docs/hi/intlayer_with_vite+react.md +16 -4
- package/docs/hi/intlayer_with_vite+solid.md +1 -1
- package/docs/hi/intlayer_with_vite+svelte.md +13 -6
- package/docs/hi/intlayer_with_vite+vanilla.md +722 -0
- package/docs/hi/intlayer_with_vite+vue.md +21 -5
- package/docs/hi/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/hi/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/hi/releases/v8.md +27 -27
- package/docs/id/dictionary/html.md +22 -22
- package/docs/id/dictionary/markdown.md +18 -18
- package/docs/id/intlayer_with_analog.md +2 -13
- package/docs/id/intlayer_with_angular.md +1 -12
- package/docs/id/intlayer_with_nextjs_14.md +1 -1
- package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/id/intlayer_with_react_router_v7.md +6 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/id/intlayer_with_storybook.md +2 -5
- package/docs/id/intlayer_with_svelte_kit.md +9 -5
- package/docs/id/intlayer_with_vite+lit.md +738 -0
- package/docs/id/intlayer_with_vite+react.md +16 -4
- package/docs/id/intlayer_with_vite+solid.md +1 -1
- package/docs/id/intlayer_with_vite+svelte.md +13 -6
- package/docs/id/intlayer_with_vite+vanilla.md +722 -0
- package/docs/id/intlayer_with_vite+vue.md +16 -4
- package/docs/id/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/id/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/id/releases/v8.md +27 -27
- package/docs/it/dictionary/html.md +146 -24
- package/docs/it/dictionary/markdown.md +143 -21
- package/docs/it/intlayer_with_analog.md +2 -13
- package/docs/it/intlayer_with_angular.md +1 -12
- package/docs/it/intlayer_with_nextjs_14.md +1 -1
- package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/it/intlayer_with_react_router_v7.md +6 -1
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/it/intlayer_with_storybook.md +2 -5
- package/docs/it/intlayer_with_svelte_kit.md +9 -5
- package/docs/it/intlayer_with_vite+lit.md +747 -0
- package/docs/it/intlayer_with_vite+react.md +16 -4
- package/docs/it/intlayer_with_vite+solid.md +1 -1
- package/docs/it/intlayer_with_vite+svelte.md +13 -6
- package/docs/it/intlayer_with_vite+vanilla.md +722 -0
- package/docs/it/intlayer_with_vite+vue.md +21 -5
- package/docs/it/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/it/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/it/releases/v8.md +27 -27
- package/docs/ja/dictionary/html.md +148 -27
- package/docs/ja/dictionary/markdown.md +139 -24
- package/docs/ja/intlayer_with_analog.md +2 -13
- package/docs/ja/intlayer_with_angular.md +1 -12
- package/docs/ja/intlayer_with_nextjs_14.md +1 -1
- package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ja/intlayer_with_react_router_v7.md +6 -1
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ja/intlayer_with_storybook.md +2 -5
- package/docs/ja/intlayer_with_vite+lit.md +747 -0
- package/docs/ja/intlayer_with_vite+solid.md +1 -1
- package/docs/ja/intlayer_with_vite+svelte.md +13 -6
- package/docs/ja/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ja/intlayer_with_vite+vue.md +21 -5
- package/docs/ja/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ja/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ja/releases/v8.md +27 -27
- package/docs/ko/dictionary/html.md +149 -28
- package/docs/ko/dictionary/markdown.md +143 -25
- package/docs/ko/intlayer_with_analog.md +2 -13
- package/docs/ko/intlayer_with_angular.md +1 -12
- package/docs/ko/intlayer_with_nextjs_14.md +1 -1
- package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ko/intlayer_with_react_router_v7.md +6 -1
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ko/intlayer_with_storybook.md +2 -5
- package/docs/ko/intlayer_with_svelte_kit.md +9 -5
- package/docs/ko/intlayer_with_vite+lit.md +747 -0
- package/docs/ko/intlayer_with_vite+react.md +16 -4
- package/docs/ko/intlayer_with_vite+solid.md +1 -1
- package/docs/ko/intlayer_with_vite+svelte.md +13 -6
- package/docs/ko/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ko/intlayer_with_vite+vue.md +21 -5
- package/docs/ko/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ko/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ko/releases/v8.md +27 -27
- package/docs/nl/intlayer_with_storybook.md +2 -5
- package/docs/nl/intlayer_with_vite+lit.md +738 -0
- package/docs/nl/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pl/dictionary/html.md +146 -24
- package/docs/pl/dictionary/markdown.md +143 -25
- package/docs/pl/intlayer_with_analog.md +2 -13
- package/docs/pl/intlayer_with_angular.md +1 -12
- package/docs/pl/intlayer_with_nextjs_14.md +1 -1
- package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pl/intlayer_with_react_router_v7.md +6 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/pl/intlayer_with_storybook.md +2 -5
- package/docs/pl/intlayer_with_svelte_kit.md +9 -5
- package/docs/pl/intlayer_with_vite+lit.md +738 -0
- package/docs/pl/intlayer_with_vite+react.md +16 -4
- package/docs/pl/intlayer_with_vite+solid.md +1 -1
- package/docs/pl/intlayer_with_vite+svelte.md +13 -6
- package/docs/pl/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pl/intlayer_with_vite+vue.md +16 -4
- package/docs/pl/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/pl/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/pl/releases/v8.md +27 -27
- package/docs/pt/dictionary/html.md +127 -24
- package/docs/pt/dictionary/markdown.md +143 -25
- package/docs/pt/intlayer_with_analog.md +2 -13
- package/docs/pt/intlayer_with_angular.md +1 -12
- package/docs/pt/intlayer_with_nextjs_14.md +1 -1
- package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pt/intlayer_with_react_router_v7.md +6 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/pt/intlayer_with_storybook.md +2 -5
- package/docs/pt/intlayer_with_svelte_kit.md +9 -5
- package/docs/pt/intlayer_with_vite+lit.md +747 -0
- package/docs/pt/intlayer_with_vite+react.md +16 -4
- package/docs/pt/intlayer_with_vite+solid.md +1 -1
- package/docs/pt/intlayer_with_vite+svelte.md +16 -6
- package/docs/pt/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pt/intlayer_with_vite+vue.md +21 -5
- package/docs/pt/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/pt/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/pt/releases/v8.md +27 -27
- package/docs/ru/dictionary/html.md +148 -27
- package/docs/ru/dictionary/markdown.md +143 -23
- package/docs/ru/intlayer_with_analog.md +2 -13
- package/docs/ru/intlayer_with_angular.md +1 -12
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ru/intlayer_with_react_router_v7.md +6 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ru/intlayer_with_storybook.md +2 -5
- package/docs/ru/intlayer_with_svelte_kit.md +9 -5
- package/docs/ru/intlayer_with_vite+lit.md +747 -0
- package/docs/ru/intlayer_with_vite+react.md +16 -4
- package/docs/ru/intlayer_with_vite+solid.md +1 -1
- package/docs/ru/intlayer_with_vite+svelte.md +13 -6
- package/docs/ru/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ru/intlayer_with_vite+vue.md +21 -5
- package/docs/ru/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ru/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ru/releases/v8.md +27 -27
- package/docs/tr/dictionary/html.md +129 -27
- package/docs/tr/dictionary/markdown.md +143 -23
- package/docs/tr/intlayer_with_analog.md +2 -13
- package/docs/tr/intlayer_with_angular.md +1 -12
- package/docs/tr/intlayer_with_nextjs_14.md +1 -1
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_react_router_v7.md +6 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/tr/intlayer_with_storybook.md +2 -5
- package/docs/tr/intlayer_with_svelte_kit.md +9 -5
- package/docs/tr/intlayer_with_vite+lit.md +738 -0
- package/docs/tr/intlayer_with_vite+react.md +16 -4
- package/docs/tr/intlayer_with_vite+solid.md +1 -1
- package/docs/tr/intlayer_with_vite+svelte.md +13 -6
- package/docs/tr/intlayer_with_vite+vanilla.md +722 -0
- package/docs/tr/intlayer_with_vite+vue.md +16 -4
- package/docs/tr/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/tr/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/tr/releases/v8.md +27 -27
- package/docs/uk/dictionary/html.md +22 -22
- package/docs/uk/dictionary/markdown.md +18 -18
- package/docs/uk/intlayer_with_analog.md +2 -13
- package/docs/uk/intlayer_with_angular.md +1 -12
- package/docs/uk/intlayer_with_nextjs_14.md +1 -1
- package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/uk/intlayer_with_react_router_v7.md +5 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/uk/intlayer_with_storybook.md +2 -5
- package/docs/uk/intlayer_with_svelte_kit.md +9 -5
- package/docs/uk/intlayer_with_vite+lit.md +738 -0
- package/docs/uk/intlayer_with_vite+react.md +16 -4
- package/docs/uk/intlayer_with_vite+solid.md +1 -1
- package/docs/uk/intlayer_with_vite+svelte.md +18 -6
- package/docs/uk/intlayer_with_vite+vanilla.md +722 -0
- package/docs/uk/intlayer_with_vite+vue.md +16 -4
- package/docs/uk/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/uk/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/uk/releases/v8.md +27 -27
- package/docs/ur/intlayer_with_storybook.md +2 -5
- package/docs/ur/intlayer_with_vite+lit.md +738 -0
- package/docs/ur/intlayer_with_vite+vanilla.md +722 -0
- package/docs/vi/dictionary/html.md +22 -22
- package/docs/vi/dictionary/markdown.md +18 -18
- package/docs/vi/intlayer_with_analog.md +2 -13
- package/docs/vi/intlayer_with_angular.md +1 -12
- package/docs/vi/intlayer_with_nextjs_14.md +1 -1
- package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/vi/intlayer_with_react_router_v7.md +6 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/vi/intlayer_with_storybook.md +2 -5
- package/docs/vi/intlayer_with_svelte_kit.md +9 -5
- package/docs/vi/intlayer_with_vite+lit.md +738 -0
- package/docs/vi/intlayer_with_vite+react.md +16 -4
- package/docs/vi/intlayer_with_vite+solid.md +1 -1
- package/docs/vi/intlayer_with_vite+svelte.md +17 -5
- package/docs/vi/intlayer_with_vite+vanilla.md +722 -0
- package/docs/vi/intlayer_with_vite+vue.md +16 -4
- package/docs/vi/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/vi/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/vi/releases/v8.md +27 -27
- package/docs/zh/dictionary/html.md +148 -27
- package/docs/zh/dictionary/markdown.md +143 -21
- package/docs/zh/intlayer_with_analog.md +2 -13
- package/docs/zh/intlayer_with_angular.md +1 -12
- package/docs/zh/intlayer_with_nextjs_14.md +1 -1
- package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +6 -1
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/zh/intlayer_with_storybook.md +2 -5
- package/docs/zh/intlayer_with_svelte_kit.md +9 -5
- package/docs/zh/intlayer_with_vite+lit.md +747 -0
- package/docs/zh/intlayer_with_vite+react.md +16 -4
- package/docs/zh/intlayer_with_vite+solid.md +1 -1
- package/docs/zh/intlayer_with_vite+svelte.md +16 -6
- package/docs/zh/intlayer_with_vite+vanilla.md +722 -0
- package/docs/zh/intlayer_with_vite+vue.md +16 -4
- package/docs/zh/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/zh/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/zh/releases/v8.md +27 -27
- package/package.json +6 -6
- 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 - Come tradurre un'app Lit nel 2026
|
|
5
|
+
description: Scopri come rendere multilingue il tuo sito web Vite e Lit. Segui la documentazione per internazionalizzarlo (i18n) e tradurlo.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internazionalizzazione
|
|
8
|
+
- Documentazione
|
|
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
|
+
# Traduci il tuo sito web Vite e Lit usando Intlayer | Internazionalizzazione (i18n)
|
|
26
|
+
|
|
27
|
+
## Sommario
|
|
28
|
+
|
|
29
|
+
<TOC/>
|
|
30
|
+
|
|
31
|
+
## Cos'è Intlayer?
|
|
32
|
+
|
|
33
|
+
**Intlayer** è un'innovativa libreria di internazionalizzazione (i18n) open-source progettata per semplificare il supporto multilingue nelle moderne applicazioni web.
|
|
34
|
+
|
|
35
|
+
Con Intlayer, puoi:
|
|
36
|
+
|
|
37
|
+
- **Gestire facilmente le traduzioni** utilizzando dizionari dichiarativi a livello di componente.
|
|
38
|
+
- **Localizzare dinamicamente metadati**, rotte e contenuti.
|
|
39
|
+
- **Garantire il supporto TypeScript** con tipi autogenerati, migliorando l'autocompletamento e il rilevamento degli errori.
|
|
40
|
+
- **Beneficiare di funzionalità avanzate**, come il rilevamento e la commutazione dinamica della lingua.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Guida passo-passo per configurare Intlayer in un'applicazione Vite e Lit
|
|
45
|
+
|
|
46
|
+
### Passaggio 1: Installare le dipendenze
|
|
47
|
+
|
|
48
|
+
Installa i pacchetti necessari utilizzando 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
|
+
Il pacchetto principale che fornisce strumenti di internazionalizzazione per la gestione della configurazione, la traduzione, la [dichiarazione dei contenuti](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/content_file.md), la transpilazione e i [comandi CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/index.md).
|
|
77
|
+
|
|
78
|
+
- **lit-intlayer**
|
|
79
|
+
Il pacchetto che integra Intlayer con le applicazioni Lit. Fornisce hook basati su `ReactiveController` (`useIntlayer`, `useLocale`, ecc.) in modo che i LitElement si ri-renderizzino automaticamente quando la lingua cambia.
|
|
80
|
+
|
|
81
|
+
- **vite-intlayer**
|
|
82
|
+
Include il plugin Vite per integrare Intlayer con il [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), oltre al middleware per rilevare la lingua preferita dell'utente, gestire i cookie e gestire il reindirizzamento degli URL.
|
|
83
|
+
|
|
84
|
+
### Passaggio 2: Configurazione del progetto
|
|
85
|
+
|
|
86
|
+
Crea un file di configurazione per impostare le lingue della tua applicazione:
|
|
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
|
+
// Altre lingue
|
|
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
|
+
// Altre lingue
|
|
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
|
+
// Altre lingue
|
|
136
|
+
],
|
|
137
|
+
defaultLocale: Locales.ENGLISH,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
module.exports = config;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
> Attraverso questo file di configurazione, puoi impostare URL localizzati, reindirizzamento middleware, nomi dei cookie, la posizione e l'estensione delle tue dichiarazioni di contenuto, disabilitare i log di Intlayer nella console e altro ancora. Per un elenco completo dei parametri disponibili, consulta la [documentazione sulla configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md).
|
|
145
|
+
|
|
146
|
+
### Passaggio 3: Integrare Intlayer nella configurazione di Vite
|
|
147
|
+
|
|
148
|
+
Aggiungi il plugin intlayer nella tua configurazione.
|
|
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
|
+
> Il plugin Vite `intlayer()` viene utilizzato per integrare Intlayer con Vite. Garantisce la creazione dei file di dichiarazione dei contenuti e li monitora in modalità di sviluppo. Definisce le variabili d'ambiente Intlayer all'interno dell'applicazione Vite. Inoltre, fornisce alias per ottimizzare le prestazioni.
|
|
181
|
+
|
|
182
|
+
### Passaggio 4: Bootstrap di Intlayer nel tuo punto di ingresso
|
|
183
|
+
|
|
184
|
+
Chiama `installIntlayer()` **prima** che vengano registrati elementi personalizzati, in modo che il singleton globale della lingua sia pronto quando il primo elemento si connette.
|
|
185
|
+
|
|
186
|
+
```typescript fileName="src/main.ts" codeFormat="typescript"
|
|
187
|
+
import { installIntlayer } from "lit-intlayer";
|
|
188
|
+
|
|
189
|
+
// Deve essere chiamato prima che qualsiasi LitElement sia connesso al DOM.
|
|
190
|
+
installIntlayer();
|
|
191
|
+
|
|
192
|
+
// Importa e registra i tuoi elementi personalizzati.
|
|
193
|
+
import "./my-element.js";
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Se utilizzi anche dichiarazioni di contenuto `md()` (Markdown), installa anche il renderer 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
|
+
### Passaggio 5: Dichiarare il contenuto
|
|
208
|
+
|
|
209
|
+
Crea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni:
|
|
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
|
+
> Le dichiarazioni di contenuto possono essere definite ovunque nell'applicazione, purché siano incluse nella cartella `contentDir` (per impostazione predefinita, `./src`) e corrispondano all'estensione del file di dichiarazione del contenuto (per impostazione predefinita, `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
|
|
364
|
+
>
|
|
365
|
+
> Per ulteriori dettagli, consulta la [documentazione sulla dichiarazione dei contenuti](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/content_file.md).
|
|
366
|
+
|
|
367
|
+
### Passaggio 6: Utilizzare Intlayer nel tuo LitElement
|
|
368
|
+
|
|
369
|
+
Usa `useIntlayer` all'interno di un `LitElement`. Restituisce un proxy `ReactiveController` che attiva automaticamente i re-render ogni volta che la lingua attiva cambia: non è richiesta alcuna configurazione aggiuntiva.
|
|
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 si registra come ReactiveController.
|
|
382
|
+
// L'elemento si ri-renderizza automaticamente quando la lingua cambia.
|
|
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 hai bisogno della stringa tradotta in un attributo HTML nativo (es. `alt`, `aria-label`, `title`), chiama `.value` sul nodo foglia:
|
|
406
|
+
>
|
|
407
|
+
> ```typescript
|
|
408
|
+
> html`<img alt=${content.viteLogo.value} />`;
|
|
409
|
+
> ```
|
|
410
|
+
|
|
411
|
+
### (Opzionale) Passaggio 7: Cambiare la lingua del contenuto
|
|
412
|
+
|
|
413
|
+
Per cambiare la lingua del contenuto, usa il metodo `setLocale` esposto dal controller `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
|
+
### (Opzionale) Passaggio 8: Renderizzare contenuti Markdown e HTML
|
|
447
|
+
|
|
448
|
+
Intlayer supporta le dichiarazioni di contenuto `md()` e `html()`. In Lit, l'output compilato viene iniettato come HTML grezzo tramite la direttiva `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
|
+
Renderizza l'HTML compilato nel tuo 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)` chiama `toString()` sull'`IntlayerNode`, che restituisce la stringa Markdown grezza. Passala a `compileMarkdown` per ottenere una stringa HTML, quindi caricala con la direttiva `unsafeHTML` di Lit.
|
|
495
|
+
|
|
496
|
+
### (Opzionale) Passaggio 9: Aggiungere il routing localizzato alla tua applicazione
|
|
497
|
+
|
|
498
|
+
Per creare rotte uniche per ogni lingua (utile per la SEO), puoi utilizzare un router lato client insieme agli helper `localeMap` / `localeFlatMap` di Intlayer e al plugin Vite `intlayerProxy` per il rilevamento della lingua lato server.
|
|
499
|
+
|
|
500
|
+
Innanzitutto, aggiungi `intlayerProxy` alla tua configurazione Vite:
|
|
501
|
+
|
|
502
|
+
> Nota che per utilizzare `intlayerProxy` in produzione, devi spostare `vite-intlayer` da `devDependencies` a `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
|
+
### (Opzionale) Passaggio 10: Cambiare l'URL quando la lingua cambia
|
|
541
|
+
|
|
542
|
+
Per aggiornare l'URL del browser quando la lingua cambia, utilizza `useRewriteURL` insieme al selettore di lingua:
|
|
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
|
+
// Riscrive automaticamente l'URL corrente quando la lingua cambia.
|
|
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
|
+
### (Opzionale) Passaggio 11: Commutare gli attributi di lingua e direzione HTML
|
|
579
|
+
|
|
580
|
+
Aggiorna gli attributi `lang` e `dir` del tag `<html>` per farli corrispondere alla lingua corrente per l'accessibilità e la 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`<!-- il tuo contenuto -->`;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
### (Opzionale) Passaggio 12: Estrarre il contenuto dei tuoi componenti
|
|
604
|
+
|
|
605
|
+
Se hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.
|
|
606
|
+
|
|
607
|
+
Per facilitare questo processo, Intlayer propone un [compilatore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compiler.md) / [estrattore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/extract.md) per trasformare i tuoi componenti ed estrarre il contenuto.
|
|
608
|
+
|
|
609
|
+
Per configurarlo, puoi aggiungere una sezione `compiler` nel tuo file `intlayer.config.ts`:
|
|
610
|
+
|
|
611
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
612
|
+
import { type IntlayerConfig } from "intlayer";
|
|
613
|
+
|
|
614
|
+
const config: IntlayerConfig = {
|
|
615
|
+
// ... Resto della tua configurazione
|
|
616
|
+
compiler: {
|
|
617
|
+
/**
|
|
618
|
+
* Indica se il compilatore deve essere abilitato.
|
|
619
|
+
*/
|
|
620
|
+
enabled: true,
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* Definisce il percorso dei file di output
|
|
624
|
+
*/
|
|
625
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati.
|
|
629
|
+
* In questo modo, il compilatore può essere eseguito una sola volta per trasformare l'app e poi può essere rimosso.
|
|
630
|
+
*/
|
|
631
|
+
saveComponents: false,
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Prefisso della chiave del dizionario
|
|
635
|
+
*/
|
|
636
|
+
dictionaryKeyPrefix: "",
|
|
637
|
+
},
|
|
638
|
+
};
|
|
639
|
+
|
|
640
|
+
export default config;
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
<Tabs>
|
|
644
|
+
<Tab value='Comando Extract'>
|
|
645
|
+
|
|
646
|
+
Esegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto
|
|
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='Compilatore Babel'>
|
|
666
|
+
|
|
667
|
+
Aggiorna il tuo `vite.config.ts` per includere il 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(), // Aggiunge il plugin del compilatore
|
|
677
|
+
],
|
|
678
|
+
});
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
```bash packageManager="npm"
|
|
682
|
+
npm run build # O npm run dev
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
```bash packageManager="pnpm"
|
|
686
|
+
pnpm run build # O pnpm run dev
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
```bash packageManager="yarn"
|
|
690
|
+
yarn build # O yarn dev
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
```bash packageManager="bun"
|
|
694
|
+
bun run build # O bun run dev
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
</Tab>
|
|
698
|
+
</Tabs>
|
|
699
|
+
|
|
700
|
+
### Configurare TypeScript
|
|
701
|
+
|
|
702
|
+
Assicurati che la tua configurazione TypeScript includa i tipi autogenerati.
|
|
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` sono richiesti da Lit per il supporto dei decoratori.
|
|
716
|
+
|
|
717
|
+
### Configurazione Git
|
|
718
|
+
|
|
719
|
+
Si consiglia di ignorare i file generati da Intlayer. Ciò consente di evitare di caricarli nel repository Git.
|
|
720
|
+
|
|
721
|
+
Per farlo, puoi aggiungere le seguenti istruzioni al tuo file `.gitignore`:
|
|
722
|
+
|
|
723
|
+
```bash
|
|
724
|
+
# Ignora i file generati da Intlayer
|
|
725
|
+
.intlayer
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
### Estensione VS Code
|
|
729
|
+
|
|
730
|
+
Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare l'**estensione ufficiale Intlayer per VS Code**.
|
|
731
|
+
|
|
732
|
+
[Installa dal VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
733
|
+
|
|
734
|
+
Questa estensione fornisce:
|
|
735
|
+
|
|
736
|
+
- **Autocompletamento** per le chiavi di traduzione.
|
|
737
|
+
- **Rilevamento degli errori in tempo reale** per le traduzioni mancanti.
|
|
738
|
+
- **Anteprime inline** del contenuto tradotto.
|
|
739
|
+
- **Azioni rapide** per creare e aggiornare facilmente le traduzioni.
|
|
740
|
+
|
|
741
|
+
Per maggiori dettagli su come utilizzare l'estensione, consulta la [documentazione dell'estensione Intlayer per VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
745
|
+
### Vai oltre
|
|
746
|
+
|
|
747
|
+
Per approfondire, puoi implementare l'[editor visuale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) o esternalizzare i tuoi contenuti utilizzando il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md).
|