@intlayer/docs 9.5.4-canary.0 → 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 - Guida completa per tradurre la tua applicazione"
|
|
5
5
|
description: "Dimentica i18next. La guida 2026 per creare un'applicazione Remix 3 multilingue (i18n). Traduci con agenti IA e ottimizza le dimensioni del bundle, la SEO e le prestazioni."
|
|
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: "Utilizzo del middleware e degli hook di remix-intlayer"
|
|
22
25
|
- version: 9.5.0
|
|
23
26
|
date: 2026-09-09
|
|
24
27
|
changes: "Documentazione iniziale per Remix 3"
|
|
@@ -39,7 +42,7 @@ Questa guida illustra come integrare **Intlayer** per un'internazionalizzazione
|
|
|
39
42
|
- **`remix/node-fetch-server`**: Adattatori server per Node.js, con supporto nativo per Bun, Deno e runtime edge.
|
|
40
43
|
- **`remix/cookie`**: Parsing e serializzazione di cookie crittograficamente sicuri.
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
Combinato con **Intlayer** e il pacchetto **`remix-intlayer`**, un middleware di locale più gli stessi hook `useIntlayer` / `useDictionary` / `useLocale` di `react-intlayer`, associati al contesto di richiesta di Remix, ottieni un sistema completo di internazionalizzazione che offre sicurezza in fase di compilazione, traduzioni automatizzate con IA, rendering lato server a zero overhead e routing fluido delle locali.
|
|
43
46
|
|
|
44
47
|
## Sommario
|
|
45
48
|
|
|
@@ -52,7 +55,7 @@ Rispetto alle soluzioni tradizionali come `i18next` o caricatori di traduzioni p
|
|
|
52
55
|
<AccordionGroup>
|
|
53
56
|
<Accordion header="Copertura completa di Remix 3 e degli standard web">
|
|
54
57
|
|
|
55
|
-
Intlayer è progettato per funzionare
|
|
58
|
+
Intlayer è progettato per funzionare in modo nativo con gli standard web (`Request`, `Response`, `Headers` e `URL`). `remix-intlayer` si integra nel router Fetch di Remix 3 come un middleware leggero, estraendo la locale dai percorsi URL, dai cookie o dalle intestazioni `Accept-Language` ed esponendola al resto della richiesta, handler, viste e componenti `remix/ui`, senza doverla passare manualmente né vincolarti a un runtime specifico.
|
|
56
59
|
|
|
57
60
|
</Accordion>
|
|
58
61
|
<Accordion header="Dichiarazioni di contenuto con sicurezza dei tipi">
|
|
@@ -109,25 +112,26 @@ Consulta il [Modello di Applicazione](https://github.com/aymericzip/intlayer-rem
|
|
|
109
112
|
<Steps>
|
|
110
113
|
<Step number={1} title="Installare le dipendenze">
|
|
111
114
|
|
|
112
|
-
Installa `intlayer` e `remix` (versione 3) utilizzando il tuo gestore di pacchetti preferito:
|
|
115
|
+
Installa `intlayer`, `remix-intlayer` e `remix` (versione 3) utilizzando il tuo gestore di pacchetti preferito:
|
|
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`**: Motore principale di internazionalizzazione per la gestione della configurazione, la dichiarazione dei dizionari (`t()`, `Dictionary`), gli strumenti CLI e l'interprete a runtime.
|
|
134
|
+
- **`remix-intlayer`**: L'integrazione con Remix 3: il middleware router `intlayer()` che risolve la locale di ogni richiesta, e gli hook `useIntlayer`, `useDictionary` e `useLocale` che la leggono in qualunque punto successivo.
|
|
131
135
|
- **`remix`**: Il pacchetto unificato del framework Remix 3 che esporta `remix/router`, `remix/routes`, `remix/ui`, `remix/middleware/render` e `remix/node-fetch-server`.
|
|
132
136
|
|
|
133
137
|
</Step>
|
|
@@ -254,65 +258,30 @@ bun x intlayer build
|
|
|
254
258
|
Ciò compila i tuoi contenuti nella directory degli artefatti `.intlayer`, offrendo completamento automatico completo in TypeScript e un rapido recupero dei dizionari.
|
|
255
259
|
|
|
256
260
|
</Step>
|
|
257
|
-
<Step number={5} title="
|
|
261
|
+
<Step number={5} title="Aggiungere il middleware Intlayer">
|
|
258
262
|
|
|
259
263
|
Remix 3 fornisce una pipeline di middleware componibile tramite `createRouter({ middleware: [...] })`.
|
|
260
264
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
1.
|
|
264
|
-
2.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Chiave di contesto con sicurezza dei tipi per recuperare la lingua risolta dal RequestContext di Remix 3.
|
|
278
|
-
*/
|
|
279
|
-
export const localeKey = createContextKey<Locale>(defaultLocale);
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Middleware Intlayer per Remix 3.
|
|
283
|
-
*
|
|
284
|
-
* Risolve la lingua della richiesta secondo la seguente priorità:
|
|
285
|
-
* 1. Prefisso del percorso URL (es. `/it/...`) tramite `getLocaleFromPath`
|
|
286
|
-
* 2. Negoziazione di header e cookie tramite `getLocale` (cookie, header personalizzato, Accept-Language, fallback defaultLocale)
|
|
287
|
-
*
|
|
288
|
-
* Associa la lingua risolta al RequestContext di Remix 3.
|
|
289
|
-
*/
|
|
290
|
-
export const intlayer = (): Middleware => {
|
|
291
|
-
return async (context, next) => {
|
|
292
|
-
// Rilevamento percorso (/it/about -> "it", /about -> undefined)
|
|
293
|
-
const pathLocale = getLocaleFromPath(context.url.pathname);
|
|
294
|
-
|
|
295
|
-
if (pathLocale) {
|
|
296
|
-
// Assegna la lingua risolta al contesto di richiesta di Remix 3
|
|
297
|
-
context.set(localeKey, pathLocale);
|
|
298
|
-
|
|
299
|
-
return next();
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
const storedLocale = await getLocale({
|
|
303
|
-
getHeader: (name) => context.headers.get(name),
|
|
304
|
-
getCookie: (name) =>
|
|
305
|
-
getCookie(name, context.headers.get("cookie") ?? undefined),
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
// Assegna la lingua risolta al contesto di richiesta di Remix 3
|
|
309
|
-
context.set(localeKey, storedLocale ?? defaultLocale);
|
|
310
|
-
|
|
311
|
-
return next();
|
|
312
|
-
};
|
|
313
|
-
};
|
|
265
|
+
`remix-intlayer` fornisce il middleware `intlayer()`. Per ogni richiesta in entrata risolve la locale utilizzando:
|
|
266
|
+
|
|
267
|
+
1. L'URL, in ogni modalità di routing tranne `no-prefix`: il prefisso del percorso (es. `/it` o `/fr`) o il parametro di ricerca `?locale=`.
|
|
268
|
+
2. La locale memorizzata dal client: il cookie di archiviazione (`INTLAYER_LOCALE`) o l'intestazione personalizzata (`x-intlayer-locale`).
|
|
269
|
+
3. La negoziazione standard di `Accept-Language`, ricorrendo alla tua `defaultLocale` configurata.
|
|
270
|
+
|
|
271
|
+
Il risultato viene memorizzato nel contesto di richiesta di Remix come `context.intlayer` (o `context.get(Intlayer)`), con `locale`, `defaultLocale` e `availableLocales`. Il middleware esegue quindi il resto della richiesta all'interno di un ambito `AsyncLocalStorage` associato a tale contesto, consentendo agli hook del pacchetto di leggere la locale senza argomenti, sia nei gestori di route che nelle viste e nei componenti `remix/ui`:
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
275
|
+
|
|
276
|
+
// Ovunque a valle del middleware
|
|
277
|
+
const { locale, availableLocales } = useLocale();
|
|
278
|
+
const { title } = useIntlayer("home");
|
|
314
279
|
```
|
|
315
280
|
|
|
281
|
+
`useIntlayer("home", "fr")` o `useIntlayer("faq", { item: 2 })` sovrascrivono la locale della richiesta per una singola chiamata, e `useDictionary(homeContent)` legge un dizionario importato anziché una chiave. Al di fuori di una richiesta, gli hook ricorrono alla locale predefinita.
|
|
282
|
+
|
|
283
|
+
> Il middleware prepara anche i dizionari Intlayer all'avvio del server, in modo che un `intlayer build` mancante non lasci il registro vuoto.
|
|
284
|
+
|
|
316
285
|
</Step>
|
|
317
286
|
<Step number={6} title="Definire route con sicurezza dei tipi">
|
|
318
287
|
|
|
@@ -342,20 +311,21 @@ routes.localizedHome.href({ locale: "it" }); // "/it"
|
|
|
342
311
|
|
|
343
312
|
Remix 3 esegue il rendering dell'interfaccia utente con componenti JSX provenienti da `remix/ui`. Un componente è una **funzione di setup** che riceve un `Handle` e restituisce una **funzione di render**. Il setup viene eseguito una sola volta per istanza, il render viene eseguito a ogni aggiornamento e le props vengono lette tramite `handle.props`.
|
|
344
313
|
|
|
345
|
-
Inizia con
|
|
314
|
+
Inizia con un guscio condiviso `Document` che imposta gli attributi `<html lang="..." dir="...">` dalla locale risolta dal middleware:
|
|
346
315
|
|
|
347
316
|
```tsx fileName="src/views/document.tsx" codeFormat={["typescript", "esm"]}
|
|
348
|
-
import { getHTMLTextDir
|
|
317
|
+
import { getHTMLTextDir } from "intlayer";
|
|
318
|
+
import { useLocale } from "remix-intlayer";
|
|
349
319
|
import type { Handle, RemixNode } from "remix/ui";
|
|
350
320
|
|
|
351
321
|
type DocumentProps = {
|
|
352
|
-
locale: Locale;
|
|
353
322
|
title: string;
|
|
354
323
|
children?: RemixNode;
|
|
355
324
|
};
|
|
356
325
|
|
|
357
326
|
export const Document = (handle: Handle<DocumentProps>) => () => {
|
|
358
|
-
const {
|
|
327
|
+
const { title, children } = handle.props;
|
|
328
|
+
const { locale } = useLocale();
|
|
359
329
|
|
|
360
330
|
return (
|
|
361
331
|
<html lang={locale} dir={getHTMLTextDir(locale)}>
|
|
@@ -370,47 +340,40 @@ export const Document = (handle: Handle<DocumentProps>) => () => {
|
|
|
370
340
|
};
|
|
371
341
|
```
|
|
372
342
|
|
|
373
|
-
|
|
343
|
+
Poi crea la pagina home. Legge il dizionario localizzato con `useIntlayer` e mostra un selettore di lingua:
|
|
374
344
|
|
|
375
345
|
```tsx fileName="src/views/home.tsx" codeFormat={["typescript", "esm"]}
|
|
376
|
-
import {
|
|
377
|
-
|
|
378
|
-
getLocaleName,
|
|
379
|
-
getLocalizedPath,
|
|
380
|
-
type Locale,
|
|
381
|
-
locales,
|
|
382
|
-
} from "intlayer";
|
|
383
|
-
import type { Handle } from "remix/ui";
|
|
384
|
-
import { routes } from "../routes";
|
|
346
|
+
import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer";
|
|
347
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
385
348
|
import { Document } from "./document";
|
|
386
349
|
|
|
387
|
-
|
|
388
|
-
locale
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
392
|
-
const { locale } = handle.props;
|
|
393
|
-
const home = getIntlayer("home", locale);
|
|
350
|
+
export const HomePage = () => () => {
|
|
351
|
+
const { locale, availableLocales } = useLocale();
|
|
352
|
+
const home = useIntlayer("home");
|
|
353
|
+
const pathWithoutLocale = getPathWithoutLocale();
|
|
394
354
|
|
|
395
355
|
return (
|
|
396
|
-
<Document
|
|
356
|
+
<Document title={home.title}>
|
|
397
357
|
<header>
|
|
398
358
|
<nav aria-label="Languages">
|
|
399
359
|
<span>{home.switchLanguage}</span>
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
key={
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
360
|
+
<ul>
|
|
361
|
+
{availableLocales.map((localeItem) => {
|
|
362
|
+
const isActive = localeItem === locale;
|
|
363
|
+
|
|
364
|
+
return (
|
|
365
|
+
<li key={localeItem} class="p-1">
|
|
366
|
+
<a
|
|
367
|
+
href={getLocalizedUrl(pathWithoutLocale, localeItem)}
|
|
368
|
+
class={isActive ? "active" : undefined}
|
|
369
|
+
aria-current={isActive ? "page" : undefined}
|
|
370
|
+
>
|
|
371
|
+
{getLocaleName(localeItem, locale)}
|
|
372
|
+
</a>
|
|
373
|
+
</li>
|
|
374
|
+
);
|
|
375
|
+
})}
|
|
376
|
+
</ul>
|
|
414
377
|
</nav>
|
|
415
378
|
</header>
|
|
416
379
|
<main>
|
|
@@ -422,7 +385,7 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
|
422
385
|
};
|
|
423
386
|
```
|
|
424
387
|
|
|
425
|
-
>
|
|
388
|
+
> JSX in Remix non è React: `class` si scrive così com'è (`className` è comunque accettato) e i nuovi rendering vengono attivati esplicitamente con `handle.update()`. I valori interpolati vengono sottoposti a escape automaticamente. Gli hook Intlayer sono semplici funzioni che leggono l'ambito della richiesta, quindi possono essere chiamati sia dalla funzione di setup che da quella di rendering.
|
|
426
389
|
|
|
427
390
|
</Step>
|
|
428
391
|
<Step number={8} title="Collegare il router e il server">
|
|
@@ -431,39 +394,37 @@ Aggiungi il middleware `render()` di `remix/middleware/render` accanto al middle
|
|
|
431
394
|
|
|
432
395
|
```tsx fileName="src/router.tsx" codeFormat={["typescript", "esm"]}
|
|
433
396
|
import { isDeclaredLocale } from "intlayer";
|
|
397
|
+
import { intlayer } from "remix-intlayer";
|
|
434
398
|
import { render } from "remix/middleware/render";
|
|
435
399
|
import { createRouter } from "remix/router";
|
|
436
|
-
import { intlayer, localeKey } from "./middleware/intlayer";
|
|
437
400
|
import { routes } from "./routes";
|
|
438
401
|
import { HomePage } from "./views/home";
|
|
439
402
|
|
|
440
|
-
// 1.
|
|
403
|
+
// 1. Initialize router with Intlayer + render middleware
|
|
441
404
|
export const router = createRouter({
|
|
442
405
|
middleware: [intlayer(), render()],
|
|
443
406
|
});
|
|
444
407
|
|
|
445
|
-
// 2.
|
|
408
|
+
// 2. Map route handlers
|
|
446
409
|
router.map(routes, {
|
|
447
410
|
actions: {
|
|
448
|
-
//
|
|
411
|
+
// Default locale route
|
|
449
412
|
home(context) {
|
|
450
|
-
|
|
451
|
-
return context.render(<HomePage locale={locale} />);
|
|
413
|
+
return context.render(<HomePage />);
|
|
452
414
|
},
|
|
453
415
|
|
|
454
|
-
//
|
|
416
|
+
// Localized route
|
|
455
417
|
localizedHome(context) {
|
|
456
418
|
if (!isDeclaredLocale(context.params.locale)) {
|
|
457
419
|
return new Response("Not Found", { status: 404 });
|
|
458
420
|
}
|
|
459
|
-
|
|
460
|
-
return context.render(<HomePage locale={locale} />);
|
|
421
|
+
return context.render(<HomePage />);
|
|
461
422
|
},
|
|
462
423
|
},
|
|
463
424
|
});
|
|
464
425
|
```
|
|
465
426
|
|
|
466
|
-
> `context.render` accetta un `ResponseInit` opzionale come secondo argomento, ad es. `context.render(<NotFoundPage
|
|
427
|
+
> `context.render` accetta un `ResponseInit` opzionale come secondo argomento, ad es. `context.render(<NotFoundPage />, { status: 404 })`. La locale risolta rimane accessibile dall'handler come `context.intlayer.locale`, ad esempio per costruire una risposta `Response.json`.
|
|
467
428
|
|
|
468
429
|
Infine, esponi il router tramite un gestore `fetch` standard. Lo stesso router funziona su Node.js, Bun, Deno e Cloudflare Workers:
|
|
469
430
|
|
|
@@ -1259,6 +1259,13 @@ Sì: [forme plurali](https://github.com/aymericzip/intlayer/blob/main/docs/docs/
|
|
|
1259
1259
|
|
|
1260
1260
|
Attraverso l'[editor visivo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md), che gira sulla tua infrastruttura e permette a chiunque di modificare il testo sul posto nell'app in esecuzione, o il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md), che esternalizza il contenuto così può cambiare senza un deployment.
|
|
1261
1261
|
|
|
1262
|
+
</Question>
|
|
1263
|
+
<Question title="Qual è il costo dell'editor visuale? È eccessivo se non ne ho bisogno?">
|
|
1264
|
+
|
|
1265
|
+
L'[editor visuale di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) ha un **costo pari a zero** sulla tua applicazione se non viene configurato. La logica aggiuntiva viene caricata solo se esplicitamente abilitata e necessaria.
|
|
1266
|
+
|
|
1267
|
+
Se abilitato, l'impatto è estremamente ridotto (+5 KB, caricato dinamicamente solo quando attivato) poiché la maggior parte della logica è gestita dal server editor su [app.intlayer.org](https://app.intlayer.org) o tramite il pacchetto `intlayer-editor`. Se hai solo bisogno di una soluzione di traduzione semplice senza editing visuale, Intlayer non aggiunge alcun overhead alla tua applicazione.
|
|
1268
|
+
|
|
1262
1269
|
</Question>
|
|
1263
1270
|
<Question title="Intlayer è gratuito e open source?">
|
|
1264
1271
|
|
|
@@ -1327,6 +1327,13 @@ Sì. Le dichiarazioni di contenuto supportano [forme plurali](https://github.com
|
|
|
1327
1327
|
|
|
1328
1328
|
Attraverso l'[editor visivo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md), che gira sulla tua infrastruttura e permette a chiunque di modificare il testo sul posto nel sito in esecuzione, o il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md), che esternalizza il contenuto così può cambiare senza un deployment.
|
|
1329
1329
|
|
|
1330
|
+
</Question>
|
|
1331
|
+
<Question title="Qual è il costo dell'editor visuale? È eccessivo se non ne ho bisogno?">
|
|
1332
|
+
|
|
1333
|
+
L'[editor visuale di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) ha un **costo pari a zero** sulla tua applicazione se non viene configurato. La logica aggiuntiva viene caricata solo se esplicitamente abilitata e necessaria.
|
|
1334
|
+
|
|
1335
|
+
Se abilitato, l'impatto è estremamente ridotto (+5 KB, caricato dinamicamente solo quando attivato) poiché la maggior parte della logica è gestita dal server editor su [app.intlayer.org](https://app.intlayer.org) o tramite il pacchetto `intlayer-editor`. Se hai solo bisogno di una soluzione di traduzione semplice senza editing visuale, Intlayer non aggiunge alcun overhead alla tua applicazione.
|
|
1336
|
+
|
|
1330
1337
|
</Question>
|
|
1331
1338
|
<Question title="Intlayer è gratuito e open source?">
|
|
1332
1339
|
|
|
@@ -1121,6 +1121,13 @@ Sì: [forme plurali](https://github.com/aymericzip/intlayer/blob/main/docs/docs/
|
|
|
1121
1121
|
|
|
1122
1122
|
Attraverso l'[editor visivo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md), che gira sulla tua infrastruttura e permette a chiunque di modificare il testo sul posto nell'app in esecuzione, o il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md), che esternalizza il contenuto così può cambiare senza un deployment.
|
|
1123
1123
|
|
|
1124
|
+
</Question>
|
|
1125
|
+
<Question title="Qual è il costo dell'editor visuale? È eccessivo se non ne ho bisogno?">
|
|
1126
|
+
|
|
1127
|
+
L'[editor visuale di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) ha un **costo pari a zero** sulla tua applicazione se non viene configurato. La logica aggiuntiva viene caricata solo se esplicitamente abilitata e necessaria.
|
|
1128
|
+
|
|
1129
|
+
Se abilitato, l'impatto è estremamente ridotto (+5 KB, caricato dinamicamente solo quando attivato) poiché la maggior parte della logica è gestita dal server editor su [app.intlayer.org](https://app.intlayer.org) o tramite il pacchetto `intlayer-editor`. Se hai solo bisogno di una soluzione di traduzione semplice senza editing visuale, Intlayer non aggiunge alcun overhead alla tua applicazione.
|
|
1130
|
+
|
|
1124
1131
|
</Question>
|
|
1125
1132
|
<Question title="Intlayer è gratuito e open source?">
|
|
1126
1133
|
|
|
@@ -1068,6 +1068,13 @@ Sì: [forme plurali](https://github.com/aymericzip/intlayer/blob/main/docs/docs/
|
|
|
1068
1068
|
|
|
1069
1069
|
Attraverso l'[editor visivo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md), auto-ospitato, che permette a chiunque di modificare il testo sul posto nell'app in esecuzione, o il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md) per il contenuto che deve cambiare senza un deployment.
|
|
1070
1070
|
|
|
1071
|
+
</Question>
|
|
1072
|
+
<Question title="Qual è il costo dell'editor visuale? È eccessivo se non ne ho bisogno?">
|
|
1073
|
+
|
|
1074
|
+
L'[editor visuale di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) ha un **costo pari a zero** sulla tua applicazione se non viene configurato. La logica aggiuntiva viene caricata solo se esplicitamente abilitata e necessaria.
|
|
1075
|
+
|
|
1076
|
+
Se abilitato, l'impatto è estremamente ridotto (+5 KB, caricato dinamicamente solo quando attivato) poiché la maggior parte della logica è gestita dal server editor su [app.intlayer.org](https://app.intlayer.org) o tramite il pacchetto `intlayer-editor`. Se hai solo bisogno di una soluzione di traduzione semplice senza editing visuale, Intlayer non aggiunge alcun overhead alla tua applicazione.
|
|
1077
|
+
|
|
1071
1078
|
</Question>
|
|
1072
1079
|
<Question title="Intlayer è gratuito e open source?">
|
|
1073
1080
|
|
|
@@ -818,6 +818,13 @@ Sì: [forme plurali](https://github.com/aymericzip/intlayer/blob/main/docs/docs/
|
|
|
818
818
|
|
|
819
819
|
Attraverso l'[editor visivo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md), che gira sulla tua infrastruttura e permette a chiunque di modificare il testo sul posto nell'app in esecuzione, o il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md), che esternalizza il contenuto così può cambiare senza un deployment.
|
|
820
820
|
|
|
821
|
+
</Question>
|
|
822
|
+
<Question title="Qual è il costo dell'editor visuale? È eccessivo se non ne ho bisogno?">
|
|
823
|
+
|
|
824
|
+
L'[editor visuale di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) ha un **costo pari a zero** sulla tua applicazione se non viene configurato. La logica aggiuntiva viene caricata solo se esplicitamente abilitata e necessaria.
|
|
825
|
+
|
|
826
|
+
Se abilitato, l'impatto è estremamente ridotto (+5 KB, caricato dinamicamente solo quando attivato) poiché la maggior parte della logica è gestita dal server editor su [app.intlayer.org](https://app.intlayer.org) o tramite il pacchetto `intlayer-editor`. Se hai solo bisogno di una soluzione di traduzione semplice senza editing visuale, Intlayer non aggiunge alcun overhead alla tua applicazione.
|
|
827
|
+
|
|
821
828
|
</Question>
|
|
822
829
|
<Question title="Intlayer è gratuito e open source?">
|
|
823
830
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-01-21
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-19
|
|
4
4
|
title: Documentazione del pacchetto astro-intlayer
|
|
5
|
-
description: Integrazione Astro per Intlayer, che fornisce
|
|
5
|
+
description: Integrazione Astro per Intlayer, che fornisce configurazione per il routing basato su locale, middleware, hook, store client e gestione dei dizionari.
|
|
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: "Aggiunta documentazione degli hook useIntlayer, useDictionary, useLocale, del middleware e dei formattatori"
|
|
17
20
|
- version: 8.0.0
|
|
18
21
|
date: 2026-01-21
|
|
19
22
|
changes: "Documentazione unificata per tutte le esportazioni"
|
|
@@ -22,7 +25,7 @@ author: aymericzip
|
|
|
22
25
|
|
|
23
26
|
# Pacchetto astro-intlayer
|
|
24
27
|
|
|
25
|
-
Il pacchetto `astro-intlayer` fornisce gli strumenti necessari per integrare Intlayer nelle applicazioni Astro. Configura il routing basato
|
|
28
|
+
Il pacchetto `astro-intlayer` fornisce gli strumenti necessari per integrare Intlayer nelle applicazioni Astro. Configura il routing basato su locale, la gestione dei dizionari, la riscrittura delle pagine in fase di compilazione, il middleware di richiesta e gli hook per accedere a contenuti multilingue sia nei componenti `.astro` renderizzati dal server sia negli script lato client.
|
|
26
29
|
|
|
27
30
|
## Installazione
|
|
28
31
|
|
|
@@ -34,22 +37,171 @@ npm install astro-intlayer
|
|
|
34
37
|
|
|
35
38
|
### Integrazione
|
|
36
39
|
|
|
37
|
-
Il pacchetto `astro-intlayer` fornisce un'integrazione
|
|
40
|
+
Il pacchetto `astro-intlayer` fornisce un'integrazione Astro che configura Intlayer nel tuo progetto.
|
|
38
41
|
|
|
39
42
|
Importazione:
|
|
40
43
|
|
|
41
44
|
```tsx
|
|
42
|
-
import "astro-intlayer";
|
|
45
|
+
import { intlayer } from "astro-intlayer";
|
|
43
46
|
```
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
o importazione predefinita in `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
|
-
| Funzione | Descrizione
|
|
54
|
-
| ---------- |
|
|
55
|
-
| `intlayer` | Integrazione Astro che configura
|
|
59
|
+
| Funzione | Descrizione | Documentazione correlata |
|
|
60
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| `intlayer` | Integrazione Astro che prepara i dizionari, configura i plugin Vite (alias, proxy di routing, eliminazione), registra automaticamente il middleware di richiesta ed emette pagine pre-renderizzate su URL riscritti. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/astro-intlayer/intlayer.md) |
|
|
62
|
+
|
|
63
|
+
### Hook (Server e Client)
|
|
64
|
+
|
|
65
|
+
Importazione:
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
import { useIntlayer, useDictionary, useLocale } from "astro-intlayer";
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
| Hook | Descrizione | Documentazione correlata |
|
|
72
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| `useIntlayer` | Seleziona un dizionario tramite la sua chiave e restituisce il suo contenuto localizzato. Nel frontmatter `.astro`, legge il locale di richiesta da `Astro.locals`. In `<script>`, legge dallo store client. | [useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/astro-intlayer/useIntlayer.md) |
|
|
74
|
+
| `useDictionary` | Trasforma un oggetto dizionario e restituisce il contenuto per il locale risolto. Funziona nel frontmatter e negli script client. | [useDictionary](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/astro-intlayer/useDictionary.md) |
|
|
75
|
+
| `useLocale` | Restituisce il locale corrente, il locale predefinito, i locale disponibili e una funzione per aggiornare il locale. | [useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/astro-intlayer/useLocale.md) |
|
|
76
|
+
|
|
77
|
+
### Middleware (astro-intlayer/middleware)
|
|
78
|
+
|
|
79
|
+
Importazione:
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
import { onRequest } from "astro-intlayer/middleware";
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
| Esportazione | Tipo | Descrizione | Documentazione correlata |
|
|
86
|
+
| ------------ | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
87
|
+
| `onRequest` | `MiddlewareHandler` | Middleware Astro che rileva il locale della richiesta e allega `Astro.locals.intlayer`. Registrato automaticamente da `intlayer()`, o importato manualmente per essere composto. | [onRequest](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/astro-intlayer/onRequest.md) |
|
|
88
|
+
|
|
89
|
+
### Utilità
|
|
90
|
+
|
|
91
|
+
Importazione:
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
import { getIntlayerLocals } from "astro-intlayer";
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
| Funzione | Descrizione | Documentazione correlata |
|
|
98
|
+
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
|
|
99
|
+
| `getIntlayerLocals` | Funzione helper per recuperare l'oggetto `IntlayerLocals` corrente dall'ambito di archiviazione della richiesta fuori da `Astro.locals`. | - |
|
|
100
|
+
|
|
101
|
+
### Utilità Client (astro-intlayer/client)
|
|
102
|
+
|
|
103
|
+
Importazione:
|
|
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
|
+
Quando importato nel browser o all'interno dei tag client `<script>`, `astro-intlayer` si mappa automaticamente su `astro-intlayer/client` (alimentato da `vanilla-intlayer`), fornendo getter di dizionario lato client, sottoscrittori dello store e strumenti di persistenza del locale.
|
|
124
|
+
|
|
125
|
+
### Formattatori (astro-intlayer/format)
|
|
126
|
+
|
|
127
|
+
Importazione:
|
|
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 | Descrizione |
|
|
144
|
+
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|
145
|
+
| `useIntl` | Restituisce un'istanza Intl associata al locale con funzionalità di memorizzazione nella cache e iscrizione. |
|
|
146
|
+
| `useDate` | Restituisce una funzione di formattazione della data associata al locale corrente (`Intl.DateTimeFormat`). |
|
|
147
|
+
| `useNumber` | Restituisce una funzione di formattazione numerica associata al locale corrente (`Intl.NumberFormat`). |
|
|
148
|
+
| `useCurrency` | Restituisce una funzione di formattazione della valuta associata al locale corrente. |
|
|
149
|
+
| `usePercentage` | Restituisce una funzione di formattazione della percentuale associata al locale corrente. |
|
|
150
|
+
| `useRelativeTime` | Restituisce una funzione di formattazione del tempo relativo associata al locale corrente (`Intl.RelativeTimeFormat`). |
|
|
151
|
+
| `useList` | Restituisce una funzione di formattazione di elenchi associata al locale corrente (`Intl.ListFormat`). |
|
|
152
|
+
| `useUnit` | Restituisce una funzione di formattazione delle unità associata al locale corrente. |
|
|
153
|
+
| `useCompact` | Restituisce una funzione di formattazione numerica compatta associata al locale corrente (es. `1.5K`). |
|
|
154
|
+
|
|
155
|
+
### Utilità HTML (astro-intlayer/html)
|
|
156
|
+
|
|
157
|
+
Importazione:
|
|
158
|
+
|
|
159
|
+
```tsx
|
|
160
|
+
import { renderHTML, useHTML, useHTMLRenderer } from "astro-intlayer/html";
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
| Esportazione | Tipo | Descrizione |
|
|
164
|
+
| ----------------- | ---------- | -------------------------------------------------------------------- |
|
|
165
|
+
| `renderHTML` | `Function` | Funzione di utilità autonoma per il rendering dei nodi HTML. |
|
|
166
|
+
| `useHTML` | `Hook` | Hook per ottenere il contesto e la configurazione del provider HTML. |
|
|
167
|
+
| `useHTMLRenderer` | `Hook` | Hook per ottenere una funzione di rendering HTML preconfigurata. |
|
|
168
|
+
|
|
169
|
+
### Utilità Markdown (astro-intlayer/markdown)
|
|
170
|
+
|
|
171
|
+
Importazione:
|
|
172
|
+
|
|
173
|
+
```tsx
|
|
174
|
+
import {
|
|
175
|
+
compileMarkdown,
|
|
176
|
+
renderMarkdown,
|
|
177
|
+
parseMarkdown,
|
|
178
|
+
useMarkdown,
|
|
179
|
+
useMarkdownRenderer,
|
|
180
|
+
} from "astro-intlayer/markdown";
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
| Esportazione | Tipo | Descrizione |
|
|
184
|
+
| --------------------- | ---------- | -------------------------------------------------------------------- |
|
|
185
|
+
| `compileMarkdown` | `Function` | Compila stringhe markdown in una rappresentazione strutturata. |
|
|
186
|
+
| `renderMarkdown` | `Function` | Renderizza il contenuto markdown in nodi di output. |
|
|
187
|
+
| `parseMarkdown` | `Function` | Analizza il contenuto markdown non elaborato in un AST. |
|
|
188
|
+
| `useMarkdown` | `Hook` | Hook per ottenere il contesto del provider markdown. |
|
|
189
|
+
| `useMarkdownRenderer` | `Hook` | Hook per ottenere una funzione di rendering Markdown preconfigurata. |
|
|
190
|
+
|
|
191
|
+
### Tipi
|
|
192
|
+
|
|
193
|
+
Importazione:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
import type {
|
|
197
|
+
IntlayerLocals,
|
|
198
|
+
UseLocaleProps,
|
|
199
|
+
UseLocaleResult,
|
|
200
|
+
} from "astro-intlayer";
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
| Tipo | Descrizione |
|
|
204
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------- |
|
|
205
|
+
| `IntlayerLocals` | L'oggetto allegato a `Astro.locals.intlayer` contenente `locale`, `defaultLocale` e `availableLocales`. |
|
|
206
|
+
| `UseLocaleProps` | Proprietà di configurazione opzionali accettate da `useLocale()`. |
|
|
207
|
+
| `UseLocaleResult` | Il tipo restituito da `useLocale()`, che fornisce proprietà del locale e metodi di aggiornamento. |
|