@intlayer/docs 8.4.10 → 8.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generated/docs.entry.cjs +40 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +40 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/dictionary/html.md +22 -22
- package/docs/ar/dictionary/markdown.md +18 -18
- package/docs/ar/intlayer_with_analog.md +2 -13
- package/docs/ar/intlayer_with_angular.md +1 -12
- package/docs/ar/intlayer_with_nextjs_14.md +1 -1
- package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7.md +6 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ar/intlayer_with_storybook.md +2 -5
- package/docs/ar/intlayer_with_svelte_kit.md +9 -5
- package/docs/ar/intlayer_with_vite+lit.md +738 -0
- package/docs/ar/intlayer_with_vite+react.md +16 -4
- package/docs/ar/intlayer_with_vite+solid.md +1 -1
- package/docs/ar/intlayer_with_vite+svelte.md +13 -6
- package/docs/ar/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ar/intlayer_with_vite+vue.md +21 -5
- package/docs/ar/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ar/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ar/releases/v8.md +27 -27
- package/docs/bn/intlayer_with_storybook.md +2 -5
- package/docs/bn/intlayer_with_vite+lit.md +738 -0
- package/docs/bn/intlayer_with_vite+vanilla.md +722 -0
- package/docs/cs/intlayer_with_storybook.md +2 -5
- package/docs/cs/intlayer_with_vite+lit.md +738 -0
- package/docs/cs/intlayer_with_vite+vanilla.md +722 -0
- package/docs/de/dictionary/html.md +146 -24
- package/docs/de/dictionary/markdown.md +143 -25
- package/docs/de/intlayer_with_analog.md +2 -13
- package/docs/de/intlayer_with_angular.md +1 -12
- package/docs/de/intlayer_with_nextjs_14.md +1 -1
- package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/de/intlayer_with_react_router_v7.md +6 -1
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/de/intlayer_with_storybook.md +2 -5
- package/docs/de/intlayer_with_svelte_kit.md +9 -5
- package/docs/de/intlayer_with_vite+lit.md +747 -0
- package/docs/de/intlayer_with_vite+react.md +16 -4
- package/docs/de/intlayer_with_vite+solid.md +1 -1
- package/docs/de/intlayer_with_vite+svelte.md +19 -6
- package/docs/de/intlayer_with_vite+vanilla.md +722 -0
- package/docs/de/intlayer_with_vite+vue.md +21 -5
- package/docs/de/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/de/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/de/releases/v8.md +27 -27
- package/docs/en/compiler.md +4 -1
- package/docs/en/configuration.md +4 -1
- package/docs/en/dictionary/html.md +146 -24
- package/docs/en/dictionary/markdown.md +143 -21
- package/docs/en/intlayer_with_analog.md +3 -14
- package/docs/en/intlayer_with_angular.md +1 -12
- package/docs/en/intlayer_with_nextjs_14.md +1 -1
- package/docs/en/intlayer_with_nextjs_16.md +12 -3
- package/docs/en/intlayer_with_nextjs_compiler.md +16 -4
- package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en/intlayer_with_react_router_v7.md +17 -4
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +18 -4
- package/docs/en/intlayer_with_storybook.md +2 -5
- package/docs/en/intlayer_with_svelte_kit.md +21 -8
- package/docs/en/intlayer_with_tanstack.md +12 -3
- package/docs/en/intlayer_with_vite+lit.md +750 -0
- package/docs/en/intlayer_with_vite+preact.md +31 -3
- package/docs/en/intlayer_with_vite+react.md +28 -7
- package/docs/en/intlayer_with_vite+react_compiler.md +4 -1
- package/docs/en/intlayer_with_vite+solid.md +31 -3
- package/docs/en/intlayer_with_vite+svelte.md +30 -9
- package/docs/en/intlayer_with_vite+vanilla.md +725 -0
- package/docs/en/intlayer_with_vite+vue.md +28 -7
- package/docs/en/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/en/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/en/readme.md +1 -0
- package/docs/en/releases/v8.md +27 -27
- package/docs/en-GB/compiler.md +4 -1
- package/docs/en-GB/configuration.md +4 -1
- package/docs/en-GB/dictionary/html.md +22 -22
- package/docs/en-GB/dictionary/markdown.md +18 -18
- package/docs/en-GB/intlayer_with_analog.md +2 -13
- package/docs/en-GB/intlayer_with_angular.md +1 -12
- package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en-GB/intlayer_with_react_router_v7.md +6 -1
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/en-GB/intlayer_with_storybook.md +2 -5
- package/docs/en-GB/intlayer_with_svelte_kit.md +9 -5
- package/docs/en-GB/intlayer_with_vite+lit.md +750 -0
- package/docs/en-GB/intlayer_with_vite+react.md +15 -3
- package/docs/en-GB/intlayer_with_vite+solid.md +1 -1
- package/docs/en-GB/intlayer_with_vite+svelte.md +17 -5
- package/docs/en-GB/intlayer_with_vite+vanilla.md +725 -0
- package/docs/en-GB/intlayer_with_vite+vue.md +16 -4
- package/docs/en-GB/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/en-GB/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/en-GB/releases/v8.md +27 -27
- package/docs/es/dictionary/html.md +147 -25
- package/docs/es/dictionary/markdown.md +143 -25
- package/docs/es/intlayer_with_analog.md +2 -13
- package/docs/es/intlayer_with_angular.md +1 -12
- package/docs/es/intlayer_with_nextjs_14.md +1 -1
- package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +6 -1
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/es/intlayer_with_storybook.md +2 -5
- package/docs/es/intlayer_with_svelte_kit.md +9 -5
- package/docs/es/intlayer_with_vite+lit.md +747 -0
- package/docs/es/intlayer_with_vite+react.md +16 -4
- package/docs/es/intlayer_with_vite+solid.md +1 -1
- package/docs/es/intlayer_with_vite+svelte.md +16 -6
- package/docs/es/intlayer_with_vite+vanilla.md +722 -0
- package/docs/es/intlayer_with_vite+vue.md +21 -5
- package/docs/es/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/es/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/es/releases/v8.md +27 -27
- package/docs/fr/dictionary/html.md +146 -24
- package/docs/fr/dictionary/markdown.md +143 -25
- package/docs/fr/intlayer_with_analog.md +2 -13
- package/docs/fr/intlayer_with_angular.md +1 -12
- package/docs/fr/intlayer_with_nextjs_14.md +1 -1
- package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/fr/intlayer_with_react_router_v7.md +6 -1
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/fr/intlayer_with_storybook.md +2 -5
- package/docs/fr/intlayer_with_svelte_kit.md +9 -5
- package/docs/fr/intlayer_with_vite+lit.md +747 -0
- package/docs/fr/intlayer_with_vite+react.md +16 -4
- package/docs/fr/intlayer_with_vite+solid.md +1 -1
- package/docs/fr/intlayer_with_vite+svelte.md +19 -6
- package/docs/fr/intlayer_with_vite+vanilla.md +722 -0
- package/docs/fr/intlayer_with_vite+vue.md +21 -5
- package/docs/fr/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/fr/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/fr/releases/v8.md +27 -27
- package/docs/hi/dictionary/html.md +22 -22
- package/docs/hi/dictionary/markdown.md +18 -18
- package/docs/hi/intlayer_with_analog.md +2 -13
- package/docs/hi/intlayer_with_angular.md +1 -12
- package/docs/hi/intlayer_with_nextjs_14.md +1 -1
- package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7.md +6 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/hi/intlayer_with_storybook.md +2 -5
- package/docs/hi/intlayer_with_svelte_kit.md +9 -5
- package/docs/hi/intlayer_with_vite+lit.md +738 -0
- package/docs/hi/intlayer_with_vite+react.md +16 -4
- package/docs/hi/intlayer_with_vite+solid.md +1 -1
- package/docs/hi/intlayer_with_vite+svelte.md +13 -6
- package/docs/hi/intlayer_with_vite+vanilla.md +722 -0
- package/docs/hi/intlayer_with_vite+vue.md +21 -5
- package/docs/hi/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/hi/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/hi/releases/v8.md +27 -27
- package/docs/id/dictionary/html.md +22 -22
- package/docs/id/dictionary/markdown.md +18 -18
- package/docs/id/intlayer_with_analog.md +2 -13
- package/docs/id/intlayer_with_angular.md +1 -12
- package/docs/id/intlayer_with_nextjs_14.md +1 -1
- package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/id/intlayer_with_react_router_v7.md +6 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/id/intlayer_with_storybook.md +2 -5
- package/docs/id/intlayer_with_svelte_kit.md +9 -5
- package/docs/id/intlayer_with_vite+lit.md +738 -0
- package/docs/id/intlayer_with_vite+react.md +16 -4
- package/docs/id/intlayer_with_vite+solid.md +1 -1
- package/docs/id/intlayer_with_vite+svelte.md +13 -6
- package/docs/id/intlayer_with_vite+vanilla.md +722 -0
- package/docs/id/intlayer_with_vite+vue.md +16 -4
- package/docs/id/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/id/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/id/releases/v8.md +27 -27
- package/docs/it/dictionary/html.md +146 -24
- package/docs/it/dictionary/markdown.md +143 -21
- package/docs/it/intlayer_with_analog.md +2 -13
- package/docs/it/intlayer_with_angular.md +1 -12
- package/docs/it/intlayer_with_nextjs_14.md +1 -1
- package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/it/intlayer_with_react_router_v7.md +6 -1
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/it/intlayer_with_storybook.md +2 -5
- package/docs/it/intlayer_with_svelte_kit.md +9 -5
- package/docs/it/intlayer_with_vite+lit.md +747 -0
- package/docs/it/intlayer_with_vite+react.md +16 -4
- package/docs/it/intlayer_with_vite+solid.md +1 -1
- package/docs/it/intlayer_with_vite+svelte.md +13 -6
- package/docs/it/intlayer_with_vite+vanilla.md +722 -0
- package/docs/it/intlayer_with_vite+vue.md +21 -5
- package/docs/it/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/it/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/it/releases/v8.md +27 -27
- package/docs/ja/dictionary/html.md +148 -27
- package/docs/ja/dictionary/markdown.md +139 -24
- package/docs/ja/intlayer_with_analog.md +2 -13
- package/docs/ja/intlayer_with_angular.md +1 -12
- package/docs/ja/intlayer_with_nextjs_14.md +1 -1
- package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ja/intlayer_with_react_router_v7.md +6 -1
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ja/intlayer_with_storybook.md +2 -5
- package/docs/ja/intlayer_with_vite+lit.md +747 -0
- package/docs/ja/intlayer_with_vite+solid.md +1 -1
- package/docs/ja/intlayer_with_vite+svelte.md +13 -6
- package/docs/ja/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ja/intlayer_with_vite+vue.md +21 -5
- package/docs/ja/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ja/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ja/releases/v8.md +27 -27
- package/docs/ko/dictionary/html.md +149 -28
- package/docs/ko/dictionary/markdown.md +143 -25
- package/docs/ko/intlayer_with_analog.md +2 -13
- package/docs/ko/intlayer_with_angular.md +1 -12
- package/docs/ko/intlayer_with_nextjs_14.md +1 -1
- package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ko/intlayer_with_react_router_v7.md +6 -1
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ko/intlayer_with_storybook.md +2 -5
- package/docs/ko/intlayer_with_svelte_kit.md +9 -5
- package/docs/ko/intlayer_with_vite+lit.md +747 -0
- package/docs/ko/intlayer_with_vite+react.md +16 -4
- package/docs/ko/intlayer_with_vite+solid.md +1 -1
- package/docs/ko/intlayer_with_vite+svelte.md +13 -6
- package/docs/ko/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ko/intlayer_with_vite+vue.md +21 -5
- package/docs/ko/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ko/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ko/releases/v8.md +27 -27
- package/docs/nl/intlayer_with_storybook.md +2 -5
- package/docs/nl/intlayer_with_vite+lit.md +738 -0
- package/docs/nl/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pl/dictionary/html.md +146 -24
- package/docs/pl/dictionary/markdown.md +143 -25
- package/docs/pl/intlayer_with_analog.md +2 -13
- package/docs/pl/intlayer_with_angular.md +1 -12
- package/docs/pl/intlayer_with_nextjs_14.md +1 -1
- package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pl/intlayer_with_react_router_v7.md +6 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/pl/intlayer_with_storybook.md +2 -5
- package/docs/pl/intlayer_with_svelte_kit.md +9 -5
- package/docs/pl/intlayer_with_vite+lit.md +738 -0
- package/docs/pl/intlayer_with_vite+react.md +16 -4
- package/docs/pl/intlayer_with_vite+solid.md +1 -1
- package/docs/pl/intlayer_with_vite+svelte.md +13 -6
- package/docs/pl/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pl/intlayer_with_vite+vue.md +16 -4
- package/docs/pl/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/pl/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/pl/releases/v8.md +27 -27
- package/docs/pt/dictionary/html.md +127 -24
- package/docs/pt/dictionary/markdown.md +143 -25
- package/docs/pt/intlayer_with_analog.md +2 -13
- package/docs/pt/intlayer_with_angular.md +1 -12
- package/docs/pt/intlayer_with_nextjs_14.md +1 -1
- package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pt/intlayer_with_react_router_v7.md +6 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/pt/intlayer_with_storybook.md +2 -5
- package/docs/pt/intlayer_with_svelte_kit.md +9 -5
- package/docs/pt/intlayer_with_vite+lit.md +747 -0
- package/docs/pt/intlayer_with_vite+react.md +16 -4
- package/docs/pt/intlayer_with_vite+solid.md +1 -1
- package/docs/pt/intlayer_with_vite+svelte.md +16 -6
- package/docs/pt/intlayer_with_vite+vanilla.md +722 -0
- package/docs/pt/intlayer_with_vite+vue.md +21 -5
- package/docs/pt/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/pt/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/pt/releases/v8.md +27 -27
- package/docs/ru/dictionary/html.md +148 -27
- package/docs/ru/dictionary/markdown.md +143 -23
- package/docs/ru/intlayer_with_analog.md +2 -13
- package/docs/ru/intlayer_with_angular.md +1 -12
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ru/intlayer_with_react_router_v7.md +6 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/ru/intlayer_with_storybook.md +2 -5
- package/docs/ru/intlayer_with_svelte_kit.md +9 -5
- package/docs/ru/intlayer_with_vite+lit.md +747 -0
- package/docs/ru/intlayer_with_vite+react.md +16 -4
- package/docs/ru/intlayer_with_vite+solid.md +1 -1
- package/docs/ru/intlayer_with_vite+svelte.md +13 -6
- package/docs/ru/intlayer_with_vite+vanilla.md +722 -0
- package/docs/ru/intlayer_with_vite+vue.md +21 -5
- package/docs/ru/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/ru/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/ru/releases/v8.md +27 -27
- package/docs/tr/dictionary/html.md +129 -27
- package/docs/tr/dictionary/markdown.md +143 -23
- package/docs/tr/intlayer_with_analog.md +2 -13
- package/docs/tr/intlayer_with_angular.md +1 -12
- package/docs/tr/intlayer_with_nextjs_14.md +1 -1
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_react_router_v7.md +6 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/tr/intlayer_with_storybook.md +2 -5
- package/docs/tr/intlayer_with_svelte_kit.md +9 -5
- package/docs/tr/intlayer_with_vite+lit.md +738 -0
- package/docs/tr/intlayer_with_vite+react.md +16 -4
- package/docs/tr/intlayer_with_vite+solid.md +1 -1
- package/docs/tr/intlayer_with_vite+svelte.md +13 -6
- package/docs/tr/intlayer_with_vite+vanilla.md +722 -0
- package/docs/tr/intlayer_with_vite+vue.md +16 -4
- package/docs/tr/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/tr/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/tr/releases/v8.md +27 -27
- package/docs/uk/dictionary/html.md +22 -22
- package/docs/uk/dictionary/markdown.md +18 -18
- package/docs/uk/intlayer_with_analog.md +2 -13
- package/docs/uk/intlayer_with_angular.md +1 -12
- package/docs/uk/intlayer_with_nextjs_14.md +1 -1
- package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/uk/intlayer_with_react_router_v7.md +5 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/uk/intlayer_with_storybook.md +2 -5
- package/docs/uk/intlayer_with_svelte_kit.md +9 -5
- package/docs/uk/intlayer_with_vite+lit.md +738 -0
- package/docs/uk/intlayer_with_vite+react.md +16 -4
- package/docs/uk/intlayer_with_vite+solid.md +1 -1
- package/docs/uk/intlayer_with_vite+svelte.md +18 -6
- package/docs/uk/intlayer_with_vite+vanilla.md +722 -0
- package/docs/uk/intlayer_with_vite+vue.md +16 -4
- package/docs/uk/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/uk/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/uk/releases/v8.md +27 -27
- package/docs/ur/intlayer_with_storybook.md +2 -5
- package/docs/ur/intlayer_with_vite+lit.md +738 -0
- package/docs/ur/intlayer_with_vite+vanilla.md +722 -0
- package/docs/vi/dictionary/html.md +22 -22
- package/docs/vi/dictionary/markdown.md +18 -18
- package/docs/vi/intlayer_with_analog.md +2 -13
- package/docs/vi/intlayer_with_angular.md +1 -12
- package/docs/vi/intlayer_with_nextjs_14.md +1 -1
- package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/vi/intlayer_with_react_router_v7.md +6 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/vi/intlayer_with_storybook.md +2 -5
- package/docs/vi/intlayer_with_svelte_kit.md +9 -5
- package/docs/vi/intlayer_with_vite+lit.md +738 -0
- package/docs/vi/intlayer_with_vite+react.md +16 -4
- package/docs/vi/intlayer_with_vite+solid.md +1 -1
- package/docs/vi/intlayer_with_vite+svelte.md +17 -5
- package/docs/vi/intlayer_with_vite+vanilla.md +722 -0
- package/docs/vi/intlayer_with_vite+vue.md +16 -4
- package/docs/vi/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/vi/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/vi/releases/v8.md +27 -27
- package/docs/zh/dictionary/html.md +148 -27
- package/docs/zh/dictionary/markdown.md +143 -21
- package/docs/zh/intlayer_with_analog.md +2 -13
- package/docs/zh/intlayer_with_angular.md +1 -12
- package/docs/zh/intlayer_with_nextjs_14.md +1 -1
- package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +6 -1
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +6 -1
- package/docs/zh/intlayer_with_storybook.md +2 -5
- package/docs/zh/intlayer_with_svelte_kit.md +9 -5
- package/docs/zh/intlayer_with_vite+lit.md +747 -0
- package/docs/zh/intlayer_with_vite+react.md +16 -4
- package/docs/zh/intlayer_with_vite+solid.md +1 -1
- package/docs/zh/intlayer_with_vite+svelte.md +16 -6
- package/docs/zh/intlayer_with_vite+vanilla.md +722 -0
- package/docs/zh/intlayer_with_vite+vue.md +16 -4
- package/docs/zh/packages/react-intlayer/MarkdownRenderer.md +1 -1
- package/docs/zh/packages/svelte-intlayer/useRewriteURL.md +1 -1
- package/docs/zh/releases/v8.md +27 -27
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +40 -0
|
@@ -0,0 +1,747 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-03-23
|
|
3
|
+
updatedAt: 2026-03-23
|
|
4
|
+
title: Vite + Lit i18n - 2026年にLitアプリを翻訳する方法
|
|
5
|
+
description: ViteとLitのウェブサイトを多言語化する方法をご紹介します。ドキュメントに従って国際化(i18n)と翻訳を行ってください。
|
|
6
|
+
keywords:
|
|
7
|
+
- 国際化
|
|
8
|
+
- ドキュメント
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Vite
|
|
11
|
+
- Lit
|
|
12
|
+
- Web Components
|
|
13
|
+
- JavaScript
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- environment
|
|
17
|
+
- vite-and-lit
|
|
18
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-vite-lit-template
|
|
19
|
+
history:
|
|
20
|
+
- version: 8.4.10
|
|
21
|
+
date: 2026-03-23
|
|
22
|
+
changes: "Init history"
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Intlayerを使用してViteとLitのウェブサイトを翻訳する | 国際化 (i18n)
|
|
26
|
+
|
|
27
|
+
## 目次
|
|
28
|
+
|
|
29
|
+
<TOC/>
|
|
30
|
+
|
|
31
|
+
## Intlayerとは?
|
|
32
|
+
|
|
33
|
+
**Intlayer**は、現代的なウェブアプリケーションにおける多言語サポートを簡素化するために設計された、革新的なオープンソースの国際化(i18n)ライブラリです。
|
|
34
|
+
|
|
35
|
+
Intlayerを使用すると、以下のことが可能になります:
|
|
36
|
+
|
|
37
|
+
- コンポーネントレベルの宣言型辞書を使用して**翻訳を簡単に管理**。
|
|
38
|
+
- メタデータ、ルート、コンテンツを**動的にローカライズ**。
|
|
39
|
+
- 自動生成された型による**TypeScriptサポートの確保**。これにより、自動補完やエラー検出が向上します。
|
|
40
|
+
- 動的な言語検出や切り替えなど、**高度な機能の活用**。
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## ViteとLitアプリケーションでIntlayerをセットアップするためのステップバイステップガイド
|
|
45
|
+
|
|
46
|
+
### ステップ 1: 依存関係のインストール
|
|
47
|
+
|
|
48
|
+
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
|
+
設定管理、翻訳、[コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)、トランスパイル、および[CLIコマンド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/index.md)のための国際化ツールを提供するコアパッケージです。
|
|
77
|
+
|
|
78
|
+
- **lit-intlayer**
|
|
79
|
+
IntlayerをLitアプリケーションと統合するパッケージです。`ReactiveController`ベースのフック(`useIntlayer`、`useLocale`など)を提供し、言語が変更されたときにLitElementが自動的に再レンダリングされるようにします。
|
|
80
|
+
|
|
81
|
+
- **vite-intlayer**
|
|
82
|
+
Intlayerを[Viteバンドラー](https://vite.dev/guide/why.html#why-bundle-for-production)と統合するためのViteプラグイン、およびユーザーの優先言語の検出、クッキーの管理、URLリダイレクトの処理のためのミドルウェアが含まれています。
|
|
83
|
+
|
|
84
|
+
### ステップ 2: プロジェクトの設定
|
|
85
|
+
|
|
86
|
+
アプリケーションの言語を設定するための設定ファイルを作成します:
|
|
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
|
+
// その他の言語
|
|
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
|
+
// その他の言語
|
|
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
|
+
// その他の言語
|
|
136
|
+
],
|
|
137
|
+
defaultLocale: Locales.ENGLISH,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
module.exports = config;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
> この設定ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクト、クッキー名、コンテンツ宣言の場所と拡張子、コンソールでのIntlayerログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、[設定ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)を参照してください。
|
|
145
|
+
|
|
146
|
+
### ステップ 3: Vite設定にIntlayerを統合する
|
|
147
|
+
|
|
148
|
+
Vite設定にintlayerプラグインを追加します。
|
|
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
|
+
> `intlayer()` Viteプラグインは、IntlayerをViteと統合するために使用されます。コンテンツ宣言ファイルのビルドを確実にし、開発モードでそれらを監視します。Viteアプリケーション内でIntlayer環境変数を定義します。さらに、パフォーマンスを最適化するためのエイリアスを提供します。
|
|
181
|
+
|
|
182
|
+
### ステップ 4: エントリポイントでIntlayerをブートストラップする
|
|
183
|
+
|
|
184
|
+
最初の要素が接続されるときにグローバルロケールシングルトンが準備できているように、カスタム要素が登録される**前に** `installIntlayer()` を呼び出します。
|
|
185
|
+
|
|
186
|
+
```typescript fileName="src/main.ts" codeFormat="typescript"
|
|
187
|
+
import { installIntlayer } from "lit-intlayer";
|
|
188
|
+
|
|
189
|
+
// 任意のLitElementがDOMに接続される前に呼び出す必要があります。
|
|
190
|
+
installIntlayer();
|
|
191
|
+
|
|
192
|
+
// カスタム要素をインポートして登録します。
|
|
193
|
+
import "./my-element.js";
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
`md()` コンテンツ宣言(Markdown)も使用する場合は、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
|
+
### ステップ 5: コンテンツの宣言
|
|
208
|
+
|
|
209
|
+
翻訳を保存するためのコンテンツ宣言を作成および管理します:
|
|
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
|
+
> コンテンツ宣言は、`contentDir` ディレクトリ(デフォルトは `./src`)に含まれ、コンテンツ宣言ファイルの拡張子(デフォルトは `.content.{json,ts,tsx,js,jsx,mjs,cjs}`)と一致する限り、アプリケーション内のどこにでも定義できます。
|
|
364
|
+
>
|
|
365
|
+
> 詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)を参照してください。
|
|
366
|
+
|
|
367
|
+
### ステップ 6: LitElementでIntlayerを活用する
|
|
368
|
+
|
|
369
|
+
`LitElement` 内で `useIntlayer` を使用します。これは、アクティブなロケールが変更されるたびに自動的に再レンダリングをトリガーする `ReactiveController` プロキシを返します。追加の設定は不要です。
|
|
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はReactiveControllerとして自身を登録します。
|
|
382
|
+
// 要素は言語が変更されると自動的に再レンダリングされます。
|
|
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
|
+
> ネイティブHTML属性(例:`alt`、`aria-label`、`title`)で翻訳された文字列が必要な場合は、リーフノードで `.value` を呼び出します:
|
|
406
|
+
>
|
|
407
|
+
> ```typescript
|
|
408
|
+
> html`<img alt=${content.viteLogo.value} />`;
|
|
409
|
+
> ```
|
|
410
|
+
|
|
411
|
+
### (任意) ステップ 7: コンテンツの言語を変更する
|
|
412
|
+
|
|
413
|
+
コンテンツの言語を変更するには、`useLocale` コントローラーによって公開されている `setLocale` メソッドを使用します。
|
|
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
|
+
### (任意) ステップ 8: MarkdownとHTMLコンテンツのレンダリング
|
|
447
|
+
|
|
448
|
+
Intlayerは `md()` および `html()` コンテンツ宣言をサポートしています。Litでは、コンパイルされた出力は `unsafeHTML` ディレクティブを介して生HTMLとして挿入されます。
|
|
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
|
+
コンパイルされたHTMLを要素内でレンダリングします:
|
|
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)` は、生のMarkdown文字列を返す `IntlayerNode` の `toString()` を呼び出します。それを `compileMarkdown` に渡してHTML文字列を取得し、Litの `unsafeHTML` ディレクティブでレンダリングします。
|
|
495
|
+
|
|
496
|
+
### (任意) ステップ 9: アプリケーションにローカライズされたルーティングを追加する
|
|
497
|
+
|
|
498
|
+
言語ごとに固有のルートを作成するには(SEOに有用)、クライアントサイドのルーターをIntlayerの `localeMap` / `localeFlatMap` ヘルパー、およびサーバーサイドの言語検出用の `intlayerProxy` Viteプラグインと共に使用できます。
|
|
499
|
+
|
|
500
|
+
まず、Vite設定に `intlayerProxy` を追加します:
|
|
501
|
+
|
|
502
|
+
> プロダクション環境で `intlayerProxy` を使用するには、`vite-intlayer` を `devDependencies` から `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
|
+
### (任意) ステップ 10: 言語が変更されたときにURLを変更する
|
|
541
|
+
|
|
542
|
+
言語が変更されたときにブラウザのURLを更新するには、ロケールスイッチャーと共に `useRewriteURL` を使用します:
|
|
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
|
+
// 言語が変更されたときに現在のURLを自動的に書き換えます。
|
|
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
|
+
### (任意) ステップ 11: HTMLの言語と方向属性を切り替える
|
|
579
|
+
|
|
580
|
+
アクセシビリティとSEOのために、現在の言語に合わせて `<html>` タグの `lang` および `dir` 属性を更新します。
|
|
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`<!-- コンテンツ -->`;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
### (任意) ステップ 12: コンポーネントのコンテンツを抽出する
|
|
604
|
+
|
|
605
|
+
既存のコードベースがある場合、数千ものファイルを変換するのは時間がかかる場合があります。
|
|
606
|
+
|
|
607
|
+
このプロセスを容易にするために、Intlayerはコンポーネントを変換してコンテンツを抽出するための [コンパイラ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/compiler.md) / [抽出器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/extract.md) を提案しています。
|
|
608
|
+
|
|
609
|
+
セットアップするには、`intlayer.config.ts` ファイルに `compiler` セクションを追加します:
|
|
610
|
+
|
|
611
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
612
|
+
import { type IntlayerConfig } from "intlayer";
|
|
613
|
+
|
|
614
|
+
const config: IntlayerConfig = {
|
|
615
|
+
// ... その他の設定
|
|
616
|
+
compiler: {
|
|
617
|
+
/**
|
|
618
|
+
* コンパイラを有効にするかどうかを指定します。
|
|
619
|
+
*/
|
|
620
|
+
enabled: true,
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* 出力ファイルのパスを定義します
|
|
624
|
+
*/
|
|
625
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* コンポーネントを変換した後に保存するかどうかを指定します。
|
|
629
|
+
* これにより、コンパイラを一度だけ実行してアプリを変換し、その後削除することができます。
|
|
630
|
+
*/
|
|
631
|
+
saveComponents: false,
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* 辞書キーのプレフィックス
|
|
635
|
+
*/
|
|
636
|
+
dictionaryKeyPrefix: "",
|
|
637
|
+
},
|
|
638
|
+
};
|
|
639
|
+
|
|
640
|
+
export default config;
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
<Tabs>
|
|
644
|
+
<Tab value='抽出コマンド'>
|
|
645
|
+
|
|
646
|
+
抽出器を実行してコンポーネントを変換し、コンテンツを抽出します
|
|
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='Babelコンパイラ'>
|
|
666
|
+
|
|
667
|
+
`vite.config.ts` を更新して `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(), // コンパイラプラグインを追加
|
|
677
|
+
],
|
|
678
|
+
});
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
```bash packageManager="npm"
|
|
682
|
+
npm run build # または npm run dev
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
```bash packageManager="pnpm"
|
|
686
|
+
pnpm run build # または pnpm run dev
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
```bash packageManager="yarn"
|
|
690
|
+
yarn build # または yarn dev
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
```bash packageManager="bun"
|
|
694
|
+
bun run build # または bun run dev
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
</Tab>
|
|
698
|
+
</Tabs>
|
|
699
|
+
|
|
700
|
+
### TypeScriptの設定
|
|
701
|
+
|
|
702
|
+
TypeScriptの設定に自動生成された型が含まれていることを確認してください。
|
|
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` と `useDefineForClassFields: false` は、Litのデコレーターサポートに必要です。
|
|
716
|
+
|
|
717
|
+
### Gitの設定
|
|
718
|
+
|
|
719
|
+
Intlayerによって生成されたファイルは無視することをお勧めします。これにより、それらをGitリポジトリにコミットすることを避けることができます。
|
|
720
|
+
|
|
721
|
+
これを行うには、`.gitignore` ファイルに以下の指示を追加します:
|
|
722
|
+
|
|
723
|
+
```bash
|
|
724
|
+
# Intlayerによって生成されたファイルを無視
|
|
725
|
+
.intlayer
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
### VS Code拡張機能
|
|
729
|
+
|
|
730
|
+
Intlayerでの開発体験を向上させるために、公式の **Intlayer VS Code Extension** をインストールできます。
|
|
731
|
+
|
|
732
|
+
[VS Code Marketplaceからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
733
|
+
|
|
734
|
+
この拡張機能は以下を提供します:
|
|
735
|
+
|
|
736
|
+
- 翻訳キーの**自動補完**。
|
|
737
|
+
- 翻訳漏れの**リアルタイムなエラー検出**。
|
|
738
|
+
- 翻訳されたコンテンツの**インラインプレビュー**。
|
|
739
|
+
- 翻訳を簡単に作成および更新できる**クイックアクション**。
|
|
740
|
+
|
|
741
|
+
詳細な使用方法については、[Intlayer VS Code Extensionドキュメント](https://intlayer.org/doc/vs-code-extension)を参照してください。
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
745
|
+
### さらに詳しく
|
|
746
|
+
|
|
747
|
+
さらに詳しく知りたい場合は、[ビジュアルエディタ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_visual_editor.md)を実装したり、[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)を使用してコンテンツを外部化したりすることができます。
|