@intlayer/docs 9.5.4 → 9.5.5
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/README.md +2 -1
- package/blog/ar/how_to_pick_react_i18n_library.md +28 -0
- package/blog/ar/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/de/how_to_pick_react_i18n_library.md +28 -0
- package/blog/de/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/en/how_to_pick_react_i18n_library.md +28 -0
- package/blog/en/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/en-GB/how_to_pick_react_i18n_library.md +28 -0
- package/blog/en-GB/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/es/how_to_pick_react_i18n_library.md +28 -0
- package/blog/es/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/fr/how_to_pick_react_i18n_library.md +28 -0
- package/blog/fr/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/hi/how_to_pick_react_i18n_library.md +28 -0
- package/blog/hi/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/id/how_to_pick_react_i18n_library.md +28 -0
- package/blog/id/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/it/how_to_pick_react_i18n_library.md +28 -0
- package/blog/it/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/ja/how_to_pick_react_i18n_library.md +28 -0
- package/blog/ja/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/ko/how_to_pick_react_i18n_library.md +28 -0
- package/blog/ko/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/pl/how_to_pick_react_i18n_library.md +28 -0
- package/blog/pl/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/pt/how_to_pick_react_i18n_library.md +28 -0
- package/blog/pt/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/ru/how_to_pick_react_i18n_library.md +28 -0
- package/blog/ru/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/tr/how_to_pick_react_i18n_library.md +28 -0
- package/blog/tr/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/uk/how_to_pick_react_i18n_library.md +28 -0
- package/blog/uk/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/vi/how_to_pick_react_i18n_library.md +28 -0
- package/blog/vi/how_to_pick_solid_i18n_library.md +19 -5
- package/blog/zh/how_to_pick_react_i18n_library.md +28 -0
- package/blog/zh/how_to_pick_solid_i18n_library.md +19 -5
- package/dist/cjs/generated/docs.entry.cjs +220 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +220 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +11 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/how_works_intlayer.md +86 -14
- package/docs/ar/intlayer_visual_editor.md +7 -0
- package/docs/ar/intlayer_with_astro.md +60 -36
- package/docs/ar/intlayer_with_astro_preact.md +7 -0
- package/docs/ar/intlayer_with_astro_react.md +7 -0
- package/docs/ar/intlayer_with_astro_solid.md +7 -0
- package/docs/ar/intlayer_with_astro_svelte.md +7 -0
- package/docs/ar/intlayer_with_astro_vanilla.md +7 -0
- package/docs/ar/intlayer_with_astro_vue.md +7 -0
- package/docs/ar/intlayer_with_nextjs_14.md +7 -0
- package/docs/ar/intlayer_with_nextjs_15.md +7 -0
- package/docs/ar/intlayer_with_nextjs_16.md +7 -0
- package/docs/ar/intlayer_with_react_router_v7.md +7 -0
- package/docs/ar/intlayer_with_remix_3.md +73 -112
- package/docs/ar/intlayer_with_tanstack+solid.md +7 -0
- package/docs/ar/intlayer_with_tanstack.md +7 -0
- package/docs/ar/intlayer_with_vite+preact.md +7 -0
- package/docs/ar/intlayer_with_vite+react.md +7 -0
- package/docs/ar/intlayer_with_vite+solid.md +7 -0
- package/docs/ar/packages/astro-intlayer/exports.md +161 -9
- package/docs/ar/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/ar/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/ar/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/ar/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/ar/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/ar/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/ar/packages/remix-intlayer/exports.md +80 -0
- package/docs/ar/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/ar/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/ar/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/ar/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/ar/readme.md +2 -1
- package/docs/de/how_works_intlayer.md +86 -14
- package/docs/de/intlayer_visual_editor.md +7 -0
- package/docs/de/intlayer_with_astro.md +60 -36
- package/docs/de/intlayer_with_astro_preact.md +7 -0
- package/docs/de/intlayer_with_astro_react.md +7 -0
- package/docs/de/intlayer_with_astro_solid.md +7 -0
- package/docs/de/intlayer_with_astro_svelte.md +7 -0
- package/docs/de/intlayer_with_astro_vanilla.md +7 -0
- package/docs/de/intlayer_with_astro_vue.md +7 -0
- package/docs/de/intlayer_with_nextjs_14.md +7 -0
- package/docs/de/intlayer_with_nextjs_15.md +7 -0
- package/docs/de/intlayer_with_nextjs_16.md +7 -0
- package/docs/de/intlayer_with_react_router_v7.md +7 -0
- package/docs/de/intlayer_with_remix_3.md +70 -109
- package/docs/de/intlayer_with_tanstack+solid.md +7 -0
- package/docs/de/intlayer_with_tanstack.md +7 -0
- package/docs/de/intlayer_with_vite+preact.md +7 -0
- package/docs/de/intlayer_with_vite+react.md +7 -0
- package/docs/de/intlayer_with_vite+solid.md +7 -0
- package/docs/de/packages/astro-intlayer/exports.md +164 -12
- package/docs/de/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/de/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/de/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/de/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/de/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/de/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/de/packages/remix-intlayer/exports.md +176 -0
- package/docs/de/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/de/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/de/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/de/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/de/readme.md +2 -1
- package/docs/en/how_works_intlayer.md +86 -14
- package/docs/en/intlayer_visual_editor.md +7 -0
- package/docs/en/intlayer_with_astro.md +63 -41
- package/docs/en/intlayer_with_astro_preact.md +7 -0
- package/docs/en/intlayer_with_astro_react.md +7 -0
- package/docs/en/intlayer_with_astro_solid.md +7 -0
- package/docs/en/intlayer_with_astro_svelte.md +7 -0
- package/docs/en/intlayer_with_astro_vanilla.md +7 -0
- package/docs/en/intlayer_with_astro_vue.md +7 -0
- package/docs/en/intlayer_with_nextjs_14.md +7 -0
- package/docs/en/intlayer_with_nextjs_15.md +7 -0
- package/docs/en/intlayer_with_nextjs_16.md +7 -0
- package/docs/en/intlayer_with_react_router_v7.md +7 -0
- package/docs/en/intlayer_with_remix_3.md +74 -122
- package/docs/en/intlayer_with_tanstack+solid.md +7 -0
- package/docs/en/intlayer_with_tanstack.md +7 -0
- package/docs/en/intlayer_with_vite+preact.md +7 -0
- package/docs/en/intlayer_with_vite+react.md +7 -0
- package/docs/en/intlayer_with_vite+solid.md +7 -0
- package/docs/en/introduction.md +2 -1
- package/docs/en/packages/astro-intlayer/exports.md +161 -9
- package/docs/en/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/en/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/en/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/en/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/en/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/en/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/en/packages/remix-intlayer/exports.md +176 -0
- package/docs/en/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/en/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/en/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/en/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/en/readme.md +2 -1
- package/docs/en-GB/how_works_intlayer.md +86 -14
- package/docs/en-GB/intlayer_visual_editor.md +7 -0
- package/docs/en-GB/intlayer_with_astro.md +60 -36
- package/docs/en-GB/intlayer_with_astro_preact.md +7 -0
- package/docs/en-GB/intlayer_with_astro_react.md +7 -0
- package/docs/en-GB/intlayer_with_astro_solid.md +7 -0
- package/docs/en-GB/intlayer_with_astro_svelte.md +7 -0
- package/docs/en-GB/intlayer_with_astro_vanilla.md +7 -0
- package/docs/en-GB/intlayer_with_astro_vue.md +7 -0
- package/docs/en-GB/intlayer_with_nextjs_14.md +7 -0
- package/docs/en-GB/intlayer_with_nextjs_15.md +7 -0
- package/docs/en-GB/intlayer_with_nextjs_16.md +7 -0
- package/docs/en-GB/intlayer_with_react_router_v7.md +7 -0
- package/docs/en-GB/intlayer_with_remix_3.md +66 -105
- package/docs/en-GB/intlayer_with_tanstack+solid.md +7 -0
- package/docs/en-GB/intlayer_with_tanstack.md +7 -0
- package/docs/en-GB/intlayer_with_vite+preact.md +7 -0
- package/docs/en-GB/intlayer_with_vite+react.md +7 -0
- package/docs/en-GB/intlayer_with_vite+solid.md +7 -0
- package/docs/en-GB/packages/astro-intlayer/exports.md +162 -10
- package/docs/en-GB/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/en-GB/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/en-GB/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/en-GB/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/en-GB/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/en-GB/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/en-GB/packages/remix-intlayer/exports.md +176 -0
- package/docs/en-GB/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/en-GB/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/en-GB/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/en-GB/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/en-GB/readme.md +2 -1
- package/docs/es/how_works_intlayer.md +86 -14
- package/docs/es/intlayer_visual_editor.md +7 -0
- package/docs/es/intlayer_with_astro.md +60 -36
- package/docs/es/intlayer_with_astro_preact.md +7 -0
- package/docs/es/intlayer_with_astro_react.md +7 -0
- package/docs/es/intlayer_with_astro_solid.md +7 -0
- package/docs/es/intlayer_with_astro_svelte.md +7 -0
- package/docs/es/intlayer_with_astro_vanilla.md +7 -0
- package/docs/es/intlayer_with_astro_vue.md +7 -0
- package/docs/es/intlayer_with_nextjs_14.md +7 -0
- package/docs/es/intlayer_with_nextjs_15.md +7 -0
- package/docs/es/intlayer_with_nextjs_16.md +7 -0
- package/docs/es/intlayer_with_react_router_v7.md +7 -0
- package/docs/es/intlayer_with_remix_3.md +73 -112
- package/docs/es/intlayer_with_tanstack+solid.md +7 -0
- package/docs/es/intlayer_with_tanstack.md +7 -0
- package/docs/es/intlayer_with_vite+preact.md +7 -0
- package/docs/es/intlayer_with_vite+react.md +7 -0
- package/docs/es/intlayer_with_vite+solid.md +7 -0
- package/docs/es/packages/astro-intlayer/exports.md +162 -10
- package/docs/es/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/es/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/es/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/es/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/es/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/es/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/es/packages/remix-intlayer/exports.md +176 -0
- package/docs/es/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/es/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/es/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/es/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/es/readme.md +2 -1
- package/docs/fr/how_works_intlayer.md +86 -14
- package/docs/fr/intlayer_visual_editor.md +7 -0
- package/docs/fr/intlayer_with_astro.md +60 -36
- package/docs/fr/intlayer_with_astro_preact.md +7 -0
- package/docs/fr/intlayer_with_astro_react.md +7 -0
- package/docs/fr/intlayer_with_astro_solid.md +7 -0
- package/docs/fr/intlayer_with_astro_svelte.md +7 -0
- package/docs/fr/intlayer_with_astro_vanilla.md +7 -0
- package/docs/fr/intlayer_with_astro_vue.md +7 -0
- package/docs/fr/intlayer_with_nextjs_14.md +7 -0
- package/docs/fr/intlayer_with_nextjs_15.md +7 -0
- package/docs/fr/intlayer_with_nextjs_16.md +7 -0
- package/docs/fr/intlayer_with_react_router_v7.md +7 -0
- package/docs/fr/intlayer_with_remix_3.md +74 -122
- package/docs/fr/intlayer_with_tanstack+solid.md +7 -0
- package/docs/fr/intlayer_with_tanstack.md +7 -0
- package/docs/fr/intlayer_with_vite+preact.md +7 -0
- package/docs/fr/intlayer_with_vite+react.md +7 -0
- package/docs/fr/intlayer_with_vite+solid.md +7 -0
- package/docs/fr/packages/astro-intlayer/exports.md +162 -10
- package/docs/fr/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/fr/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/fr/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/fr/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/fr/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/fr/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/fr/packages/remix-intlayer/exports.md +176 -0
- package/docs/fr/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/fr/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/fr/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/fr/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/fr/readme.md +2 -1
- package/docs/hi/how_works_intlayer.md +86 -14
- package/docs/hi/intlayer_visual_editor.md +7 -0
- package/docs/hi/intlayer_with_astro.md +61 -37
- package/docs/hi/intlayer_with_astro_preact.md +7 -0
- package/docs/hi/intlayer_with_astro_react.md +7 -0
- package/docs/hi/intlayer_with_astro_solid.md +7 -0
- package/docs/hi/intlayer_with_astro_svelte.md +7 -0
- package/docs/hi/intlayer_with_astro_vanilla.md +7 -0
- package/docs/hi/intlayer_with_astro_vue.md +7 -0
- package/docs/hi/intlayer_with_nextjs_14.md +7 -0
- package/docs/hi/intlayer_with_nextjs_15.md +7 -0
- package/docs/hi/intlayer_with_nextjs_16.md +7 -0
- package/docs/hi/intlayer_with_react_router_v7.md +7 -0
- package/docs/hi/intlayer_with_remix_3.md +73 -112
- package/docs/hi/intlayer_with_tanstack+solid.md +7 -0
- package/docs/hi/intlayer_with_tanstack.md +7 -0
- package/docs/hi/intlayer_with_vite+preact.md +7 -0
- package/docs/hi/intlayer_with_vite+react.md +7 -0
- package/docs/hi/intlayer_with_vite+solid.md +7 -0
- package/docs/hi/packages/astro-intlayer/exports.md +165 -13
- package/docs/hi/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/hi/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/hi/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/hi/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/hi/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/hi/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/hi/packages/remix-intlayer/exports.md +80 -0
- package/docs/hi/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/hi/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/hi/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/hi/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/hi/readme.md +2 -1
- package/docs/id/how_works_intlayer.md +86 -14
- package/docs/id/intlayer_visual_editor.md +7 -0
- package/docs/id/intlayer_with_astro.md +60 -36
- package/docs/id/intlayer_with_astro_preact.md +7 -0
- package/docs/id/intlayer_with_astro_react.md +7 -0
- package/docs/id/intlayer_with_astro_solid.md +7 -0
- package/docs/id/intlayer_with_astro_svelte.md +7 -0
- package/docs/id/intlayer_with_astro_vanilla.md +7 -0
- package/docs/id/intlayer_with_astro_vue.md +7 -0
- package/docs/id/intlayer_with_nextjs_14.md +7 -0
- package/docs/id/intlayer_with_nextjs_15.md +7 -0
- package/docs/id/intlayer_with_nextjs_16.md +7 -0
- package/docs/id/intlayer_with_react_router_v7.md +7 -0
- package/docs/id/intlayer_with_remix_3.md +101 -148
- package/docs/id/intlayer_with_tanstack+solid.md +7 -0
- package/docs/id/intlayer_with_tanstack.md +7 -0
- package/docs/id/intlayer_with_vite+preact.md +7 -0
- package/docs/id/intlayer_with_vite+react.md +7 -0
- package/docs/id/intlayer_with_vite+solid.md +7 -0
- package/docs/id/packages/astro-intlayer/exports.md +163 -11
- package/docs/id/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/id/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/id/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/id/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/id/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/id/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/id/packages/remix-intlayer/exports.md +80 -0
- package/docs/id/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/id/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/id/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/id/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/id/readme.md +2 -1
- package/docs/it/how_works_intlayer.md +86 -14
- package/docs/it/intlayer_visual_editor.md +7 -0
- package/docs/it/intlayer_with_astro.md +60 -36
- package/docs/it/intlayer_with_astro_preact.md +7 -0
- package/docs/it/intlayer_with_astro_react.md +7 -0
- package/docs/it/intlayer_with_astro_solid.md +7 -0
- package/docs/it/intlayer_with_astro_svelte.md +7 -0
- package/docs/it/intlayer_with_astro_vanilla.md +7 -0
- package/docs/it/intlayer_with_astro_vue.md +7 -0
- package/docs/it/intlayer_with_nextjs_14.md +7 -0
- package/docs/it/intlayer_with_nextjs_15.md +7 -0
- package/docs/it/intlayer_with_nextjs_16.md +7 -0
- package/docs/it/intlayer_with_react_router_v7.md +7 -0
- package/docs/it/intlayer_with_remix_3.md +70 -109
- package/docs/it/intlayer_with_tanstack+solid.md +7 -0
- package/docs/it/intlayer_with_tanstack.md +7 -0
- package/docs/it/intlayer_with_vite+preact.md +7 -0
- package/docs/it/intlayer_with_vite+react.md +7 -0
- package/docs/it/intlayer_with_vite+solid.md +7 -0
- package/docs/it/packages/astro-intlayer/exports.md +161 -9
- package/docs/it/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/it/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/it/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/it/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/it/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/it/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/it/packages/remix-intlayer/exports.md +176 -0
- package/docs/it/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/it/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/it/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/it/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/it/readme.md +2 -1
- package/docs/ja/how_works_intlayer.md +86 -14
- package/docs/ja/intlayer_visual_editor.md +7 -0
- package/docs/ja/intlayer_with_astro.md +61 -37
- package/docs/ja/intlayer_with_astro_preact.md +7 -0
- package/docs/ja/intlayer_with_astro_react.md +7 -0
- package/docs/ja/intlayer_with_astro_solid.md +7 -0
- package/docs/ja/intlayer_with_astro_svelte.md +7 -0
- package/docs/ja/intlayer_with_astro_vanilla.md +7 -0
- package/docs/ja/intlayer_with_astro_vue.md +7 -0
- package/docs/ja/intlayer_with_nextjs_14.md +7 -0
- package/docs/ja/intlayer_with_nextjs_15.md +7 -0
- package/docs/ja/intlayer_with_nextjs_16.md +7 -0
- package/docs/ja/intlayer_with_react_router_v7.md +7 -0
- package/docs/ja/intlayer_with_remix_3.md +73 -112
- package/docs/ja/intlayer_with_tanstack+solid.md +7 -0
- package/docs/ja/intlayer_with_tanstack.md +7 -0
- package/docs/ja/intlayer_with_vite+preact.md +7 -0
- package/docs/ja/intlayer_with_vite+react.md +7 -0
- package/docs/ja/intlayer_with_vite+solid.md +7 -0
- package/docs/ja/packages/astro-intlayer/exports.md +163 -11
- package/docs/ja/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/ja/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/ja/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/ja/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/ja/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/ja/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/ja/packages/remix-intlayer/exports.md +80 -0
- package/docs/ja/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/ja/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/ja/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/ja/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/ja/readme.md +2 -1
- package/docs/ko/how_works_intlayer.md +86 -14
- package/docs/ko/intlayer_visual_editor.md +7 -0
- package/docs/ko/intlayer_with_astro.md +61 -37
- package/docs/ko/intlayer_with_astro_preact.md +7 -0
- package/docs/ko/intlayer_with_astro_react.md +7 -0
- package/docs/ko/intlayer_with_astro_solid.md +7 -0
- package/docs/ko/intlayer_with_astro_svelte.md +7 -0
- package/docs/ko/intlayer_with_astro_vanilla.md +7 -0
- package/docs/ko/intlayer_with_astro_vue.md +7 -0
- package/docs/ko/intlayer_with_nextjs_14.md +7 -0
- package/docs/ko/intlayer_with_nextjs_15.md +7 -0
- package/docs/ko/intlayer_with_nextjs_16.md +7 -0
- package/docs/ko/intlayer_with_react_router_v7.md +7 -0
- package/docs/ko/intlayer_with_remix_3.md +73 -112
- package/docs/ko/intlayer_with_tanstack+solid.md +7 -0
- package/docs/ko/intlayer_with_tanstack.md +7 -0
- package/docs/ko/intlayer_with_vite+preact.md +7 -0
- package/docs/ko/intlayer_with_vite+react.md +7 -0
- package/docs/ko/intlayer_with_vite+solid.md +7 -0
- package/docs/ko/packages/astro-intlayer/exports.md +163 -11
- package/docs/ko/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/ko/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/ko/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/ko/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/ko/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/ko/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/ko/packages/remix-intlayer/exports.md +80 -0
- package/docs/ko/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/ko/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/ko/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/ko/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/ko/readme.md +2 -1
- package/docs/pl/how_works_intlayer.md +86 -14
- package/docs/pl/intlayer_visual_editor.md +7 -0
- package/docs/pl/intlayer_with_astro.md +61 -37
- package/docs/pl/intlayer_with_astro_preact.md +7 -0
- package/docs/pl/intlayer_with_astro_react.md +7 -0
- package/docs/pl/intlayer_with_astro_solid.md +7 -0
- package/docs/pl/intlayer_with_astro_svelte.md +7 -0
- package/docs/pl/intlayer_with_astro_vanilla.md +7 -0
- package/docs/pl/intlayer_with_astro_vue.md +7 -0
- package/docs/pl/intlayer_with_nextjs_14.md +7 -0
- package/docs/pl/intlayer_with_nextjs_15.md +7 -0
- package/docs/pl/intlayer_with_nextjs_16.md +7 -0
- package/docs/pl/intlayer_with_react_router_v7.md +7 -0
- package/docs/pl/intlayer_with_remix_3.md +101 -148
- package/docs/pl/intlayer_with_tanstack+solid.md +7 -0
- package/docs/pl/intlayer_with_tanstack.md +7 -0
- package/docs/pl/intlayer_with_vite+preact.md +7 -0
- package/docs/pl/intlayer_with_vite+react.md +7 -0
- package/docs/pl/intlayer_with_vite+solid.md +7 -0
- package/docs/pl/packages/astro-intlayer/exports.md +162 -10
- package/docs/pl/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/pl/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/pl/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/pl/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/pl/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/pl/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/pl/packages/remix-intlayer/exports.md +80 -0
- package/docs/pl/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/pl/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/pl/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/pl/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/pl/readme.md +2 -1
- package/docs/pt/how_works_intlayer.md +86 -14
- package/docs/pt/intlayer_visual_editor.md +7 -0
- package/docs/pt/intlayer_with_astro.md +61 -37
- package/docs/pt/intlayer_with_astro_preact.md +7 -0
- package/docs/pt/intlayer_with_astro_react.md +7 -0
- package/docs/pt/intlayer_with_astro_solid.md +7 -0
- package/docs/pt/intlayer_with_astro_svelte.md +7 -0
- package/docs/pt/intlayer_with_astro_vanilla.md +7 -0
- package/docs/pt/intlayer_with_astro_vue.md +7 -0
- package/docs/pt/intlayer_with_nextjs_14.md +7 -0
- package/docs/pt/intlayer_with_nextjs_15.md +7 -0
- package/docs/pt/intlayer_with_nextjs_16.md +7 -0
- package/docs/pt/intlayer_with_react_router_v7.md +7 -0
- package/docs/pt/intlayer_with_remix_3.md +73 -112
- package/docs/pt/intlayer_with_tanstack+solid.md +7 -0
- package/docs/pt/intlayer_with_tanstack.md +7 -0
- package/docs/pt/intlayer_with_vite+preact.md +7 -0
- package/docs/pt/intlayer_with_vite+react.md +7 -0
- package/docs/pt/intlayer_with_vite+solid.md +7 -0
- package/docs/pt/packages/astro-intlayer/exports.md +162 -10
- package/docs/pt/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/pt/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/pt/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/pt/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/pt/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/pt/packages/remix-intlayer/Intlayer.md +77 -0
- package/docs/pt/packages/remix-intlayer/exports.md +176 -0
- package/docs/pt/packages/remix-intlayer/intlayerMiddleware.md +101 -0
- package/docs/pt/packages/remix-intlayer/useDictionary.md +94 -0
- package/docs/pt/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/pt/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/pt/readme.md +2 -1
- package/docs/ru/how_works_intlayer.md +86 -14
- package/docs/ru/intlayer_visual_editor.md +7 -0
- package/docs/ru/intlayer_with_astro.md +61 -37
- package/docs/ru/intlayer_with_astro_preact.md +7 -0
- package/docs/ru/intlayer_with_astro_react.md +7 -0
- package/docs/ru/intlayer_with_astro_solid.md +7 -0
- package/docs/ru/intlayer_with_astro_svelte.md +7 -0
- package/docs/ru/intlayer_with_astro_vanilla.md +7 -0
- package/docs/ru/intlayer_with_astro_vue.md +7 -0
- package/docs/ru/intlayer_with_nextjs_14.md +7 -0
- package/docs/ru/intlayer_with_nextjs_15.md +7 -0
- package/docs/ru/intlayer_with_nextjs_16.md +7 -0
- package/docs/ru/intlayer_with_react_router_v7.md +7 -0
- package/docs/ru/intlayer_with_remix_3.md +73 -112
- package/docs/ru/intlayer_with_tanstack+solid.md +7 -0
- package/docs/ru/intlayer_with_tanstack.md +7 -0
- package/docs/ru/intlayer_with_vite+preact.md +7 -0
- package/docs/ru/intlayer_with_vite+react.md +7 -0
- package/docs/ru/intlayer_with_vite+solid.md +7 -0
- package/docs/ru/packages/astro-intlayer/exports.md +164 -12
- package/docs/ru/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/ru/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/ru/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/ru/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/ru/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/ru/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/ru/packages/remix-intlayer/exports.md +80 -0
- package/docs/ru/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/ru/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/ru/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/ru/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/ru/readme.md +2 -1
- package/docs/tr/how_works_intlayer.md +86 -14
- package/docs/tr/intlayer_visual_editor.md +7 -0
- package/docs/tr/intlayer_with_astro.md +60 -36
- package/docs/tr/intlayer_with_astro_preact.md +7 -0
- package/docs/tr/intlayer_with_astro_react.md +7 -0
- package/docs/tr/intlayer_with_astro_solid.md +7 -0
- package/docs/tr/intlayer_with_astro_svelte.md +7 -0
- package/docs/tr/intlayer_with_astro_vanilla.md +7 -0
- package/docs/tr/intlayer_with_astro_vue.md +7 -0
- package/docs/tr/intlayer_with_nextjs_14.md +7 -0
- package/docs/tr/intlayer_with_nextjs_15.md +7 -0
- package/docs/tr/intlayer_with_nextjs_16.md +7 -0
- package/docs/tr/intlayer_with_react_router_v7.md +7 -0
- package/docs/tr/intlayer_with_remix_3.md +101 -148
- package/docs/tr/intlayer_with_tanstack+solid.md +7 -0
- package/docs/tr/intlayer_with_tanstack.md +7 -0
- package/docs/tr/intlayer_with_vite+preact.md +7 -0
- package/docs/tr/intlayer_with_vite+react.md +7 -0
- package/docs/tr/intlayer_with_vite+solid.md +7 -0
- package/docs/tr/packages/astro-intlayer/exports.md +165 -13
- package/docs/tr/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/tr/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/tr/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/tr/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/tr/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/tr/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/tr/packages/remix-intlayer/exports.md +80 -0
- package/docs/tr/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/tr/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/tr/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/tr/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/tr/readme.md +2 -1
- package/docs/uk/how_works_intlayer.md +86 -14
- package/docs/uk/intlayer_visual_editor.md +7 -0
- package/docs/uk/intlayer_with_astro.md +61 -37
- package/docs/uk/intlayer_with_astro_preact.md +7 -0
- package/docs/uk/intlayer_with_astro_react.md +7 -0
- package/docs/uk/intlayer_with_astro_solid.md +7 -0
- package/docs/uk/intlayer_with_astro_svelte.md +7 -0
- package/docs/uk/intlayer_with_astro_vanilla.md +7 -0
- package/docs/uk/intlayer_with_astro_vue.md +7 -0
- package/docs/uk/intlayer_with_nextjs_14.md +7 -0
- package/docs/uk/intlayer_with_nextjs_15.md +7 -0
- package/docs/uk/intlayer_with_nextjs_16.md +7 -0
- package/docs/uk/intlayer_with_react_router_v7.md +7 -0
- package/docs/uk/intlayer_with_remix_3.md +101 -148
- package/docs/uk/intlayer_with_tanstack+solid.md +7 -0
- package/docs/uk/intlayer_with_tanstack.md +7 -0
- package/docs/uk/intlayer_with_vite+preact.md +7 -0
- package/docs/uk/intlayer_with_vite+react.md +7 -0
- package/docs/uk/intlayer_with_vite+solid.md +7 -0
- package/docs/uk/packages/astro-intlayer/exports.md +162 -10
- package/docs/uk/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/uk/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/uk/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/uk/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/uk/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/uk/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/uk/packages/remix-intlayer/exports.md +80 -0
- package/docs/uk/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/uk/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/uk/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/uk/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/uk/readme.md +2 -1
- package/docs/vi/how_works_intlayer.md +86 -14
- package/docs/vi/intlayer_visual_editor.md +7 -0
- package/docs/vi/intlayer_with_astro.md +60 -36
- package/docs/vi/intlayer_with_astro_preact.md +7 -0
- package/docs/vi/intlayer_with_astro_react.md +7 -0
- package/docs/vi/intlayer_with_astro_solid.md +7 -0
- package/docs/vi/intlayer_with_astro_svelte.md +7 -0
- package/docs/vi/intlayer_with_astro_vanilla.md +7 -0
- package/docs/vi/intlayer_with_astro_vue.md +7 -0
- package/docs/vi/intlayer_with_nextjs_14.md +7 -0
- package/docs/vi/intlayer_with_nextjs_15.md +7 -0
- package/docs/vi/intlayer_with_nextjs_16.md +7 -0
- package/docs/vi/intlayer_with_react_router_v7.md +7 -0
- package/docs/vi/intlayer_with_remix_3.md +101 -148
- package/docs/vi/intlayer_with_tanstack+solid.md +7 -0
- package/docs/vi/intlayer_with_tanstack.md +7 -0
- package/docs/vi/intlayer_with_vite+preact.md +7 -0
- package/docs/vi/intlayer_with_vite+react.md +7 -0
- package/docs/vi/intlayer_with_vite+solid.md +7 -0
- package/docs/vi/packages/astro-intlayer/exports.md +167 -15
- package/docs/vi/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/vi/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/vi/packages/astro-intlayer/useDictionary.md +94 -0
- package/docs/vi/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/vi/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/vi/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/vi/packages/remix-intlayer/exports.md +80 -0
- package/docs/vi/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/vi/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/vi/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/vi/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/vi/readme.md +2 -1
- package/docs/zh/how_works_intlayer.md +86 -14
- package/docs/zh/intlayer_visual_editor.md +7 -0
- package/docs/zh/intlayer_with_astro.md +61 -37
- package/docs/zh/intlayer_with_astro_preact.md +7 -0
- package/docs/zh/intlayer_with_astro_react.md +7 -0
- package/docs/zh/intlayer_with_astro_solid.md +7 -0
- package/docs/zh/intlayer_with_astro_svelte.md +7 -0
- package/docs/zh/intlayer_with_astro_vanilla.md +7 -0
- package/docs/zh/intlayer_with_astro_vue.md +7 -0
- package/docs/zh/intlayer_with_nextjs_14.md +7 -0
- package/docs/zh/intlayer_with_nextjs_15.md +7 -0
- package/docs/zh/intlayer_with_nextjs_16.md +7 -0
- package/docs/zh/intlayer_with_react_router_v7.md +7 -0
- package/docs/zh/intlayer_with_remix_3.md +74 -112
- package/docs/zh/intlayer_with_tanstack+solid.md +7 -0
- package/docs/zh/intlayer_with_tanstack.md +7 -0
- package/docs/zh/intlayer_with_vite+preact.md +7 -0
- package/docs/zh/intlayer_with_vite+react.md +7 -0
- package/docs/zh/intlayer_with_vite+solid.md +7 -0
- package/docs/zh/packages/astro-intlayer/exports.md +166 -14
- package/docs/zh/packages/astro-intlayer/intlayer.md +76 -0
- package/docs/zh/packages/astro-intlayer/onRequest.md +76 -0
- package/docs/zh/packages/astro-intlayer/useDictionary.md +95 -0
- package/docs/zh/packages/astro-intlayer/useIntlayer.md +98 -0
- package/docs/zh/packages/astro-intlayer/useLocale.md +126 -0
- package/docs/zh/packages/remix-intlayer/Intlayer.md +55 -0
- package/docs/zh/packages/remix-intlayer/exports.md +80 -0
- package/docs/zh/packages/remix-intlayer/intlayerMiddleware.md +55 -0
- package/docs/zh/packages/remix-intlayer/useDictionary.md +95 -0
- package/docs/zh/packages/remix-intlayer/useIntlayer.md +94 -0
- package/docs/zh/packages/remix-intlayer/useLocale.md +104 -0
- package/docs/zh/readme.md +2 -1
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +223 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-09-09
|
|
3
|
-
updatedAt: 2026-09-
|
|
3
|
+
updatedAt: 2026-09-19
|
|
4
4
|
title: "Remix 3 i18n - Guía completa para traducir tu aplicación"
|
|
5
5
|
description: "Olvídate de i18next. La guía 2026 para crear una aplicación Remix 3 multilingüe (i18n). Traduce con agentes de IA y optimiza el tamaño del bundle, SEO y rendimiento."
|
|
6
6
|
keywords:
|
|
@@ -19,6 +19,9 @@ slugs:
|
|
|
19
19
|
applicationTemplate: https://github.com/aymericzip/intlayer-remix-3-template
|
|
20
20
|
applicationShowcase: https://intlayer-remix-3-template.vercel.app
|
|
21
21
|
history:
|
|
22
|
+
- version: 9.5.5
|
|
23
|
+
date: 2026-09-19
|
|
24
|
+
changes: "Usar el middleware y los hooks de remix-intlayer"
|
|
22
25
|
- version: 9.5.0
|
|
23
26
|
date: 2026-09-09
|
|
24
27
|
changes: "Documentación inicial para Remix 3"
|
|
@@ -39,7 +42,7 @@ Esta guía demuestra cómo integrar **Intlayer** para una internacionalización
|
|
|
39
42
|
- **`remix/node-fetch-server`**: Adaptadores de servidor para Node.js, con soporte nativo para Bun, Deno y entornos edge.
|
|
40
43
|
- **`remix/cookie`**: Análisis y serialización de cookies criptográficamente seguras.
|
|
41
44
|
|
|
42
|
-
Combinado con **Intlayer
|
|
45
|
+
Combinado con **Intlayer** y el paquete **`remix-intlayer`**, un middleware de idioma más los mismos hooks `useIntlayer` / `useDictionary` / `useLocale` que `react-intlayer`, vinculados al contexto de petición de Remix, obtienes un sistema completo de internacionalización que ofrece seguridad en tiempo de compilación, traducciones automatizadas por IA, renderizado en servidor sin sobrecarga y enrutamiento fluido por idioma.
|
|
43
46
|
|
|
44
47
|
## Tabla de contenidos
|
|
45
48
|
|
|
@@ -52,7 +55,7 @@ En comparación con soluciones tradicionales como `i18next` o cargadores de trad
|
|
|
52
55
|
<AccordionGroup>
|
|
53
56
|
<Accordion header="Cobertura total de Remix 3 y estándares web">
|
|
54
57
|
|
|
55
|
-
Intlayer está diseñado para funcionar de forma nativa con los estándares web (`Request`, `Response`, `Headers` y `URL`).
|
|
58
|
+
Intlayer está diseñado para funcionar de forma nativa con los estándares web (`Request`, `Response`, `Headers` y `URL`). `remix-intlayer` se integra en el router Fetch de Remix 3 como un middleware ligero, extrayendo el idioma de las rutas URL, cookies o encabezados `Accept-Language` y exponiéndolo al resto de la petición, handlers, vistas y componentes `remix/ui`, sin pasarlo manualmente ni atarte a un entorno de ejecución específico.
|
|
56
59
|
|
|
57
60
|
</Accordion>
|
|
58
61
|
<Accordion header="Declaraciones de contenido con seguridad de tipos">
|
|
@@ -109,25 +112,26 @@ Consulta la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-re
|
|
|
109
112
|
<Steps>
|
|
110
113
|
<Step number={1} title="Instalar dependencias">
|
|
111
114
|
|
|
112
|
-
Instala `intlayer` y `remix` (versión 3) usando tu gestor de paquetes preferido:
|
|
115
|
+
Instala `intlayer`, `remix-intlayer` y `remix` (versión 3) usando tu gestor de paquetes preferido:
|
|
113
116
|
|
|
114
117
|
```bash packageManager="npm"
|
|
115
|
-
npm install intlayer remix@next
|
|
118
|
+
npm install intlayer remix-intlayer remix@next
|
|
116
119
|
```
|
|
117
120
|
|
|
118
121
|
```bash packageManager="pnpm"
|
|
119
|
-
pnpm add intlayer remix@next
|
|
122
|
+
pnpm add intlayer remix-intlayer remix@next
|
|
120
123
|
```
|
|
121
124
|
|
|
122
125
|
```bash packageManager="yarn"
|
|
123
|
-
yarn add intlayer remix@next
|
|
126
|
+
yarn add intlayer remix-intlayer remix@next
|
|
124
127
|
```
|
|
125
128
|
|
|
126
129
|
```bash packageManager="bun"
|
|
127
|
-
bun add intlayer remix@next
|
|
130
|
+
bun add intlayer remix-intlayer remix@next
|
|
128
131
|
```
|
|
129
132
|
|
|
130
133
|
- **`intlayer`**: Motor central de internacionalización que proporciona gestión de configuración, declaración de diccionarios (`t()`, `Dictionary`), herramientas CLI e intérprete en tiempo de ejecución.
|
|
134
|
+
- **`remix-intlayer`**: La integración con Remix 3: el middleware de router `intlayer()` que resuelve el idioma de cada petición, y los hooks `useIntlayer`, `useDictionary` y `useLocale` que lo leen en cualquier punto posterior.
|
|
131
135
|
- **`remix`**: El paquete unificado del framework Remix 3 que exporta `remix/router`, `remix/routes`, `remix/ui`, `remix/middleware/render` y `remix/node-fetch-server`.
|
|
132
136
|
|
|
133
137
|
</Step>
|
|
@@ -236,65 +240,30 @@ bun x intlayer build
|
|
|
236
240
|
Esto compila tu contenido en el directorio de artefactos `.intlayer`, permitiendo autocompletado completo en TypeScript y acceso rápido a los diccionarios.
|
|
237
241
|
|
|
238
242
|
</Step>
|
|
239
|
-
<Step number={5} title="
|
|
240
|
-
|
|
241
|
-
Remix 3 proporciona
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
1.
|
|
246
|
-
2. El
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Clave de contexto con seguridad de tipos para recuperar el idioma resuelto del RequestContext de Remix 3.
|
|
260
|
-
*/
|
|
261
|
-
export const localeKey = createContextKey<Locale>(defaultLocale);
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* Middleware de Intlayer para Remix 3.
|
|
265
|
-
*
|
|
266
|
-
* Resuelve el idioma de la solicitud siguiendo la prioridad:
|
|
267
|
-
* 1. Prefijo de ruta URL (ej. `/es/...`) mediante `getLocaleFromPath`
|
|
268
|
-
* 2. Negociación de almacenamiento y encabezados mediante `getLocale` (cookie, encabezado personalizado, negociación Accept-Language, fallback defaultLocale)
|
|
269
|
-
*
|
|
270
|
-
* Adjunta el idioma resuelto al RequestContext de Remix 3.
|
|
271
|
-
*/
|
|
272
|
-
export const intlayer = (): Middleware => {
|
|
273
|
-
return async (context, next) => {
|
|
274
|
-
// Detección de ruta (/es/about -> "es", /about -> undefined)
|
|
275
|
-
const pathLocale = getLocaleFromPath(context.url.pathname);
|
|
276
|
-
|
|
277
|
-
if (pathLocale) {
|
|
278
|
-
// Adjuntar idioma resuelto al contexto de solicitud de Remix 3
|
|
279
|
-
context.set(localeKey, pathLocale);
|
|
280
|
-
|
|
281
|
-
return next();
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
const storedLocale = await getLocale({
|
|
285
|
-
getHeader: (name) => context.headers.get(name),
|
|
286
|
-
getCookie: (name) =>
|
|
287
|
-
getCookie(name, context.headers.get("cookie") ?? undefined),
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
// Adjuntar idioma resuelto al contexto de solicitud de Remix 3
|
|
291
|
-
context.set(localeKey, storedLocale ?? defaultLocale);
|
|
292
|
-
|
|
293
|
-
return next();
|
|
294
|
-
};
|
|
295
|
-
};
|
|
243
|
+
<Step number={5} title="Añadir el middleware de Intlayer">
|
|
244
|
+
|
|
245
|
+
Remix 3 proporciona un pipeline de middleware componible mediante `createRouter({ middleware: [...] })`.
|
|
246
|
+
|
|
247
|
+
`remix-intlayer` incluye el middleware `intlayer()`. Para cada petición entrante, resuelve el idioma utilizando:
|
|
248
|
+
|
|
249
|
+
1. La URL, en todos los modos de enrutamiento excepto `no-prefix`: el prefijo de ruta (ej. `/fr` o `/es`) o el parámetro de búsqueda `?locale=`.
|
|
250
|
+
2. El idioma persistido por el cliente: la cookie de almacenamiento (`INTLAYER_LOCALE`) o el encabezado personalizado (`x-intlayer-locale`).
|
|
251
|
+
3. La negociación estándar de `Accept-Language`, recurriendo a tu `defaultLocale` configurado.
|
|
252
|
+
|
|
253
|
+
El resultado se almacena en el contexto de petición de Remix como `context.intlayer` (o `context.get(Intlayer)`), con `locale`, `defaultLocale` y `availableLocales`. A continuación, el middleware ejecuta el resto de la petición dentro de un ámbito de `AsyncLocalStorage` vinculado a ese contexto, lo que permite que los hooks del paquete lean el idioma sin argumentos, tanto en manejadores de rutas como en vistas y componentes de `remix/ui`:
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
257
|
+
|
|
258
|
+
// En cualquier punto posterior al middleware
|
|
259
|
+
const { locale, availableLocales } = useLocale();
|
|
260
|
+
const { title } = useIntlayer("home");
|
|
296
261
|
```
|
|
297
262
|
|
|
263
|
+
`useIntlayer("home", "fr")` o `useIntlayer("faq", { item: 2 })` anulan el idioma de la petición para una llamada, y `useDictionary(homeContent)` lee un diccionario importado en lugar de una clave. Fuera de una petición, los hooks recurren al idioma predeterminado.
|
|
264
|
+
|
|
265
|
+
> El middleware también prepara los diccionarios de Intlayer cuando se inicia el servidor, por lo que la falta de un `intlayer build` no deja el registro vacío.
|
|
266
|
+
|
|
298
267
|
</Step>
|
|
299
268
|
<Step number={6} title="Definir rutas con seguridad de tipos">
|
|
300
269
|
|
|
@@ -324,20 +293,21 @@ routes.localizedHome.href({ locale: "es" }); // "/es"
|
|
|
324
293
|
|
|
325
294
|
Remix 3 renderiza la interfaz de usuario con componentes JSX de `remix/ui`. Un componente es una **función de setup** que recibe un `Handle` y devuelve una **función de render**. El setup se ejecuta una sola vez por instancia, el render se ejecuta en cada actualización, y las props se leen a través de `handle.props`.
|
|
326
295
|
|
|
327
|
-
Comienza con un shell compartido `Document` que
|
|
296
|
+
Comienza con un shell compartido `Document` que establece los atributos `<html lang="..." dir="...">` a partir del idioma resuelto por el middleware:
|
|
328
297
|
|
|
329
298
|
```tsx fileName="src/views/document.tsx" codeFormat={["typescript", "esm"]}
|
|
330
|
-
import { getHTMLTextDir
|
|
299
|
+
import { getHTMLTextDir } from "intlayer";
|
|
300
|
+
import { useLocale } from "remix-intlayer";
|
|
331
301
|
import type { Handle, RemixNode } from "remix/ui";
|
|
332
302
|
|
|
333
303
|
type DocumentProps = {
|
|
334
|
-
locale: Locale;
|
|
335
304
|
title: string;
|
|
336
305
|
children?: RemixNode;
|
|
337
306
|
};
|
|
338
307
|
|
|
339
308
|
export const Document = (handle: Handle<DocumentProps>) => () => {
|
|
340
|
-
const {
|
|
309
|
+
const { title, children } = handle.props;
|
|
310
|
+
const { locale } = useLocale();
|
|
341
311
|
|
|
342
312
|
return (
|
|
343
313
|
<html lang={locale} dir={getHTMLTextDir(locale)}>
|
|
@@ -352,47 +322,40 @@ export const Document = (handle: Handle<DocumentProps>) => () => {
|
|
|
352
322
|
};
|
|
353
323
|
```
|
|
354
324
|
|
|
355
|
-
Luego crea la página de inicio.
|
|
325
|
+
Luego crea la página de inicio. Lee el diccionario localizado con `useIntlayer` y renderiza un selector de idioma:
|
|
356
326
|
|
|
357
327
|
```tsx fileName="src/views/home.tsx" codeFormat={["typescript", "esm"]}
|
|
358
|
-
import {
|
|
359
|
-
|
|
360
|
-
getLocaleName,
|
|
361
|
-
getLocalizedPath,
|
|
362
|
-
type Locale,
|
|
363
|
-
locales,
|
|
364
|
-
} from "intlayer";
|
|
365
|
-
import type { Handle } from "remix/ui";
|
|
366
|
-
import { routes } from "../routes";
|
|
328
|
+
import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer";
|
|
329
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
367
330
|
import { Document } from "./document";
|
|
368
331
|
|
|
369
|
-
|
|
370
|
-
locale
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
374
|
-
const { locale } = handle.props;
|
|
375
|
-
const home = getIntlayer("home", locale);
|
|
332
|
+
export const HomePage = () => () => {
|
|
333
|
+
const { locale, availableLocales } = useLocale();
|
|
334
|
+
const home = useIntlayer("home");
|
|
335
|
+
const pathWithoutLocale = getPathWithoutLocale();
|
|
376
336
|
|
|
377
337
|
return (
|
|
378
|
-
<Document
|
|
338
|
+
<Document title={home.title}>
|
|
379
339
|
<header>
|
|
380
340
|
<nav aria-label="Languages">
|
|
381
341
|
<span>{home.switchLanguage}</span>
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
key={
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
342
|
+
<ul>
|
|
343
|
+
{availableLocales.map((localeItem) => {
|
|
344
|
+
const isActive = localeItem === locale;
|
|
345
|
+
|
|
346
|
+
return (
|
|
347
|
+
<li key={localeItem} class="p-1">
|
|
348
|
+
<a
|
|
349
|
+
href={getLocalizedUrl(pathWithoutLocale, localeItem)}
|
|
350
|
+
class={isActive ? "active" : undefined}
|
|
351
|
+
aria-current={isActive ? "page" : undefined}
|
|
352
|
+
>
|
|
353
|
+
{getLocaleName(localeItem, locale)}
|
|
354
|
+
</a>
|
|
355
|
+
</li>
|
|
356
|
+
);
|
|
357
|
+
})}
|
|
358
|
+
</ul>
|
|
396
359
|
</nav>
|
|
397
360
|
</header>
|
|
398
361
|
<main>
|
|
@@ -404,7 +367,7 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
|
404
367
|
};
|
|
405
368
|
```
|
|
406
369
|
|
|
407
|
-
>
|
|
370
|
+
> Remix JSX no es React: `class` se escribe tal cual (`className` también se acepta) y los re-renderizados se activan explícitamente con `handle.update()`. Los valores interpolados se escapan automáticamente. Los hooks de Intlayer son funciones simples que leen el ámbito de la petición, por lo que se pueden llamar tanto desde la función de setup como desde la de renderizado.
|
|
408
371
|
|
|
409
372
|
</Step>
|
|
410
373
|
<Step number={8} title="Conectar el router y el servidor">
|
|
@@ -413,39 +376,37 @@ Añade el middleware `render()` de `remix/middleware/render` junto al middleware
|
|
|
413
376
|
|
|
414
377
|
```tsx fileName="src/router.tsx" codeFormat={["typescript", "esm"]}
|
|
415
378
|
import { isDeclaredLocale } from "intlayer";
|
|
379
|
+
import { intlayer } from "remix-intlayer";
|
|
416
380
|
import { render } from "remix/middleware/render";
|
|
417
381
|
import { createRouter } from "remix/router";
|
|
418
|
-
import { intlayer, localeKey } from "./middleware/intlayer";
|
|
419
382
|
import { routes } from "./routes";
|
|
420
383
|
import { HomePage } from "./views/home";
|
|
421
384
|
|
|
422
|
-
// 1.
|
|
385
|
+
// 1. Initialize router with Intlayer + render middleware
|
|
423
386
|
export const router = createRouter({
|
|
424
387
|
middleware: [intlayer(), render()],
|
|
425
388
|
});
|
|
426
389
|
|
|
427
|
-
// 2.
|
|
390
|
+
// 2. Map route handlers
|
|
428
391
|
router.map(routes, {
|
|
429
392
|
actions: {
|
|
430
|
-
//
|
|
393
|
+
// Default locale route
|
|
431
394
|
home(context) {
|
|
432
|
-
|
|
433
|
-
return context.render(<HomePage locale={locale} />);
|
|
395
|
+
return context.render(<HomePage />);
|
|
434
396
|
},
|
|
435
397
|
|
|
436
|
-
//
|
|
398
|
+
// Localized route
|
|
437
399
|
localizedHome(context) {
|
|
438
400
|
if (!isDeclaredLocale(context.params.locale)) {
|
|
439
401
|
return new Response("Not Found", { status: 404 });
|
|
440
402
|
}
|
|
441
|
-
|
|
442
|
-
return context.render(<HomePage locale={locale} />);
|
|
403
|
+
return context.render(<HomePage />);
|
|
443
404
|
},
|
|
444
405
|
},
|
|
445
406
|
});
|
|
446
407
|
```
|
|
447
408
|
|
|
448
|
-
> `context.render` acepta un `ResponseInit` opcional como segundo argumento,
|
|
409
|
+
> `context.render` acepta un `ResponseInit` opcional como segundo argumento, ej. `context.render(<NotFoundPage />, { status: 404 })`. El idioma resuelto permanece accesible desde el manejador como `context.intlayer.locale`, por ejemplo para construir una respuesta `Response.json`.
|
|
449
410
|
|
|
450
411
|
Por último, expón el router a través de un manejador `fetch` estándar. El mismo router funciona en Node.js, Bun, Deno y Cloudflare Workers:
|
|
451
412
|
|
|
@@ -1259,6 +1259,13 @@ Sí: [formas plurales](https://github.com/aymericzip/intlayer/blob/main/docs/doc
|
|
|
1259
1259
|
|
|
1260
1260
|
A través del [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md), que se ejecuta en tu propia infraestructura y permite que cualquiera edite texto en su sitio en la aplicación en ejecución, o del [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md), que externaliza el contenido para que pueda cambiar sin un despliegue.
|
|
1261
1261
|
|
|
1262
|
+
</Question>
|
|
1263
|
+
<Question title="¿Cuál es el costo del editor visual? ¿Es excesivo si no lo necesito?">
|
|
1264
|
+
|
|
1265
|
+
El [editor visual de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) tiene un **costo cero** en su aplicación si no está configurado. La lógica adicional solo se carga si se habilita explícitamente y es necesaria.
|
|
1266
|
+
|
|
1267
|
+
Si está habilitado, el impacto es extremadamente ligero (+5 KB, cargado dinámicamente solo cuando se activa) porque la mayor parte de la lógica es manejada por el editor del servidor en [app.intlayer.org](https://app.intlayer.org) o a través del paquete `intlayer-editor`. Si solo necesita una solución de traducción simple sin edición visual, Intlayer no agrega ninguna sobrecarga a su aplicación.
|
|
1268
|
+
|
|
1262
1269
|
</Question>
|
|
1263
1270
|
<Question title="¿Es Intlayer gratuito y de código abierto?">
|
|
1264
1271
|
|
|
@@ -1327,6 +1327,13 @@ Sí. Las declaraciones de contenido admiten [formas plurales](https://github.com
|
|
|
1327
1327
|
|
|
1328
1328
|
A través del [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md), que se ejecuta en tu propia infraestructura y permite que cualquiera edite texto en su sitio en el sitio en ejecución, o del [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md), que externaliza el contenido para que pueda cambiar sin un despliegue.
|
|
1329
1329
|
|
|
1330
|
+
</Question>
|
|
1331
|
+
<Question title="¿Cuál es el costo del editor visual? ¿Es excesivo si no lo necesito?">
|
|
1332
|
+
|
|
1333
|
+
El [editor visual de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) tiene un **costo cero** en su aplicación si no está configurado. La lógica adicional solo se carga si se habilita explícitamente y es necesaria.
|
|
1334
|
+
|
|
1335
|
+
Si está habilitado, el impacto es extremadamente ligero (+5 KB, cargado dinámicamente solo cuando se activa) porque la mayor parte de la lógica es manejada por el editor del servidor en [app.intlayer.org](https://app.intlayer.org) o a través del paquete `intlayer-editor`. Si solo necesita una solución de traducción simple sin edición visual, Intlayer no agrega ninguna sobrecarga a su aplicación.
|
|
1336
|
+
|
|
1330
1337
|
</Question>
|
|
1331
1338
|
<Question title="¿Es Intlayer gratuito y de código abierto?">
|
|
1332
1339
|
|
|
@@ -1121,6 +1121,13 @@ Sí: [formas plurales](https://github.com/aymericzip/intlayer/blob/main/docs/doc
|
|
|
1121
1121
|
|
|
1122
1122
|
A través del [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md), que se ejecuta en tu propia infraestructura y permite que cualquiera edite texto en su sitio en la aplicación en ejecución, o del [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md), que externaliza el contenido para que pueda cambiar sin un despliegue.
|
|
1123
1123
|
|
|
1124
|
+
</Question>
|
|
1125
|
+
<Question title="¿Cuál es el costo del editor visual? ¿Es excesivo si no lo necesito?">
|
|
1126
|
+
|
|
1127
|
+
El [editor visual de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) tiene un **costo cero** en su aplicación si no está configurado. La lógica adicional solo se carga si se habilita explícitamente y es necesaria.
|
|
1128
|
+
|
|
1129
|
+
Si está habilitado, el impacto es extremadamente ligero (+5 KB, cargado dinámicamente solo cuando se activa) porque la mayor parte de la lógica es manejada por el editor del servidor en [app.intlayer.org](https://app.intlayer.org) o a través del paquete `intlayer-editor`. Si solo necesita una solución de traducción simple sin edición visual, Intlayer no agrega ninguna sobrecarga a su aplicación.
|
|
1130
|
+
|
|
1124
1131
|
</Question>
|
|
1125
1132
|
<Question title="¿Es Intlayer gratuito y de código abierto?">
|
|
1126
1133
|
|
|
@@ -1065,6 +1065,13 @@ Sí: [formas plurales](https://github.com/aymericzip/intlayer/blob/main/docs/doc
|
|
|
1065
1065
|
|
|
1066
1066
|
A través del [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md), autoalojado, que permite que cualquiera edite texto en su sitio en la aplicación en ejecución, o del [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md) para el contenido que debe cambiar sin un despliegue.
|
|
1067
1067
|
|
|
1068
|
+
</Question>
|
|
1069
|
+
<Question title="¿Cuál es el costo del editor visual? ¿Es excesivo si no lo necesito?">
|
|
1070
|
+
|
|
1071
|
+
El [editor visual de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) tiene un **costo cero** en su aplicación si no está configurado. La lógica adicional solo se carga si se habilita explícitamente y es necesaria.
|
|
1072
|
+
|
|
1073
|
+
Si está habilitado, el impacto es extremadamente ligero (+5 KB, cargado dinámicamente solo cuando se activa) porque la mayor parte de la lógica es manejada por el editor del servidor en [app.intlayer.org](https://app.intlayer.org) o a través del paquete `intlayer-editor`. Si solo necesita una solución de traducción simple sin edición visual, Intlayer no agrega ninguna sobrecarga a su aplicación.
|
|
1074
|
+
|
|
1068
1075
|
</Question>
|
|
1069
1076
|
<Question title="¿Es Intlayer gratuito y de código abierto?">
|
|
1070
1077
|
|
|
@@ -820,6 +820,13 @@ Sí: [formas plurales](https://github.com/aymericzip/intlayer/blob/main/docs/doc
|
|
|
820
820
|
|
|
821
821
|
A través del [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md), que se ejecuta en tu propia infraestructura y permite que cualquiera edite texto en su sitio en la aplicación en ejecución, o del [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md), que externaliza el contenido para que pueda cambiar sin un despliegue.
|
|
822
822
|
|
|
823
|
+
</Question>
|
|
824
|
+
<Question title="¿Cuál es el costo del editor visual? ¿Es excesivo si no lo necesito?">
|
|
825
|
+
|
|
826
|
+
El [editor visual de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) tiene un **costo cero** en su aplicación si no está configurado. La lógica adicional solo se carga si se habilita explícitamente y es necesaria.
|
|
827
|
+
|
|
828
|
+
Si está habilitado, el impacto es extremadamente ligero (+5 KB, cargado dinámicamente solo cuando se activa) porque la mayor parte de la lógica es manejada por el editor del servidor en [app.intlayer.org](https://app.intlayer.org) o a través del paquete `intlayer-editor`. Si solo necesita una solución de traducción simple sin edición visual, Intlayer no agrega ninguna sobrecarga a su aplicación.
|
|
829
|
+
|
|
823
830
|
</Question>
|
|
824
831
|
<Question title="¿Es Intlayer gratuito y de código abierto?">
|
|
825
832
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-01-21
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-19
|
|
4
4
|
title: Documentación del paquete astro-intlayer
|
|
5
|
-
description: Integración de Astro para Intlayer,
|
|
5
|
+
description: Integración de Astro para Intlayer, que proporciona configuración para enrutamiento basado en locales, middleware, hooks, store de cliente y gestión de diccionarios.
|
|
6
6
|
keywords:
|
|
7
7
|
- astro-intlayer
|
|
8
8
|
- astro
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- astro-intlayer
|
|
15
15
|
- exports
|
|
16
16
|
history:
|
|
17
|
+
- version: 9.5.5
|
|
18
|
+
date: 2026-09-19
|
|
19
|
+
changes: "Añadida documentación de hooks useIntlayer, useDictionary, useLocale, middleware y formateadores"
|
|
17
20
|
- version: 8.0.0
|
|
18
21
|
date: 2026-01-21
|
|
19
22
|
changes: "Documentación unificada para todas las exportaciones"
|
|
@@ -22,7 +25,7 @@ author: aymericzip
|
|
|
22
25
|
|
|
23
26
|
# Paquete astro-intlayer
|
|
24
27
|
|
|
25
|
-
El paquete `astro-intlayer` proporciona las herramientas necesarias para integrar Intlayer en aplicaciones Astro. Configura el enrutamiento basado en locales
|
|
28
|
+
El paquete `astro-intlayer` proporciona las herramientas necesarias para integrar Intlayer en aplicaciones Astro. Configura el enrutamiento basado en locales, la gestión de diccionarios, la reescritura de páginas en tiempo de compilación, el middleware de solicitudes y los hooks para acceder al contenido multilingüe tanto en componentes `.astro` renderizados en el servidor como en scripts del lado del cliente.
|
|
26
29
|
|
|
27
30
|
## Instalación
|
|
28
31
|
|
|
@@ -34,22 +37,171 @@ npm install astro-intlayer
|
|
|
34
37
|
|
|
35
38
|
### Integración
|
|
36
39
|
|
|
37
|
-
El paquete `astro-intlayer` proporciona una integración
|
|
40
|
+
El paquete `astro-intlayer` proporciona una integración de Astro que configura Intlayer en tu proyecto.
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
Importación:
|
|
40
43
|
|
|
41
44
|
```tsx
|
|
42
|
-
import "astro-intlayer";
|
|
45
|
+
import { intlayer } from "astro-intlayer";
|
|
43
46
|
```
|
|
44
47
|
|
|
45
|
-
o
|
|
48
|
+
o importación por defecto en `astro.config.mjs`:
|
|
46
49
|
|
|
47
50
|
```ts
|
|
51
|
+
import { defineConfig } from "astro/config";
|
|
52
|
+
import intlayer from "astro-intlayer";
|
|
53
|
+
|
|
48
54
|
export default defineConfig({
|
|
49
55
|
integrations: [intlayer()],
|
|
50
56
|
});
|
|
51
57
|
```
|
|
52
58
|
|
|
53
|
-
| Función | Descripción
|
|
54
|
-
| ---------- |
|
|
55
|
-
| `intlayer` | Integración de Astro que configura
|
|
59
|
+
| Función | Descripción | Documentación relacionada |
|
|
60
|
+
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| `intlayer` | Integración de Astro que prepara diccionarios, configura plugins de Vite (alias, proxy de enrutamiento, poda), registra automáticamente el middleware de solicitudes y emite páginas prerenderizadas en URL reescritas. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/astro-intlayer/intlayer.md) |
|
|
62
|
+
|
|
63
|
+
### Hooks (Servidor y Cliente)
|
|
64
|
+
|
|
65
|
+
Importación:
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
import { useIntlayer, useDictionary, useLocale } from "astro-intlayer";
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
| Hook | Descripción | Documentación relacionada |
|
|
72
|
+
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| `useIntlayer` | Selecciona un diccionario por su clave y devuelve su contenido localizado. En el frontmatter de `.astro`, lee el locale de la solicitud de `Astro.locals`. En `<script>`, lee desde el store del cliente. | [useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/astro-intlayer/useIntlayer.md) |
|
|
74
|
+
| `useDictionary` | Transforma un objeto diccionario y devuelve contenido para el locale resuelto. Funciona en frontmatter y scripts de cliente. | [useDictionary](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/astro-intlayer/useDictionary.md) |
|
|
75
|
+
| `useLocale` | Devuelve el locale actual, el locale predeterminado, los locales disponibles y una función para actualizar el locale. | [useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/astro-intlayer/useLocale.md) |
|
|
76
|
+
|
|
77
|
+
### Middleware (astro-intlayer/middleware)
|
|
78
|
+
|
|
79
|
+
Importación:
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
import { onRequest } from "astro-intlayer/middleware";
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
| Exportación | Tipo | Descripción | Documentación relacionada |
|
|
86
|
+
| ----------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
87
|
+
| `onRequest` | `MiddlewareHandler` | Middleware de Astro que detecta el locale de la solicitud y adjunta `Astro.locals.intlayer`. Registrado automáticamente por `intlayer()`, o importado manualmente para su composición. | [onRequest](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/packages/astro-intlayer/onRequest.md) |
|
|
88
|
+
|
|
89
|
+
### Utilidades
|
|
90
|
+
|
|
91
|
+
Importación:
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
import { getIntlayerLocals } from "astro-intlayer";
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
| Función | Descripción | Documentación relacionada |
|
|
98
|
+
| ------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------- |
|
|
99
|
+
| `getIntlayerLocals` | Función de ayuda para recuperar el objeto `IntlayerLocals` actual del ámbito de almacenamiento fuera de `Astro.locals`. | - |
|
|
100
|
+
|
|
101
|
+
### Utilidades de Cliente (astro-intlayer/client)
|
|
102
|
+
|
|
103
|
+
Importación:
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
import {
|
|
107
|
+
useIntlayer,
|
|
108
|
+
useDictionary,
|
|
109
|
+
useDictionaryDynamic,
|
|
110
|
+
useLocale,
|
|
111
|
+
useLocaleStorage,
|
|
112
|
+
useLocaleCookie,
|
|
113
|
+
getIntlayer,
|
|
114
|
+
getDictionary,
|
|
115
|
+
installIntlayer,
|
|
116
|
+
setLocaleInStorage,
|
|
117
|
+
setLocaleCookie,
|
|
118
|
+
localeInStorage,
|
|
119
|
+
localeCookie,
|
|
120
|
+
} from "astro-intlayer/client";
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Cuando se importa en el navegador o dentro de etiquetas `<script>` del cliente, `astro-intlayer` se asigna automáticamente a `astro-intlayer/client` (impulsado por `vanilla-intlayer`), proporcionando getters de diccionario en el cliente, suscriptores al store y herramientas de persistencia de locale.
|
|
124
|
+
|
|
125
|
+
### Formateadores (astro-intlayer/format)
|
|
126
|
+
|
|
127
|
+
Importación:
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
import {
|
|
131
|
+
useIntl,
|
|
132
|
+
useDate,
|
|
133
|
+
useNumber,
|
|
134
|
+
useCurrency,
|
|
135
|
+
usePercentage,
|
|
136
|
+
useRelativeTime,
|
|
137
|
+
useList,
|
|
138
|
+
useUnit,
|
|
139
|
+
useCompact,
|
|
140
|
+
} from "astro-intlayer/format";
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
| Hook | Descripción |
|
|
144
|
+
| ----------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
145
|
+
| `useIntl` | Devuelve una instancia de Intl vinculada al locale con capacidades de almacenamiento en caché y suscripción. |
|
|
146
|
+
| `useDate` | Devuelve una función de formato de fecha predeterminada para el locale actual (`Intl.DateTimeFormat`). |
|
|
147
|
+
| `useNumber` | Devuelve una función de formato numérico predeterminada para el locale actual (`Intl.NumberFormat`). |
|
|
148
|
+
| `useCurrency` | Devuelve una función de formato de moneda predeterminada para el locale actual. |
|
|
149
|
+
| `usePercentage` | Devuelve una función de formato de porcentaje predeterminada para el locale actual. |
|
|
150
|
+
| `useRelativeTime` | Devuelve una función de formato de tiempo relativo predeterminada para el locale actual (`Intl.RelativeTimeFormat`). |
|
|
151
|
+
| `useList` | Devuelve una función de formato de lista predeterminada para el locale actual (`Intl.ListFormat`). |
|
|
152
|
+
| `useUnit` | Devuelve una función de formato de unidad predeterminada para el locale actual. |
|
|
153
|
+
| `useCompact` | Devuelve una función de formato de número compacto predeterminada para el locale actual (p. ej. `1.5K`). |
|
|
154
|
+
|
|
155
|
+
### Utilidades HTML (astro-intlayer/html)
|
|
156
|
+
|
|
157
|
+
Importación:
|
|
158
|
+
|
|
159
|
+
```tsx
|
|
160
|
+
import { renderHTML, useHTML, useHTMLRenderer } from "astro-intlayer/html";
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
| Exportación | Tipo | Descripción |
|
|
164
|
+
| ----------------- | ---------- | -------------------------------------------------------------------- |
|
|
165
|
+
| `renderHTML` | `Function` | Función de utilidad independiente para renderizar nodos HTML. |
|
|
166
|
+
| `useHTML` | `Hook` | Hook para obtener el contexto y configuración del proveedor de HTML. |
|
|
167
|
+
| `useHTMLRenderer` | `Hook` | Hook para obtener una función de renderizado de HTML preconfigurada. |
|
|
168
|
+
|
|
169
|
+
### Utilidades Markdown (astro-intlayer/markdown)
|
|
170
|
+
|
|
171
|
+
Importación:
|
|
172
|
+
|
|
173
|
+
```tsx
|
|
174
|
+
import {
|
|
175
|
+
compileMarkdown,
|
|
176
|
+
renderMarkdown,
|
|
177
|
+
parseMarkdown,
|
|
178
|
+
useMarkdown,
|
|
179
|
+
useMarkdownRenderer,
|
|
180
|
+
} from "astro-intlayer/markdown";
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
| Exportación | Tipo | Descripción |
|
|
184
|
+
| --------------------- | ---------- | ------------------------------------------------------------------------ |
|
|
185
|
+
| `compileMarkdown` | `Function` | Compila cadenas markdown en una representación estructurada. |
|
|
186
|
+
| `renderMarkdown` | `Function` | Renderiza contenido markdown en nodos de salida. |
|
|
187
|
+
| `parseMarkdown` | `Function` | Analiza contenido markdown en un AST. |
|
|
188
|
+
| `useMarkdown` | `Hook` | Hook para obtener el contexto del proveedor de markdown. |
|
|
189
|
+
| `useMarkdownRenderer` | `Hook` | Hook para obtener una función de renderizado de Markdown preconfigurada. |
|
|
190
|
+
|
|
191
|
+
### Tipos
|
|
192
|
+
|
|
193
|
+
Importación:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
import type {
|
|
197
|
+
IntlayerLocals,
|
|
198
|
+
UseLocaleProps,
|
|
199
|
+
UseLocaleResult,
|
|
200
|
+
} from "astro-intlayer";
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
| Tipo | Descripción |
|
|
204
|
+
| ----------------- | -------------------------------------------------------------------------------------------------------- |
|
|
205
|
+
| `IntlayerLocals` | El objeto adjunto a `Astro.locals.intlayer` que contiene `locale`, `defaultLocale` y `availableLocales`. |
|
|
206
|
+
| `UseLocaleProps` | Propiedades de configuración opcionales aceptadas por `useLocale()`. |
|
|
207
|
+
| `UseLocaleResult` | El tipo de retorno de `useLocale()`, que proporciona propiedades de locale y métodos de actualización. |
|