@intlayer/docs 7.5.6 → 7.5.8
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 +8 -4
- package/blog/ar/intlayer_with_next-i18next.md +8 -4
- package/blog/ar/intlayer_with_next-intl.md +8 -4
- package/blog/ar/intlayer_with_react-i18next.md +8 -4
- package/blog/ar/intlayer_with_react-intl.md +8 -4
- package/blog/ar/intlayer_with_vue-i18n.md +8 -4
- package/blog/de/intlayer_with_i18next.md +8 -4
- package/blog/de/intlayer_with_next-i18next.md +8 -4
- package/blog/de/intlayer_with_next-intl.md +8 -4
- package/blog/de/intlayer_with_react-i18next.md +8 -4
- package/blog/de/intlayer_with_react-intl.md +8 -4
- package/blog/de/intlayer_with_vue-i18n.md +8 -4
- package/blog/en/intlayer_with_i18next.md +8 -4
- package/blog/en/intlayer_with_next-i18next.md +8 -4
- package/blog/en/intlayer_with_next-intl.md +8 -4
- package/blog/en/intlayer_with_react-i18next.md +8 -4
- package/blog/en/intlayer_with_react-intl.md +8 -4
- package/blog/en/intlayer_with_vue-i18n.md +8 -4
- package/blog/en-GB/intlayer_with_i18next.md +8 -4
- package/blog/en-GB/intlayer_with_next-i18next.md +8 -4
- package/blog/en-GB/intlayer_with_next-intl.md +8 -4
- package/blog/en-GB/intlayer_with_react-i18next.md +8 -4
- package/blog/en-GB/intlayer_with_react-intl.md +8 -4
- package/blog/en-GB/intlayer_with_vue-i18n.md +8 -4
- package/blog/es/intlayer_with_i18next.md +8 -4
- package/blog/es/intlayer_with_next-i18next.md +8 -4
- package/blog/es/intlayer_with_next-intl.md +8 -4
- package/blog/es/intlayer_with_react-i18next.md +8 -4
- package/blog/es/intlayer_with_react-intl.md +8 -4
- package/blog/es/intlayer_with_vue-i18n.md +8 -4
- package/blog/fr/intlayer_with_i18next.md +8 -4
- package/blog/fr/intlayer_with_next-i18next.md +8 -4
- package/blog/fr/intlayer_with_next-intl.md +8 -4
- package/blog/fr/intlayer_with_react-i18next.md +8 -4
- package/blog/fr/intlayer_with_react-intl.md +8 -4
- package/blog/fr/intlayer_with_vue-i18n.md +8 -4
- package/blog/hi/intlayer_with_i18next.md +8 -4
- package/blog/hi/intlayer_with_next-i18next.md +8 -4
- package/blog/hi/intlayer_with_next-intl.md +8 -4
- package/blog/hi/intlayer_with_react-i18next.md +8 -4
- package/blog/hi/intlayer_with_react-intl.md +8 -4
- package/blog/hi/intlayer_with_vue-i18n.md +8 -4
- package/blog/id/intlayer_with_i18next.md +8 -4
- package/blog/id/intlayer_with_next-i18next.md +8 -4
- package/blog/id/intlayer_with_next-intl.md +8 -4
- package/blog/id/intlayer_with_react-i18next.md +8 -4
- package/blog/id/intlayer_with_react-intl.md +8 -4
- package/blog/id/intlayer_with_vue-i18n.md +8 -4
- package/blog/it/intlayer_with_i18next.md +8 -4
- package/blog/it/intlayer_with_next-i18next.md +8 -4
- package/blog/it/intlayer_with_next-intl.md +8 -4
- package/blog/it/intlayer_with_react-i18next.md +8 -4
- package/blog/it/intlayer_with_react-intl.md +8 -4
- package/blog/it/intlayer_with_vue-i18n.md +8 -4
- package/blog/ja/intlayer_with_i18next.md +8 -4
- package/blog/ja/intlayer_with_next-i18next.md +8 -4
- package/blog/ja/intlayer_with_next-intl.md +8 -4
- package/blog/ja/intlayer_with_react-i18next.md +8 -4
- package/blog/ja/intlayer_with_react-intl.md +8 -4
- package/blog/ja/intlayer_with_vue-i18n.md +8 -4
- package/blog/ko/intlayer_with_i18next.md +8 -4
- package/blog/ko/intlayer_with_next-i18next.md +8 -4
- package/blog/ko/intlayer_with_next-intl.md +8 -4
- package/blog/ko/intlayer_with_react-i18next.md +8 -4
- package/blog/ko/intlayer_with_react-intl.md +8 -4
- package/blog/ko/intlayer_with_vue-i18n.md +8 -4
- package/blog/pl/intlayer_with_i18next.md +8 -4
- package/blog/pl/intlayer_with_next-i18next.md +8 -4
- package/blog/pl/intlayer_with_next-intl.md +8 -4
- package/blog/pl/intlayer_with_react-i18next.md +8 -4
- package/blog/pl/intlayer_with_react-intl.md +8 -4
- package/blog/pl/intlayer_with_vue-i18n.md +8 -4
- package/blog/pt/intlayer_with_i18next.md +8 -4
- package/blog/pt/intlayer_with_next-i18next.md +8 -4
- package/blog/pt/intlayer_with_next-intl.md +8 -4
- package/blog/pt/intlayer_with_react-i18next.md +8 -4
- package/blog/pt/intlayer_with_react-intl.md +8 -4
- package/blog/pt/intlayer_with_vue-i18n.md +8 -4
- package/blog/ru/intlayer_with_i18next.md +8 -4
- package/blog/ru/intlayer_with_next-i18next.md +8 -4
- package/blog/ru/intlayer_with_next-intl.md +8 -4
- package/blog/ru/intlayer_with_react-i18next.md +8 -4
- package/blog/ru/intlayer_with_react-intl.md +8 -4
- package/blog/ru/intlayer_with_vue-i18n.md +8 -4
- package/blog/tr/intlayer_with_i18next.md +8 -4
- package/blog/tr/intlayer_with_next-i18next.md +8 -4
- package/blog/tr/intlayer_with_next-intl.md +8 -4
- package/blog/tr/intlayer_with_react-i18next.md +8 -4
- package/blog/tr/intlayer_with_react-intl.md +8 -4
- package/blog/tr/intlayer_with_vue-i18n.md +8 -4
- package/blog/vi/intlayer_with_i18next.md +8 -4
- package/blog/vi/intlayer_with_next-i18next.md +8 -4
- package/blog/vi/intlayer_with_next-intl.md +8 -4
- package/blog/vi/intlayer_with_react-i18next.md +8 -4
- package/blog/vi/intlayer_with_react-intl.md +8 -4
- package/blog/vi/intlayer_with_vue-i18n.md +8 -4
- package/blog/zh/intlayer_with_i18next.md +8 -4
- package/blog/zh/intlayer_with_next-i18next.md +8 -4
- package/blog/zh/intlayer_with_next-intl.md +8 -4
- package/blog/zh/intlayer_with_react-i18next.md +8 -4
- package/blog/zh/intlayer_with_react-intl.md +8 -4
- package/blog/zh/intlayer_with_vue-i18n.md +8 -4
- package/docs/ar/cli/index.md +4 -0
- package/docs/ar/cli/sdk.md +4 -0
- package/docs/ar/intlayer_visual_editor.md +4 -0
- package/docs/ar/intlayer_with_angular.md +8 -0
- package/docs/ar/intlayer_with_create_react_app.md +8 -0
- package/docs/ar/intlayer_with_express.md +8 -0
- package/docs/ar/intlayer_with_lynx+react.md +8 -0
- package/docs/ar/intlayer_with_nestjs.md +8 -0
- package/docs/ar/intlayer_with_next-i18next.md +15 -3
- package/docs/ar/intlayer_with_next-intl.md +12 -3
- package/docs/ar/intlayer_with_nextjs_14.md +16 -0
- package/docs/ar/intlayer_with_nextjs_15.md +16 -0
- package/docs/ar/intlayer_with_nextjs_16.md +16 -0
- package/docs/ar/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/ar/intlayer_with_nuxt.md +9 -0
- package/docs/ar/intlayer_with_react_native+expo.md +9 -0
- package/docs/ar/intlayer_with_react_router_v7.md +86 -16
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/ar/intlayer_with_svelte_kit.md +8 -0
- package/docs/ar/intlayer_with_tanstack.md +14 -0
- package/docs/ar/intlayer_with_vite+preact.md +12 -2
- package/docs/ar/intlayer_with_vite+react.md +9 -0
- package/docs/ar/intlayer_with_vite+solid.md +9 -0
- package/docs/ar/intlayer_with_vite+svelte.md +7 -0
- package/docs/ar/intlayer_with_vite+vue.md +11 -0
- package/docs/de/cli/index.md +4 -0
- package/docs/de/cli/sdk.md +4 -0
- package/docs/de/intlayer_visual_editor.md +4 -0
- package/docs/de/intlayer_with_angular.md +8 -0
- package/docs/de/intlayer_with_create_react_app.md +8 -0
- package/docs/de/intlayer_with_express.md +8 -0
- package/docs/de/intlayer_with_lynx+react.md +8 -0
- package/docs/de/intlayer_with_nestjs.md +8 -0
- package/docs/de/intlayer_with_next-i18next.md +15 -3
- package/docs/de/intlayer_with_next-intl.md +12 -3
- package/docs/de/intlayer_with_nextjs_14.md +16 -0
- package/docs/de/intlayer_with_nextjs_15.md +16 -0
- package/docs/de/intlayer_with_nextjs_16.md +16 -0
- package/docs/de/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/de/intlayer_with_nuxt.md +9 -0
- package/docs/de/intlayer_with_react_native+expo.md +1 -0
- package/docs/de/intlayer_with_react_router_v7.md +86 -15
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/de/intlayer_with_svelte_kit.md +8 -0
- package/docs/de/intlayer_with_tanstack.md +14 -0
- package/docs/de/intlayer_with_vite+preact.md +12 -2
- package/docs/de/intlayer_with_vite+react.md +9 -0
- package/docs/de/intlayer_with_vite+solid.md +9 -0
- package/docs/de/intlayer_with_vite+svelte.md +6 -0
- package/docs/de/intlayer_with_vite+vue.md +11 -0
- package/docs/en/cli/index.md +4 -0
- package/docs/en/cli/sdk.md +4 -0
- package/docs/en/configuration.md +1 -0
- package/docs/en/intlayer_visual_editor.md +4 -0
- package/docs/en/intlayer_with_angular.md +8 -0
- package/docs/en/intlayer_with_create_react_app.md +8 -0
- package/docs/en/intlayer_with_express.md +8 -0
- package/docs/en/intlayer_with_lynx+react.md +8 -0
- package/docs/en/intlayer_with_nestjs.md +8 -0
- package/docs/en/intlayer_with_next-i18next.md +15 -3
- package/docs/en/intlayer_with_next-intl.md +12 -3
- package/docs/en/intlayer_with_nextjs_14.md +16 -0
- package/docs/en/intlayer_with_nextjs_15.md +16 -0
- package/docs/en/intlayer_with_nextjs_16.md +16 -0
- package/docs/en/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/en/intlayer_with_nuxt.md +9 -0
- package/docs/en/intlayer_with_react_native+expo.md +9 -0
- package/docs/en/intlayer_with_react_router_v7.md +88 -15
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +106 -19
- package/docs/en/intlayer_with_svelte_kit.md +4 -0
- package/docs/en/intlayer_with_tanstack.md +14 -0
- package/docs/en/intlayer_with_vite+preact.md +11 -0
- package/docs/en/intlayer_with_vite+react.md +9 -0
- package/docs/en/intlayer_with_vite+solid.md +9 -0
- package/docs/en/intlayer_with_vite+svelte.md +7 -0
- package/docs/en/intlayer_with_vite+vue.md +11 -0
- package/docs/en-GB/cli/index.md +4 -0
- package/docs/en-GB/cli/sdk.md +4 -0
- package/docs/en-GB/configuration.md +1 -0
- package/docs/en-GB/intlayer_visual_editor.md +4 -0
- package/docs/en-GB/intlayer_with_angular.md +8 -0
- package/docs/en-GB/intlayer_with_create_react_app.md +16 -0
- package/docs/en-GB/intlayer_with_express.md +8 -0
- package/docs/en-GB/intlayer_with_lynx+react.md +16 -0
- package/docs/en-GB/intlayer_with_nestjs.md +8 -0
- package/docs/en-GB/intlayer_with_next-i18next.md +15 -3
- package/docs/en-GB/intlayer_with_next-intl.md +12 -3
- package/docs/en-GB/intlayer_with_nextjs_14.md +16 -0
- package/docs/en-GB/intlayer_with_nextjs_15.md +16 -0
- package/docs/en-GB/intlayer_with_nextjs_16.md +16 -0
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/en-GB/intlayer_with_nuxt.md +9 -0
- package/docs/en-GB/intlayer_with_react_native+expo.md +9 -0
- package/docs/en-GB/intlayer_with_react_router_v7.md +87 -16
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/en-GB/intlayer_with_svelte_kit.md +8 -0
- package/docs/en-GB/intlayer_with_tanstack.md +14 -0
- package/docs/en-GB/intlayer_with_vite+preact.md +12 -2
- package/docs/en-GB/intlayer_with_vite+react.md +9 -0
- package/docs/en-GB/intlayer_with_vite+solid.md +9 -0
- package/docs/en-GB/intlayer_with_vite+svelte.md +7 -0
- package/docs/en-GB/intlayer_with_vite+vue.md +11 -0
- package/docs/es/cli/index.md +4 -0
- package/docs/es/cli/sdk.md +4 -0
- package/docs/es/intlayer_visual_editor.md +4 -0
- package/docs/es/intlayer_with_angular.md +8 -0
- package/docs/es/intlayer_with_create_react_app.md +8 -0
- package/docs/es/intlayer_with_express.md +8 -0
- package/docs/es/intlayer_with_lynx+react.md +8 -0
- package/docs/es/intlayer_with_nestjs.md +8 -0
- package/docs/es/intlayer_with_next-i18next.md +15 -3
- package/docs/es/intlayer_with_next-intl.md +12 -3
- package/docs/es/intlayer_with_nextjs_14.md +16 -0
- package/docs/es/intlayer_with_nextjs_15.md +16 -0
- package/docs/es/intlayer_with_nextjs_16.md +16 -0
- package/docs/es/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/es/intlayer_with_nuxt.md +9 -0
- package/docs/es/intlayer_with_react_native+expo.md +9 -0
- package/docs/es/intlayer_with_react_router_v7.md +86 -15
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/es/intlayer_with_svelte_kit.md +8 -0
- package/docs/es/intlayer_with_tanstack.md +14 -0
- package/docs/es/intlayer_with_vite+preact.md +12 -2
- package/docs/es/intlayer_with_vite+react.md +9 -0
- package/docs/es/intlayer_with_vite+solid.md +9 -0
- package/docs/es/intlayer_with_vite+svelte.md +7 -0
- package/docs/es/intlayer_with_vite+vue.md +11 -0
- package/docs/es/packages/next-intlayer/index.md +5 -0
- package/docs/es/packages/react-intlayer/index.md +5 -0
- package/docs/fr/cli/index.md +4 -0
- package/docs/fr/cli/sdk.md +4 -0
- package/docs/fr/intlayer_visual_editor.md +4 -0
- package/docs/fr/intlayer_with_angular.md +8 -0
- package/docs/fr/intlayer_with_create_react_app.md +8 -0
- package/docs/fr/intlayer_with_express.md +8 -0
- package/docs/fr/intlayer_with_lynx+react.md +8 -0
- package/docs/fr/intlayer_with_nestjs.md +8 -0
- package/docs/fr/intlayer_with_next-i18next.md +15 -3
- package/docs/fr/intlayer_with_next-intl.md +12 -3
- package/docs/fr/intlayer_with_nextjs_14.md +16 -0
- package/docs/fr/intlayer_with_nextjs_15.md +16 -0
- package/docs/fr/intlayer_with_nextjs_16.md +16 -0
- package/docs/fr/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/fr/intlayer_with_nuxt.md +9 -0
- package/docs/fr/intlayer_with_react_native+expo.md +1 -0
- package/docs/fr/intlayer_with_react_router_v7.md +86 -15
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/fr/intlayer_with_svelte_kit.md +8 -0
- package/docs/fr/intlayer_with_tanstack.md +14 -0
- package/docs/fr/intlayer_with_vite+preact.md +12 -2
- package/docs/fr/intlayer_with_vite+react.md +9 -0
- package/docs/fr/intlayer_with_vite+solid.md +9 -0
- package/docs/fr/intlayer_with_vite+svelte.md +7 -0
- package/docs/fr/intlayer_with_vite+vue.md +11 -0
- package/docs/fr/packages/react-intlayer/index.md +5 -0
- package/docs/hi/cli/index.md +4 -0
- package/docs/hi/cli/sdk.md +4 -0
- package/docs/hi/intlayer_visual_editor.md +4 -0
- package/docs/hi/intlayer_with_angular.md +8 -0
- package/docs/hi/intlayer_with_create_react_app.md +8 -0
- package/docs/hi/intlayer_with_express.md +8 -0
- package/docs/hi/intlayer_with_lynx+react.md +8 -0
- package/docs/hi/intlayer_with_nestjs.md +8 -0
- package/docs/hi/intlayer_with_next-i18next.md +15 -3
- package/docs/hi/intlayer_with_next-intl.md +12 -3
- package/docs/hi/intlayer_with_nextjs_14.md +16 -0
- package/docs/hi/intlayer_with_nextjs_15.md +16 -0
- package/docs/hi/intlayer_with_nextjs_16.md +16 -0
- package/docs/hi/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/hi/intlayer_with_nuxt.md +9 -0
- package/docs/hi/intlayer_with_react_native+expo.md +1 -0
- package/docs/hi/intlayer_with_react_router_v7.md +86 -16
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/hi/intlayer_with_svelte_kit.md +8 -0
- package/docs/hi/intlayer_with_tanstack.md +14 -0
- package/docs/hi/intlayer_with_vite+preact.md +12 -2
- package/docs/hi/intlayer_with_vite+react.md +9 -0
- package/docs/hi/intlayer_with_vite+solid.md +9 -0
- package/docs/hi/intlayer_with_vite+svelte.md +7 -0
- package/docs/hi/intlayer_with_vite+vue.md +11 -0
- package/docs/hi/packages/intlayer/index.md +8 -0
- package/docs/id/cli/index.md +4 -0
- package/docs/id/cli/sdk.md +4 -0
- package/docs/id/intlayer_visual_editor.md +4 -0
- package/docs/id/intlayer_with_angular.md +8 -0
- package/docs/id/intlayer_with_create_react_app.md +8 -0
- package/docs/id/intlayer_with_express.md +8 -0
- package/docs/id/intlayer_with_lynx+react.md +8 -0
- package/docs/id/intlayer_with_nestjs.md +8 -0
- package/docs/id/intlayer_with_next-i18next.md +15 -3
- package/docs/id/intlayer_with_next-intl.md +12 -3
- package/docs/id/intlayer_with_nextjs_14.md +16 -0
- package/docs/id/intlayer_with_nextjs_15.md +16 -0
- package/docs/id/intlayer_with_nextjs_16.md +16 -0
- package/docs/id/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/id/intlayer_with_nuxt.md +9 -0
- package/docs/id/intlayer_with_react_native+expo.md +9 -0
- package/docs/id/intlayer_with_react_router_v7.md +86 -15
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/id/intlayer_with_svelte_kit.md +8 -0
- package/docs/id/intlayer_with_tanstack.md +14 -0
- package/docs/id/intlayer_with_vite+preact.md +11 -0
- package/docs/id/intlayer_with_vite+react.md +9 -0
- package/docs/id/intlayer_with_vite+solid.md +9 -0
- package/docs/id/intlayer_with_vite+svelte.md +7 -0
- package/docs/id/intlayer_with_vite+vue.md +11 -0
- package/docs/it/cli/index.md +4 -0
- package/docs/it/cli/sdk.md +4 -0
- package/docs/it/intlayer_visual_editor.md +4 -0
- package/docs/it/intlayer_with_angular.md +8 -0
- package/docs/it/intlayer_with_create_react_app.md +8 -0
- package/docs/it/intlayer_with_express.md +8 -0
- package/docs/it/intlayer_with_lynx+react.md +8 -0
- package/docs/it/intlayer_with_nestjs.md +8 -0
- package/docs/it/intlayer_with_next-i18next.md +15 -3
- package/docs/it/intlayer_with_next-intl.md +12 -3
- package/docs/it/intlayer_with_nextjs_14.md +16 -0
- package/docs/it/intlayer_with_nextjs_15.md +16 -0
- package/docs/it/intlayer_with_nextjs_16.md +16 -0
- package/docs/it/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/it/intlayer_with_nuxt.md +9 -0
- package/docs/it/intlayer_with_react_native+expo.md +9 -0
- package/docs/it/intlayer_with_react_router_v7.md +86 -15
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/it/intlayer_with_svelte_kit.md +8 -0
- package/docs/it/intlayer_with_tanstack.md +14 -0
- package/docs/it/intlayer_with_vite+preact.md +12 -2
- package/docs/it/intlayer_with_vite+react.md +9 -0
- package/docs/it/intlayer_with_vite+solid.md +9 -0
- package/docs/it/intlayer_with_vite+svelte.md +7 -0
- package/docs/it/intlayer_with_vite+vue.md +11 -0
- package/docs/ja/cli/index.md +4 -0
- package/docs/ja/cli/sdk.md +4 -0
- package/docs/ja/intlayer_visual_editor.md +4 -0
- package/docs/ja/intlayer_with_angular.md +8 -0
- package/docs/ja/intlayer_with_create_react_app.md +8 -0
- package/docs/ja/intlayer_with_express.md +8 -0
- package/docs/ja/intlayer_with_lynx+react.md +8 -0
- package/docs/ja/intlayer_with_nestjs.md +8 -0
- package/docs/ja/intlayer_with_next-i18next.md +15 -3
- package/docs/ja/intlayer_with_next-intl.md +12 -3
- package/docs/ja/intlayer_with_nextjs_14.md +16 -0
- package/docs/ja/intlayer_with_nextjs_15.md +16 -0
- package/docs/ja/intlayer_with_nextjs_16.md +16 -0
- package/docs/ja/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/ja/intlayer_with_nuxt.md +9 -0
- package/docs/ja/intlayer_with_react_native+expo.md +1 -0
- package/docs/ja/intlayer_with_react_router_v7.md +86 -15
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/ja/intlayer_with_svelte_kit.md +8 -0
- package/docs/ja/intlayer_with_tanstack.md +14 -0
- package/docs/ja/intlayer_with_vite+preact.md +12 -2
- package/docs/ja/intlayer_with_vite+react.md +9 -0
- package/docs/ja/intlayer_with_vite+solid.md +9 -0
- package/docs/ja/intlayer_with_vite+svelte.md +7 -0
- package/docs/ja/intlayer_with_vite+vue.md +11 -0
- package/docs/ko/cli/index.md +4 -0
- package/docs/ko/cli/sdk.md +4 -0
- package/docs/ko/intlayer_visual_editor.md +4 -0
- package/docs/ko/intlayer_with_angular.md +8 -0
- package/docs/ko/intlayer_with_create_react_app.md +8 -0
- package/docs/ko/intlayer_with_express.md +8 -0
- package/docs/ko/intlayer_with_lynx+react.md +8 -0
- package/docs/ko/intlayer_with_nestjs.md +8 -0
- package/docs/ko/intlayer_with_next-i18next.md +15 -3
- package/docs/ko/intlayer_with_next-intl.md +12 -3
- package/docs/ko/intlayer_with_nextjs_14.md +13 -0
- package/docs/ko/intlayer_with_nextjs_15.md +16 -0
- package/docs/ko/intlayer_with_nextjs_16.md +16 -0
- package/docs/ko/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/ko/intlayer_with_nuxt.md +9 -0
- package/docs/ko/intlayer_with_react_native+expo.md +9 -0
- package/docs/ko/intlayer_with_react_router_v7.md +86 -15
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/ko/intlayer_with_svelte_kit.md +8 -0
- package/docs/ko/intlayer_with_tanstack.md +14 -0
- package/docs/ko/intlayer_with_vite+preact.md +12 -2
- package/docs/ko/intlayer_with_vite+react.md +9 -0
- package/docs/ko/intlayer_with_vite+solid.md +9 -0
- package/docs/ko/intlayer_with_vite+svelte.md +7 -0
- package/docs/ko/intlayer_with_vite+vue.md +11 -0
- package/docs/pl/cli/index.md +4 -0
- package/docs/pl/cli/sdk.md +4 -0
- package/docs/pl/intlayer_visual_editor.md +4 -0
- package/docs/pl/intlayer_with_angular.md +8 -0
- package/docs/pl/intlayer_with_create_react_app.md +8 -0
- package/docs/pl/intlayer_with_express.md +8 -0
- package/docs/pl/intlayer_with_lynx+react.md +8 -0
- package/docs/pl/intlayer_with_nestjs.md +8 -0
- package/docs/pl/intlayer_with_next-i18next.md +15 -3
- package/docs/pl/intlayer_with_next-intl.md +12 -3
- package/docs/pl/intlayer_with_nextjs_14.md +16 -0
- package/docs/pl/intlayer_with_nextjs_15.md +16 -0
- package/docs/pl/intlayer_with_nextjs_16.md +16 -0
- package/docs/pl/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/pl/intlayer_with_nuxt.md +9 -0
- package/docs/pl/intlayer_with_react_native+expo.md +9 -0
- package/docs/pl/intlayer_with_react_router_v7.md +59 -13
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +102 -18
- package/docs/pl/intlayer_with_svelte_kit.md +8 -0
- package/docs/pl/intlayer_with_tanstack.md +14 -0
- package/docs/pl/intlayer_with_vite+preact.md +11 -0
- package/docs/pl/intlayer_with_vite+react.md +9 -0
- package/docs/pl/intlayer_with_vite+solid.md +9 -0
- package/docs/pl/intlayer_with_vite+svelte.md +7 -0
- package/docs/pl/intlayer_with_vite+vue.md +11 -0
- package/docs/pt/cli/index.md +4 -0
- package/docs/pt/cli/sdk.md +4 -0
- package/docs/pt/intlayer_visual_editor.md +4 -0
- package/docs/pt/intlayer_with_angular.md +8 -0
- package/docs/pt/intlayer_with_create_react_app.md +8 -0
- package/docs/pt/intlayer_with_express.md +8 -0
- package/docs/pt/intlayer_with_lynx+react.md +8 -0
- package/docs/pt/intlayer_with_nestjs.md +8 -0
- package/docs/pt/intlayer_with_next-i18next.md +15 -3
- package/docs/pt/intlayer_with_next-intl.md +12 -3
- package/docs/pt/intlayer_with_nextjs_14.md +16 -0
- package/docs/pt/intlayer_with_nextjs_15.md +16 -0
- package/docs/pt/intlayer_with_nextjs_16.md +16 -0
- package/docs/pt/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/pt/intlayer_with_nuxt.md +9 -0
- package/docs/pt/intlayer_with_react_native+expo.md +9 -0
- package/docs/pt/intlayer_with_react_router_v7.md +93 -46
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/pt/intlayer_with_svelte_kit.md +8 -0
- package/docs/pt/intlayer_with_tanstack.md +14 -0
- package/docs/pt/intlayer_with_vite+preact.md +12 -2
- package/docs/pt/intlayer_with_vite+react.md +9 -0
- package/docs/pt/intlayer_with_vite+solid.md +9 -0
- package/docs/pt/intlayer_with_vite+svelte.md +7 -0
- package/docs/pt/intlayer_with_vite+vue.md +11 -0
- package/docs/ru/cli/index.md +4 -0
- package/docs/ru/cli/sdk.md +4 -0
- package/docs/ru/intlayer_visual_editor.md +4 -0
- package/docs/ru/intlayer_with_angular.md +8 -0
- package/docs/ru/intlayer_with_create_react_app.md +8 -0
- package/docs/ru/intlayer_with_express.md +8 -0
- package/docs/ru/intlayer_with_lynx+react.md +8 -0
- package/docs/ru/intlayer_with_nestjs.md +8 -0
- package/docs/ru/intlayer_with_next-i18next.md +15 -3
- package/docs/ru/intlayer_with_next-intl.md +12 -3
- package/docs/ru/intlayer_with_nextjs_14.md +16 -0
- package/docs/ru/intlayer_with_nextjs_15.md +16 -0
- package/docs/ru/intlayer_with_nextjs_16.md +16 -0
- package/docs/ru/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/ru/intlayer_with_nuxt.md +9 -0
- package/docs/ru/intlayer_with_react_native+expo.md +9 -0
- package/docs/ru/intlayer_with_react_router_v7.md +86 -15
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/ru/intlayer_with_svelte_kit.md +8 -0
- package/docs/ru/intlayer_with_tanstack.md +14 -0
- package/docs/ru/intlayer_with_vite+preact.md +12 -2
- package/docs/ru/intlayer_with_vite+react.md +9 -0
- package/docs/ru/intlayer_with_vite+solid.md +9 -0
- package/docs/ru/intlayer_with_vite+svelte.md +7 -0
- package/docs/ru/intlayer_with_vite+vue.md +11 -0
- package/docs/tr/cli/index.md +4 -0
- package/docs/tr/cli/sdk.md +4 -0
- package/docs/tr/intlayer_visual_editor.md +4 -0
- package/docs/tr/intlayer_with_angular.md +8 -0
- package/docs/tr/intlayer_with_create_react_app.md +8 -0
- package/docs/tr/intlayer_with_express.md +8 -0
- package/docs/tr/intlayer_with_lynx+react.md +8 -0
- package/docs/tr/intlayer_with_nestjs.md +8 -0
- package/docs/tr/intlayer_with_next-i18next.md +15 -3
- package/docs/tr/intlayer_with_next-intl.md +12 -3
- package/docs/tr/intlayer_with_nextjs_14.md +16 -0
- package/docs/tr/intlayer_with_nextjs_15.md +16 -0
- package/docs/tr/intlayer_with_nextjs_16.md +16 -0
- package/docs/tr/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/tr/intlayer_with_nuxt.md +9 -0
- package/docs/tr/intlayer_with_react_native+expo.md +9 -0
- package/docs/tr/intlayer_with_react_router_v7.md +86 -15
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +103 -19
- package/docs/tr/intlayer_with_svelte_kit.md +8 -0
- package/docs/tr/intlayer_with_tanstack.md +14 -0
- package/docs/tr/intlayer_with_vite+preact.md +12 -2
- package/docs/tr/intlayer_with_vite+react.md +9 -0
- package/docs/tr/intlayer_with_vite+solid.md +9 -0
- package/docs/tr/intlayer_with_vite+svelte.md +7 -0
- package/docs/tr/intlayer_with_vite+vue.md +11 -0
- package/docs/vi/cli/index.md +5 -0
- package/docs/vi/cli/sdk.md +4 -0
- package/docs/vi/intlayer_visual_editor.md +4 -0
- package/docs/vi/intlayer_with_angular.md +8 -0
- package/docs/vi/intlayer_with_create_react_app.md +8 -0
- package/docs/vi/intlayer_with_express.md +8 -0
- package/docs/vi/intlayer_with_lynx+react.md +8 -0
- package/docs/vi/intlayer_with_nestjs.md +8 -0
- package/docs/vi/intlayer_with_next-i18next.md +15 -3
- package/docs/vi/intlayer_with_next-intl.md +12 -3
- package/docs/vi/intlayer_with_nextjs_14.md +16 -0
- package/docs/vi/intlayer_with_nextjs_15.md +16 -0
- package/docs/vi/intlayer_with_nextjs_16.md +16 -0
- package/docs/vi/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/vi/intlayer_with_nuxt.md +9 -0
- package/docs/vi/intlayer_with_react_native+expo.md +9 -0
- package/docs/vi/intlayer_with_react_router_v7.md +86 -15
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/vi/intlayer_with_svelte_kit.md +8 -0
- package/docs/vi/intlayer_with_tanstack.md +14 -0
- package/docs/vi/intlayer_with_vite+preact.md +11 -0
- package/docs/vi/intlayer_with_vite+react.md +9 -0
- package/docs/vi/intlayer_with_vite+solid.md +9 -0
- package/docs/vi/intlayer_with_vite+svelte.md +7 -0
- package/docs/vi/intlayer_with_vite+vue.md +11 -0
- package/docs/zh/cli/index.md +4 -0
- package/docs/zh/cli/sdk.md +4 -0
- package/docs/zh/intlayer_visual_editor.md +4 -0
- package/docs/zh/intlayer_with_angular.md +8 -0
- package/docs/zh/intlayer_with_create_react_app.md +8 -0
- package/docs/zh/intlayer_with_express.md +8 -0
- package/docs/zh/intlayer_with_lynx+react.md +8 -0
- package/docs/zh/intlayer_with_nestjs.md +8 -0
- package/docs/zh/intlayer_with_next-i18next.md +15 -3
- package/docs/zh/intlayer_with_next-intl.md +12 -3
- package/docs/zh/intlayer_with_nextjs_14.md +16 -0
- package/docs/zh/intlayer_with_nextjs_15.md +16 -0
- package/docs/zh/intlayer_with_nextjs_16.md +16 -0
- package/docs/zh/intlayer_with_nextjs_page_router.md +16 -0
- package/docs/zh/intlayer_with_nuxt.md +9 -0
- package/docs/zh/intlayer_with_react_native+expo.md +9 -0
- package/docs/zh/intlayer_with_react_router_v7.md +86 -15
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +16 -0
- package/docs/zh/intlayer_with_svelte_kit.md +8 -0
- package/docs/zh/intlayer_with_tanstack.md +14 -0
- package/docs/zh/intlayer_with_vite+preact.md +12 -2
- package/docs/zh/intlayer_with_vite+react.md +9 -0
- package/docs/zh/intlayer_with_vite+solid.md +9 -0
- package/docs/zh/intlayer_with_vite+svelte.md +7 -0
- package/docs/zh/intlayer_with_vite+vue.md +11 -0
- package/package.json +6 -6
|
@@ -74,16 +74,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
74
74
|
```bash packageManager="npm"
|
|
75
75
|
npm install intlayer vue-intlayer
|
|
76
76
|
npm install --save-dev nuxt-intlayer
|
|
77
|
+
npx intlayer init
|
|
77
78
|
```
|
|
78
79
|
|
|
79
80
|
```bash packageManager="pnpm"
|
|
80
81
|
pnpm add intlayer vue-intlayer
|
|
81
82
|
pnpm add --save-dev nuxt-intlayer
|
|
83
|
+
pnpm intlayer init
|
|
82
84
|
```
|
|
83
85
|
|
|
84
86
|
```bash packageManager="yarn"
|
|
85
87
|
yarn add intlayer vue-intlayer
|
|
86
88
|
yarn add --save-dev nuxt-intlayer
|
|
89
|
+
yarn intlayer init
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```bash packageManager="bun"
|
|
93
|
+
bun add intlayer vue-intlayer
|
|
94
|
+
bun add --dev nuxt-intlayer
|
|
95
|
+
bunx intlayer init
|
|
87
96
|
```
|
|
88
97
|
|
|
89
98
|
- **intlayer**
|
|
@@ -45,16 +45,25 @@ Desde tu proyecto React Native, instala los siguientes paquetes:
|
|
|
45
45
|
```bash packageManager="npm"
|
|
46
46
|
npm install intlayer react-intlayer
|
|
47
47
|
npm install --save-dev react-native-intlayer
|
|
48
|
+
npx intlayer init
|
|
48
49
|
```
|
|
49
50
|
|
|
50
51
|
```bash packageManager="pnpm"
|
|
51
52
|
pnpm add intlayer react-intlayer
|
|
52
53
|
pnpm add --save-dev react-native-intlayer
|
|
54
|
+
pnpm intlayer init
|
|
53
55
|
```
|
|
54
56
|
|
|
55
57
|
```bash packageManager="yarn"
|
|
56
58
|
yarn add intlayer react-intlayer
|
|
57
59
|
yarn add --save-dev react-native-intlayer
|
|
60
|
+
yarn intlayer init
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```bash packageManager="bun"
|
|
64
|
+
bun add intlayer react-intlayer
|
|
65
|
+
bun add --dev react-native-intlayer
|
|
66
|
+
bunx intlayer init
|
|
58
67
|
```
|
|
59
68
|
|
|
60
69
|
### Paquetes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-04
|
|
3
|
-
updatedAt: 2025-
|
|
3
|
+
updatedAt: 2025-12-27
|
|
4
4
|
title: Cómo traducir tu React Router v7 – guía i18n 2025
|
|
5
5
|
description: Aprende cómo agregar internacionalización (i18n) a tu aplicación React Router v7 usando Intlayer. Sigue esta guía completa para hacer tu aplicación multilingüe con enrutamiento consciente del locale.
|
|
6
6
|
keywords:
|
|
@@ -20,6 +20,9 @@ slugs:
|
|
|
20
20
|
applicationTemplate: https://github.com/aymericzip/intlayer-react-router-v7-template
|
|
21
21
|
youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
|
|
22
22
|
history:
|
|
23
|
+
- version: 7.5.6
|
|
24
|
+
date: 2025-12-27
|
|
25
|
+
changes: Actualizar Layout y manejar 404
|
|
23
26
|
- version: 6.1.5
|
|
24
27
|
date: 2025-10-03
|
|
25
28
|
changes: Documento actualizado
|
|
@@ -59,11 +62,25 @@ Instala los paquetes necesarios usando tu gestor de paquetes preferido:
|
|
|
59
62
|
```bash packageManager="npm"
|
|
60
63
|
npm install intlayer react-intlayer
|
|
61
64
|
npm install vite-intlayer --save-dev
|
|
65
|
+
npx intlayer init
|
|
62
66
|
```
|
|
63
67
|
|
|
64
68
|
```bash packageManager="pnpm"
|
|
65
69
|
pnpm add intlayer react-intlayer
|
|
66
70
|
pnpm add vite-intlayer --save-dev
|
|
71
|
+
pnpm intlayer init
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```bash packageManager="yarn"
|
|
75
|
+
yarn add intlayer react-intlayer
|
|
76
|
+
yarn add vite-intlayer --save-dev
|
|
77
|
+
yarn intlayer init
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```bash packageManager="bun"
|
|
81
|
+
bun add intlayer react-intlayer
|
|
82
|
+
bun add vite-intlayer --dev
|
|
83
|
+
bunx intlayer init
|
|
67
84
|
```
|
|
68
85
|
|
|
69
86
|
- **intlayer**
|
|
@@ -174,10 +191,8 @@ Configura tu enrutamiento con rutas conscientes del locale:
|
|
|
174
191
|
import { layout, route, type RouteConfig } from "@react-router/dev/routes";
|
|
175
192
|
|
|
176
193
|
export default [
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
route("/:lang?/about", "routes/about/page.tsx"), // Página "acerca de" localizada
|
|
180
|
-
]),
|
|
194
|
+
route("/:lang?", "routes/page.tsx"), // Página de inicio localizada
|
|
195
|
+
route("/:lang?/about", "routes/about/page.tsx"), // Página "acerca de" localizada
|
|
181
196
|
] satisfies RouteConfig;
|
|
182
197
|
```
|
|
183
198
|
|
|
@@ -187,19 +202,50 @@ Configura tu layout raíz y los layouts específicos por localización:
|
|
|
187
202
|
|
|
188
203
|
#### Layout Raíz
|
|
189
204
|
|
|
190
|
-
```tsx fileName="app/
|
|
205
|
+
```tsx fileName="app/root.tsx"
|
|
206
|
+
import { getLocaleFromPath } from "intlayer";
|
|
191
207
|
import { IntlayerProvider } from "react-intlayer";
|
|
192
|
-
import {
|
|
208
|
+
import {
|
|
209
|
+
data,
|
|
210
|
+
Meta,
|
|
211
|
+
Scripts,
|
|
212
|
+
ScrollRestoration,
|
|
213
|
+
useLoaderData,
|
|
214
|
+
} from "react-router";
|
|
215
|
+
import type { Route } from "./+types/root";
|
|
193
216
|
|
|
194
|
-
|
|
217
|
+
// ... Unchanged App, links and ErrorBoundary code
|
|
195
218
|
|
|
196
|
-
export
|
|
197
|
-
const
|
|
219
|
+
export async function loader({ request }: Route.LoaderArgs) {
|
|
220
|
+
const locale = getLocaleFromPath(request.url);
|
|
221
|
+
|
|
222
|
+
if (!locale) {
|
|
223
|
+
throw data("Language not supported", { status: 404 });
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
return { locale };
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export function Layout({
|
|
230
|
+
children,
|
|
231
|
+
}: { children: React.ReactNode } & Route.ComponentProps) {
|
|
232
|
+
const data = useLoaderData<typeof loader>();
|
|
233
|
+
const { locale } = data ?? {};
|
|
198
234
|
|
|
199
235
|
return (
|
|
200
|
-
<
|
|
201
|
-
<
|
|
202
|
-
|
|
236
|
+
<html lang={locale}>
|
|
237
|
+
<head>
|
|
238
|
+
<meta charSet="utf-8" />
|
|
239
|
+
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
|
240
|
+
<Meta />
|
|
241
|
+
<Links />
|
|
242
|
+
</head>
|
|
243
|
+
<body>
|
|
244
|
+
<IntlayerProvider locale={locale}>{children}</IntlayerProvider>
|
|
245
|
+
<ScrollRestoration />
|
|
246
|
+
<Scripts />
|
|
247
|
+
</body>
|
|
248
|
+
</html>
|
|
203
249
|
);
|
|
204
250
|
}
|
|
205
251
|
```
|
|
@@ -313,9 +359,34 @@ Accede a tus diccionarios de contenido a lo largo de toda tu aplicación:
|
|
|
313
359
|
|
|
314
360
|
#### Página de inicio localizada
|
|
315
361
|
|
|
316
|
-
```tsx fileName="app/routes/
|
|
362
|
+
```tsx fileName="app/routes/page.tsx"
|
|
363
|
+
import { getIntlayer, validatePrefix } from "intlayer";
|
|
317
364
|
import { useIntlayer } from "react-intlayer";
|
|
318
|
-
import {
|
|
365
|
+
import { data } from "react-router";
|
|
366
|
+
|
|
367
|
+
import { LocaleSwitcher } from "~/components/locale-switcher";
|
|
368
|
+
|
|
369
|
+
import { Navbar } from "~/components/navbar";
|
|
370
|
+
import type { Route } from "./+types/page";
|
|
371
|
+
|
|
372
|
+
export const loader = ({ params }: Route.LoaderArgs) => {
|
|
373
|
+
const { locale } = params;
|
|
374
|
+
|
|
375
|
+
const { isValid } = validatePrefix(locale);
|
|
376
|
+
|
|
377
|
+
if (!isValid) {
|
|
378
|
+
throw data("Locale not supported", { status: 404 });
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
export const meta: Route.MetaFunction = ({ params }) => {
|
|
383
|
+
const content = getIntlayer("page", params.locale);
|
|
384
|
+
|
|
385
|
+
return [
|
|
386
|
+
{ title: content.title },
|
|
387
|
+
{ content: content.description, name: "description" },
|
|
388
|
+
];
|
|
389
|
+
};
|
|
319
390
|
|
|
320
391
|
export default function Page() {
|
|
321
392
|
const { title, description, aboutLink } = useIntlayer("page");
|
|
@@ -31,6 +31,8 @@ history:
|
|
|
31
31
|
|
|
32
32
|
Esta guía demuestra cómo integrar **Intlayer** para una internacionalización fluida en proyectos con React Router v7 usando **enrutamiento basado en el sistema de archivos** (`@react-router/fs-routes`) con enrutamiento consciente del locale, soporte para TypeScript y prácticas modernas de desarrollo.
|
|
33
33
|
|
|
34
|
+
Para el enrutamiento del lado del cliente, consulte la guía [Intlayer con React Router v7](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_with_react_router_v7.md).
|
|
35
|
+
|
|
34
36
|
## Table of Contents
|
|
35
37
|
|
|
36
38
|
<TOC/>
|
|
@@ -80,6 +82,7 @@ Instala los paquetes necesarios usando tu gestor de paquetes preferido:
|
|
|
80
82
|
npm install intlayer react-intlayer
|
|
81
83
|
npm install vite-intlayer --save-dev
|
|
82
84
|
npm install @react-router/fs-routes --save-dev
|
|
85
|
+
npx intlayer init
|
|
83
86
|
```
|
|
84
87
|
|
|
85
88
|
```bash packageManager="pnpm"
|
|
@@ -88,6 +91,13 @@ pnpm add vite-intlayer --save-dev
|
|
|
88
91
|
pnpm add @react-router/fs-routes --save-dev
|
|
89
92
|
```
|
|
90
93
|
|
|
94
|
+
```bash packageManager="bun"
|
|
95
|
+
bun add intlayer react-intlayer
|
|
96
|
+
bun add vite-intlayer --dev
|
|
97
|
+
bun add @react-router/fs-routes --dev
|
|
98
|
+
bunx intlayer init
|
|
99
|
+
```
|
|
100
|
+
|
|
91
101
|
- **intlayer**
|
|
92
102
|
|
|
93
103
|
- **intlayer**
|
|
@@ -198,12 +208,13 @@ Crea los siguientes archivos en tu directorio `app/routes/`:
|
|
|
198
208
|
#### Estructura de archivos
|
|
199
209
|
|
|
200
210
|
```bash
|
|
201
|
-
app/
|
|
202
|
-
├──
|
|
203
|
-
|
|
204
|
-
├── ($locale)._index.
|
|
205
|
-
├── ($locale).
|
|
206
|
-
|
|
211
|
+
app/
|
|
212
|
+
├── root.tsx # Wrapper de layout para rutas de locale
|
|
213
|
+
└──routes/
|
|
214
|
+
├── ($locale)._index.tsx # Página de inicio (/, /es, etc.)
|
|
215
|
+
├── ($locale)._index.content.ts # Contenido de la página de inicio
|
|
216
|
+
├── ($locale).about.tsx # Página Acerca de (/about, /es/about, etc.)
|
|
217
|
+
└── ($locale).about.content.ts # Contenido de la página Acerca de
|
|
207
218
|
```
|
|
208
219
|
|
|
209
220
|
Las convenciones de nomenclatura:
|
|
@@ -215,23 +226,50 @@ Las convenciones de nomenclatura:
|
|
|
215
226
|
|
|
216
227
|
#### Componente de Layout
|
|
217
228
|
|
|
218
|
-
```tsx fileName="app/
|
|
229
|
+
```tsx fileName="app/root.tsx"
|
|
230
|
+
import { getLocaleFromPath } from "intlayer";
|
|
219
231
|
import { IntlayerProvider } from "react-intlayer";
|
|
220
|
-
import {
|
|
232
|
+
import {
|
|
233
|
+
isRouteErrorResponse,
|
|
234
|
+
Meta,
|
|
235
|
+
Outlet,
|
|
236
|
+
Scripts,
|
|
237
|
+
ScrollRestoration,
|
|
238
|
+
useLoaderData,
|
|
239
|
+
} from "react-router";
|
|
221
240
|
|
|
222
|
-
import {
|
|
241
|
+
import type { Route } from "./+types/root";
|
|
223
242
|
|
|
224
|
-
import
|
|
243
|
+
import "./app.css";
|
|
225
244
|
|
|
226
|
-
|
|
227
|
-
useI18nHTMLAttributes();
|
|
245
|
+
// ... Unchanged App, links and ErrorBoundary code
|
|
228
246
|
|
|
229
|
-
|
|
247
|
+
export async function loader({ request }: Route.LoaderArgs) {
|
|
248
|
+
const locale = getLocaleFromPath(request.url);
|
|
249
|
+
|
|
250
|
+
return { locale };
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export function Layout({
|
|
254
|
+
children,
|
|
255
|
+
}: { children: React.ReactNode } & Route.ComponentProps) {
|
|
256
|
+
const data = useLoaderData<typeof loader>();
|
|
257
|
+
const { locale } = data ?? {};
|
|
230
258
|
|
|
231
259
|
return (
|
|
232
|
-
<
|
|
233
|
-
<
|
|
234
|
-
|
|
260
|
+
<html lang={locale}>
|
|
261
|
+
<head>
|
|
262
|
+
<meta charSet="utf-8" />
|
|
263
|
+
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
|
264
|
+
<Meta />
|
|
265
|
+
<Links />
|
|
266
|
+
</head>
|
|
267
|
+
<body>
|
|
268
|
+
<IntlayerProvider locale={locale}>{children}</IntlayerProvider>
|
|
269
|
+
<ScrollRestoration />
|
|
270
|
+
<Scripts />
|
|
271
|
+
</body>
|
|
272
|
+
</html>
|
|
235
273
|
);
|
|
236
274
|
}
|
|
237
275
|
```
|
|
@@ -239,11 +277,34 @@ export default function RootLayout({ params }: Route.ComponentProps) {
|
|
|
239
277
|
#### Página de índice
|
|
240
278
|
|
|
241
279
|
```tsx fileName="app/routes/($locale)._index.tsx"
|
|
280
|
+
import { getIntlayer, validatePrefix } from "intlayer";
|
|
242
281
|
import { useIntlayer } from "react-intlayer";
|
|
243
|
-
import {
|
|
282
|
+
import { data } from "react-router";
|
|
283
|
+
|
|
284
|
+
import { LocaleSwitcher } from "~/components/locale-switcher";
|
|
285
|
+
import { Navbar } from "~/components/navbar";
|
|
244
286
|
|
|
245
287
|
import type { Route } from "./+types/($locale)._index";
|
|
246
288
|
|
|
289
|
+
export const loader = ({ params }: Route.LoaderArgs) => {
|
|
290
|
+
const { locale } = params;
|
|
291
|
+
|
|
292
|
+
const { isValid } = validatePrefix(locale);
|
|
293
|
+
|
|
294
|
+
if (!isValid) {
|
|
295
|
+
throw data("Locale not supported", { status: 404 });
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
export const meta: Route.MetaFunction = ({ params }) => {
|
|
300
|
+
const content = getIntlayer("page", params.locale);
|
|
301
|
+
|
|
302
|
+
return [
|
|
303
|
+
{ title: content.title },
|
|
304
|
+
{ content: content.description, name: "description" },
|
|
305
|
+
];
|
|
306
|
+
};
|
|
307
|
+
|
|
247
308
|
export default function Page() {
|
|
248
309
|
const { title, description, aboutLink } = useIntlayer("page");
|
|
249
310
|
|
|
@@ -262,11 +323,34 @@ export default function Page() {
|
|
|
262
323
|
#### Página Acerca de
|
|
263
324
|
|
|
264
325
|
```tsx fileName="app/routes/($locale).about.tsx"
|
|
326
|
+
import { getIntlayer, validatePrefix } from "intlayer";
|
|
265
327
|
import { useIntlayer } from "react-intlayer";
|
|
266
|
-
import {
|
|
328
|
+
import { data } from "react-router";
|
|
329
|
+
|
|
330
|
+
import { LocaleSwitcher } from "~/components/locale-switcher";
|
|
331
|
+
import { Navbar } from "~/components/navbar";
|
|
267
332
|
|
|
268
333
|
import type { Route } from "./+types/($locale).about";
|
|
269
334
|
|
|
335
|
+
export const loader = ({ params }: Route.LoaderArgs) => {
|
|
336
|
+
const { locale } = params;
|
|
337
|
+
|
|
338
|
+
const { isValid } = validatePrefix(locale);
|
|
339
|
+
|
|
340
|
+
if (!isValid) {
|
|
341
|
+
throw data("Locale not supported", { status: 404 });
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
export const meta: Route.MetaFunction = ({ params }) => {
|
|
346
|
+
const content = getIntlayer("about", params.locale);
|
|
347
|
+
|
|
348
|
+
return [
|
|
349
|
+
{ title: content.title },
|
|
350
|
+
{ content: content.description, name: "description" },
|
|
351
|
+
];
|
|
352
|
+
};
|
|
353
|
+
|
|
270
354
|
export default function AboutPage() {
|
|
271
355
|
const { title, content, homeLink } = useIntlayer("about");
|
|
272
356
|
|
|
@@ -487,7 +571,7 @@ export const useI18nHTMLAttributes = () => {
|
|
|
487
571
|
};
|
|
488
572
|
```
|
|
489
573
|
|
|
490
|
-
Este hook ya se usa en el componente de layout (`
|
|
574
|
+
Este hook ya se usa en el componente de layout (`root.tsx`) mostrado en el Paso 5.
|
|
491
575
|
|
|
492
576
|
### Paso 10: Añadir middleware (Opcional)
|
|
493
577
|
|
|
@@ -99,21 +99,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
99
99
|
```bash packageManager="npm"
|
|
100
100
|
npm install intlayer svelte-intlayer
|
|
101
101
|
npm install vite-intlayer --save-dev
|
|
102
|
+
npx intlayer init
|
|
102
103
|
```
|
|
103
104
|
|
|
104
105
|
```bash packageManager="pnpm"
|
|
105
106
|
pnpm add intlayer svelte-intlayer
|
|
106
107
|
pnpm add vite-intlayer --save-dev
|
|
108
|
+
pnpm intlayer init
|
|
107
109
|
```
|
|
108
110
|
|
|
109
111
|
```bash packageManager="yarn"
|
|
110
112
|
yarn add intlayer svelte-intlayer
|
|
111
113
|
yarn add vite-intlayer --save-dev
|
|
114
|
+
yarn intlayer init
|
|
112
115
|
```
|
|
113
116
|
|
|
114
117
|
```bash packageManager="bun"
|
|
115
118
|
bun add intlayer svelte-intlayer
|
|
116
119
|
bun add vite-intlayer --save-dev
|
|
120
|
+
bunx intlayer init
|
|
117
121
|
```
|
|
118
122
|
|
|
119
123
|
- **intlayer**: El paquete principal de i18n.
|
|
@@ -271,21 +275,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
271
275
|
```bash packageManager="npm"
|
|
272
276
|
npm install intlayer svelte-intlayer
|
|
273
277
|
npm install vite-intlayer --save-dev
|
|
278
|
+
npx intlayer init
|
|
274
279
|
```
|
|
275
280
|
|
|
276
281
|
```bash packageManager="pnpm"
|
|
277
282
|
pnpm add intlayer svelte-intlayer
|
|
278
283
|
pnpm add vite-intlayer --save-dev
|
|
284
|
+
pnpm intlayer init
|
|
279
285
|
```
|
|
280
286
|
|
|
281
287
|
```bash packageManager="yarn"
|
|
282
288
|
yarn add intlayer svelte-intlayer
|
|
283
289
|
yarn add vite-intlayer --save-dev
|
|
290
|
+
yarn intlayer init
|
|
284
291
|
```
|
|
285
292
|
|
|
286
293
|
```bash packageManager="bun"
|
|
287
294
|
bun add intlayer svelte-intlayer
|
|
288
295
|
bun add vite-intlayer --save-dev
|
|
296
|
+
bunx intlayer init
|
|
289
297
|
```
|
|
290
298
|
|
|
291
299
|
- **intlayer**: El paquete principal de i18n.
|
|
@@ -86,11 +86,25 @@ Instala los paquetes necesarios usando tu gestor de paquetes preferido:
|
|
|
86
86
|
```bash packageManager="npm"
|
|
87
87
|
npm install intlayer react-intlayer
|
|
88
88
|
npm install vite-intlayer --save-dev
|
|
89
|
+
npx intlayer init
|
|
89
90
|
```
|
|
90
91
|
|
|
91
92
|
```bash packageManager="pnpm"
|
|
92
93
|
pnpm add intlayer react-intlayer
|
|
93
94
|
pnpm add vite-intlayer --save-dev
|
|
95
|
+
pnpm intlayer init
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash packageManager="yarn"
|
|
99
|
+
yarn add intlayer react-intlayer
|
|
100
|
+
yarn add vite-intlayer --save-dev
|
|
101
|
+
yarn intlayer init
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```bash packageManager="bun"
|
|
105
|
+
bun add intlayer react-intlayer
|
|
106
|
+
bun add vite-intlayer --dev
|
|
107
|
+
bunx intlayer init
|
|
94
108
|
```
|
|
95
109
|
|
|
96
110
|
- **intlayer**
|
|
@@ -49,16 +49,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
49
49
|
```bash packageManager="npm"
|
|
50
50
|
npm install intlayer preact-intlayer
|
|
51
51
|
npm install vite-intlayer --save-dev
|
|
52
|
+
npx intlayer init
|
|
52
53
|
```
|
|
53
54
|
|
|
54
55
|
```bash packageManager="pnpm"
|
|
55
56
|
pnpm add intlayer preact-intlayer
|
|
56
57
|
pnpm add vite-intlayer --save-dev
|
|
58
|
+
pnpm intlayer init
|
|
57
59
|
```
|
|
58
60
|
|
|
59
61
|
```bash packageManager="yarn"
|
|
60
62
|
yarn add intlayer preact-intlayer
|
|
61
63
|
yarn add vite-intlayer --save-dev
|
|
64
|
+
yarn intlayer init
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```bash packageManager="bun"
|
|
68
|
+
bun add intlayer preact-intlayer
|
|
69
|
+
bun add vite-intlayer --dev
|
|
70
|
+
bunx intlayer init
|
|
62
71
|
```
|
|
63
72
|
|
|
64
73
|
- **intlayer**
|
|
@@ -633,10 +642,12 @@ Primero, instale `preact-iso`:
|
|
|
633
642
|
|
|
634
643
|
```bash packageManager="npm"
|
|
635
644
|
npm install preact-iso
|
|
645
|
+
npx intlayer init
|
|
636
646
|
```
|
|
637
647
|
|
|
638
648
|
```bash packageManager="pnpm"
|
|
639
649
|
pnpm add preact-iso
|
|
650
|
+
pnpm intlayer init
|
|
640
651
|
```
|
|
641
652
|
|
|
642
653
|
```bash packageManager="yarn"
|
|
@@ -1459,8 +1470,7 @@ import { useLocale, useLocation, route } from "preact-intlayer"; // Asumiendo qu
|
|
|
1459
1470
|
import type { JSX } from "preact"; // Para HTMLAttributes
|
|
1460
1471
|
import { forwardRef } from "preact/compat"; // Para reenviar refs
|
|
1461
1472
|
|
|
1462
|
-
export interface LocalizedLinkProps
|
|
1463
|
-
extends JSX.HTMLAttributes<HTMLAnchorElement> {
|
|
1473
|
+
export interface LocalizedLinkProps extends JSX.HTMLAttributes<HTMLAnchorElement> {
|
|
1464
1474
|
href: string;
|
|
1465
1475
|
replace?: boolean; // Opcional: para reemplazar el estado del historial
|
|
1466
1476
|
}
|
|
@@ -72,16 +72,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
72
72
|
```bash packageManager="npm"
|
|
73
73
|
npm install intlayer react-intlayer
|
|
74
74
|
npm install vite-intlayer --save-dev
|
|
75
|
+
npx intlayer init
|
|
75
76
|
```
|
|
76
77
|
|
|
77
78
|
```bash packageManager="pnpm"
|
|
78
79
|
pnpm add intlayer react-intlayer
|
|
79
80
|
pnpm add vite-intlayer --save-dev
|
|
81
|
+
pnpm intlayer init
|
|
80
82
|
```
|
|
81
83
|
|
|
82
84
|
```bash packageManager="yarn"
|
|
83
85
|
yarn add intlayer react-intlayer
|
|
84
86
|
yarn add vite-intlayer --save-dev
|
|
87
|
+
yarn intlayer init
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```bash packageManager="bun"
|
|
91
|
+
bun add intlayer react-intlayer
|
|
92
|
+
bun add vite-intlayer --dev
|
|
93
|
+
bunx intlayer init
|
|
85
94
|
```
|
|
86
95
|
|
|
87
96
|
- **intlayer**
|
|
@@ -49,16 +49,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
49
49
|
```bash packageManager="npm"
|
|
50
50
|
npm install intlayer solid-intlayer
|
|
51
51
|
npm install vite-intlayer --save-dev
|
|
52
|
+
npx intlayer init
|
|
52
53
|
```
|
|
53
54
|
|
|
54
55
|
```bash packageManager="pnpm"
|
|
55
56
|
pnpm add intlayer solid-intlayer
|
|
56
57
|
pnpm add vite-intlayer --save-dev
|
|
58
|
+
pnpm intlayer init
|
|
57
59
|
```
|
|
58
60
|
|
|
59
61
|
```bash packageManager="yarn"
|
|
60
62
|
yarn add intlayer solid-intlayer
|
|
61
63
|
yarn add vite-intlayer --save-dev
|
|
64
|
+
yarn intlayer init
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```bash packageManager="bun"
|
|
68
|
+
bun add intlayer solid-intlayer
|
|
69
|
+
bun add vite-intlayer --dev
|
|
70
|
+
bunx intlayer init
|
|
62
71
|
```
|
|
63
72
|
|
|
64
73
|
- **intlayer**
|
|
@@ -62,21 +62,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
62
62
|
```bash packageManager="npm"
|
|
63
63
|
npm install intlayer svelte-intlayer
|
|
64
64
|
npm install vite-intlayer --save-dev
|
|
65
|
+
npx intlayer init
|
|
65
66
|
```
|
|
66
67
|
|
|
67
68
|
```bash packageManager="pnpm"
|
|
68
69
|
pnpm add intlayer svelte-intlayer
|
|
69
70
|
pnpm add vite-intlayer --save-dev
|
|
71
|
+
pnpm intlayer init
|
|
70
72
|
```
|
|
71
73
|
|
|
72
74
|
```bash packageManager="yarn"
|
|
73
75
|
yarn add intlayer svelte-intlayer
|
|
74
76
|
yarn add vite-intlayer --save-dev
|
|
77
|
+
yarn intlayer init
|
|
75
78
|
```
|
|
76
79
|
|
|
77
80
|
```bash packageManager="bun"
|
|
78
81
|
bun add intlayer svelte-intlayer
|
|
79
82
|
bun add vite-intlayer --save-dev
|
|
83
|
+
bunx intlayer init
|
|
80
84
|
```
|
|
81
85
|
|
|
82
86
|
- **intlayer**
|
|
@@ -302,14 +306,17 @@ Primero, instala `svelte-spa-router`:
|
|
|
302
306
|
|
|
303
307
|
```bash packageManager="npm"
|
|
304
308
|
npm install svelte-spa-router
|
|
309
|
+
npx intlayer init
|
|
305
310
|
```
|
|
306
311
|
|
|
307
312
|
```bash packageManager="pnpm"
|
|
308
313
|
pnpm add svelte-spa-router
|
|
314
|
+
pnpm intlayer init
|
|
309
315
|
```
|
|
310
316
|
|
|
311
317
|
```bash packageManager="yarn"
|
|
312
318
|
yarn add svelte-spa-router
|
|
319
|
+
yarn intlayer init
|
|
313
320
|
```
|
|
314
321
|
|
|
315
322
|
```bash packageManager="bun"
|
|
@@ -67,16 +67,25 @@ Instala los paquetes necesarios usando npm:
|
|
|
67
67
|
```bash packageManager="npm"
|
|
68
68
|
npm install intlayer vue-intlayer
|
|
69
69
|
npm install vite-intlayer --save-dev
|
|
70
|
+
npx intlayer init
|
|
70
71
|
```
|
|
71
72
|
|
|
72
73
|
```bash packageManager="pnpm"
|
|
73
74
|
pnpm add intlayer vue-intlayer
|
|
74
75
|
pnpm add vite-intlayer --save-dev
|
|
76
|
+
pnpm intlayer init
|
|
75
77
|
```
|
|
76
78
|
|
|
77
79
|
```bash packageManager="yarn"
|
|
78
80
|
yarn add intlayer vue-intlayer
|
|
79
81
|
yarn add vite-intlayer --save-dev
|
|
82
|
+
yarn intlayer init
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```bash packageManager="bun"
|
|
86
|
+
bun add intlayer vue-intlayer
|
|
87
|
+
bun add vite-intlayer --dev
|
|
88
|
+
bunx intlayer init
|
|
80
89
|
```
|
|
81
90
|
|
|
82
91
|
- **intlayer**
|
|
@@ -607,10 +616,12 @@ Primero, instala Vue Router:
|
|
|
607
616
|
|
|
608
617
|
```bash packageManager="npm"
|
|
609
618
|
npm install vue-router
|
|
619
|
+
npx intlayer init
|
|
610
620
|
```
|
|
611
621
|
|
|
612
622
|
```bash packageManager="pnpm"
|
|
613
623
|
pnpm add vue-router
|
|
624
|
+
pnpm intlayer init
|
|
614
625
|
```
|
|
615
626
|
|
|
616
627
|
```bash packageManager="yarn"
|
|
@@ -53,6 +53,11 @@ yarn add next-intlayer
|
|
|
53
53
|
pnpm add next-intlayer
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
```bash packageManager="bun"
|
|
57
|
+
bun add next-intlayer
|
|
58
|
+
bunx intlayer init
|
|
59
|
+
```
|
|
60
|
+
|
|
56
61
|
## Ejemplo de uso
|
|
57
62
|
|
|
58
63
|
Con Intlayer, puedes declarar tu contenido de manera estructurada en cualquier parte de tu base de código.
|
|
@@ -53,6 +53,11 @@ yarn add react-intlayer
|
|
|
53
53
|
pnpm add react-intlayer
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
```bash packageManager="bun"
|
|
57
|
+
bun add react-intlayer
|
|
58
|
+
bunx intlayer init
|
|
59
|
+
```
|
|
60
|
+
|
|
56
61
|
## Ejemplo de uso
|
|
57
62
|
|
|
58
63
|
Con Intlayer, puedes declarar tu contenido de manera estructurada en cualquier parte de tu base de código.
|