@intlayer/docs 8.4.10 → 8.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +32 -25
- package/docs/ar/dictionary/markdown.md +33 -35
- package/docs/ar/intlayer_with_analog.md +10 -27
- 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 +689 -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 +24 -8
- 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 +689 -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 +689 -0
- package/docs/cs/intlayer_with_vite+vanilla.md +722 -0
- package/docs/de/compiler.md +6 -1
- package/docs/de/configuration.md +12 -9
- package/docs/de/dictionary/html.md +151 -26
- package/docs/de/dictionary/markdown.md +154 -42
- package/docs/de/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +6 -1
- package/docs/en/configuration.md +12 -9
- package/docs/en/dictionary/html.md +152 -27
- package/docs/en/dictionary/markdown.md +154 -38
- package/docs/en/intlayer_with_analog.md +10 -27
- 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 +703 -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 +41 -10
- 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 +32 -25
- package/docs/en-GB/dictionary/markdown.md +34 -36
- package/docs/en-GB/intlayer_with_analog.md +10 -27
- 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 +703 -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 +19 -7
- 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/compiler.md +6 -1
- package/docs/es/configuration.md +12 -9
- package/docs/es/dictionary/html.md +152 -27
- package/docs/es/dictionary/markdown.md +155 -43
- package/docs/es/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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/compiler.md +8 -3
- package/docs/fr/configuration.md +12 -9
- package/docs/fr/dictionary/html.md +151 -26
- package/docs/fr/dictionary/markdown.md +155 -43
- package/docs/fr/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +32 -25
- package/docs/hi/dictionary/markdown.md +35 -37
- package/docs/hi/intlayer_with_analog.md +10 -27
- 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 +689 -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 +24 -8
- 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 +32 -25
- package/docs/id/dictionary/markdown.md +35 -37
- package/docs/id/intlayer_with_analog.md +10 -27
- 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 +689 -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 +19 -7
- 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/compiler.md +8 -3
- package/docs/it/configuration.md +12 -9
- package/docs/it/dictionary/html.md +151 -26
- package/docs/it/dictionary/markdown.md +155 -39
- package/docs/it/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +153 -29
- package/docs/ja/dictionary/markdown.md +154 -42
- package/docs/ja/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +154 -30
- package/docs/ko/dictionary/markdown.md +155 -43
- package/docs/ko/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +689 -0
- package/docs/nl/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pl/dictionary/html.md +151 -26
- package/docs/pl/dictionary/markdown.md +155 -43
- package/docs/pl/intlayer_with_analog.md +10 -27
- 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 +689 -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 +19 -7
- 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/compiler.md +7 -2
- package/docs/pt/configuration.md +11 -9
- package/docs/pt/dictionary/html.md +132 -26
- package/docs/pt/dictionary/markdown.md +155 -43
- package/docs/pt/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +153 -29
- package/docs/ru/dictionary/markdown.md +155 -41
- package/docs/ru/intlayer_with_analog.md +10 -27
- 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 +698 -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 +24 -8
- 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 +134 -29
- package/docs/tr/dictionary/markdown.md +155 -41
- package/docs/tr/intlayer_with_analog.md +10 -27
- 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 +689 -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 +19 -7
- 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 +32 -25
- package/docs/uk/dictionary/markdown.md +35 -37
- package/docs/uk/intlayer_with_analog.md +10 -27
- 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 +689 -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 +19 -7
- 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 +689 -0
- package/docs/ur/intlayer_with_vite+vanilla.md +722 -0
- package/docs/vi/dictionary/html.md +32 -25
- package/docs/vi/dictionary/markdown.md +35 -37
- package/docs/vi/intlayer_with_analog.md +10 -27
- 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 +689 -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 +19 -7
- 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/compiler.md +8 -3
- package/docs/zh/configuration.md +4 -1
- package/docs/zh/dictionary/html.md +153 -29
- package/docs/zh/dictionary/markdown.md +155 -39
- package/docs/zh/intlayer_with_analog.md +10 -27
- 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 +698 -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 +19 -7
- 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,689 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-03-23
|
|
3
|
+
updatedAt: 2026-03-23
|
|
4
|
+
title: Vite + Lit i18n - Hoe vertaal je een Lit-app in 2026
|
|
5
|
+
description: Ontdek hoe je je Vite- en Lit-website meertalig kunt maken. Volg de documentatie voor internationalisering (i18n) en vertaling.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalisering
|
|
8
|
+
- Documentatie
|
|
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
|
+
# Vertaal je Vite- en Lit-website met Intlayer | Internationalisering (i18n)
|
|
26
|
+
|
|
27
|
+
<iframe
|
|
28
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-vite-lit-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
29
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
30
|
+
title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
|
|
31
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
32
|
+
loading="lazy"
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
## Inhoudsopgave
|
|
36
|
+
|
|
37
|
+
<TOC/>
|
|
38
|
+
|
|
39
|
+
## Wat is Intlayer?
|
|
40
|
+
|
|
41
|
+
**Intlayer** is een innovatieve, open-source internationaliseringsbibliotheek (i18n) die is ontworpen om meertalige ondersteuning in moderne webapplicaties te vereenvoudigen.
|
|
42
|
+
|
|
43
|
+
Met Intlayer kun je:
|
|
44
|
+
|
|
45
|
+
- **Eenvoudig vertalingen beheren** met behulp van declaratieve woordenboeken op componentniveau.
|
|
46
|
+
- **Metadata, routes en inhoud dynamisch lokaliseren**.
|
|
47
|
+
- **TypeScript-ondersteuning garanderen** met automatisch gegenereerde typen, wat de automatische aanvulling en foutdetectie verbetert.
|
|
48
|
+
- **Profiteren van geavanceerde functies**, zoals dynamische taaldetectie en -omschakeling.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Stap-voor-stap handleiding om Intlayer in te stellen in een Vite- en Lit-applicatie
|
|
53
|
+
|
|
54
|
+
### Stap 1: Afhankelijkheden installeren
|
|
55
|
+
|
|
56
|
+
Installeer de benodigde pakketten met npm:
|
|
57
|
+
|
|
58
|
+
```bash packageManager="npm"
|
|
59
|
+
npm install intlayer lit-intlayer
|
|
60
|
+
npm install vite-intlayer --save-dev
|
|
61
|
+
npx intlayer init
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```bash packageManager="pnpm"
|
|
65
|
+
pnpm add intlayer lit-intlayer
|
|
66
|
+
pnpm add vite-intlayer --save-dev
|
|
67
|
+
pnpm intlayer init
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```bash packageManager="yarn"
|
|
71
|
+
yarn add intlayer lit-intlayer
|
|
72
|
+
yarn add vite-intlayer --save-dev
|
|
73
|
+
yarn intlayer init
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```bash packageManager="bun"
|
|
77
|
+
bun add intlayer lit-intlayer
|
|
78
|
+
bun add vite-intlayer --dev
|
|
79
|
+
bunx intlayer init
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
- **intlayer**
|
|
83
|
+
|
|
84
|
+
Het kernpakket dat internationaliseringstools biedt voor configuratiebeheer, vertaling, [inhoudsdeclaratie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/dictionary/content_file.md), transpilatie en [CLI-commando's](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/cli/index.md).
|
|
85
|
+
|
|
86
|
+
- **lit-intlayer**
|
|
87
|
+
Het pakket dat Intlayer integreert met Lit-applicaties. Het biedt op `ReactiveController` gebaseerde hooks (`useIntlayer`, `useLocale`, enz.) zodat LitElements automatisch opnieuw renderen wanneer de taal verandert.
|
|
88
|
+
|
|
89
|
+
- **vite-intlayer**
|
|
90
|
+
Bevat de Vite-plugin voor het integreren van Intlayer met de [Vite-bundler](https://vite.dev/guide/why.html#why-bundle-for-production), evenals middleware voor het detecteren van de voorkeurstaal van de gebruiker, het beheren van cookies en het afhandelen van URL-omleidingen.
|
|
91
|
+
|
|
92
|
+
### Stap 2: Configuratie van je project
|
|
93
|
+
|
|
94
|
+
Maak een configuratiebestand om de talen van je applicatie te configureren:
|
|
95
|
+
|
|
96
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
97
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
98
|
+
|
|
99
|
+
const config: IntlayerConfig = {
|
|
100
|
+
internationalization: {
|
|
101
|
+
locales: [
|
|
102
|
+
Locales.ENGLISH,
|
|
103
|
+
Locales.FRENCH,
|
|
104
|
+
Locales.SPANISH,
|
|
105
|
+
// Je andere talen
|
|
106
|
+
],
|
|
107
|
+
defaultLocale: Locales.ENGLISH,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export default config;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
115
|
+
import { Locales } from "intlayer";
|
|
116
|
+
|
|
117
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
118
|
+
const config = {
|
|
119
|
+
internationalization: {
|
|
120
|
+
locales: [
|
|
121
|
+
Locales.ENGLISH,
|
|
122
|
+
Locales.FRENCH,
|
|
123
|
+
Locales.SPANISH,
|
|
124
|
+
// Je andere talen
|
|
125
|
+
],
|
|
126
|
+
defaultLocale: Locales.ENGLISH,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export default config;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
134
|
+
const { Locales } = require("intlayer");
|
|
135
|
+
|
|
136
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
137
|
+
const config = {
|
|
138
|
+
internationalization: {
|
|
139
|
+
locales: [
|
|
140
|
+
Locales.ENGLISH,
|
|
141
|
+
Locales.FRENCH,
|
|
142
|
+
Locales.SPANISH,
|
|
143
|
+
// Je andere talen
|
|
144
|
+
],
|
|
145
|
+
defaultLocale: Locales.ENGLISH,
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
module.exports = config;
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
> Via dit configuratiebestand kun je gelokaliseerde URL's, middleware-omleidingen, cookienamen, de locatie en extensie van je inhoudsdeclaraties instellen, Intlayer-logs in de console uitschakelen, en meer. Raadpleeg de [configuratiedocumentatie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/configuration.md) voor een volledige lijst van beschikbare parameters.
|
|
153
|
+
|
|
154
|
+
### Stap 3: Intlayer integreren in je Vite-configuratie
|
|
155
|
+
|
|
156
|
+
Voeg de intlayer-plugin toe aan je configuratie.
|
|
157
|
+
|
|
158
|
+
```typescript fileName="vite.config.ts" codeFormat="typescript"
|
|
159
|
+
import { defineConfig } from "vite";
|
|
160
|
+
import { intlayer } from "vite-intlayer";
|
|
161
|
+
|
|
162
|
+
// https://vitejs.dev/config/
|
|
163
|
+
export default defineConfig({
|
|
164
|
+
plugins: [intlayer()],
|
|
165
|
+
});
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```javascript fileName="vite.config.mjs" codeFormat="esm"
|
|
169
|
+
import { defineConfig } from "vite";
|
|
170
|
+
import { intlayer } from "vite-intlayer";
|
|
171
|
+
|
|
172
|
+
// https://vitejs.dev/config/
|
|
173
|
+
export default defineConfig({
|
|
174
|
+
plugins: [intlayer()],
|
|
175
|
+
});
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
```javascript fileName="vite.config.cjs" codeFormat="commonjs"
|
|
179
|
+
const { defineConfig } = require("vite");
|
|
180
|
+
const { intlayer } = require("vite-intlayer");
|
|
181
|
+
|
|
182
|
+
// https://vitejs.dev/config/
|
|
183
|
+
module.exports = defineConfig({
|
|
184
|
+
plugins: [intlayer()],
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
> De `intlayer()` Vite-plugin wordt gebruikt om Intlayer met Vite te integreren. Het zorgt voor het bouwen van inhoudsdeclaratiebestanden en bewaakt deze in de ontwikkelmodus. Het definieert Intlayer-omgevingsvariabelen binnen de Vite-applicatie. Bovendien biedt het aliassen om de prestaties te optimaliseren.
|
|
189
|
+
|
|
190
|
+
### Stap 4: Bootstrap Intlayer in je toegangspunt
|
|
191
|
+
|
|
192
|
+
Roep `installIntlayer()` aan **vóórdat** er aangepaste elementen worden geregistreerd, zodat de globale locale singleton gereed is wanneer het eerste element verbinding maakt.
|
|
193
|
+
|
|
194
|
+
```typescript fileName="src/main.ts" codeFormat="typescript"
|
|
195
|
+
import { installIntlayer } from "lit-intlayer";
|
|
196
|
+
|
|
197
|
+
// Moet worden aangeroepen voordat een LitElement wordt verbonden met de DOM.
|
|
198
|
+
installIntlayer();
|
|
199
|
+
|
|
200
|
+
// Importeer en registreer je aangepaste elementen.
|
|
201
|
+
import "./my-element.js";
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Als je ook `md()` inhoudsdeclaraties (Markdown) gebruikt, installeer dan ook de markdown-renderer:
|
|
205
|
+
|
|
206
|
+
```typescript fileName="src/main.ts" codeFormat="typescript"
|
|
207
|
+
import { installIntlayer, installIntlayerMarkdown } from "lit-intlayer";
|
|
208
|
+
|
|
209
|
+
installIntlayer();
|
|
210
|
+
installIntlayerMarkdown();
|
|
211
|
+
|
|
212
|
+
import "./my-element.js";
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Stap 5: Declareer je inhoud
|
|
216
|
+
|
|
217
|
+
Maak en beheer je inhoudsdeclaraties om vertalingen op te slaan:
|
|
218
|
+
|
|
219
|
+
```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
|
|
220
|
+
import { t, type Dictionary } from "intlayer";
|
|
221
|
+
|
|
222
|
+
const appContent = {
|
|
223
|
+
key: "app",
|
|
224
|
+
content: {
|
|
225
|
+
title: "Vite + Lit",
|
|
226
|
+
|
|
227
|
+
viteLogo: t({
|
|
228
|
+
en: "Vite logo",
|
|
229
|
+
fr: "Logo Vite",
|
|
230
|
+
es: "Logo Vite",
|
|
231
|
+
}),
|
|
232
|
+
litLogo: t({
|
|
233
|
+
en: "Lit logo",
|
|
234
|
+
fr: "Logo Lit",
|
|
235
|
+
es: "Logo Lit",
|
|
236
|
+
}),
|
|
237
|
+
|
|
238
|
+
count: t({
|
|
239
|
+
en: "count is {{count}}",
|
|
240
|
+
fr: "le compte est {{count}}",
|
|
241
|
+
es: "el recuento es {{count}}",
|
|
242
|
+
}),
|
|
243
|
+
|
|
244
|
+
readTheDocs: t({
|
|
245
|
+
en: "Click on the Vite and Lit logos to learn more",
|
|
246
|
+
fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
|
|
247
|
+
es: "Haga clic en los logotipos de Vite y Lit para obtener más información",
|
|
248
|
+
}),
|
|
249
|
+
},
|
|
250
|
+
} satisfies Dictionary;
|
|
251
|
+
|
|
252
|
+
export default appContent;
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
|
|
256
|
+
import { t } from "intlayer";
|
|
257
|
+
|
|
258
|
+
/** @type {import('intlayer').Dictionary} */
|
|
259
|
+
const appContent = {
|
|
260
|
+
key: "app",
|
|
261
|
+
content: {
|
|
262
|
+
title: "Vite + Lit",
|
|
263
|
+
|
|
264
|
+
viteLogo: t({
|
|
265
|
+
en: "Vite logo",
|
|
266
|
+
fr: "Logo Vite",
|
|
267
|
+
es: "Logo Vite",
|
|
268
|
+
}),
|
|
269
|
+
litLogo: t({
|
|
270
|
+
en: "Lit logo",
|
|
271
|
+
fr: "Logo Lit",
|
|
272
|
+
es: "Logo Lit",
|
|
273
|
+
}),
|
|
274
|
+
|
|
275
|
+
count: t({
|
|
276
|
+
en: "count is {{count}}",
|
|
277
|
+
fr: "le compte est {{count}}",
|
|
278
|
+
es: "el recuento es {{count}}",
|
|
279
|
+
}),
|
|
280
|
+
|
|
281
|
+
readTheDocs: t({
|
|
282
|
+
en: "Click on the Vite and Lit logos to learn more",
|
|
283
|
+
fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
|
|
284
|
+
es: "Haga clic en los logotipos de Vite y Lit para obtener más informatie",
|
|
285
|
+
}),
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
export default appContent;
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
|
|
293
|
+
const { t } = require("intlayer");
|
|
294
|
+
|
|
295
|
+
/** @type {import('intlayer').Dictionary} */
|
|
296
|
+
const appContent = {
|
|
297
|
+
key: "app",
|
|
298
|
+
content: {
|
|
299
|
+
title: "Vite + Lit",
|
|
300
|
+
|
|
301
|
+
viteLogo: t({
|
|
302
|
+
en: "Vite logo",
|
|
303
|
+
fr: "Logo Vite",
|
|
304
|
+
es: "Logo Vite",
|
|
305
|
+
}),
|
|
306
|
+
litLogo: t({
|
|
307
|
+
en: "Lit logo",
|
|
308
|
+
fr: "Logo Lit",
|
|
309
|
+
es: "Logo Lit",
|
|
310
|
+
}),
|
|
311
|
+
|
|
312
|
+
count: t({
|
|
313
|
+
en: "count is {{count}}",
|
|
314
|
+
fr: "le compte est {{count}}",
|
|
315
|
+
es: "el recuento es {{count}}",
|
|
316
|
+
}),
|
|
317
|
+
|
|
318
|
+
readTheDocs: t({
|
|
319
|
+
en: "Click on the Vite and Lit logos to learn more",
|
|
320
|
+
fr: "Cliquez sur les logos Vite et Lit pour en savoir plus",
|
|
321
|
+
es: "Haga clic en los logotipos de Vite y Lit para obtener más informatie",
|
|
322
|
+
}),
|
|
323
|
+
},
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
module.exports = appContent;
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
```json fileName="src/app.content.json" contentDeclarationFormat="json"
|
|
330
|
+
{
|
|
331
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
332
|
+
"key": "app",
|
|
333
|
+
"content": {
|
|
334
|
+
"title": "Vite + Lit",
|
|
335
|
+
"viteLogo": {
|
|
336
|
+
"nodeType": "translation",
|
|
337
|
+
"translation": {
|
|
338
|
+
"en": "Vite logo",
|
|
339
|
+
"fr": "Logo Vite",
|
|
340
|
+
"es": "Logo Vite"
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"litLogo": {
|
|
344
|
+
"nodeType": "translation",
|
|
345
|
+
"translation": {
|
|
346
|
+
"en": "Lit logo",
|
|
347
|
+
"fr": "Logo Lit",
|
|
348
|
+
"es": "Logo Lit"
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
"count": {
|
|
352
|
+
"nodeType": "translation",
|
|
353
|
+
"translation": {
|
|
354
|
+
"en": "count is {{count}}",
|
|
355
|
+
"fr": "le compte est {{count}}",
|
|
356
|
+
"es": "el recuento es {{count}}"
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
"readTheDocs": {
|
|
360
|
+
"nodeType": "translation",
|
|
361
|
+
"translation": {
|
|
362
|
+
"en": "Click on the Vite and Lit logos to learn more",
|
|
363
|
+
"fr": "Cliquez sur les logos Vite et Lit pour en savoir plus",
|
|
364
|
+
"es": "Haga clic en los logotipos de Vite y Lit para obtener más informatie"
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
> Je inhoudsdeclaraties kunnen overal in je applicatie worden gedefinieerd, zolang ze zijn opgenomen in de `contentDir` map (standaard `./src`) en voldoen aan de extensie voor inhoudsdeclaratiebestanden (standaard `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
|
|
372
|
+
>
|
|
373
|
+
> Raadpleeg de [inhoudsdeclaratiedocumentatie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/dictionary/content_file.md) voor meer details.
|
|
374
|
+
|
|
375
|
+
### Stap 6: Gebruik Intlayer in je LitElement
|
|
376
|
+
|
|
377
|
+
Gebruik `useIntlayer` binnen een `LitElement`. Het retourneert een `ReactiveController`-proxy die automatisch herrenders activeert wanneer de actieve taal verandert — er is geen extra configuratie vereist.
|
|
378
|
+
|
|
379
|
+
```typescript fileName="src/my-element.ts" codeFormat="typescript"
|
|
380
|
+
import { LitElement, html } from "lit";
|
|
381
|
+
import { customElement, property } from "lit/decorators.js";
|
|
382
|
+
import { useIntlayer } from "lit-intlayer";
|
|
383
|
+
|
|
384
|
+
@customElement("my-element")
|
|
385
|
+
export class MyElement extends LitElement {
|
|
386
|
+
@property({ type: Number })
|
|
387
|
+
count = 0;
|
|
388
|
+
|
|
389
|
+
// useIntlayer registreert zichzelf als een ReactiveController.
|
|
390
|
+
// Het element herrendert automatisch wanneer de taal verandert.
|
|
391
|
+
private content = useIntlayer(this, "app");
|
|
392
|
+
|
|
393
|
+
override render() {
|
|
394
|
+
const { content } = this;
|
|
395
|
+
|
|
396
|
+
return html`
|
|
397
|
+
<h1>${content.title}</h1>
|
|
398
|
+
|
|
399
|
+
<img src="/vite.svg" alt=${content.viteLogo.value} />
|
|
400
|
+
<img src="/lit.svg" alt=${content.litLogo.value} />
|
|
401
|
+
|
|
402
|
+
<button @click=${() => this.count++}>
|
|
403
|
+
${content.count({ count: this.count })}
|
|
404
|
+
</button>
|
|
405
|
+
|
|
406
|
+
<p>${content.readTheDocs}</p>
|
|
407
|
+
`;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
> [!NOTE]
|
|
413
|
+
> Wanneer je de vertaalde string nodig hebt in een systeemeigen HTML-attribuut (bijv. `alt`, `aria-label`, `title`), roep dan `.value` aan op het leaf-node:
|
|
414
|
+
>
|
|
415
|
+
> ```typescript
|
|
416
|
+
> html`<img alt=${content.viteLogo.value} />`;
|
|
417
|
+
> ```
|
|
418
|
+
|
|
419
|
+
### (Optioneel) Stap 7: De taal van je inhoud wijzigen
|
|
420
|
+
|
|
421
|
+
Gebruik de `setLocale`-methode van de `useLocale`-controller om de taal van je inhoud te wijzigen.
|
|
422
|
+
|
|
423
|
+
```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
|
|
424
|
+
import { LitElement, html } from "lit";
|
|
425
|
+
import { customElement } from "lit/decorators.js";
|
|
426
|
+
import { getLocaleName } from "intlayer";
|
|
427
|
+
import { useLocale } from "lit-intlayer";
|
|
428
|
+
|
|
429
|
+
@customElement("locale-switcher")
|
|
430
|
+
export class LocaleSwitcher extends LitElement {
|
|
431
|
+
private locale = useLocale(this);
|
|
432
|
+
|
|
433
|
+
private _onChange(e: Event) {
|
|
434
|
+
const select = e.target as HTMLSelectElement;
|
|
435
|
+
this.locale.setLocale(select.value as any);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
override render() {
|
|
439
|
+
return html`
|
|
440
|
+
<select @change=${this._onChange}>
|
|
441
|
+
${this.locale.availableLocales.map(
|
|
442
|
+
(loc) => html`
|
|
443
|
+
<option value=${loc} ?selected=${loc === this.locale.locale}>
|
|
444
|
+
${getLocaleName(loc)}
|
|
445
|
+
</option>
|
|
446
|
+
`
|
|
447
|
+
)}
|
|
448
|
+
</select>
|
|
449
|
+
`;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### (Optioneel) Stap 8: Markdown- en HTML-inhoud renderen
|
|
455
|
+
|
|
456
|
+
Intlayer ondersteunt `md()` en `html()` inhoudsdeclaraties. In Lit wordt de gecompileerde output geïnjecteerd als ruwe HTML via de `unsafeHTML`-richtlijn.
|
|
457
|
+
|
|
458
|
+
```typescript fileName="src/app.content.ts" contentDeclarationFormat="typescript"
|
|
459
|
+
import { md, t, type Dictionary } from "intlayer";
|
|
460
|
+
|
|
461
|
+
const appContent = {
|
|
462
|
+
key: "app",
|
|
463
|
+
content: {
|
|
464
|
+
// ...
|
|
465
|
+
editNote: md(
|
|
466
|
+
t({
|
|
467
|
+
en: "Edit `src/my-element.ts` and save to test **HMR**",
|
|
468
|
+
fr: "Modifiez `src/my-element.ts` et enregistrez pour tester **HMR**",
|
|
469
|
+
es: "Edite `src/my-element.ts` y guarde para probar **HMR**",
|
|
470
|
+
})
|
|
471
|
+
),
|
|
472
|
+
},
|
|
473
|
+
} satisfies Dictionary;
|
|
474
|
+
|
|
475
|
+
export default appContent;
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
Render de gecompileerde HTML in je element:
|
|
479
|
+
|
|
480
|
+
```typescript fileName="src/my-element.ts" codeFormat="typescript"
|
|
481
|
+
import { LitElement, html } from "lit";
|
|
482
|
+
import { customElement } from "lit/decorators.js";
|
|
483
|
+
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
484
|
+
import { useIntlayer } from "lit-intlayer";
|
|
485
|
+
import { compileMarkdown } from "lit-intlayer/markdown";
|
|
486
|
+
|
|
487
|
+
@customElement("my-element")
|
|
488
|
+
export class MyElement extends LitElement {
|
|
489
|
+
private content = useIntlayer(this, "app");
|
|
490
|
+
|
|
491
|
+
override render() {
|
|
492
|
+
return html`
|
|
493
|
+
<div class="edit-note">
|
|
494
|
+
${unsafeHTML(compileMarkdown(String(this.content.editNote)))}
|
|
495
|
+
</div>
|
|
496
|
+
`;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
> [!TIP]
|
|
502
|
+
> `String(content.editNote)` roept `toString()` aan op de `IntlayerNode`, wat de ruwe Markdown-string retourneert. Geef deze door aan `compileMarkdown` om een HTML-string te krijgen, en render deze vervolgens met de `unsafeHTML`-richtlijn van Lit.
|
|
503
|
+
|
|
504
|
+
### (Optioneel) Stap 9: Gelokaliseerde routing toevoegen aan je applicatie
|
|
505
|
+
|
|
506
|
+
Om unieke routes voor elke taal te maken (nuttig voor SEO), kun je een client-side router gebruiken samen met Intlayer's `localeMap` / `localeFlatMap` helpers, en de `intlayerProxy` Vite-plugin voor taaldetectie aan de serverzijde.
|
|
507
|
+
|
|
508
|
+
Voeg eerst `intlayerProxy` toe aan je Vite-configuratie:
|
|
509
|
+
|
|
510
|
+
> Let op: om `intlayerProxy` in productie te gebruiken, moet je `vite-intlayer` verplaatsen van `devDependencies` naar `dependencies`.
|
|
511
|
+
|
|
512
|
+
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
513
|
+
import { defineConfig } from "vite";
|
|
514
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
515
|
+
|
|
516
|
+
export default defineConfig({
|
|
517
|
+
plugins: [intlayer(), intlayerProxy()],
|
|
518
|
+
});
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
522
|
+
import { defineConfig } from "vite";
|
|
523
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
524
|
+
|
|
525
|
+
export default defineConfig({
|
|
526
|
+
plugins: [intlayer(), intlayerProxy()],
|
|
527
|
+
});
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
531
|
+
const { defineConfig } = require("vite");
|
|
532
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
533
|
+
|
|
534
|
+
module.exports = defineConfig({
|
|
535
|
+
plugins: [intlayer(), intlayerProxy()],
|
|
536
|
+
});
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
### (Optioneel) Stap 10: De URL wijzigen wanneer de taal verandert
|
|
540
|
+
|
|
541
|
+
Gebruik `useRewriteURL` samen met de taalschakelaar om de browser-URL bij te werken wanneer de taal verandert:
|
|
542
|
+
|
|
543
|
+
```typescript fileName="src/locale-switcher.ts" codeFormat="typescript"
|
|
544
|
+
import { LitElement, html } from "lit";
|
|
545
|
+
import { customElement } from "lit/decorators.js";
|
|
546
|
+
import { getLocaleName, getLocalizedUrl } from "intlayer";
|
|
547
|
+
import { useLocale, useRewriteURL } from "lit-intlayer";
|
|
548
|
+
|
|
549
|
+
@customElement("locale-switcher")
|
|
550
|
+
export class LocaleSwitcher extends LitElement {
|
|
551
|
+
private locale = useLocale(this);
|
|
552
|
+
|
|
553
|
+
// Schrijft de huidige URL automatisch opnieuw wanneer de taal verandert.
|
|
554
|
+
private _rewriteURL = useRewriteURL(this);
|
|
555
|
+
|
|
556
|
+
private _onChange(e: Event) {
|
|
557
|
+
const select = e.target as HTMLSelectElement;
|
|
558
|
+
this.locale.setLocale(select.value as any);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
override render() {
|
|
562
|
+
return html`
|
|
563
|
+
<select @change=${this._onChange}>
|
|
564
|
+
${this.locale.availableLocales.map(
|
|
565
|
+
(loc) => html`
|
|
566
|
+
<option value=${loc} ?selected=${loc === this.locale.locale}>
|
|
567
|
+
${getLocaleName(loc)}
|
|
568
|
+
</option>
|
|
569
|
+
`
|
|
570
|
+
)}
|
|
571
|
+
</select>
|
|
572
|
+
`;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
### (Optioneel) Stap 11: De HTML taal- en richtingsattributen omschakelen
|
|
578
|
+
|
|
579
|
+
Werk de `lang`- en `dir`-attributen van de `<html>`-tag bij zodat deze overeenkomen met de huidige taal voor toegankelijkheid en SEO.
|
|
580
|
+
|
|
581
|
+
```typescript fileName="src/my-element.ts" codeFormat="typescript"
|
|
582
|
+
import { LitElement, html } from "lit";
|
|
583
|
+
import { customElement } from "lit/decorators.js";
|
|
584
|
+
import { getHTMLTextDir } from "intlayer";
|
|
585
|
+
import { useLocale } from "lit-intlayer";
|
|
586
|
+
|
|
587
|
+
@customElement("my-element")
|
|
588
|
+
export class MyElement extends LitElement {
|
|
589
|
+
private locale = useLocale(this, {
|
|
590
|
+
onLocaleChange: (loc) => {
|
|
591
|
+
document.documentElement.lang = loc;
|
|
592
|
+
document.documentElement.dir = getHTMLTextDir(loc);
|
|
593
|
+
},
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
override render() {
|
|
597
|
+
return html`<!-- je inhoud -->`;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
### (Optioneel) Stap 12: De inhoud van je componenten extraheren
|
|
603
|
+
|
|
604
|
+
Als je een bestaande codebase hebt, kan het transformeren van duizenden bestanden tijdrovend zijn.
|
|
605
|
+
|
|
606
|
+
Om dit proces te vergemakkelijken, stelt Intlayer een [compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/compiler.md) / [extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/cli/extract.md) voor om je componenten te transformeren en de inhoud te extraheren.
|
|
607
|
+
|
|
608
|
+
Om dit in te stellen, kun je een `compiler`-sectie toevoegen aan je `intlayer.config.ts`-bestand:
|
|
609
|
+
|
|
610
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
611
|
+
import { type IntlayerConfig } from "intlayer";
|
|
612
|
+
|
|
613
|
+
const config: IntlayerConfig = {
|
|
614
|
+
// ... De rest van je configuratie
|
|
615
|
+
compiler: {
|
|
616
|
+
/**
|
|
617
|
+
* Geeft aan of de compiler moet worden ingeschakeld.
|
|
618
|
+
*/
|
|
619
|
+
enabled: true,
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* Definieert het pad voor de outputbestanden
|
|
623
|
+
*/
|
|
624
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Geeft aan of de componenten moeten worden opgeslagen nadat ze zijn getransformeerd.
|
|
628
|
+
* Op die manier hoeft de compiler slechts één keer te worden uitgevoerd om de app te transformeren, en kan deze daarna worden verwijderd.
|
|
629
|
+
*/
|
|
630
|
+
saveComponents: false,
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Voorvoegsel voor woordenboektoetsen
|
|
634
|
+
*/
|
|
635
|
+
dictionaryKeyPrefix: "",
|
|
636
|
+
},
|
|
637
|
+
};
|
|
638
|
+
|
|
639
|
+
export default config;
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
### TypeScript configureren
|
|
643
|
+
|
|
644
|
+
Zorg ervoor dat je TypeScript-configuratie de automatisch gegenereerde typen bevat.
|
|
645
|
+
|
|
646
|
+
```json5 fileName="tsconfig.json"
|
|
647
|
+
{
|
|
648
|
+
"compilerOptions": {
|
|
649
|
+
// ...
|
|
650
|
+
"experimentalDecorators": true,
|
|
651
|
+
"useDefineForClassFields": false,
|
|
652
|
+
},
|
|
653
|
+
"include": ["src", ".intlayer/**/*.ts"],
|
|
654
|
+
}
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
> `experimentalDecorators` en `useDefineForClassFields: false` zijn vereist door Lit voor decoratorondersteuning.
|
|
658
|
+
|
|
659
|
+
### Git-configuratie
|
|
660
|
+
|
|
661
|
+
Het wordt aanbevolen om de door Intlayer gegenereerde bestanden te negeren. Hierdoor voorkom je dat je ze naar je Git-repository commit.
|
|
662
|
+
|
|
663
|
+
Om dit te doen, kun je de volgende instructies toevoegen aan je `.gitignore`-bestand:
|
|
664
|
+
|
|
665
|
+
```bash
|
|
666
|
+
# De door Intlayer gegenereerde bestanden negeren
|
|
667
|
+
.intlayer
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
### VS Code-extensie
|
|
671
|
+
|
|
672
|
+
Om je ontwikkelervaring met Intlayer te verbeteren, kun je de officiële **Intlayer VS Code Extension** installeren.
|
|
673
|
+
|
|
674
|
+
[Installeren vanuit de VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
675
|
+
|
|
676
|
+
Deze extensie biedt:
|
|
677
|
+
|
|
678
|
+
- **Automatische aanvulling** voor vertaalsleutels.
|
|
679
|
+
- **Real-time foutdetectie** voor ontbrekende vertalingen.
|
|
680
|
+
- **Inline voorvertoningen** van vertaalde inhoud.
|
|
681
|
+
- **Snelle acties** om eenvoudig vertalingen te maken en bij te werken.
|
|
682
|
+
|
|
683
|
+
Raadpleeg de [documentatie van de Intlayer VS Code-extensie](https://intlayer.org/doc/vs-code-extension) voor meer details over het gebruik van de extensie.
|
|
684
|
+
|
|
685
|
+
---
|
|
686
|
+
|
|
687
|
+
### Verder gaan
|
|
688
|
+
|
|
689
|
+
Om verder te gaan, kun je de [visuele editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_visual_editor.md) implementeren of je inhoud externaliseren met behulp van het [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_CMS.md).
|