@intlayer/docs 8.5.1 → 8.5.2
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/blog/ar/intlayer_with_i18next.md +1 -1
- package/blog/ar/intlayer_with_next-i18next.md +1 -1
- package/blog/ar/intlayer_with_next-intl.md +1 -1
- package/blog/ar/intlayer_with_react-i18next.md +1 -1
- package/blog/ar/intlayer_with_react-intl.md +1 -1
- package/blog/ar/intlayer_with_vue-i18n.md +1 -1
- package/blog/de/intlayer_with_i18next.md +1 -1
- package/blog/de/intlayer_with_next-i18next.md +1 -1
- package/blog/de/intlayer_with_next-intl.md +1 -1
- package/blog/de/intlayer_with_react-i18next.md +1 -1
- package/blog/de/intlayer_with_react-intl.md +1 -1
- package/blog/de/intlayer_with_vue-i18n.md +1 -1
- package/blog/en/intlayer_with_i18next.md +1 -1
- package/blog/en/intlayer_with_next-i18next.md +1 -1
- package/blog/en/intlayer_with_next-intl.md +1 -1
- package/blog/en/intlayer_with_react-i18next.md +1 -1
- package/blog/en/intlayer_with_react-intl.md +1 -1
- package/blog/en/intlayer_with_vue-i18n.md +1 -1
- package/blog/en-GB/intlayer_with_i18next.md +1 -1
- package/blog/en-GB/intlayer_with_next-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_next-intl.md +1 -1
- package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_react-intl.md +1 -1
- package/blog/en-GB/intlayer_with_vue-i18n.md +1 -1
- package/blog/es/intlayer_with_i18next.md +1 -1
- package/blog/es/intlayer_with_next-i18next.md +1 -1
- package/blog/es/intlayer_with_next-intl.md +1 -1
- package/blog/es/intlayer_with_react-i18next.md +1 -1
- package/blog/es/intlayer_with_react-intl.md +1 -1
- package/blog/es/intlayer_with_vue-i18n.md +1 -1
- package/blog/fr/intlayer_with_i18next.md +1 -1
- package/blog/fr/intlayer_with_next-i18next.md +1 -1
- package/blog/fr/intlayer_with_next-intl.md +1 -1
- package/blog/fr/intlayer_with_react-i18next.md +1 -1
- package/blog/fr/intlayer_with_react-intl.md +1 -1
- package/blog/fr/intlayer_with_vue-i18n.md +1 -1
- package/blog/hi/intlayer_with_i18next.md +1 -1
- package/blog/hi/intlayer_with_next-i18next.md +1 -1
- package/blog/hi/intlayer_with_next-intl.md +1 -1
- package/blog/hi/intlayer_with_react-i18next.md +1 -1
- package/blog/hi/intlayer_with_react-intl.md +1 -1
- package/blog/hi/intlayer_with_vue-i18n.md +1 -1
- package/blog/id/intlayer_with_i18next.md +1 -1
- package/blog/id/intlayer_with_next-i18next.md +1 -1
- package/blog/id/intlayer_with_next-intl.md +1 -1
- package/blog/id/intlayer_with_react-i18next.md +1 -1
- package/blog/id/intlayer_with_react-intl.md +1 -1
- package/blog/id/intlayer_with_vue-i18n.md +1 -1
- package/blog/it/intlayer_with_i18next.md +1 -1
- package/blog/it/intlayer_with_next-i18next.md +1 -1
- package/blog/it/intlayer_with_next-intl.md +1 -1
- package/blog/it/intlayer_with_react-i18next.md +1 -1
- package/blog/it/intlayer_with_react-intl.md +1 -1
- package/blog/it/intlayer_with_vue-i18n.md +1 -1
- package/blog/ja/intlayer_with_i18next.md +1 -1
- package/blog/ja/intlayer_with_next-i18next.md +1 -1
- package/blog/ja/intlayer_with_next-intl.md +1 -1
- package/blog/ja/intlayer_with_react-i18next.md +1 -1
- package/blog/ja/intlayer_with_react-intl.md +1 -1
- package/blog/ja/intlayer_with_vue-i18n.md +1 -1
- package/blog/ko/intlayer_with_i18next.md +1 -1
- package/blog/ko/intlayer_with_next-i18next.md +1 -1
- package/blog/ko/intlayer_with_next-intl.md +1 -1
- package/blog/ko/intlayer_with_react-i18next.md +1 -1
- package/blog/ko/intlayer_with_react-intl.md +1 -1
- package/blog/ko/intlayer_with_vue-i18n.md +1 -1
- package/blog/pl/intlayer_with_i18next.md +1 -1
- package/blog/pl/intlayer_with_next-i18next.md +1 -1
- package/blog/pl/intlayer_with_next-intl.md +1 -1
- package/blog/pl/intlayer_with_react-i18next.md +1 -1
- package/blog/pl/intlayer_with_react-intl.md +1 -1
- package/blog/pl/intlayer_with_vue-i18n.md +1 -1
- package/blog/pt/intlayer_with_i18next.md +1 -1
- package/blog/pt/intlayer_with_next-i18next.md +1 -1
- package/blog/pt/intlayer_with_next-intl.md +1 -1
- package/blog/pt/intlayer_with_react-i18next.md +1 -1
- package/blog/pt/intlayer_with_react-intl.md +1 -1
- package/blog/pt/intlayer_with_vue-i18n.md +1 -1
- package/blog/ru/intlayer_with_i18next.md +1 -1
- package/blog/ru/intlayer_with_next-i18next.md +1 -1
- package/blog/ru/intlayer_with_next-intl.md +1 -1
- package/blog/ru/intlayer_with_react-i18next.md +1 -1
- package/blog/ru/intlayer_with_react-intl.md +1 -1
- package/blog/ru/intlayer_with_vue-i18n.md +1 -1
- package/blog/tr/intlayer_with_i18next.md +1 -1
- package/blog/tr/intlayer_with_next-i18next.md +1 -1
- package/blog/tr/intlayer_with_next-intl.md +1 -1
- package/blog/tr/intlayer_with_react-i18next.md +1 -1
- package/blog/tr/intlayer_with_react-intl.md +1 -1
- package/blog/tr/intlayer_with_vue-i18n.md +1 -1
- package/blog/uk/intlayer_with_i18next.md +1 -1
- package/blog/uk/intlayer_with_next-i18next.md +1 -1
- package/blog/uk/intlayer_with_next-intl.md +1 -1
- package/blog/uk/intlayer_with_react-i18next.md +1 -1
- package/blog/uk/intlayer_with_react-intl.md +1 -1
- package/blog/uk/intlayer_with_vue-i18n.md +1 -1
- package/blog/vi/intlayer_with_i18next.md +1 -1
- package/blog/vi/intlayer_with_next-i18next.md +1 -1
- package/blog/vi/intlayer_with_next-intl.md +1 -1
- package/blog/vi/intlayer_with_react-i18next.md +1 -1
- package/blog/vi/intlayer_with_react-intl.md +1 -1
- package/blog/vi/intlayer_with_vue-i18n.md +1 -1
- package/blog/zh/intlayer_with_i18next.md +1 -1
- package/blog/zh/intlayer_with_next-i18next.md +1 -1
- package/blog/zh/intlayer_with_next-intl.md +1 -1
- package/blog/zh/intlayer_with_react-i18next.md +1 -1
- package/blog/zh/intlayer_with_react-intl.md +1 -1
- package/blog/zh/intlayer_with_vue-i18n.md +1 -1
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_CMS.md +1 -1
- package/docs/ar/intlayer_with_adonisjs.md +1 -1
- package/docs/ar/intlayer_with_analog.md +1 -1
- package/docs/ar/intlayer_with_angular.md +1 -1
- package/docs/ar/intlayer_with_create_react_app.md +1 -1
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_fastify.md +1 -1
- package/docs/ar/intlayer_with_hono.md +1 -1
- package/docs/ar/intlayer_with_lynx+react.md +1 -1
- package/docs/ar/intlayer_with_nestjs.md +1 -1
- package/docs/ar/intlayer_with_next-i18next.md +1 -1
- package/docs/ar/intlayer_with_next-intl.md +1 -1
- package/docs/ar/intlayer_with_nextjs_14.md +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +1 -1
- package/docs/ar/intlayer_with_nextjs_16.md +2 -2
- package/docs/ar/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ar/intlayer_with_nuxt.md +1 -1
- package/docs/ar/intlayer_with_react_native+expo.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7.md +2 -2
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/ar/intlayer_with_svelte_kit.md +3 -3
- package/docs/ar/intlayer_with_tanstack+solid.md +911 -0
- package/docs/ar/intlayer_with_tanstack.md +2 -2
- package/docs/ar/intlayer_with_vite+lit.md +1 -1
- package/docs/ar/intlayer_with_vite+preact.md +2 -2
- package/docs/ar/intlayer_with_vite+react.md +2 -2
- package/docs/ar/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/ar/intlayer_with_vite+solid.md +2 -2
- package/docs/ar/intlayer_with_vite+svelte.md +2 -2
- package/docs/ar/intlayer_with_vite+vanilla.md +2 -2
- package/docs/ar/intlayer_with_vite+vue.md +2 -2
- package/docs/bn/intlayer_with_fastify.md +1 -1
- package/docs/bn/intlayer_with_hono.md +1 -1
- package/docs/bn/intlayer_with_vite+lit.md +1 -1
- package/docs/bn/intlayer_with_vite+vanilla.md +2 -2
- package/docs/cs/intlayer_with_fastify.md +1 -1
- package/docs/cs/intlayer_with_hono.md +1 -1
- package/docs/cs/intlayer_with_vite+lit.md +1 -1
- package/docs/cs/intlayer_with_vite+vanilla.md +2 -2
- package/docs/de/intlayer_CMS.md +1 -1
- package/docs/de/intlayer_with_adonisjs.md +1 -1
- package/docs/de/intlayer_with_analog.md +1 -1
- package/docs/de/intlayer_with_angular.md +1 -1
- package/docs/de/intlayer_with_create_react_app.md +1 -1
- package/docs/de/intlayer_with_express.md +1 -1
- package/docs/de/intlayer_with_fastify.md +1 -1
- package/docs/de/intlayer_with_hono.md +1 -1
- package/docs/de/intlayer_with_lynx+react.md +1 -1
- package/docs/de/intlayer_with_nestjs.md +1 -1
- package/docs/de/intlayer_with_next-i18next.md +1 -1
- package/docs/de/intlayer_with_next-intl.md +1 -1
- package/docs/de/intlayer_with_nextjs_14.md +1 -1
- package/docs/de/intlayer_with_nextjs_15.md +1 -1
- package/docs/de/intlayer_with_nextjs_16.md +2 -2
- package/docs/de/intlayer_with_nextjs_compiler.md +1 -1
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/de/intlayer_with_nuxt.md +1 -1
- package/docs/de/intlayer_with_react_router_v7.md +2 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/de/intlayer_with_svelte_kit.md +3 -3
- package/docs/de/intlayer_with_tanstack+solid.md +911 -0
- package/docs/de/intlayer_with_tanstack.md +2 -2
- package/docs/de/intlayer_with_vite+lit.md +1 -1
- package/docs/de/intlayer_with_vite+preact.md +2 -2
- package/docs/de/intlayer_with_vite+react.md +2 -2
- package/docs/de/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/de/intlayer_with_vite+solid.md +2 -2
- package/docs/de/intlayer_with_vite+svelte.md +2 -2
- package/docs/de/intlayer_with_vite+vanilla.md +2 -2
- package/docs/de/intlayer_with_vite+vue.md +2 -2
- package/docs/en/intlayer_CMS.md +1 -1
- package/docs/en/intlayer_with_adonisjs.md +1 -1
- package/docs/en/intlayer_with_analog.md +1 -1
- package/docs/en/intlayer_with_angular.md +1 -1
- package/docs/en/intlayer_with_create_react_app.md +1 -1
- package/docs/en/intlayer_with_express.md +1 -1
- package/docs/en/intlayer_with_fastify.md +1 -1
- package/docs/en/intlayer_with_hono.md +1 -1
- package/docs/en/intlayer_with_lynx+react.md +1 -1
- package/docs/en/intlayer_with_nestjs.md +1 -1
- package/docs/en/intlayer_with_next-i18next.md +1 -1
- package/docs/en/intlayer_with_next-intl.md +1 -1
- package/docs/en/intlayer_with_nextjs_14.md +1 -1
- package/docs/en/intlayer_with_nextjs_15.md +1 -1
- package/docs/en/intlayer_with_nextjs_16.md +2 -2
- package/docs/en/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en/intlayer_with_nuxt.md +1 -1
- package/docs/en/intlayer_with_react_native+expo.md +1 -1
- package/docs/en/intlayer_with_react_router_v7.md +2 -2
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/en/intlayer_with_svelte_kit.md +2 -2
- package/docs/en/intlayer_with_tanstack+solid.md +911 -0
- package/docs/en/intlayer_with_tanstack.md +2 -2
- package/docs/en/intlayer_with_vite+lit.md +1 -1
- package/docs/en/intlayer_with_vite+preact.md +2 -2
- package/docs/en/intlayer_with_vite+react.md +2 -2
- package/docs/en/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/en/intlayer_with_vite+solid.md +2 -2
- package/docs/en/intlayer_with_vite+svelte.md +2 -2
- package/docs/en/intlayer_with_vite+vanilla.md +2 -2
- package/docs/en/intlayer_with_vite+vue.md +2 -2
- package/docs/en-GB/intlayer_CMS.md +1 -1
- package/docs/en-GB/intlayer_with_adonisjs.md +1 -1
- package/docs/en-GB/intlayer_with_analog.md +1 -1
- package/docs/en-GB/intlayer_with_angular.md +1 -1
- package/docs/en-GB/intlayer_with_create_react_app.md +2 -2
- package/docs/en-GB/intlayer_with_express.md +1 -1
- package/docs/en-GB/intlayer_with_fastify.md +1 -1
- package/docs/en-GB/intlayer_with_hono.md +1 -1
- package/docs/en-GB/intlayer_with_lynx+react.md +2 -2
- package/docs/en-GB/intlayer_with_nestjs.md +1 -1
- package/docs/en-GB/intlayer_with_next-i18next.md +1 -1
- package/docs/en-GB/intlayer_with_next-intl.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_14.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en-GB/intlayer_with_nuxt.md +1 -1
- package/docs/en-GB/intlayer_with_react_native+expo.md +1 -1
- package/docs/en-GB/intlayer_with_react_router_v7.md +1 -1
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/en-GB/intlayer_with_svelte_kit.md +2 -2
- package/docs/en-GB/intlayer_with_tanstack+solid.md +912 -0
- package/docs/en-GB/intlayer_with_tanstack.md +1 -1
- package/docs/en-GB/intlayer_with_vite+lit.md +1 -1
- package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
- package/docs/en-GB/intlayer_with_vite+react.md +1 -1
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/en-GB/intlayer_with_vite+solid.md +1 -1
- package/docs/en-GB/intlayer_with_vite+svelte.md +1 -1
- package/docs/en-GB/intlayer_with_vite+vanilla.md +2 -2
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
- package/docs/es/intlayer_CMS.md +1 -1
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_analog.md +1 -1
- package/docs/es/intlayer_with_angular.md +1 -1
- package/docs/es/intlayer_with_create_react_app.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_lynx+react.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_next-i18next.md +1 -1
- package/docs/es/intlayer_with_next-intl.md +1 -1
- package/docs/es/intlayer_with_nextjs_14.md +1 -1
- package/docs/es/intlayer_with_nextjs_15.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +2 -2
- package/docs/es/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_native+expo.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +2 -2
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/es/intlayer_with_svelte_kit.md +3 -3
- package/docs/es/intlayer_with_tanstack+solid.md +911 -0
- package/docs/es/intlayer_with_tanstack.md +2 -2
- package/docs/es/intlayer_with_vite+lit.md +1 -1
- package/docs/es/intlayer_with_vite+preact.md +2 -2
- package/docs/es/intlayer_with_vite+react.md +2 -2
- package/docs/es/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/es/intlayer_with_vite+solid.md +2 -2
- package/docs/es/intlayer_with_vite+svelte.md +2 -2
- package/docs/es/intlayer_with_vite+vanilla.md +2 -2
- package/docs/es/intlayer_with_vite+vue.md +2 -2
- package/docs/es/packages/next-intlayer/index.md +1 -1
- package/docs/es/packages/react-intlayer/index.md +1 -1
- package/docs/fr/intlayer_CMS.md +1 -1
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_analog.md +1 -1
- package/docs/fr/intlayer_with_angular.md +1 -1
- package/docs/fr/intlayer_with_create_react_app.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_lynx+react.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_next-i18next.md +1 -1
- package/docs/fr/intlayer_with_next-intl.md +1 -1
- package/docs/fr/intlayer_with_nextjs_14.md +1 -1
- package/docs/fr/intlayer_with_nextjs_15.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +2 -2
- package/docs/fr/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/fr/intlayer_with_nuxt.md +1 -1
- package/docs/fr/intlayer_with_react_router_v7.md +2 -2
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/fr/intlayer_with_svelte_kit.md +3 -3
- package/docs/fr/intlayer_with_tanstack+solid.md +911 -0
- package/docs/fr/intlayer_with_tanstack.md +2 -2
- package/docs/fr/intlayer_with_vite+lit.md +1 -1
- package/docs/fr/intlayer_with_vite+preact.md +2 -2
- package/docs/fr/intlayer_with_vite+react.md +2 -2
- package/docs/fr/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/fr/intlayer_with_vite+solid.md +2 -2
- package/docs/fr/intlayer_with_vite+svelte.md +2 -2
- package/docs/fr/intlayer_with_vite+vanilla.md +2 -2
- package/docs/fr/intlayer_with_vite+vue.md +2 -2
- package/docs/fr/packages/react-intlayer/index.md +1 -1
- package/docs/hi/intlayer_CMS.md +1 -1
- package/docs/hi/intlayer_with_adonisjs.md +1 -1
- package/docs/hi/intlayer_with_analog.md +1 -1
- package/docs/hi/intlayer_with_angular.md +1 -1
- package/docs/hi/intlayer_with_create_react_app.md +1 -1
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_fastify.md +1 -1
- package/docs/hi/intlayer_with_hono.md +1 -1
- package/docs/hi/intlayer_with_lynx+react.md +1 -1
- package/docs/hi/intlayer_with_nestjs.md +1 -1
- package/docs/hi/intlayer_with_next-i18next.md +1 -1
- package/docs/hi/intlayer_with_next-intl.md +1 -1
- package/docs/hi/intlayer_with_nextjs_14.md +1 -1
- package/docs/hi/intlayer_with_nextjs_15.md +1 -1
- package/docs/hi/intlayer_with_nextjs_16.md +2 -2
- package/docs/hi/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/hi/intlayer_with_nuxt.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7.md +2 -2
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/hi/intlayer_with_svelte_kit.md +3 -3
- package/docs/hi/intlayer_with_tanstack+solid.md +911 -0
- package/docs/hi/intlayer_with_tanstack.md +2 -2
- package/docs/hi/intlayer_with_vite+lit.md +1 -1
- package/docs/hi/intlayer_with_vite+preact.md +2 -2
- package/docs/hi/intlayer_with_vite+react.md +2 -2
- package/docs/hi/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/hi/intlayer_with_vite+solid.md +2 -2
- package/docs/hi/intlayer_with_vite+svelte.md +2 -2
- package/docs/hi/intlayer_with_vite+vanilla.md +2 -2
- package/docs/hi/intlayer_with_vite+vue.md +2 -2
- package/docs/hi/packages/intlayer/index.md +1 -1
- package/docs/id/intlayer_CMS.md +1 -1
- package/docs/id/intlayer_with_adonisjs.md +1 -1
- package/docs/id/intlayer_with_analog.md +1 -1
- package/docs/id/intlayer_with_angular.md +1 -1
- package/docs/id/intlayer_with_create_react_app.md +1 -1
- package/docs/id/intlayer_with_express.md +1 -1
- package/docs/id/intlayer_with_fastify.md +1 -1
- package/docs/id/intlayer_with_hono.md +1 -1
- package/docs/id/intlayer_with_lynx+react.md +1 -1
- package/docs/id/intlayer_with_nestjs.md +1 -1
- package/docs/id/intlayer_with_next-i18next.md +1 -1
- package/docs/id/intlayer_with_next-intl.md +1 -1
- package/docs/id/intlayer_with_nextjs_14.md +1 -1
- package/docs/id/intlayer_with_nextjs_15.md +1 -1
- package/docs/id/intlayer_with_nextjs_16.md +2 -2
- package/docs/id/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/id/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/id/intlayer_with_nuxt.md +1 -1
- package/docs/id/intlayer_with_react_native+expo.md +1 -1
- package/docs/id/intlayer_with_react_router_v7.md +2 -2
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/id/intlayer_with_svelte_kit.md +3 -3
- package/docs/id/intlayer_with_tanstack+solid.md +911 -0
- package/docs/id/intlayer_with_tanstack.md +2 -2
- package/docs/id/intlayer_with_vite+lit.md +1 -1
- package/docs/id/intlayer_with_vite+preact.md +2 -2
- package/docs/id/intlayer_with_vite+react.md +2 -2
- package/docs/id/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/id/intlayer_with_vite+solid.md +2 -2
- package/docs/id/intlayer_with_vite+svelte.md +2 -2
- package/docs/id/intlayer_with_vite+vanilla.md +2 -2
- package/docs/id/intlayer_with_vite+vue.md +2 -2
- package/docs/it/intlayer_CMS.md +1 -1
- package/docs/it/intlayer_with_adonisjs.md +1 -1
- package/docs/it/intlayer_with_analog.md +1 -1
- package/docs/it/intlayer_with_angular.md +1 -1
- package/docs/it/intlayer_with_create_react_app.md +1 -1
- package/docs/it/intlayer_with_express.md +1 -1
- package/docs/it/intlayer_with_fastify.md +1 -1
- package/docs/it/intlayer_with_hono.md +1 -1
- package/docs/it/intlayer_with_lynx+react.md +1 -1
- package/docs/it/intlayer_with_nestjs.md +1 -1
- package/docs/it/intlayer_with_next-i18next.md +1 -1
- package/docs/it/intlayer_with_next-intl.md +1 -1
- package/docs/it/intlayer_with_nextjs_14.md +1 -1
- package/docs/it/intlayer_with_nextjs_15.md +1 -1
- package/docs/it/intlayer_with_nextjs_16.md +2 -2
- package/docs/it/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/it/intlayer_with_nuxt.md +1 -1
- package/docs/it/intlayer_with_react_native+expo.md +1 -1
- package/docs/it/intlayer_with_react_router_v7.md +2 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/it/intlayer_with_svelte_kit.md +3 -3
- package/docs/it/intlayer_with_tanstack+solid.md +911 -0
- package/docs/it/intlayer_with_tanstack.md +2 -2
- package/docs/it/intlayer_with_vite+lit.md +1 -1
- package/docs/it/intlayer_with_vite+preact.md +2 -2
- package/docs/it/intlayer_with_vite+react.md +2 -2
- package/docs/it/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/it/intlayer_with_vite+solid.md +2 -2
- package/docs/it/intlayer_with_vite+svelte.md +2 -2
- package/docs/it/intlayer_with_vite+vanilla.md +2 -2
- package/docs/it/intlayer_with_vite+vue.md +2 -2
- package/docs/ja/intlayer_CMS.md +1 -1
- package/docs/ja/intlayer_with_adonisjs.md +1 -1
- package/docs/ja/intlayer_with_analog.md +1 -1
- package/docs/ja/intlayer_with_angular.md +1 -1
- package/docs/ja/intlayer_with_create_react_app.md +1 -1
- package/docs/ja/intlayer_with_express.md +1 -1
- package/docs/ja/intlayer_with_fastify.md +1 -1
- package/docs/ja/intlayer_with_hono.md +1 -1
- package/docs/ja/intlayer_with_lynx+react.md +1 -1
- package/docs/ja/intlayer_with_nestjs.md +1 -1
- package/docs/ja/intlayer_with_next-i18next.md +1 -1
- package/docs/ja/intlayer_with_next-intl.md +1 -1
- package/docs/ja/intlayer_with_nextjs_14.md +1 -1
- package/docs/ja/intlayer_with_nextjs_15.md +1 -1
- package/docs/ja/intlayer_with_nextjs_16.md +2 -2
- package/docs/ja/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ja/intlayer_with_nuxt.md +1 -1
- package/docs/ja/intlayer_with_react_router_v7.md +1 -1
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/ja/intlayer_with_svelte_kit.md +1 -1
- package/docs/ja/intlayer_with_tanstack+solid.md +911 -0
- package/docs/ja/intlayer_with_tanstack.md +1 -1
- package/docs/ja/intlayer_with_vite+lit.md +1 -1
- package/docs/ja/intlayer_with_vite+preact.md +1 -1
- package/docs/ja/intlayer_with_vite+react.md +1 -1
- package/docs/ja/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/ja/intlayer_with_vite+solid.md +2 -2
- package/docs/ja/intlayer_with_vite+svelte.md +2 -2
- package/docs/ja/intlayer_with_vite+vanilla.md +2 -2
- package/docs/ja/intlayer_with_vite+vue.md +2 -2
- package/docs/ko/intlayer_CMS.md +1 -1
- package/docs/ko/intlayer_with_adonisjs.md +1 -1
- package/docs/ko/intlayer_with_analog.md +1 -1
- package/docs/ko/intlayer_with_angular.md +1 -1
- package/docs/ko/intlayer_with_create_react_app.md +1 -1
- package/docs/ko/intlayer_with_express.md +1 -1
- package/docs/ko/intlayer_with_fastify.md +1 -1
- package/docs/ko/intlayer_with_hono.md +1 -1
- package/docs/ko/intlayer_with_lynx+react.md +1 -1
- package/docs/ko/intlayer_with_nestjs.md +1 -1
- package/docs/ko/intlayer_with_next-i18next.md +1 -1
- package/docs/ko/intlayer_with_next-intl.md +1 -1
- package/docs/ko/intlayer_with_nextjs_14.md +1 -1
- package/docs/ko/intlayer_with_nextjs_15.md +1 -1
- package/docs/ko/intlayer_with_nextjs_16.md +2 -2
- package/docs/ko/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ko/intlayer_with_nuxt.md +1 -1
- package/docs/ko/intlayer_with_react_native+expo.md +1 -1
- package/docs/ko/intlayer_with_react_router_v7.md +2 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/ko/intlayer_with_svelte_kit.md +3 -3
- package/docs/ko/intlayer_with_tanstack+solid.md +911 -0
- package/docs/ko/intlayer_with_tanstack.md +2 -2
- package/docs/ko/intlayer_with_vite+lit.md +1 -1
- package/docs/ko/intlayer_with_vite+preact.md +2 -2
- package/docs/ko/intlayer_with_vite+react.md +2 -2
- package/docs/ko/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/ko/intlayer_with_vite+solid.md +2 -2
- package/docs/ko/intlayer_with_vite+svelte.md +2 -2
- package/docs/ko/intlayer_with_vite+vanilla.md +2 -2
- package/docs/ko/intlayer_with_vite+vue.md +2 -2
- package/docs/nl/intlayer_with_fastify.md +1 -1
- package/docs/nl/intlayer_with_hono.md +1 -1
- package/docs/nl/intlayer_with_vite+lit.md +1 -1
- package/docs/nl/intlayer_with_vite+vanilla.md +2 -2
- package/docs/pl/intlayer_CMS.md +1 -1
- package/docs/pl/intlayer_with_adonisjs.md +1 -1
- package/docs/pl/intlayer_with_analog.md +1 -1
- package/docs/pl/intlayer_with_angular.md +1 -1
- package/docs/pl/intlayer_with_create_react_app.md +1 -1
- package/docs/pl/intlayer_with_express.md +1 -1
- package/docs/pl/intlayer_with_fastify.md +1 -1
- package/docs/pl/intlayer_with_hono.md +1 -1
- package/docs/pl/intlayer_with_lynx+react.md +1 -1
- package/docs/pl/intlayer_with_nestjs.md +1 -1
- package/docs/pl/intlayer_with_next-i18next.md +1 -1
- package/docs/pl/intlayer_with_next-intl.md +1 -1
- package/docs/pl/intlayer_with_nextjs_14.md +1 -1
- package/docs/pl/intlayer_with_nextjs_15.md +1 -1
- package/docs/pl/intlayer_with_nextjs_16.md +2 -2
- package/docs/pl/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/pl/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pl/intlayer_with_nuxt.md +1 -1
- package/docs/pl/intlayer_with_react_native+expo.md +1 -1
- package/docs/pl/intlayer_with_react_router_v7.md +2 -2
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/pl/intlayer_with_svelte_kit.md +3 -3
- package/docs/pl/intlayer_with_tanstack+solid.md +911 -0
- package/docs/pl/intlayer_with_tanstack.md +2 -2
- package/docs/pl/intlayer_with_vite+lit.md +1 -1
- package/docs/pl/intlayer_with_vite+preact.md +2 -2
- package/docs/pl/intlayer_with_vite+react.md +2 -2
- package/docs/pl/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/pl/intlayer_with_vite+solid.md +2 -2
- package/docs/pl/intlayer_with_vite+svelte.md +2 -2
- package/docs/pl/intlayer_with_vite+vanilla.md +2 -2
- package/docs/pl/intlayer_with_vite+vue.md +2 -2
- package/docs/pt/intlayer_CMS.md +1 -1
- package/docs/pt/intlayer_with_adonisjs.md +1 -1
- package/docs/pt/intlayer_with_analog.md +1 -1
- package/docs/pt/intlayer_with_angular.md +1 -1
- package/docs/pt/intlayer_with_create_react_app.md +1 -1
- package/docs/pt/intlayer_with_express.md +1 -1
- package/docs/pt/intlayer_with_fastify.md +1 -1
- package/docs/pt/intlayer_with_hono.md +1 -1
- package/docs/pt/intlayer_with_lynx+react.md +1 -1
- package/docs/pt/intlayer_with_nestjs.md +1 -1
- package/docs/pt/intlayer_with_next-i18next.md +1 -1
- package/docs/pt/intlayer_with_next-intl.md +1 -1
- package/docs/pt/intlayer_with_nextjs_14.md +1 -1
- package/docs/pt/intlayer_with_nextjs_15.md +1 -1
- package/docs/pt/intlayer_with_nextjs_16.md +2 -2
- package/docs/pt/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pt/intlayer_with_nuxt.md +1 -1
- package/docs/pt/intlayer_with_react_native+expo.md +1 -1
- package/docs/pt/intlayer_with_react_router_v7.md +2 -2
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/pt/intlayer_with_svelte_kit.md +3 -3
- package/docs/pt/intlayer_with_tanstack+solid.md +911 -0
- package/docs/pt/intlayer_with_tanstack.md +2 -2
- package/docs/pt/intlayer_with_vite+lit.md +1 -1
- package/docs/pt/intlayer_with_vite+preact.md +2 -2
- package/docs/pt/intlayer_with_vite+react.md +2 -2
- package/docs/pt/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/pt/intlayer_with_vite+solid.md +2 -2
- package/docs/pt/intlayer_with_vite+svelte.md +2 -2
- package/docs/pt/intlayer_with_vite+vanilla.md +2 -2
- package/docs/pt/intlayer_with_vite+vue.md +2 -2
- package/docs/ru/intlayer_CMS.md +1 -1
- package/docs/ru/intlayer_with_adonisjs.md +1 -1
- package/docs/ru/intlayer_with_analog.md +1 -1
- package/docs/ru/intlayer_with_angular.md +1 -1
- package/docs/ru/intlayer_with_create_react_app.md +1 -1
- package/docs/ru/intlayer_with_express.md +1 -1
- package/docs/ru/intlayer_with_fastify.md +1 -1
- package/docs/ru/intlayer_with_hono.md +1 -1
- package/docs/ru/intlayer_with_lynx+react.md +1 -1
- package/docs/ru/intlayer_with_nestjs.md +1 -1
- package/docs/ru/intlayer_with_next-i18next.md +1 -1
- package/docs/ru/intlayer_with_next-intl.md +1 -1
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_nextjs_16.md +2 -2
- package/docs/ru/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ru/intlayer_with_nuxt.md +1 -1
- package/docs/ru/intlayer_with_react_native+expo.md +1 -1
- package/docs/ru/intlayer_with_react_router_v7.md +2 -2
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/ru/intlayer_with_svelte_kit.md +3 -3
- package/docs/ru/intlayer_with_tanstack+solid.md +911 -0
- package/docs/ru/intlayer_with_tanstack.md +2 -2
- package/docs/ru/intlayer_with_vite+lit.md +1 -1
- package/docs/ru/intlayer_with_vite+preact.md +2 -2
- package/docs/ru/intlayer_with_vite+react.md +2 -2
- package/docs/ru/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/ru/intlayer_with_vite+solid.md +2 -2
- package/docs/ru/intlayer_with_vite+svelte.md +2 -2
- package/docs/ru/intlayer_with_vite+vanilla.md +2 -2
- package/docs/ru/intlayer_with_vite+vue.md +2 -2
- package/docs/tr/intlayer_CMS.md +1 -1
- package/docs/tr/intlayer_with_adonisjs.md +1 -1
- package/docs/tr/intlayer_with_analog.md +1 -1
- package/docs/tr/intlayer_with_angular.md +1 -1
- package/docs/tr/intlayer_with_create_react_app.md +1 -1
- package/docs/tr/intlayer_with_express.md +1 -1
- package/docs/tr/intlayer_with_fastify.md +1 -1
- package/docs/tr/intlayer_with_hono.md +1 -1
- package/docs/tr/intlayer_with_lynx+react.md +1 -1
- package/docs/tr/intlayer_with_nestjs.md +1 -1
- package/docs/tr/intlayer_with_next-i18next.md +1 -1
- package/docs/tr/intlayer_with_next-intl.md +1 -1
- package/docs/tr/intlayer_with_nextjs_14.md +1 -1
- package/docs/tr/intlayer_with_nextjs_15.md +1 -1
- package/docs/tr/intlayer_with_nextjs_16.md +2 -2
- package/docs/tr/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_nuxt.md +1 -1
- package/docs/tr/intlayer_with_react_native+expo.md +1 -1
- package/docs/tr/intlayer_with_react_router_v7.md +2 -2
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/tr/intlayer_with_svelte_kit.md +3 -3
- package/docs/tr/intlayer_with_tanstack+solid.md +912 -0
- package/docs/tr/intlayer_with_tanstack.md +2 -2
- package/docs/tr/intlayer_with_vite+lit.md +1 -1
- package/docs/tr/intlayer_with_vite+preact.md +2 -2
- package/docs/tr/intlayer_with_vite+react.md +2 -2
- package/docs/tr/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/tr/intlayer_with_vite+solid.md +2 -2
- package/docs/tr/intlayer_with_vite+svelte.md +2 -2
- package/docs/tr/intlayer_with_vite+vanilla.md +2 -2
- package/docs/tr/intlayer_with_vite+vue.md +2 -2
- package/docs/uk/intlayer_CMS.md +1 -1
- package/docs/uk/intlayer_with_adonisjs.md +1 -1
- package/docs/uk/intlayer_with_analog.md +1 -1
- package/docs/uk/intlayer_with_angular.md +1 -1
- package/docs/uk/intlayer_with_create_react_app.md +1 -1
- package/docs/uk/intlayer_with_express.md +1 -1
- package/docs/uk/intlayer_with_fastify.md +1 -1
- package/docs/uk/intlayer_with_hono.md +1 -1
- package/docs/uk/intlayer_with_lynx+react.md +1 -1
- package/docs/uk/intlayer_with_nestjs.md +1 -1
- package/docs/uk/intlayer_with_next-i18next.md +1 -1
- package/docs/uk/intlayer_with_next-intl.md +1 -1
- package/docs/uk/intlayer_with_nextjs_14.md +1 -1
- package/docs/uk/intlayer_with_nextjs_15.md +1 -1
- package/docs/uk/intlayer_with_nextjs_16.md +2 -2
- package/docs/uk/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/uk/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/uk/intlayer_with_nuxt.md +1 -1
- package/docs/uk/intlayer_with_react_native+expo.md +1 -1
- package/docs/uk/intlayer_with_react_router_v7.md +2 -2
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/uk/intlayer_with_svelte_kit.md +2 -2
- package/docs/uk/intlayer_with_tanstack+solid.md +911 -0
- package/docs/uk/intlayer_with_tanstack.md +2 -2
- package/docs/uk/intlayer_with_vite+lit.md +1 -1
- package/docs/uk/intlayer_with_vite+preact.md +2 -2
- package/docs/uk/intlayer_with_vite+react.md +2 -2
- package/docs/uk/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/uk/intlayer_with_vite+solid.md +2 -2
- package/docs/uk/intlayer_with_vite+svelte.md +2 -2
- package/docs/uk/intlayer_with_vite+vanilla.md +2 -2
- package/docs/uk/intlayer_with_vite+vue.md +2 -2
- package/docs/ur/intlayer_with_fastify.md +1 -1
- package/docs/ur/intlayer_with_hono.md +1 -1
- package/docs/ur/intlayer_with_vite+lit.md +1 -1
- package/docs/ur/intlayer_with_vite+vanilla.md +1 -1
- package/docs/vi/cli/index.md +1 -1
- package/docs/vi/intlayer_CMS.md +1 -1
- package/docs/vi/intlayer_with_adonisjs.md +1 -1
- package/docs/vi/intlayer_with_analog.md +1 -1
- package/docs/vi/intlayer_with_angular.md +1 -1
- package/docs/vi/intlayer_with_create_react_app.md +1 -1
- package/docs/vi/intlayer_with_express.md +1 -1
- package/docs/vi/intlayer_with_fastify.md +1 -1
- package/docs/vi/intlayer_with_hono.md +1 -1
- package/docs/vi/intlayer_with_lynx+react.md +1 -1
- package/docs/vi/intlayer_with_nestjs.md +1 -1
- package/docs/vi/intlayer_with_next-i18next.md +1 -1
- package/docs/vi/intlayer_with_next-intl.md +1 -1
- package/docs/vi/intlayer_with_nextjs_14.md +1 -1
- package/docs/vi/intlayer_with_nextjs_15.md +1 -1
- package/docs/vi/intlayer_with_nextjs_16.md +2 -2
- package/docs/vi/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/vi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/vi/intlayer_with_nuxt.md +1 -1
- package/docs/vi/intlayer_with_react_native+expo.md +1 -1
- package/docs/vi/intlayer_with_react_router_v7.md +2 -2
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/vi/intlayer_with_svelte_kit.md +3 -3
- package/docs/vi/intlayer_with_tanstack+solid.md +911 -0
- package/docs/vi/intlayer_with_tanstack.md +2 -2
- package/docs/vi/intlayer_with_vite+lit.md +1 -1
- package/docs/vi/intlayer_with_vite+preact.md +2 -2
- package/docs/vi/intlayer_with_vite+react.md +2 -2
- package/docs/vi/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/vi/intlayer_with_vite+solid.md +2 -2
- package/docs/vi/intlayer_with_vite+svelte.md +2 -2
- package/docs/vi/intlayer_with_vite+vanilla.md +2 -2
- package/docs/vi/intlayer_with_vite+vue.md +2 -2
- package/docs/zh/intlayer_CMS.md +1 -1
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_analog.md +1 -1
- package/docs/zh/intlayer_with_angular.md +1 -1
- package/docs/zh/intlayer_with_create_react_app.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_lynx+react.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_next-i18next.md +1 -1
- package/docs/zh/intlayer_with_next-intl.md +1 -1
- package/docs/zh/intlayer_with_nextjs_14.md +1 -1
- package/docs/zh/intlayer_with_nextjs_15.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +2 -2
- package/docs/zh/intlayer_with_nextjs_compiler.md +2 -2
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1 -1
- package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/zh/intlayer_with_nuxt.md +1 -1
- package/docs/zh/intlayer_with_react_native+expo.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +2 -2
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/zh/intlayer_with_svelte_kit.md +3 -3
- package/docs/zh/intlayer_with_tanstack+solid.md +911 -0
- package/docs/zh/intlayer_with_tanstack.md +2 -2
- package/docs/zh/intlayer_with_vite+lit.md +1 -1
- package/docs/zh/intlayer_with_vite+preact.md +2 -2
- package/docs/zh/intlayer_with_vite+react.md +2 -2
- package/docs/zh/intlayer_with_vite+react_compiler.md +1 -1
- package/docs/zh/intlayer_with_vite+solid.md +2 -2
- package/docs/zh/intlayer_with_vite+svelte.md +2 -2
- package/docs/zh/intlayer_with_vite+vanilla.md +2 -2
- package/docs/zh/intlayer_with_vite+vue.md +2 -2
- package/package.json +5 -5
- package/src/generated/docs.entry.ts +20 -0
|
@@ -0,0 +1,911 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-03-25
|
|
3
|
+
updatedAt: 2026-03-25
|
|
4
|
+
title: Tanstack Start i18n - 2026年にSolid.jsを使用してTanstack Startアプリを翻訳する方法
|
|
5
|
+
description: IntlayerとSolid.jsを使用して、Tanstack Startアプリケーションに国際化(i18n)を追加する方法を学びます。この包括的なガイドに従って、ロケール対応ルーティングを備えた多言語アプリを作成してください。
|
|
6
|
+
keywords:
|
|
7
|
+
- 国際化
|
|
8
|
+
- ドキュメント
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Tanstack Start
|
|
11
|
+
- Solid
|
|
12
|
+
- i18n
|
|
13
|
+
- TypeScript
|
|
14
|
+
- ロケールルーティング
|
|
15
|
+
slugs:
|
|
16
|
+
- doc
|
|
17
|
+
- environment
|
|
18
|
+
- tanstack-start
|
|
19
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-tanstack-start-solid-template
|
|
20
|
+
youtubeVideo: https://www.youtube.com/watch?v=_XTdKVWaeqg
|
|
21
|
+
history:
|
|
22
|
+
- version: 8.5.1
|
|
23
|
+
date: 2026-03-25
|
|
24
|
+
changes: "Tanstack Start Solid.js用に追加"
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Intlayerを使用してTanstack Start + Solid.jsウェブサイトを翻訳する | 国際化 (i18n)
|
|
28
|
+
|
|
29
|
+
## 目次
|
|
30
|
+
|
|
31
|
+
<TOC/>
|
|
32
|
+
|
|
33
|
+
このガイドでは、Solid.jsを使用したTanstack Startプロジェクトにおいて、Intlayerを統合してシームレスな国際化、ロケール対応ルーティング、TypeScriptサポート、および現代的な開発手法を実現する方法を説明します。
|
|
34
|
+
|
|
35
|
+
## Intlayerとは?
|
|
36
|
+
|
|
37
|
+
**Intlayer**は、現代的なウェブアプリケーションにおける多言語サポートを簡素化するために設計された、革新的でオープンソースの国際化(i18n)ライブラリです。
|
|
38
|
+
|
|
39
|
+
Intlayerを使用すると、以下のことが可能になります:
|
|
40
|
+
|
|
41
|
+
- コンポーネントレベルで宣言的な辞書を使用して、**翻訳を簡単に管理**できます。
|
|
42
|
+
- メタデータ、ルート、コンテンツを**動的にローカライズ**できます。
|
|
43
|
+
- 自動生成された型により**TypeScriptサポートを確保**し、オートコンプリートとエラー検出を向上させます。
|
|
44
|
+
- 動的なロケール検出や切り替えなどの**高度な機能の恩恵**を受けられます。
|
|
45
|
+
- Tanstack Startのファイルベースルーティングシステムを使用して、**ロケール対応ルーティングを有効化**できます。
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Tanstack StartアプリケーションでIntlayerをセットアップするためのステップバイステップガイド
|
|
50
|
+
|
|
51
|
+
<Tabs defaultTab="video">
|
|
52
|
+
<Tab label="動画" value="video">
|
|
53
|
+
|
|
54
|
+
<iframe title="Tanstack Startに最適なi18nソリューションは?Intlayerを発見する" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
55
|
+
|
|
56
|
+
</Tab>
|
|
57
|
+
<Tab label="コード" value="code">
|
|
58
|
+
|
|
59
|
+
<iframe
|
|
60
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-tanstack-start-solid-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
61
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
62
|
+
title="デモ CodeSandbox - Intlayerを使用してアプリケーションを国際化する方法"
|
|
63
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
64
|
+
loading="lazy"
|
|
65
|
+
/>
|
|
66
|
+
|
|
67
|
+
</Tab>
|
|
68
|
+
</Tabs>
|
|
69
|
+
|
|
70
|
+
GitHubで[アプリケーションテンプレート](https://github.com/aymericzip/intlayer-tanstack-start-solid-template)を確認してください。
|
|
71
|
+
|
|
72
|
+
### ステップ 1: プロジェクト作成
|
|
73
|
+
|
|
74
|
+
まず、TanStack Startウェブサイトの[新しいプロジェクトを開始](https://tanstack.com/start/latest/docs/framework/solid/quick-start)ガイドに従って、新しいTanStack Startプロジェクトを作成します。
|
|
75
|
+
|
|
76
|
+
### ステップ 2: Intlayerパッケージのインストール
|
|
77
|
+
|
|
78
|
+
お好みのパッケージマネージャーを使用して、必要なパッケージをインストールします:
|
|
79
|
+
|
|
80
|
+
```bash packageManager="npm"
|
|
81
|
+
npm install intlayer solid-intlayer
|
|
82
|
+
npm install vite-intlayer --save-dev
|
|
83
|
+
npx intlayer init
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```bash packageManager="pnpm"
|
|
87
|
+
pnpm add intlayer solid-intlayer
|
|
88
|
+
pnpm add vite-intlayer --save-dev
|
|
89
|
+
pnpm intlayer init
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```bash packageManager="yarn"
|
|
93
|
+
yarn add intlayer solid-intlayer
|
|
94
|
+
yarn add vite-intlayer --save-dev
|
|
95
|
+
yarn intlayer init
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash packageManager="bun"
|
|
99
|
+
bun add intlayer solid-intlayer
|
|
100
|
+
bun add vite-intlayer --dev
|
|
101
|
+
bun x intlayer init
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- **intlayer**
|
|
105
|
+
|
|
106
|
+
構成管理、翻訳、[コンテンツ宣言](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)のための国際化ツールを提供するコアパッケージ。
|
|
107
|
+
|
|
108
|
+
- **solid-intlayer**
|
|
109
|
+
IntlayerをSolidアプリケーションと統合するためのパッケージ。Solidの国際化のためのコンテキストプロバイダーとフックを提供します。
|
|
110
|
+
|
|
111
|
+
- **vite-intlayer**
|
|
112
|
+
Intlayerを[Viteバンドラー](https://vite.dev/guide/why.html#why-bundle-for-production)と統合するためのViteプラグイン、およびユーザーの優先ロケールの検出、Cookie管理、URLリダイレクトを処理するためのミドルウェアが含まれています。
|
|
113
|
+
|
|
114
|
+
### ステップ 3: プロジェクトの構成
|
|
115
|
+
|
|
116
|
+
アプリケーションの言語を構成するための構成ファイルを作成します:
|
|
117
|
+
|
|
118
|
+
```typescript fileName="intlayer.config.ts"
|
|
119
|
+
import type { IntlayerConfig } from "intlayer";
|
|
120
|
+
|
|
121
|
+
import { Locales } from "intlayer";
|
|
122
|
+
|
|
123
|
+
const config: IntlayerConfig = {
|
|
124
|
+
internationalization: {
|
|
125
|
+
defaultLocale: Locales.ENGLISH,
|
|
126
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export default config;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
> この構成ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクト、Cookie名、コンテンツ宣言の場所と拡張子、コンソールでのIntlayerログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、[構成ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)を参照してください。
|
|
134
|
+
|
|
135
|
+
### ステップ 4: Vite構成にIntlayerを統合する
|
|
136
|
+
|
|
137
|
+
Vite構成にintlayerプラグインを追加します:
|
|
138
|
+
|
|
139
|
+
```typescript fileName="vite.config.ts"
|
|
140
|
+
import { intlayer } from "vite-intlayer";
|
|
141
|
+
import { defineConfig } from "vite";
|
|
142
|
+
import { devtools } from "@tanstack/devtools-vite";
|
|
143
|
+
import viteTsConfigPaths from "vite-tsconfig-paths";
|
|
144
|
+
import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
|
|
145
|
+
import solidPlugin from "vite-plugin-solid";
|
|
146
|
+
|
|
147
|
+
export default defineConfig({
|
|
148
|
+
plugins: [
|
|
149
|
+
devtools(),
|
|
150
|
+
viteTsConfigPaths({
|
|
151
|
+
projects: ["./tsconfig.json"],
|
|
152
|
+
}),
|
|
153
|
+
tanstackStart({
|
|
154
|
+
router: {
|
|
155
|
+
routeFileIgnorePattern:
|
|
156
|
+
".content.(ts|tsx|js|mjs|cjs|jsx|json|jsonc|json5)$",
|
|
157
|
+
},
|
|
158
|
+
}),
|
|
159
|
+
solidPlugin({ ssr: true }),
|
|
160
|
+
intlayer(),
|
|
161
|
+
],
|
|
162
|
+
});
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
> `intlayer()` Viteプラグインは、IntlayerをViteと統合するために使用されます。コンテンツ宣言ファイルの構築を確実にし、開発モードでそれらを監視します。Viteアプリケーション内でIntlayer環境変数を定義します。さらに、パフォーマンスを最適化するためのエイリアスを提供します。
|
|
166
|
+
|
|
167
|
+
### ステップ 5: ルートレイアウトの作成
|
|
168
|
+
|
|
169
|
+
現在選択されているロケールを検出するために `useMatches` を使用し、`html` タグに `lang` および `dir` 属性を設定することで、国際化をサポートするようにルートレイアウトを構成します。
|
|
170
|
+
|
|
171
|
+
```tsx fileName="src/routes/__root.tsx"
|
|
172
|
+
import {
|
|
173
|
+
HeadContent,
|
|
174
|
+
Outlet,
|
|
175
|
+
Scripts,
|
|
176
|
+
createRootRouteWithContext,
|
|
177
|
+
useMatches,
|
|
178
|
+
} from "@tanstack/solid-router";
|
|
179
|
+
import { TanStackRouterDevtools } from "@tanstack/solid-router-devtools";
|
|
180
|
+
import { HydrationScript } from "solid-js/web";
|
|
181
|
+
import { Suspense } from "solid-js";
|
|
182
|
+
import { IntlayerProvider } from "solid-intlayer";
|
|
183
|
+
import { defaultLocale, getHTMLTextDir, type Locale } from "intlayer";
|
|
184
|
+
|
|
185
|
+
export const Route = createRootRouteWithContext()({
|
|
186
|
+
shellComponent: RootComponent,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
type Params = {
|
|
190
|
+
locale: Locale;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
function RootComponent() {
|
|
194
|
+
const matches = useMatches();
|
|
195
|
+
|
|
196
|
+
// アクティブなマッチのパラメータからロケールを見つけようとします
|
|
197
|
+
// これはルートツリーで動的セグメント "/{-$locale}" を使用していることを前提としています
|
|
198
|
+
const locale =
|
|
199
|
+
(
|
|
200
|
+
matches().find((match) => match.routeId === "/{-$locale}/")
|
|
201
|
+
?.params as Params
|
|
202
|
+
)?.locale ?? defaultLocale;
|
|
203
|
+
|
|
204
|
+
return (
|
|
205
|
+
<html dir={getHTMLTextDir(locale)} lang={locale}>
|
|
206
|
+
<head>
|
|
207
|
+
<HydrationScript />
|
|
208
|
+
</head>
|
|
209
|
+
<body>
|
|
210
|
+
<HeadContent />
|
|
211
|
+
<IntlayerProvider locale={locale}>
|
|
212
|
+
<Suspense>
|
|
213
|
+
<Outlet />
|
|
214
|
+
<TanStackRouterDevtools />
|
|
215
|
+
</Suspense>
|
|
216
|
+
</IntlayerProvider>
|
|
217
|
+
<Scripts />
|
|
218
|
+
</body>
|
|
219
|
+
</html>
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
> [!NOTE]
|
|
225
|
+
> Solidでは、`useMatches` は **シグナル** (リアクティブなアクセサー) を返します。現在の値にリアクティブにアクセスするには、`matches()` (括弧付き) を使用します。
|
|
226
|
+
|
|
227
|
+
### ステップ 6: ロケールレイアウトの作成 (任意)
|
|
228
|
+
|
|
229
|
+
ロケールプレフィックスを処理し、検証を実行するレイアウトを作成します。このレイアウトにより、有効なロケールのみが処理されるようになります。
|
|
230
|
+
|
|
231
|
+
> ルートレベルでロケールプレフィックスを検証する必要がない場合、このステップは任意です。
|
|
232
|
+
|
|
233
|
+
```tsx fileName="src/routes/{-$locale}/route.tsx"
|
|
234
|
+
import { createFileRoute, Outlet, redirect } from "@tanstack/solid-router";
|
|
235
|
+
import { validatePrefix } from "intlayer";
|
|
236
|
+
|
|
237
|
+
export const Route = createFileRoute("/{-$locale}")({
|
|
238
|
+
beforeLoad: ({ params }) => {
|
|
239
|
+
const localeParam = params.locale;
|
|
240
|
+
|
|
241
|
+
// ロケールプレフィックスを検証
|
|
242
|
+
const { isValid, localePrefix } = validatePrefix(localeParam);
|
|
243
|
+
|
|
244
|
+
if (!isValid) {
|
|
245
|
+
throw redirect({
|
|
246
|
+
to: "/{-$locale}/404",
|
|
247
|
+
params: { locale: localePrefix },
|
|
248
|
+
replace: true,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
component: Outlet,
|
|
253
|
+
});
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
> ここで、`{-$locale}` は現在のロケールに置き換えられる動的なルートパラメータです。この表記によりスロットがオプションになり、`'prefix-no-default'` などのルーティングモードで動作できるようになります。
|
|
257
|
+
|
|
258
|
+
> 同じルートで複数の動的セグメントを使用している場合 (例: `/{-$locale}/other-path/$anotherDynamicPath/...`)、このスロットが問題を引き起こす可能性があることに注意してください。
|
|
259
|
+
> `'prefix-all'` モードの場合、代わりにスロットを `$locale` に切り替えることをお勧めします。
|
|
260
|
+
> `'no-prefix'` または `'search-params'` モードの場合、スロットを完全に削除できます。
|
|
261
|
+
|
|
262
|
+
### ステップ 7: コンテンツの宣言
|
|
263
|
+
|
|
264
|
+
翻訳を保存するためのコンテンツ宣言を作成および管理します:
|
|
265
|
+
|
|
266
|
+
```tsx fileName="src/contents/page.content.ts"
|
|
267
|
+
import type { Dictionary } from "intlayer";
|
|
268
|
+
|
|
269
|
+
import { t } from "intlayer";
|
|
270
|
+
|
|
271
|
+
const appContent = {
|
|
272
|
+
content: {
|
|
273
|
+
links: {
|
|
274
|
+
about: t({
|
|
275
|
+
en: "About",
|
|
276
|
+
es: "Acerca de",
|
|
277
|
+
fr: "À propos",
|
|
278
|
+
}),
|
|
279
|
+
home: t({
|
|
280
|
+
en: "Home",
|
|
281
|
+
es: "Inicio",
|
|
282
|
+
fr: "Accueil",
|
|
283
|
+
}),
|
|
284
|
+
},
|
|
285
|
+
meta: {
|
|
286
|
+
title: t({
|
|
287
|
+
en: "Welcome to Intlayer + TanStack Router",
|
|
288
|
+
es: "Bienvenido a Intlayer + TanStack Router",
|
|
289
|
+
fr: "Bienvenue à Intlayer + TanStack Router",
|
|
290
|
+
}),
|
|
291
|
+
description: t({
|
|
292
|
+
en: "This is an example of using Intlayer with TanStack Router",
|
|
293
|
+
es: "Este es un ejemplo de uso de Intlayer con TanStack Router",
|
|
294
|
+
fr: "Ceci est un exemple d'utilisation d'Intlayer avec TanStack Router",
|
|
295
|
+
}),
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
key: "app",
|
|
299
|
+
} satisfies Dictionary;
|
|
300
|
+
|
|
301
|
+
export default appContent;
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
> コンテンツ宣言は、`contentDir` ディレクトリ (デフォルトは `./app`) に含まれていれば、アプリケーションのどこにでも定義できます。また、コンテンツ宣言ファイルの拡張子 (デフォルトは `.content.{json,ts,tsx,js,jsx,mjs,cjs}`) に一致する必要があります。
|
|
305
|
+
|
|
306
|
+
> 詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)を参照してください。
|
|
307
|
+
|
|
308
|
+
### ステップ 8: ロケール対応のコンポーネントとフックを利用する
|
|
309
|
+
|
|
310
|
+
ロケール対応のナビゲーションのために `LocalizedLink` コンポーネントを作成します:
|
|
311
|
+
|
|
312
|
+
```tsx fileName="src/components/LocalizedLink.tsx"
|
|
313
|
+
import { Link, type LinkProps } from "@tanstack/solid-router";
|
|
314
|
+
import { getPrefix } from "intlayer";
|
|
315
|
+
import { useLocale } from "solid-intlayer";
|
|
316
|
+
import type { JSX } from "solid-js";
|
|
317
|
+
|
|
318
|
+
export const LOCALE_ROUTE = "{-$locale}" as const;
|
|
319
|
+
|
|
320
|
+
export type RemoveLocaleParam<TVal> = TVal extends string
|
|
321
|
+
? RemoveLocaleFromString<TVal>
|
|
322
|
+
: TVal;
|
|
323
|
+
|
|
324
|
+
export type To = RemoveLocaleParam<LinkProps["to"]>;
|
|
325
|
+
|
|
326
|
+
type CollapseDoubleSlashes<TString extends string> =
|
|
327
|
+
TString extends `${infer THead}//${infer TTail}`
|
|
328
|
+
? CollapseDoubleSlashes<`${THead}/${TTail}`>
|
|
329
|
+
: TString;
|
|
330
|
+
|
|
331
|
+
export type LocalizedLinkProps = Omit<LinkProps, "to"> & {
|
|
332
|
+
to?: To;
|
|
333
|
+
} & JSX.AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
334
|
+
|
|
335
|
+
type RemoveAll<
|
|
336
|
+
TString extends string,
|
|
337
|
+
TSub extends string,
|
|
338
|
+
> = TString extends `${infer THead}${TSub}${infer TTail}`
|
|
339
|
+
? RemoveAll<`${THead}${TTail}`, TSub>
|
|
340
|
+
: TString;
|
|
341
|
+
|
|
342
|
+
type RemoveLocaleFromString<TString extends string> = CollapseDoubleSlashes<
|
|
343
|
+
RemoveAll<TString, typeof LOCALE_ROUTE>
|
|
344
|
+
>;
|
|
345
|
+
|
|
346
|
+
export const LocalizedLink = (props: LocalizedLinkProps) => {
|
|
347
|
+
const { locale } = useLocale();
|
|
348
|
+
|
|
349
|
+
return (
|
|
350
|
+
<Link
|
|
351
|
+
{...props}
|
|
352
|
+
params={{
|
|
353
|
+
locale: getPrefix(locale()).localePrefix,
|
|
354
|
+
...(typeof props.params === "object" ? props.params : {}),
|
|
355
|
+
}}
|
|
356
|
+
to={`/${LOCALE_ROUTE}${props.to ?? ""}` as LinkProps["to"]}
|
|
357
|
+
/>
|
|
358
|
+
);
|
|
359
|
+
};
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
このコンポーネントには2つの目的があります:
|
|
363
|
+
|
|
364
|
+
- URLから不要な `{-$locale}` プレフィックスを削除する。
|
|
365
|
+
- ユーザーがローカライズされたルートに直接リダイレクトされるように、URLにロケールパラメータを注入する。
|
|
366
|
+
|
|
367
|
+
次に、プログラムによるナビゲーションのための `useLocalizedNavigate` フックを作成します:
|
|
368
|
+
|
|
369
|
+
```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
|
|
370
|
+
import { useNavigate } from "@tanstack/solid-router";
|
|
371
|
+
import { getLocalizedUrl } from "intlayer";
|
|
372
|
+
import { useLocale } from "solid-intlayer";
|
|
373
|
+
|
|
374
|
+
export const useLocalizedNavigate = () => {
|
|
375
|
+
const navigate = useNavigate();
|
|
376
|
+
const { locale } = useLocale();
|
|
377
|
+
|
|
378
|
+
const localizedNavigate = (to: string) => {
|
|
379
|
+
const localizedTo = getLocalizedUrl(to, locale());
|
|
380
|
+
return navigate({ to: localizedTo });
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
return localizedNavigate;
|
|
384
|
+
};
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### ステップ 9: ページでIntlayerを活用する
|
|
388
|
+
|
|
389
|
+
アプリケーション全体でコンテンツ辞書にアクセスします:
|
|
390
|
+
|
|
391
|
+
#### ローカライズされたホームページ
|
|
392
|
+
|
|
393
|
+
```tsx fileName="src/routes/{-$locale}/index.tsx"
|
|
394
|
+
import { createFileRoute } from "@tanstack/solid-router";
|
|
395
|
+
import { useIntlayer } from "solid-intlayer";
|
|
396
|
+
import { LocalizedLink } from "@/components/LocalizedLink";
|
|
397
|
+
|
|
398
|
+
export const Route = createFileRoute("/{-$locale}/")({
|
|
399
|
+
component: RouteComponent,
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
function RouteComponent() {
|
|
403
|
+
const content = useIntlayer("index-page");
|
|
404
|
+
|
|
405
|
+
return (
|
|
406
|
+
<main>
|
|
407
|
+
<h1>{content().heroTitle}</h1>
|
|
408
|
+
<p>{content().heroDesc}</p>
|
|
409
|
+
<div>
|
|
410
|
+
<LocalizedLink to="/">{content().navHome}</LocalizedLink>
|
|
411
|
+
<LocalizedLink to="/about">{content().navAbout}</LocalizedLink>
|
|
412
|
+
</div>
|
|
413
|
+
</main>
|
|
414
|
+
);
|
|
415
|
+
}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
> [!NOTE]
|
|
419
|
+
> Solidでは、`useIntlayer` は **アクセサー** 関数 (例: `content()`) を返します。リアクティブなコンテンツにアクセスするには、この関数を呼び出す必要があります。
|
|
420
|
+
>
|
|
421
|
+
> `useIntlayer` フックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/solid-intlayer/useIntlayer.md)を参照してください。
|
|
422
|
+
|
|
423
|
+
### ステップ 10: ロケール切り替えコンポーネントの作成
|
|
424
|
+
|
|
425
|
+
ユーザーが言語を変更できるようにするコンポーネントを作成します:
|
|
426
|
+
|
|
427
|
+
```tsx fileName="src/components/LocaleSwitcher.tsx"
|
|
428
|
+
import { useLocation } from "@tanstack/solid-router";
|
|
429
|
+
import { getLocaleName, getPathWithoutLocale, getPrefix } from "intlayer";
|
|
430
|
+
import { For } from "solid-js";
|
|
431
|
+
import { useIntlayer, useLocale } from "solid-intlayer";
|
|
432
|
+
import { LocalizedLink, type To } from "./LocalizedLink";
|
|
433
|
+
|
|
434
|
+
export const LocaleSwitcher = () => {
|
|
435
|
+
const content = useIntlayer("locale-switcher");
|
|
436
|
+
const location = useLocation();
|
|
437
|
+
|
|
438
|
+
const { availableLocales, locale, setLocale } = useLocale();
|
|
439
|
+
|
|
440
|
+
const pathWithoutLocale = () => getPathWithoutLocale(location().pathname);
|
|
441
|
+
|
|
442
|
+
return (
|
|
443
|
+
<div class="flex flex-row gap-2">
|
|
444
|
+
<For each={availableLocales}>
|
|
445
|
+
{(localeEl) => (
|
|
446
|
+
<LocalizedLink
|
|
447
|
+
aria-current={localeEl === locale() ? "page" : undefined}
|
|
448
|
+
onClick={() => setLocale(localeEl)}
|
|
449
|
+
params={{ locale: getPrefix(localeEl).localePrefix }}
|
|
450
|
+
to={pathWithoutLocale() as To}
|
|
451
|
+
>
|
|
452
|
+
{getLocaleName(localeEl)}
|
|
453
|
+
</LocalizedLink>
|
|
454
|
+
)}
|
|
455
|
+
</For>
|
|
456
|
+
</div>
|
|
457
|
+
);
|
|
458
|
+
};
|
|
459
|
+
|
|
460
|
+
export default LocaleSwitcher;
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
> [!NOTE]
|
|
464
|
+
> Solidでは、`useLocale` からの `locale` は **シグナルアクセサー** です。現在の値をリアクティブに読み取るには、`locale()` (括弧付き) を使用します。
|
|
465
|
+
>
|
|
466
|
+
> `useLocale` フックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/solid-intlayer/useLocale.md)を参照してください。
|
|
467
|
+
|
|
468
|
+
### ステップ 11: HTML属性の管理
|
|
469
|
+
|
|
470
|
+
ステップ 5 で見たように、ルートコンポーネントで `useMatches` を使用して `html` タグの `lang` および `dir` 属性を管理できます。これにより、サーバーとクライアントで正しい属性が設定されるようになります。
|
|
471
|
+
|
|
472
|
+
```tsx fileName="src/routes/__root.tsx"
|
|
473
|
+
const RootComponent: ParentComponent = (props) => {
|
|
474
|
+
const matches = useMatches();
|
|
475
|
+
|
|
476
|
+
// アクティブなマッチのパラメータからロケールを見つけようとします
|
|
477
|
+
const locale =
|
|
478
|
+
(
|
|
479
|
+
matches().find((match) => match.routeId === "/{-$locale}/")
|
|
480
|
+
?.params as Params
|
|
481
|
+
)?.locale ?? defaultLocale;
|
|
482
|
+
|
|
483
|
+
return (
|
|
484
|
+
<html dir={getHTMLTextDir(locale)} lang={locale}>
|
|
485
|
+
{/* ... */}
|
|
486
|
+
</html>
|
|
487
|
+
);
|
|
488
|
+
};
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
### ステップ 12: ミドルウェアの追加 (任意)
|
|
494
|
+
|
|
495
|
+
`intlayerProxy` を使用して、アプリケーションにサーバーサイドのルーティングを追加することもできます。このプラグインはURLに基づいて現在のロケールを自動的に検出し、適切なロケールCookieを設定します。ロケールが指定されていない場合、プラグインはユーザーのブラウザ言語設定に基づいて最も適切なロケールを決定します。ロケールが検出されない場合は、デフォルトのロケールにリダイレクトします。
|
|
496
|
+
|
|
497
|
+
> 本番環境で `intlayerProxy` を使用するには、`vite-intlayer` パッケージを `devDependencies` から `dependencies` に切り替える必要があることに注意してください。
|
|
498
|
+
|
|
499
|
+
```typescript {7,14-17} fileName="vite.config.ts"
|
|
500
|
+
import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
|
|
501
|
+
import solid from "vite-plugin-solid";
|
|
502
|
+
import { nitro } from "nitro/vite";
|
|
503
|
+
import { defineConfig } from "vite";
|
|
504
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
505
|
+
import viteTsConfigPaths from "vite-tsconfig-paths";
|
|
506
|
+
|
|
507
|
+
export default defineConfig({
|
|
508
|
+
plugins: [
|
|
509
|
+
intlayerProxy(), // Nitroを使用する場合、プロキシはサーバーの前に配置する必要があります
|
|
510
|
+
nitro(),
|
|
511
|
+
viteTsConfigPaths({
|
|
512
|
+
projects: ["./tsconfig.json"],
|
|
513
|
+
}),
|
|
514
|
+
intlayer(),
|
|
515
|
+
tanstackStart({
|
|
516
|
+
router: {
|
|
517
|
+
routeFileIgnorePattern:
|
|
518
|
+
".content.(ts|tsx|js|mjs|cjs|jsx|json|jsonc|json5)$",
|
|
519
|
+
},
|
|
520
|
+
}),
|
|
521
|
+
solid(),
|
|
522
|
+
],
|
|
523
|
+
});
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
### ステップ 13: メタデータの国際化 (任意)
|
|
529
|
+
|
|
530
|
+
ロケール対応のメタデータのために、`head` ローダー内で `getIntlayer` 関数を使用してコンテンツ辞書にアクセスすることもできます:
|
|
531
|
+
|
|
532
|
+
```tsx fileName="src/routes/{-$locale}/index.tsx"
|
|
533
|
+
import { createFileRoute } from "@tanstack/solid-router";
|
|
534
|
+
import { getIntlayer } from "intlayer";
|
|
535
|
+
|
|
536
|
+
export const Route = createFileRoute("/{-$locale}/")({
|
|
537
|
+
component: RouteComponent,
|
|
538
|
+
head: ({ params }) => {
|
|
539
|
+
const { locale } = params;
|
|
540
|
+
const metaContent = getIntlayer("page-metadata", locale);
|
|
541
|
+
|
|
542
|
+
return {
|
|
543
|
+
meta: [
|
|
544
|
+
{ title: metaContent.title },
|
|
545
|
+
{ content: metaContent.description, name: "description" },
|
|
546
|
+
],
|
|
547
|
+
};
|
|
548
|
+
},
|
|
549
|
+
});
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
---
|
|
553
|
+
|
|
554
|
+
### ステップ 14: サーバーアクションでロケールを取得する (任意)
|
|
555
|
+
|
|
556
|
+
サーバーアクションやAPIエンドポイント内から現在のロケールにアクセスしたい場合があります。
|
|
557
|
+
これを行うには、`intlayer` から `getLocale` ヘルパーを使用します。
|
|
558
|
+
|
|
559
|
+
TanStack Startのサーバー関数を使用した例を次に示します:
|
|
560
|
+
|
|
561
|
+
```tsx fileName="src/routes/{-$locale}/index.tsx"
|
|
562
|
+
import { createServerFn } from "@tanstack/solid-start";
|
|
563
|
+
import {
|
|
564
|
+
getRequestHeader,
|
|
565
|
+
getRequestHeaders,
|
|
566
|
+
} from "@tanstack/solid-start/server";
|
|
567
|
+
import { getCookie, getIntlayer, getLocale } from "intlayer";
|
|
568
|
+
|
|
569
|
+
export const getLocaleServer = createServerFn().handler(async () => {
|
|
570
|
+
const locale = await getLocale({
|
|
571
|
+
// リクエストからCookieを取得する (デフォルト: 'INTLAYER_LOCALE')
|
|
572
|
+
getCookie: (name) => {
|
|
573
|
+
const cookieString = getRequestHeader("cookie");
|
|
574
|
+
|
|
575
|
+
return getCookie(name, cookieString);
|
|
576
|
+
},
|
|
577
|
+
// リクエストからヘッダーを取得する (デフォルト: 'x-intlayer-locale')
|
|
578
|
+
// Accept-Language ネゴシエーションを使用したフォールバック
|
|
579
|
+
getHeader: (name) => getRequestHeader(name),
|
|
580
|
+
});
|
|
581
|
+
|
|
582
|
+
// getIntlayer() を使用してコンテンツを取得する
|
|
583
|
+
const content = getIntlayer("app", locale);
|
|
584
|
+
|
|
585
|
+
return { locale, content };
|
|
586
|
+
});
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
---
|
|
590
|
+
|
|
591
|
+
### ステップ 15: 404ページを管理する (任意)
|
|
592
|
+
|
|
593
|
+
ユーザーが存在しないページにアクセスしたときに、カスタム 404 ページを表示できます。ロケールプレフィックスは、404 ページがトリガーされる方法に影響を与える可能性があります。
|
|
594
|
+
|
|
595
|
+
#### TanStack Router のロケールプレフィックス付き 404 処理について
|
|
596
|
+
|
|
597
|
+
TanStack Router では、ローカライズされたルートでの 404 ページの処理に重層的なアプローチが必要です:
|
|
598
|
+
|
|
599
|
+
1. **専用 404 ルート**: 404 UI を表示するための特定のルート。
|
|
600
|
+
2. **ルートレベルの検証**: ロケールプレフィックスを検証し、無効な場合は 404 にリダイレクトします。
|
|
601
|
+
3. **キャッチオールルート**: ロケールセグメント内のあらゆる一致しないパスをキャプチャします。
|
|
602
|
+
|
|
603
|
+
```tsx fileName="src/routes/{-$locale}/404.tsx"
|
|
604
|
+
import { createFileRoute } from "@tanstack/solid-router";
|
|
605
|
+
|
|
606
|
+
// これにより専用の /[locale]/404 ルートが作成されます
|
|
607
|
+
// 直接のルートとして、また他のファイルでコンポーネントとしてインポートされて使用されます
|
|
608
|
+
export const Route = createFileRoute("/{-$locale}/404")({
|
|
609
|
+
component: NotFoundComponent,
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
// notFoundComponent やキャッチオールルートで再利用できるように別途エクスポート
|
|
613
|
+
export function NotFoundComponent() {
|
|
614
|
+
return (
|
|
615
|
+
<div>
|
|
616
|
+
<h1>404</h1>
|
|
617
|
+
</div>
|
|
618
|
+
);
|
|
619
|
+
}
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
```tsx fileName="src/routes/{-$locale}/route.tsx"
|
|
623
|
+
import { createFileRoute, Outlet, redirect } from "@tanstack/solid-router";
|
|
624
|
+
import { validatePrefix } from "intlayer";
|
|
625
|
+
import { NotFoundComponent } from "./404";
|
|
626
|
+
|
|
627
|
+
export const Route = createFileRoute("/{-$locale}")({
|
|
628
|
+
// beforeLoad はルートがレンダリングされる前に実行されます (サーバーとクライアントの両方)
|
|
629
|
+
// ここはロケールプレフィックスを検証するのに最適な場所です
|
|
630
|
+
beforeLoad: ({ params }) => {
|
|
631
|
+
const localeParam = params.locale;
|
|
632
|
+
|
|
633
|
+
// validatePrefix は intlayer 構成に従ってロケールが有効かどうかを確認します
|
|
634
|
+
const { isValid, localePrefix } = validatePrefix(localeParam);
|
|
635
|
+
|
|
636
|
+
if (!isValid) {
|
|
637
|
+
// 無効なロケールプレフィックス - 有効なロケールプレフィックスを使用して 404 ページにリダイレクト
|
|
638
|
+
throw redirect({
|
|
639
|
+
to: "/{-$locale}/404",
|
|
640
|
+
params: { locale: localePrefix },
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
component: Outlet,
|
|
645
|
+
// notFoundComponent は、子ルートが存在しないときに呼び出されます
|
|
646
|
+
// 例: /en/non-existent-page は /en レイアウト内でこれをトリガーします
|
|
647
|
+
notFoundComponent: NotFoundComponent,
|
|
648
|
+
});
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
```tsx fileName="src/routes/{-$locale}/$.tsx"
|
|
652
|
+
import { createFileRoute } from "@tanstack/solid-router";
|
|
653
|
+
|
|
654
|
+
import { NotFoundComponent } from "./404";
|
|
655
|
+
|
|
656
|
+
// $ (スプラット/キャッチオール) ルートは、他のルートに一致しないあらゆるパスに一致します
|
|
657
|
+
// 例: /en/some/deeply/nested/invalid/path
|
|
658
|
+
// これにより、ロケール内のすべての不一致パスが 404 ページを表示するようになります
|
|
659
|
+
// これがないと、一致しない深いパスは空白のページまたはエラーを表示する可能性があります
|
|
660
|
+
export const Route = createFileRoute("/{-$locale}/$")({
|
|
661
|
+
component: NotFoundComponent,
|
|
662
|
+
});
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
### (任意) ステップ 16: コンポーネントのコンテンツを抽出する
|
|
666
|
+
|
|
667
|
+
既存のコードベースがある場合、数千ものファイルを変換するのは時間がかかる可能性があります。
|
|
668
|
+
|
|
669
|
+
このプロセスを容易にするために、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) を提案しています。
|
|
670
|
+
|
|
671
|
+
セットアップするには、`intlayer.config.ts` ファイルに `compiler` セクションを追加します:
|
|
672
|
+
|
|
673
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
674
|
+
import { type IntlayerConfig } from "intlayer";
|
|
675
|
+
|
|
676
|
+
const config: IntlayerConfig = {
|
|
677
|
+
// ...構成の残り
|
|
678
|
+
compiler: {
|
|
679
|
+
/**
|
|
680
|
+
* コンパイラを有効にするかどうかを示します。
|
|
681
|
+
*/
|
|
682
|
+
enabled: true,
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* 出力ファイルパスを定義します
|
|
686
|
+
*/
|
|
687
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
688
|
+
|
|
689
|
+
/**
|
|
690
|
+
* 変換後にコンポーネントを保存するかどうかを示します。
|
|
691
|
+
*
|
|
692
|
+
* - `true` の場合、コンパイラはディスク上のコンポーネントファイルを書き換えます。そのため、変換は永続的になり、コンパイラは次のプロセスでの変換をスキップします。これにより、コンパイラはアプリを変換した後、削除できます。
|
|
693
|
+
*
|
|
694
|
+
* - `false` の場合、コンパイラはビルド出力のコードにのみ `useIntlayer()` 関数呼び出しを注入し、基本コードベースはそのまま維持します。変換はメモリ内でのみ行われます。
|
|
695
|
+
*/
|
|
696
|
+
saveComponents: false,
|
|
697
|
+
|
|
698
|
+
/**
|
|
699
|
+
* 辞書キーのプレフィックス
|
|
700
|
+
*/
|
|
701
|
+
dictionaryKeyPrefix: "",
|
|
702
|
+
},
|
|
703
|
+
};
|
|
704
|
+
|
|
705
|
+
export default config;
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
709
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
710
|
+
const config = {
|
|
711
|
+
// ...構成の残り
|
|
712
|
+
compiler: {
|
|
713
|
+
/**
|
|
714
|
+
* コンパイラを有効にするかどうかを示します。
|
|
715
|
+
*/
|
|
716
|
+
enabled: true,
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* 出力ファイルパスを定義します
|
|
720
|
+
*/
|
|
721
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
722
|
+
|
|
723
|
+
/**
|
|
724
|
+
* 変換後にコンポーネントを保存するかどうかを示します。
|
|
725
|
+
*
|
|
726
|
+
* - `true` の場合、コンパイラはディスク上のコンポーネントファイルを書き換えます。そのため、変換は永続的になり、コンパイラは次のプロセスでの変換をスキップします。これにより、コンパイラはアプリを変換した後、削除できます。
|
|
727
|
+
*
|
|
728
|
+
* - `false` の場合、コンパイラはビルド出力のコードにのみ `useIntlayer()` 関数呼び出しを注入し、基本コードベースはそのまま維持します。変換はメモリ内でのみ行われます。
|
|
729
|
+
*/
|
|
730
|
+
saveComponents: false,
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* 辞書キーのプレフィックス
|
|
734
|
+
*/
|
|
735
|
+
dictionaryKeyPrefix: "",
|
|
736
|
+
},
|
|
737
|
+
};
|
|
738
|
+
|
|
739
|
+
export default config;
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
743
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
744
|
+
const config = {
|
|
745
|
+
// ...構成の残り
|
|
746
|
+
compiler: {
|
|
747
|
+
/**
|
|
748
|
+
* コンパイラを有効にするかどうかを示します。
|
|
749
|
+
*/
|
|
750
|
+
enabled: true,
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* 出力ファイルパスを定義します
|
|
754
|
+
*/
|
|
755
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* 変換後にコンポーネントを保存するかどうかを示します。
|
|
759
|
+
*
|
|
760
|
+
* - `true` の場合、コンパイラはディスク上のコンポーネントファイルを書き換えます。そのため、変換は永続的になり、コンパイラは次のプロセスでの変換をスキップします。これにより、コンパイラはアプリを変換した後、削除できます。
|
|
761
|
+
*
|
|
762
|
+
* - `false` の場合、コンパイラはビルド出力のコードにのみ `useIntlayer()` 関数呼び出しを注入し、基本コードベースはそのまま維持します。変換はメモリ内でのみ行われます。
|
|
763
|
+
*/
|
|
764
|
+
saveComponents: false,
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* 辞書キーのプレフィックス
|
|
768
|
+
*/
|
|
769
|
+
dictionaryKeyPrefix: "",
|
|
770
|
+
},
|
|
771
|
+
};
|
|
772
|
+
|
|
773
|
+
module.exports = config;
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
<Tabs>
|
|
777
|
+
<Tab value='Extract command'>
|
|
778
|
+
|
|
779
|
+
エクストラクタを実行して、コンポーネントを変換し、コンテンツを抽出します
|
|
780
|
+
|
|
781
|
+
```bash packageManager="npm"
|
|
782
|
+
npx intlayer extract
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
```bash packageManager="pnpm"
|
|
786
|
+
pnpm intlayer extract
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
```bash packageManager="yarn"
|
|
790
|
+
yarn intlayer extract
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
```bash packageManager="bun"
|
|
794
|
+
bun x intlayer extract
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
</Tab>
|
|
798
|
+
<Tab value='Babel compiler'>
|
|
799
|
+
|
|
800
|
+
`intlayerCompiler` プラグインを含めるように `vite.config.ts` を更新します:
|
|
801
|
+
|
|
802
|
+
```ts fileName="vite.config.ts"
|
|
803
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
804
|
+
import { defineConfig } from "vite";
|
|
805
|
+
import { devtools } from "@tanstack/devtools-vite";
|
|
806
|
+
import viteTsConfigPaths from "vite-tsconfig-paths";
|
|
807
|
+
import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
|
|
808
|
+
import solidPlugin from "vite-plugin-solid";
|
|
809
|
+
|
|
810
|
+
export default defineConfig({
|
|
811
|
+
plugins: [
|
|
812
|
+
devtools(),
|
|
813
|
+
viteTsConfigPaths({
|
|
814
|
+
projects: ["./tsconfig.json"],
|
|
815
|
+
}),
|
|
816
|
+
tanstackStart({
|
|
817
|
+
router: {
|
|
818
|
+
routeFileIgnorePattern:
|
|
819
|
+
".content.(ts|tsx|js|mjs|cjs|jsx|json|jsonc|json5)$",
|
|
820
|
+
},
|
|
821
|
+
}),
|
|
822
|
+
solidPlugin({ ssr: true }),
|
|
823
|
+
intlayer(),
|
|
824
|
+
intlayerCompiler(),
|
|
825
|
+
],
|
|
826
|
+
});
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
```bash packageManager="npm"
|
|
830
|
+
npm run build # または npm run dev
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
```bash packageManager="pnpm"
|
|
834
|
+
pnpm run build # または pnpm run dev
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
```bash packageManager="yarn"
|
|
838
|
+
yarn build # または yarn dev
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
```bash packageManager="bun"
|
|
842
|
+
bun run build # または bun run dev
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
</Tab>
|
|
846
|
+
</Tabs>
|
|
847
|
+
|
|
848
|
+
---
|
|
849
|
+
|
|
850
|
+
### ステップ 17: TypeScriptの構成 (任意)
|
|
851
|
+
|
|
852
|
+
Intlayerは、TypeScriptの利点を活用し、コードベースをより強固にするために、モジュール拡張(module augmentation)を使用します。
|
|
853
|
+
|
|
854
|
+
TypeScript構成に自動生成された型が含まれていることを確認してください:
|
|
855
|
+
|
|
856
|
+
```json5 fileName="tsconfig.json"
|
|
857
|
+
{
|
|
858
|
+
// ...既存の構成
|
|
859
|
+
include: [
|
|
860
|
+
// ...既存のインクルード
|
|
861
|
+
".intlayer/**/*.ts", // 自動生成された型を含める
|
|
862
|
+
],
|
|
863
|
+
}
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
---
|
|
867
|
+
|
|
868
|
+
### Git構成
|
|
869
|
+
|
|
870
|
+
Intlayerによって生成されたファイルを無視することをお勧めします。これにより、それらをGitリポジトリにコミットすることを避けることができます。
|
|
871
|
+
|
|
872
|
+
これを行うには、`.gitignore` ファイルに次の指示を追加します:
|
|
873
|
+
|
|
874
|
+
```plaintext fileName=".gitignore"
|
|
875
|
+
# Intlayerによって生成されたファイルを無視する
|
|
876
|
+
.intlayer
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
---
|
|
880
|
+
|
|
881
|
+
## VS Code 拡張機能
|
|
882
|
+
|
|
883
|
+
Intlayerでの開発体験を向上させるために、公式の **Intlayer VS Code 拡張機能** をインストールできます。
|
|
884
|
+
|
|
885
|
+
[VS Code Marketplace からインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
886
|
+
|
|
887
|
+
この拡張機能は以下を提供します:
|
|
888
|
+
|
|
889
|
+
- 翻訳キーの **オートコンプリート**。
|
|
890
|
+
- 不足している翻訳の **リアルタイムエラー検出**。
|
|
891
|
+
- 翻訳されたコンテンツの **インラインプレビュー**。
|
|
892
|
+
- 翻訳を簡単に作成および更新するための **クイックアクション**。
|
|
893
|
+
|
|
894
|
+
拡張機能の使用方法の詳細については、[Intlayer VS Code 拡張機能ドキュメント](https://intlayer.org/doc/vs-code-extension) を参照してください。
|
|
895
|
+
|
|
896
|
+
---
|
|
897
|
+
|
|
898
|
+
## さらに進む
|
|
899
|
+
|
|
900
|
+
さらに進むには、[ビジュアルエディタ](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)を使用してコンテンツを外部化したりできます。
|
|
901
|
+
|
|
902
|
+
---
|
|
903
|
+
|
|
904
|
+
## ドキュメント参照
|
|
905
|
+
|
|
906
|
+
- [Intlayer ドキュメント](https://intlayer.org)
|
|
907
|
+
- [Tanstack Start ドキュメント](https://tanstack.com/start/latest)
|
|
908
|
+
- [useIntlayer フック](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/solid-intlayer/useIntlayer.md)
|
|
909
|
+
- [useLocale フック](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/solid-intlayer/useLocale.md)
|
|
910
|
+
- [コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)
|
|
911
|
+
- [構成](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)
|