@intlayer/docs 8.4.9 → 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 +8 -8
- 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 - Comment traduire une application Lit en 2026
|
|
5
|
+
description: Découvrez comment rendre votre site web Vite et Lit multilingue. Suivez la documentation pour l'internationaliser (i18n) et le traduire.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalisation
|
|
8
|
+
- Documentation
|
|
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
|
+
# Traduisez votre site web Vite et Lit en utilisant Intlayer | Internationalisation (i18n)
|
|
26
|
+
|
|
27
|
+
## Table des matières
|
|
28
|
+
|
|
29
|
+
<TOC/>
|
|
30
|
+
|
|
31
|
+
## Qu'est-ce qu'Intlayer ?
|
|
32
|
+
|
|
33
|
+
**Intlayer** est une bibliothèque d'internationalisation (i18n) innovante et open-source conçue pour simplifier le support multilingue dans les applications web modernes.
|
|
34
|
+
|
|
35
|
+
Avec Intlayer, vous pouvez :
|
|
36
|
+
|
|
37
|
+
- **Gérer facilement les traductions** en utilisant des dictionnaires déclaratifs au niveau des composants.
|
|
38
|
+
- **Localiser dynamiquement les métadonnées**, les routes et le contenu.
|
|
39
|
+
- **Assurer le support TypeScript** avec des types autogénérés, améliorant l'autocomplétion et la détection d'erreurs.
|
|
40
|
+
- **Bénéficier de fonctionnalités avancées**, comme la détection et le changement dynamique de langue.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Guide étape par étape pour configurer Intlayer dans une application Vite et Lit
|
|
45
|
+
|
|
46
|
+
### Étape 1 : Installer les dépendances
|
|
47
|
+
|
|
48
|
+
Installez les paquets nécessaires en utilisant 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
|
+
Le paquet principal qui fournit des outils d'internationalisation pour la gestion de la configuration, la traduction, la [déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/content_file.md), la transpilation et les [commandes CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/index.md).
|
|
77
|
+
|
|
78
|
+
- **lit-intlayer**
|
|
79
|
+
Le paquet qui intègre Intlayer aux applications Lit. Il fournit des hooks basés sur `ReactiveController` (`useIntlayer`, `useLocale`, etc.) pour que les LitElements se re-rendent automatiquement lorsque la langue change.
|
|
80
|
+
|
|
81
|
+
- **vite-intlayer**
|
|
82
|
+
Comprend le plugin Vite pour intégrer Intlayer avec le [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), ainsi qu'un middleware pour détecter la langue préférée de l'utilisateur, gérer les cookies et gérer la redirection d'URL.
|
|
83
|
+
|
|
84
|
+
### Étape 2 : Configuration de votre projet
|
|
85
|
+
|
|
86
|
+
Créez un fichier de configuration pour configurer les langues de votre application :
|
|
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
|
+
// Vos autres langues
|
|
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
|
+
// Vos autres langues
|
|
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
|
+
// Vos autres langues
|
|
136
|
+
],
|
|
137
|
+
defaultLocale: Locales.ENGLISH,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
module.exports = config;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
> Via ce fichier de configuration, vous pouvez configurer les URL localisées, la redirection du middleware, les noms des cookies, l'emplacement et l'extension de vos déclarations de contenu, désactiver les logs Intlayer dans la console, et plus encore. Pour une liste complète des paramètres disponibles, reportez-vous à la [documentation de configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md).
|
|
145
|
+
|
|
146
|
+
### Étape 3 : Intégrer Intlayer dans votre configuration Vite
|
|
147
|
+
|
|
148
|
+
Ajoutez le plugin intlayer dans votre configuration.
|
|
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
|
+
> Le plugin Vite `intlayer()` est utilisé pour intégrer Intlayer avec Vite. Il assure la construction des fichiers de déclaration de contenu et les surveille en mode développement. Il définit les variables d'environnement Intlayer dans l'application Vite. De plus, il fournit des alias pour optimiser les performances.
|
|
181
|
+
|
|
182
|
+
### Étape 4 : Initialiser Intlayer dans votre point d'entrée
|
|
183
|
+
|
|
184
|
+
Appelez `installIntlayer()` **avant** que les éléments personnalisés ne soient enregistrés pour que le singleton global de langue soit prêt lorsque le premier élément se connecte.
|
|
185
|
+
|
|
186
|
+
```typescript fileName="src/main.ts" codeFormat="typescript"
|
|
187
|
+
import { installIntlayer } from "lit-intlayer";
|
|
188
|
+
|
|
189
|
+
// Doit être appelé avant qu'un LitElement ne soit connecté au DOM.
|
|
190
|
+
installIntlayer();
|
|
191
|
+
|
|
192
|
+
// Importez et enregistrez vos éléments personnalisés.
|
|
193
|
+
import "./my-element.js";
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Si vous utilisez également des déclarations de contenu `md()` (Markdown), installez également le moteur de rendu 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
|
+
### Étape 5 : Déclarer votre contenu
|
|
208
|
+
|
|
209
|
+
Créez et gérez vos déclarations de contenu pour stocker les traductions :
|
|
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
|
+
> Vos déclarations de contenu peuvent être définies n'importe où dans votre application dès qu'elles sont incluses dans le répertoire `contentDir` (par défaut, `./src`) et correspondent à l'extension du fichier de déclaration de contenu (par défaut, `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
|
|
364
|
+
>
|
|
365
|
+
> Pour plus de détails, reportez-vous à la [documentation sur la déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/content_file.md).
|
|
366
|
+
|
|
367
|
+
### Étape 6 : Utiliser Intlayer dans votre LitElement
|
|
368
|
+
|
|
369
|
+
Utilisez `useIntlayer` à l'intérieur d'un `LitElement`. Il renvoie un proxy `ReactiveController` qui déclenche automatiquement des re-rendus dès que la langue active change — aucune configuration supplémentaire n'est requise.
|
|
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 s'enregistre en tant que ReactiveController.
|
|
382
|
+
// L'élément se re-rend automatiquement lorsque la langue change.
|
|
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
|
+
> Lorsque vous avez besoin de la chaîne traduite dans un attribut HTML natif (ex: `alt`, `aria-label`, `title`), appelez `.value` sur le nœud terminal :
|
|
406
|
+
>
|
|
407
|
+
> ```typescript
|
|
408
|
+
> html`<img alt=${content.viteLogo.value} />`;
|
|
409
|
+
> ```
|
|
410
|
+
|
|
411
|
+
### (Optionnel) Étape 7 : Changer la langue de votre contenu
|
|
412
|
+
|
|
413
|
+
Pour changer la langue de votre contenu, utilisez la méthode `setLocale` exposée par le contrôleur `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
|
+
### (Optionnel) Étape 8 : Rendre du contenu Markdown et HTML
|
|
447
|
+
|
|
448
|
+
Intlayer prend en charge les déclarations de contenu `md()` et `html()`. Dans Lit, le résultat compilé est injecté en tant que HTML brut via la directive `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
|
+
Rendez le HTML compilé dans votre élément :
|
|
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)` appelle `toString()` sur l'`IntlayerNode`, qui renvoie la chaîne Markdown brute. Passez-la à `compileMarkdown` pour obtenir une chaîne HTML, puis rendez-la avec la directive `unsafeHTML` de Lit.
|
|
495
|
+
|
|
496
|
+
### (Optionnel) Étape 9 : Ajouter le routage localisé à votre application
|
|
497
|
+
|
|
498
|
+
Pour créer des routes uniques pour chaque langue (utile pour le SEO), vous pouvez utiliser un routeur côté client aux côtés des helpers `localeMap` / `localeFlatMap` d'Intlayer, et le plugin Vite `intlayerProxy` pour la détection de la langue côté serveur.
|
|
499
|
+
|
|
500
|
+
Tout d'abord, ajoutez `intlayerProxy` à votre configuration Vite :
|
|
501
|
+
|
|
502
|
+
> Notez que pour utiliser `intlayerProxy` en production, vous devez déplacer `vite-intlayer` de `devDependencies` vers `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
|
+
### (Optionnel) Étape 10 : Changer l'URL lorsque la langue change
|
|
541
|
+
|
|
542
|
+
Pour mettre à jour l'URL du navigateur lorsque la langue change, utilisez `useRewriteURL` aux côtés du sélecteur de langue :
|
|
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
|
+
// Réécrit automatiquement l'URL actuelle lorsque la langue change.
|
|
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
|
+
### (Optionnel) Étape 11 : Changer les attributs de langue et de direction HTML
|
|
579
|
+
|
|
580
|
+
Mettez à jour les attributs `lang` et `dir` de la balise `<html>` pour qu'ils correspondent à la langue actuelle pour l'accessibilité et le 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`<!-- votre contenu -->`;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
### (Optionnel) Étape 12 : Extraire le contenu de vos composants
|
|
604
|
+
|
|
605
|
+
Si vous avez une base de code existante, transformer des milliers de fichiers peut prendre du temps.
|
|
606
|
+
|
|
607
|
+
Pour faciliter ce processus, Intlayer propose un [compilateur](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/compiler.md) / [extracteur](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/cli/extract.md) pour transformer vos composants et extraire le contenu.
|
|
608
|
+
|
|
609
|
+
Pour le configurer, vous pouvez ajouter une section `compiler` dans votre fichier `intlayer.config.ts` :
|
|
610
|
+
|
|
611
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
612
|
+
import { type IntlayerConfig } from "intlayer";
|
|
613
|
+
|
|
614
|
+
const config: IntlayerConfig = {
|
|
615
|
+
// ... Reste de votre config
|
|
616
|
+
compiler: {
|
|
617
|
+
/**
|
|
618
|
+
* Indique si le compilateur doit être activé.
|
|
619
|
+
*/
|
|
620
|
+
enabled: true,
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* Définit le chemin des fichiers de sortie
|
|
624
|
+
*/
|
|
625
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Indique si les composants doivent être sauvegardés après avoir été transformés.
|
|
629
|
+
* De cette façon, le compilateur peut être exécuté une seule fois pour transformer l'application, puis il peut être supprimé.
|
|
630
|
+
*/
|
|
631
|
+
saveComponents: false,
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Préfixe de clé de dictionnaire
|
|
635
|
+
*/
|
|
636
|
+
dictionaryKeyPrefix: "",
|
|
637
|
+
},
|
|
638
|
+
};
|
|
639
|
+
|
|
640
|
+
export default config;
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
<Tabs>
|
|
644
|
+
<Tab value='Commande Extract'>
|
|
645
|
+
|
|
646
|
+
Exécutez l'extracteur pour transformer vos composants et extraire le contenu
|
|
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='Compilateur Babel'>
|
|
666
|
+
|
|
667
|
+
Mettez à jour votre `vite.config.ts` pour inclure le 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(), // Ajoute le plugin compilateur
|
|
677
|
+
],
|
|
678
|
+
});
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
```bash packageManager="npm"
|
|
682
|
+
npm run build # Ou npm run dev
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
```bash packageManager="pnpm"
|
|
686
|
+
pnpm run build # Ou pnpm run dev
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
```bash packageManager="yarn"
|
|
690
|
+
yarn build # Ou yarn dev
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
```bash packageManager="bun"
|
|
694
|
+
bun run build # Ou bun run dev
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
</Tab>
|
|
698
|
+
</Tabs>
|
|
699
|
+
|
|
700
|
+
### Configurer TypeScript
|
|
701
|
+
|
|
702
|
+
Assurez-vous que votre configuration TypeScript inclut les types autogénérés.
|
|
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` et `useDefineForClassFields: false` sont requis par Lit pour le support des décorateurs.
|
|
716
|
+
|
|
717
|
+
### Configuration Git
|
|
718
|
+
|
|
719
|
+
Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les commettre dans votre dépôt Git.
|
|
720
|
+
|
|
721
|
+
Pour ce faire, vous pouvez ajouter les instructions suivantes à votre fichier `.gitignore` :
|
|
722
|
+
|
|
723
|
+
```bash
|
|
724
|
+
# Ignorez les fichiers générés par Intlayer
|
|
725
|
+
.intlayer
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
### Extension VS Code
|
|
729
|
+
|
|
730
|
+
Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l'**extension officielle Intlayer VS Code**.
|
|
731
|
+
|
|
732
|
+
[Installer depuis le VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
733
|
+
|
|
734
|
+
Cette extension fournit :
|
|
735
|
+
|
|
736
|
+
- **L'autocomplétion** pour les clés de traduction.
|
|
737
|
+
- **La détection d'erreurs en temps réel** pour les traductions manquantes.
|
|
738
|
+
- **Des aperçus en ligne** du contenu traduit.
|
|
739
|
+
- **Des actions rapides** pour créer et mettre à jour facilement les traductions.
|
|
740
|
+
|
|
741
|
+
Pour plus de détails sur l'utilisation de l'extension, reportez-vous à la [documentation de l'extension Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
745
|
+
### Aller plus loin
|
|
746
|
+
|
|
747
|
+
Pour aller plus loin, vous pouvez implémenter l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) ou externaliser votre contenu en utilisant le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md).
|