@intlayer/docs 9.5.4 → 9.5.6
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 -2
- 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/ar/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/de/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/en-GB/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/es/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/fr/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/hi/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/id/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/it/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/ja/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/ko/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/pl/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/pt/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/ru/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/tr/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/uk/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/vi/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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/blog/zh/transform_existing_vite_react_app_using_compiler.md +4 -2
- 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 +77 -66
- package/docs/ar/intlayer_with_astro_lit.md +32 -36
- package/docs/ar/intlayer_with_astro_preact.md +39 -36
- package/docs/ar/intlayer_with_astro_react.md +39 -36
- package/docs/ar/intlayer_with_astro_solid.md +39 -36
- package/docs/ar/intlayer_with_astro_svelte.md +39 -36
- package/docs/ar/intlayer_with_astro_vue.md +39 -36
- 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 +19 -1
- package/docs/ar/intlayer_with_remix_3.md +73 -112
- package/docs/ar/intlayer_with_solid_start.md +14 -7
- package/docs/ar/intlayer_with_svelte_kit.md +12 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +20 -2
- package/docs/ar/intlayer_with_tanstack.md +20 -6
- package/docs/ar/intlayer_with_vite+lit.md +75 -3
- package/docs/ar/intlayer_with_vite+preact.md +34 -19
- package/docs/ar/intlayer_with_vite+react.md +34 -19
- package/docs/ar/intlayer_with_vite+solid.md +34 -19
- package/docs/ar/intlayer_with_vite+svelte.md +27 -19
- package/docs/ar/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ar/intlayer_with_vite+vue.md +27 -19
- package/docs/ar/introduction.md +0 -1
- 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 -2
- package/docs/ar/releases/v8.md +1 -5
- package/docs/bn/intlayer_with_vite+lit.md +75 -3
- package/docs/bn/intlayer_with_vite+vanilla.md +16 -3
- package/docs/bn/introduction.md +0 -1
- package/docs/cs/intlayer_with_vite+lit.md +75 -3
- package/docs/cs/intlayer_with_vite+vanilla.md +16 -3
- package/docs/cs/introduction.md +0 -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 +70 -59
- package/docs/de/intlayer_with_astro_lit.md +23 -27
- package/docs/de/intlayer_with_astro_preact.md +30 -27
- package/docs/de/intlayer_with_astro_react.md +30 -27
- package/docs/de/intlayer_with_astro_solid.md +30 -27
- package/docs/de/intlayer_with_astro_svelte.md +30 -27
- package/docs/de/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/de/intlayer_with_remix_3.md +70 -109
- package/docs/de/intlayer_with_solid_start.md +14 -7
- package/docs/de/intlayer_with_svelte_kit.md +12 -1
- package/docs/de/intlayer_with_tanstack+solid.md +20 -2
- package/docs/de/intlayer_with_tanstack.md +20 -6
- package/docs/de/intlayer_with_vite+lit.md +75 -3
- package/docs/de/intlayer_with_vite+preact.md +23 -3
- package/docs/de/intlayer_with_vite+react.md +23 -3
- package/docs/de/intlayer_with_vite+solid.md +23 -3
- package/docs/de/intlayer_with_vite+svelte.md +16 -3
- package/docs/de/intlayer_with_vite+vanilla.md +16 -3
- package/docs/de/intlayer_with_vite+vue.md +16 -3
- package/docs/de/introduction.md +0 -1
- 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 -2
- package/docs/de/releases/v8.md +1 -5
- 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 +67 -60
- package/docs/en/intlayer_with_astro_lit.md +22 -26
- package/docs/en/intlayer_with_astro_preact.md +29 -26
- package/docs/en/intlayer_with_astro_react.md +29 -26
- package/docs/en/intlayer_with_astro_solid.md +29 -26
- package/docs/en/intlayer_with_astro_svelte.md +29 -26
- package/docs/en/intlayer_with_astro_vanilla.md +27 -13
- package/docs/en/intlayer_with_astro_vue.md +29 -26
- 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 +19 -1
- package/docs/en/intlayer_with_remix_3.md +74 -122
- package/docs/en/intlayer_with_solid_start.md +14 -7
- package/docs/en/intlayer_with_svelte_kit.md +12 -1
- package/docs/en/intlayer_with_tanstack+solid.md +20 -2
- package/docs/en/intlayer_with_tanstack.md +19 -5
- package/docs/en/intlayer_with_vite+lit.md +75 -3
- package/docs/en/intlayer_with_vite+preact.md +23 -3
- package/docs/en/intlayer_with_vite+react.md +23 -3
- package/docs/en/intlayer_with_vite+solid.md +23 -3
- package/docs/en/intlayer_with_vite+svelte.md +16 -3
- package/docs/en/intlayer_with_vite+vanilla.md +16 -3
- package/docs/en/intlayer_with_vite+vue.md +16 -3
- package/docs/en/introduction.md +2 -2
- 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 -2
- package/docs/en/releases/v8.md +1 -5
- 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 +70 -59
- package/docs/en-GB/intlayer_with_astro_lit.md +23 -27
- package/docs/en-GB/intlayer_with_astro_preact.md +30 -27
- package/docs/en-GB/intlayer_with_astro_react.md +30 -27
- package/docs/en-GB/intlayer_with_astro_solid.md +30 -27
- package/docs/en-GB/intlayer_with_astro_svelte.md +30 -27
- package/docs/en-GB/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/en-GB/intlayer_with_remix_3.md +66 -105
- package/docs/en-GB/intlayer_with_solid_start.md +14 -7
- package/docs/en-GB/intlayer_with_svelte_kit.md +12 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +20 -2
- package/docs/en-GB/intlayer_with_tanstack.md +20 -6
- package/docs/en-GB/intlayer_with_vite+lit.md +75 -3
- package/docs/en-GB/intlayer_with_vite+preact.md +23 -3
- package/docs/en-GB/intlayer_with_vite+react.md +23 -3
- package/docs/en-GB/intlayer_with_vite+solid.md +32 -15
- package/docs/en-GB/intlayer_with_vite+svelte.md +16 -3
- package/docs/en-GB/intlayer_with_vite+vanilla.md +16 -3
- package/docs/en-GB/intlayer_with_vite+vue.md +16 -3
- package/docs/en-GB/introduction.md +0 -1
- 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 -2
- package/docs/en-GB/releases/v8.md +1 -5
- 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 +70 -59
- package/docs/es/intlayer_with_astro_lit.md +23 -27
- package/docs/es/intlayer_with_astro_preact.md +30 -27
- package/docs/es/intlayer_with_astro_react.md +30 -27
- package/docs/es/intlayer_with_astro_solid.md +30 -27
- package/docs/es/intlayer_with_astro_svelte.md +30 -27
- package/docs/es/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/es/intlayer_with_remix_3.md +73 -112
- package/docs/es/intlayer_with_solid_start.md +14 -7
- package/docs/es/intlayer_with_svelte_kit.md +12 -1
- package/docs/es/intlayer_with_tanstack+solid.md +20 -2
- package/docs/es/intlayer_with_tanstack.md +20 -6
- package/docs/es/intlayer_with_vite+lit.md +75 -3
- package/docs/es/intlayer_with_vite+preact.md +23 -3
- package/docs/es/intlayer_with_vite+react.md +23 -3
- package/docs/es/intlayer_with_vite+solid.md +23 -3
- package/docs/es/intlayer_with_vite+svelte.md +16 -3
- package/docs/es/intlayer_with_vite+vanilla.md +16 -3
- package/docs/es/intlayer_with_vite+vue.md +16 -3
- package/docs/es/introduction.md +0 -1
- 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 -2
- package/docs/es/releases/v8.md +1 -5
- 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 +71 -60
- package/docs/fr/intlayer_with_astro_lit.md +24 -28
- package/docs/fr/intlayer_with_astro_preact.md +31 -28
- package/docs/fr/intlayer_with_astro_react.md +31 -28
- package/docs/fr/intlayer_with_astro_solid.md +31 -28
- package/docs/fr/intlayer_with_astro_svelte.md +31 -28
- package/docs/fr/intlayer_with_astro_vue.md +31 -28
- 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 +22 -4
- package/docs/fr/intlayer_with_remix_3.md +74 -122
- package/docs/fr/intlayer_with_solid_start.md +14 -7
- package/docs/fr/intlayer_with_svelte_kit.md +15 -4
- package/docs/fr/intlayer_with_tanstack+solid.md +22 -4
- package/docs/fr/intlayer_with_tanstack.md +20 -6
- package/docs/fr/intlayer_with_vite+lit.md +75 -3
- package/docs/fr/intlayer_with_vite+preact.md +26 -6
- package/docs/fr/intlayer_with_vite+react.md +26 -6
- package/docs/fr/intlayer_with_vite+solid.md +26 -6
- package/docs/fr/intlayer_with_vite+svelte.md +19 -6
- package/docs/fr/intlayer_with_vite+vanilla.md +19 -6
- package/docs/fr/intlayer_with_vite+vue.md +19 -6
- package/docs/fr/introduction.md +0 -1
- 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 -2
- package/docs/fr/releases/v8.md +1 -5
- 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 +74 -66
- package/docs/hi/intlayer_with_astro_lit.md +26 -33
- package/docs/hi/intlayer_with_astro_preact.md +33 -33
- package/docs/hi/intlayer_with_astro_react.md +33 -33
- package/docs/hi/intlayer_with_astro_solid.md +33 -33
- package/docs/hi/intlayer_with_astro_svelte.md +33 -33
- package/docs/hi/intlayer_with_astro_vue.md +33 -33
- 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 +27 -12
- package/docs/hi/intlayer_with_remix_3.md +73 -112
- package/docs/hi/intlayer_with_solid_start.md +14 -7
- package/docs/hi/intlayer_with_svelte_kit.md +20 -12
- package/docs/hi/intlayer_with_tanstack+solid.md +20 -2
- package/docs/hi/intlayer_with_tanstack.md +28 -17
- package/docs/hi/intlayer_with_vite+lit.md +75 -3
- package/docs/hi/intlayer_with_vite+preact.md +31 -14
- package/docs/hi/intlayer_with_vite+react.md +31 -14
- package/docs/hi/intlayer_with_vite+solid.md +31 -14
- package/docs/hi/intlayer_with_vite+svelte.md +24 -14
- package/docs/hi/intlayer_with_vite+vanilla.md +16 -3
- package/docs/hi/intlayer_with_vite+vue.md +24 -14
- package/docs/hi/introduction.md +0 -1
- 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 -2
- package/docs/hi/releases/v8.md +1 -5
- 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 +70 -59
- package/docs/id/intlayer_with_astro_lit.md +23 -27
- package/docs/id/intlayer_with_astro_preact.md +30 -27
- package/docs/id/intlayer_with_astro_react.md +30 -27
- package/docs/id/intlayer_with_astro_solid.md +30 -27
- package/docs/id/intlayer_with_astro_svelte.md +30 -27
- package/docs/id/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/id/intlayer_with_remix_3.md +101 -148
- package/docs/id/intlayer_with_solid_start.md +14 -7
- package/docs/id/intlayer_with_svelte_kit.md +12 -1
- package/docs/id/intlayer_with_tanstack+solid.md +20 -2
- package/docs/id/intlayer_with_tanstack.md +20 -6
- package/docs/id/intlayer_with_vite+lit.md +75 -3
- package/docs/id/intlayer_with_vite+preact.md +23 -3
- package/docs/id/intlayer_with_vite+react.md +23 -3
- package/docs/id/intlayer_with_vite+solid.md +23 -3
- package/docs/id/intlayer_with_vite+svelte.md +16 -3
- package/docs/id/intlayer_with_vite+vanilla.md +16 -3
- package/docs/id/intlayer_with_vite+vue.md +16 -3
- package/docs/id/introduction.md +0 -1
- 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 -2
- package/docs/id/releases/v8.md +1 -5
- 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 +70 -59
- package/docs/it/intlayer_with_astro_lit.md +23 -27
- package/docs/it/intlayer_with_astro_preact.md +30 -27
- package/docs/it/intlayer_with_astro_react.md +30 -27
- package/docs/it/intlayer_with_astro_solid.md +30 -27
- package/docs/it/intlayer_with_astro_svelte.md +30 -27
- package/docs/it/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/it/intlayer_with_remix_3.md +70 -109
- package/docs/it/intlayer_with_solid_start.md +14 -7
- package/docs/it/intlayer_with_svelte_kit.md +12 -1
- package/docs/it/intlayer_with_tanstack+solid.md +20 -2
- package/docs/it/intlayer_with_tanstack.md +20 -6
- package/docs/it/intlayer_with_vite+lit.md +75 -3
- package/docs/it/intlayer_with_vite+preact.md +23 -3
- package/docs/it/intlayer_with_vite+react.md +23 -3
- package/docs/it/intlayer_with_vite+solid.md +23 -3
- package/docs/it/intlayer_with_vite+svelte.md +16 -3
- package/docs/it/intlayer_with_vite+vanilla.md +16 -3
- package/docs/it/intlayer_with_vite+vue.md +16 -3
- package/docs/it/introduction.md +0 -1
- 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 -2
- package/docs/it/releases/v8.md +1 -5
- 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 +71 -60
- package/docs/ja/intlayer_with_astro_lit.md +23 -27
- package/docs/ja/intlayer_with_astro_preact.md +30 -27
- package/docs/ja/intlayer_with_astro_react.md +30 -27
- package/docs/ja/intlayer_with_astro_solid.md +30 -27
- package/docs/ja/intlayer_with_astro_svelte.md +30 -27
- package/docs/ja/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/ja/intlayer_with_remix_3.md +73 -112
- package/docs/ja/intlayer_with_solid_start.md +14 -7
- package/docs/ja/intlayer_with_svelte_kit.md +21 -15
- package/docs/ja/intlayer_with_tanstack+solid.md +20 -2
- package/docs/ja/intlayer_with_tanstack.md +20 -6
- package/docs/ja/intlayer_with_vite+lit.md +75 -3
- package/docs/ja/intlayer_with_vite+preact.md +23 -3
- package/docs/ja/intlayer_with_vite+react.md +23 -3
- package/docs/ja/intlayer_with_vite+solid.md +23 -3
- package/docs/ja/intlayer_with_vite+svelte.md +16 -3
- package/docs/ja/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ja/intlayer_with_vite+vue.md +16 -3
- package/docs/ja/introduction.md +0 -1
- 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 -2
- package/docs/ja/releases/v8.md +1 -5
- 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 +65 -56
- package/docs/ko/intlayer_with_astro_lit.md +23 -27
- package/docs/ko/intlayer_with_astro_preact.md +30 -27
- package/docs/ko/intlayer_with_astro_react.md +30 -27
- package/docs/ko/intlayer_with_astro_solid.md +30 -27
- package/docs/ko/intlayer_with_astro_svelte.md +30 -27
- package/docs/ko/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/ko/intlayer_with_remix_3.md +73 -112
- package/docs/ko/intlayer_with_solid_start.md +14 -7
- package/docs/ko/intlayer_with_svelte_kit.md +12 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +20 -2
- package/docs/ko/intlayer_with_tanstack.md +20 -6
- package/docs/ko/intlayer_with_vite+lit.md +75 -3
- package/docs/ko/intlayer_with_vite+preact.md +23 -3
- package/docs/ko/intlayer_with_vite+react.md +23 -3
- package/docs/ko/intlayer_with_vite+solid.md +33 -16
- package/docs/ko/intlayer_with_vite+svelte.md +16 -3
- package/docs/ko/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ko/intlayer_with_vite+vue.md +16 -3
- package/docs/ko/introduction.md +0 -1
- 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 -2
- package/docs/ko/releases/v8.md +1 -5
- package/docs/nl/intlayer_with_vite+lit.md +75 -3
- package/docs/nl/intlayer_with_vite+vanilla.md +16 -3
- package/docs/nl/introduction.md +0 -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 +65 -56
- package/docs/pl/intlayer_with_astro_lit.md +23 -27
- package/docs/pl/intlayer_with_astro_preact.md +30 -27
- package/docs/pl/intlayer_with_astro_react.md +30 -27
- package/docs/pl/intlayer_with_astro_solid.md +30 -27
- package/docs/pl/intlayer_with_astro_svelte.md +30 -27
- package/docs/pl/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/pl/intlayer_with_remix_3.md +101 -148
- package/docs/pl/intlayer_with_solid_start.md +14 -7
- package/docs/pl/intlayer_with_svelte_kit.md +12 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +20 -2
- package/docs/pl/intlayer_with_tanstack.md +20 -6
- package/docs/pl/intlayer_with_vite+lit.md +75 -3
- package/docs/pl/intlayer_with_vite+preact.md +23 -3
- package/docs/pl/intlayer_with_vite+react.md +23 -3
- package/docs/pl/intlayer_with_vite+solid.md +23 -3
- package/docs/pl/intlayer_with_vite+svelte.md +16 -3
- package/docs/pl/intlayer_with_vite+vanilla.md +16 -3
- package/docs/pl/intlayer_with_vite+vue.md +16 -3
- package/docs/pl/introduction.md +0 -1
- 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 -2
- package/docs/pl/releases/v8.md +1 -5
- 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 +65 -56
- package/docs/pt/intlayer_with_astro_lit.md +23 -27
- package/docs/pt/intlayer_with_astro_preact.md +30 -27
- package/docs/pt/intlayer_with_astro_react.md +30 -27
- package/docs/pt/intlayer_with_astro_solid.md +30 -27
- package/docs/pt/intlayer_with_astro_svelte.md +30 -27
- package/docs/pt/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/pt/intlayer_with_remix_3.md +73 -112
- package/docs/pt/intlayer_with_solid_start.md +14 -7
- package/docs/pt/intlayer_with_svelte_kit.md +12 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +20 -2
- package/docs/pt/intlayer_with_tanstack.md +20 -6
- package/docs/pt/intlayer_with_vite+lit.md +75 -3
- package/docs/pt/intlayer_with_vite+preact.md +23 -3
- package/docs/pt/intlayer_with_vite+react.md +23 -3
- package/docs/pt/intlayer_with_vite+solid.md +23 -3
- package/docs/pt/intlayer_with_vite+svelte.md +16 -3
- package/docs/pt/intlayer_with_vite+vanilla.md +16 -3
- package/docs/pt/intlayer_with_vite+vue.md +16 -3
- package/docs/pt/introduction.md +0 -1
- 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 -2
- package/docs/pt/releases/v8.md +1 -5
- 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 +71 -60
- package/docs/ru/intlayer_with_astro_lit.md +23 -27
- package/docs/ru/intlayer_with_astro_preact.md +30 -27
- package/docs/ru/intlayer_with_astro_react.md +30 -27
- package/docs/ru/intlayer_with_astro_solid.md +30 -27
- package/docs/ru/intlayer_with_astro_svelte.md +30 -27
- package/docs/ru/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/ru/intlayer_with_remix_3.md +73 -112
- package/docs/ru/intlayer_with_solid_start.md +14 -7
- package/docs/ru/intlayer_with_svelte_kit.md +12 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +20 -2
- package/docs/ru/intlayer_with_tanstack.md +20 -6
- package/docs/ru/intlayer_with_vite+lit.md +75 -3
- package/docs/ru/intlayer_with_vite+preact.md +23 -3
- package/docs/ru/intlayer_with_vite+react.md +23 -3
- package/docs/ru/intlayer_with_vite+solid.md +23 -3
- package/docs/ru/intlayer_with_vite+svelte.md +16 -3
- package/docs/ru/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ru/intlayer_with_vite+vue.md +16 -3
- package/docs/ru/introduction.md +0 -1
- 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 -2
- package/docs/ru/releases/v8.md +1 -5
- 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 +70 -59
- package/docs/tr/intlayer_with_astro_lit.md +24 -28
- package/docs/tr/intlayer_with_astro_preact.md +31 -28
- package/docs/tr/intlayer_with_astro_react.md +31 -28
- package/docs/tr/intlayer_with_astro_solid.md +31 -28
- package/docs/tr/intlayer_with_astro_svelte.md +31 -28
- package/docs/tr/intlayer_with_astro_vue.md +31 -28
- 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 +19 -1
- package/docs/tr/intlayer_with_remix_3.md +101 -148
- package/docs/tr/intlayer_with_solid_start.md +14 -7
- package/docs/tr/intlayer_with_svelte_kit.md +12 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +20 -2
- package/docs/tr/intlayer_with_tanstack.md +20 -6
- package/docs/tr/intlayer_with_vite+lit.md +75 -3
- package/docs/tr/intlayer_with_vite+preact.md +23 -3
- package/docs/tr/intlayer_with_vite+react.md +23 -3
- package/docs/tr/intlayer_with_vite+solid.md +23 -3
- package/docs/tr/intlayer_with_vite+svelte.md +16 -3
- package/docs/tr/intlayer_with_vite+vanilla.md +16 -3
- package/docs/tr/intlayer_with_vite+vue.md +16 -3
- package/docs/tr/introduction.md +0 -1
- 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 -2
- package/docs/tr/releases/v8.md +1 -5
- 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 +71 -60
- package/docs/uk/intlayer_with_astro_lit.md +23 -27
- package/docs/uk/intlayer_with_astro_preact.md +30 -27
- package/docs/uk/intlayer_with_astro_react.md +30 -27
- package/docs/uk/intlayer_with_astro_solid.md +30 -27
- package/docs/uk/intlayer_with_astro_svelte.md +30 -27
- package/docs/uk/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/uk/intlayer_with_remix_3.md +101 -148
- package/docs/uk/intlayer_with_solid_start.md +14 -7
- package/docs/uk/intlayer_with_svelte_kit.md +12 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +20 -2
- package/docs/uk/intlayer_with_tanstack.md +20 -6
- package/docs/uk/intlayer_with_vite+lit.md +75 -3
- package/docs/uk/intlayer_with_vite+preact.md +23 -3
- package/docs/uk/intlayer_with_vite+react.md +23 -3
- package/docs/uk/intlayer_with_vite+solid.md +23 -3
- package/docs/uk/intlayer_with_vite+svelte.md +16 -3
- package/docs/uk/intlayer_with_vite+vanilla.md +16 -3
- package/docs/uk/intlayer_with_vite+vue.md +16 -3
- package/docs/uk/introduction.md +0 -1
- 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 -2
- package/docs/uk/releases/v8.md +1 -5
- package/docs/ur/intlayer_with_vite+lit.md +75 -3
- package/docs/ur/intlayer_with_vite+vanilla.md +16 -3
- package/docs/ur/introduction.md +0 -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 +70 -59
- package/docs/vi/intlayer_with_astro_lit.md +23 -27
- package/docs/vi/intlayer_with_astro_preact.md +30 -27
- package/docs/vi/intlayer_with_astro_react.md +30 -27
- package/docs/vi/intlayer_with_astro_solid.md +30 -27
- package/docs/vi/intlayer_with_astro_svelte.md +30 -27
- package/docs/vi/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/vi/intlayer_with_remix_3.md +101 -148
- package/docs/vi/intlayer_with_solid_start.md +14 -7
- package/docs/vi/intlayer_with_svelte_kit.md +12 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +20 -2
- package/docs/vi/intlayer_with_tanstack.md +20 -6
- package/docs/vi/intlayer_with_vite+lit.md +75 -3
- package/docs/vi/intlayer_with_vite+preact.md +23 -3
- package/docs/vi/intlayer_with_vite+react.md +23 -3
- package/docs/vi/intlayer_with_vite+solid.md +23 -3
- package/docs/vi/intlayer_with_vite+svelte.md +16 -3
- package/docs/vi/intlayer_with_vite+vanilla.md +16 -3
- package/docs/vi/intlayer_with_vite+vue.md +16 -3
- package/docs/vi/introduction.md +0 -1
- 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 -2
- package/docs/vi/releases/v8.md +1 -5
- 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 +65 -56
- package/docs/zh/intlayer_with_astro_lit.md +23 -27
- package/docs/zh/intlayer_with_astro_preact.md +30 -27
- package/docs/zh/intlayer_with_astro_react.md +30 -27
- package/docs/zh/intlayer_with_astro_solid.md +30 -27
- package/docs/zh/intlayer_with_astro_svelte.md +30 -27
- package/docs/zh/intlayer_with_astro_vue.md +30 -27
- 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 +19 -1
- package/docs/zh/intlayer_with_remix_3.md +74 -112
- package/docs/zh/intlayer_with_solid_start.md +14 -7
- package/docs/zh/intlayer_with_svelte_kit.md +12 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +20 -2
- package/docs/zh/intlayer_with_tanstack.md +20 -6
- package/docs/zh/intlayer_with_vite+lit.md +75 -3
- package/docs/zh/intlayer_with_vite+preact.md +23 -3
- package/docs/zh/intlayer_with_vite+react.md +23 -3
- package/docs/zh/intlayer_with_vite+solid.md +23 -3
- package/docs/zh/intlayer_with_vite+svelte.md +16 -3
- package/docs/zh/intlayer_with_vite+vanilla.md +16 -3
- package/docs/zh/intlayer_with_vite+vue.md +16 -3
- package/docs/zh/introduction.md +0 -1
- 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 -2
- package/docs/zh/releases/v8.md +1 -5
- package/docs/zh-TW/introduction.md +0 -1
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +223 -0
- package/docs/ar/intlayer_with_astro_vanilla.md +0 -702
- package/docs/de/intlayer_with_astro_vanilla.md +0 -698
- package/docs/en-GB/intlayer_with_astro_vanilla.md +0 -702
- package/docs/es/intlayer_with_astro_vanilla.md +0 -694
- package/docs/fr/intlayer_with_astro_vanilla.md +0 -694
- package/docs/hi/intlayer_with_astro_vanilla.md +0 -713
- package/docs/id/intlayer_with_astro_vanilla.md +0 -698
- package/docs/it/intlayer_with_astro_vanilla.md +0 -698
- package/docs/ja/intlayer_with_astro_vanilla.md +0 -701
- package/docs/ko/intlayer_with_astro_vanilla.md +0 -713
- package/docs/pl/intlayer_with_astro_vanilla.md +0 -698
- package/docs/pt/intlayer_with_astro_vanilla.md +0 -698
- package/docs/ru/intlayer_with_astro_vanilla.md +0 -709
- package/docs/tr/intlayer_with_astro_vanilla.md +0 -698
- package/docs/uk/intlayer_with_astro_vanilla.md +0 -698
- package/docs/vi/intlayer_with_astro_vanilla.md +0 -698
- package/docs/zh/intlayer_with_astro_vanilla.md +0 -697
|
@@ -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 - 完整的应用多语言国际化翻译指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) Remix 3 应用的权威指南。借助 AI 智能体完成翻译,并优化打包体积、SEO 和性能。"
|
|
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: "使用 remix-intlayer 中间件和钩子"
|
|
22
25
|
- version: 9.5.0
|
|
23
26
|
date: 2026-09-09
|
|
24
27
|
changes: "Remix 3 初始文档"
|
|
@@ -39,7 +42,7 @@ author: aymericzip
|
|
|
39
42
|
- **`remix/node-fetch-server`**: Node.js 服务器适配器,原生支持 Bun、Deno 与边缘运行时。
|
|
40
43
|
- **`remix/cookie`**: 具备加密安全性的 Cookie 解析与序列化工具。
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
结合 **Intlayer** 和 **`remix-intlayer`** 软件包(包含语言环境中间件以及与 `react-intlayer` 相同的 `useIntlayer` / `useDictionary` / `useLocale` 钩子,绑定到 Remix 请求上下文),你将获得一个完整的国际化系统,提供编译时安全性、自动化 AI 翻译、零开销服务端渲染以及流畅的语言环境路由。
|
|
43
46
|
|
|
44
47
|
## 目录
|
|
45
48
|
|
|
@@ -52,7 +55,7 @@ author: aymericzip
|
|
|
52
55
|
<AccordionGroup>
|
|
53
56
|
<Accordion header="全面支持 Remix 3 和 Web 标准">
|
|
54
57
|
|
|
55
|
-
Intlayer
|
|
58
|
+
Intlayer 专为与 Web 标准(`Request`、`Response`、`Headers` 和 `URL`)无缝协作而构建。`remix-intlayer` 作为轻量级中间件插入 Remix 3 的 Fetch 路由器中,从 URL 路径、Cookie 或 `Accept-Language` 请求头中提取语言环境,并将其暴露给请求的其余部分、处理程序、视图和 `remix/ui` 组件,无需手动传递参数,也不会将你锁定在特定运行时。
|
|
56
59
|
|
|
57
60
|
</Accordion>
|
|
58
61
|
<Accordion header="类型安全的内容声明">
|
|
@@ -109,25 +112,27 @@ Intlayer 将内容声明 (`.content.ts`) 与路由业务逻辑就近同构,大
|
|
|
109
112
|
<Steps>
|
|
110
113
|
<Step number={1} title="安装依赖">
|
|
111
114
|
|
|
112
|
-
|
|
115
|
+
使用你喜欢的包管理器安装 `intlayer`、`remix-intlayer` 和 `remix`(版本 3):
|
|
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`**: 核心国际化引擎,负责配置管理、字典声明 (`t()`, `Dictionary`)、CLI 工具和运行时解释器。
|
|
134
|
+
- **`remix-intlayer`**:Remix 3 集成:解析每个请求语言环境的 `intlayer()` 路由器中间件,以及在下游任何位置读取它的 `useIntlayer`、`useDictionary` 和 `useLocale` 钩子。
|
|
135
|
+
- **`remix-intlayer`**:Remix 3 集成:解析每个请求语言环境的 `intlayer()` 路由器中间件,以及在下游任何位置读取它的 `useIntlayer`、`useDictionary` 和 `useLocale` 钩子。
|
|
131
136
|
- **`remix`**: 统一的 Remix 3 框架包,导出 `remix/router`、`remix/routes`、`remix/ui`、`remix/middleware/render` 以及 `remix/node-fetch-server`。
|
|
132
137
|
|
|
133
138
|
</Step>
|
|
@@ -254,65 +259,30 @@ bun x intlayer build
|
|
|
254
259
|
此操作会将内容编译至 `.intlayer` 产物目录中,提供完整的 TypeScript 自动补全和快速字典查询。
|
|
255
260
|
|
|
256
261
|
</Step>
|
|
257
|
-
<Step number={5} title="
|
|
258
|
-
|
|
259
|
-
Remix 3 通过 `createRouter({ middleware: [...] })`
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
1.
|
|
264
|
-
2.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* 用于从 Remix 3 RequestContext 中获取已解析语言的类型安全上下文键。
|
|
278
|
-
*/
|
|
279
|
-
export const localeKey = createContextKey<Locale>(defaultLocale);
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Remix 3 的 Intlayer 中间件。
|
|
283
|
-
*
|
|
284
|
-
* 按照以下优先级解析请求语言:
|
|
285
|
-
* 1. URL 路径前缀(例如 `/zh/...`),通过 `getLocaleFromPath` 获取
|
|
286
|
-
* 2. 存储与请求头协商,通过 `getLocale` 获取(Cookie、自定义请求头、Accept-Language 协商、fallback 回退 defaultLocale)
|
|
287
|
-
*
|
|
288
|
-
* 将解析出的语言附加至 Remix 3 RequestContext。
|
|
289
|
-
*/
|
|
290
|
-
export const intlayer = (): Middleware => {
|
|
291
|
-
return async (context, next) => {
|
|
292
|
-
// 路径检测 (/zh/about -> "zh", /about -> undefined)
|
|
293
|
-
const pathLocale = getLocaleFromPath(context.url.pathname);
|
|
294
|
-
|
|
295
|
-
if (pathLocale) {
|
|
296
|
-
// 将解析出的语言附加至 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
|
-
// 将解析出的语言附加至 Remix 3 请求上下文
|
|
309
|
-
context.set(localeKey, storedLocale ?? defaultLocale);
|
|
310
|
-
|
|
311
|
-
return next();
|
|
312
|
-
};
|
|
313
|
-
};
|
|
262
|
+
<Step number={5} title="添加 Intlayer 中间件">
|
|
263
|
+
|
|
264
|
+
Remix 3 通过 `createRouter({ middleware: [...] })` 提供可组合的中间件管道。
|
|
265
|
+
|
|
266
|
+
`remix-intlayer` 提供了 `intlayer()` 中间件。对于每个传入请求,它使用以下内容解析语言环境:
|
|
267
|
+
|
|
268
|
+
1. 除 `no-prefix` 之外的所有路由模式下的 URL:路径前缀(例如 `/zh` 或 `/en`)或 `?locale=` 查询参数。
|
|
269
|
+
2. 客户端持久化的语言环境:存储 Cookie(`INTLAYER_LOCALE`)或自定义标头(`x-intlayer-locale`)。
|
|
270
|
+
3. 标准 `Accept-Language` 协商,回退到配置的 `defaultLocale`。
|
|
271
|
+
|
|
272
|
+
结果作为 `context.intlayer`(或 `context.get(Intlayer)`)存储在 Remix 请求上下文中,包含 `locale`、`defaultLocale` 和 `availableLocales`。中间件随后在绑定到该上下文的 `AsyncLocalStorage` 作用域内运行请求的其余部分,使得该包的钩子无需传递参数即可读取语言环境,无论是在路由处理程序、视图还是 `remix/ui` 组件中:
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
276
|
+
|
|
277
|
+
// 中间件下游的任何位置
|
|
278
|
+
const { locale, availableLocales } = useLocale();
|
|
279
|
+
const { title } = useIntlayer("home");
|
|
314
280
|
```
|
|
315
281
|
|
|
282
|
+
`useIntlayer("home", "fr")` 或 `useIntlayer("faq", { item: 2 })` 可在单次调用中覆盖请求语言环境,而 `useDictionary(homeContent)` 读取导入的字典而不是键。在请求之外,钩子会回退到默认语言环境。
|
|
283
|
+
|
|
284
|
+
> 中间件还会在服务器启动时准备 Intlayer 字典,因此即使缺少 `intlayer build` 也不会导致注册表为空。
|
|
285
|
+
|
|
316
286
|
</Step>
|
|
317
287
|
<Step number={6} title="定义类型安全路由">
|
|
318
288
|
|
|
@@ -342,20 +312,21 @@ routes.localizedHome.href({ locale: "zh" }); // "/zh"
|
|
|
342
312
|
|
|
343
313
|
Remix 3 使用来自 `remix/ui` 的 JSX 组件渲染 UI。组件是一个接收 `Handle` 并返回**渲染函数**的**设置函数**。设置函数每个实例仅执行一次,渲染函数在每次更新时执行,并通过 `handle.props` 读取属性。
|
|
344
314
|
|
|
345
|
-
|
|
315
|
+
从一个共享的 `Document` 外壳开始,它根据中间件解析的语言环境设置 `<html lang="..." dir="...">` 属性:
|
|
346
316
|
|
|
347
317
|
```tsx fileName="src/views/document.tsx" codeFormat={["typescript", "esm"]}
|
|
348
|
-
import { getHTMLTextDir
|
|
318
|
+
import { getHTMLTextDir } from "intlayer";
|
|
319
|
+
import { useLocale } from "remix-intlayer";
|
|
349
320
|
import type { Handle, RemixNode } from "remix/ui";
|
|
350
321
|
|
|
351
322
|
type DocumentProps = {
|
|
352
|
-
locale: Locale;
|
|
353
323
|
title: string;
|
|
354
324
|
children?: RemixNode;
|
|
355
325
|
};
|
|
356
326
|
|
|
357
327
|
export const Document = (handle: Handle<DocumentProps>) => () => {
|
|
358
|
-
const {
|
|
328
|
+
const { title, children } = handle.props;
|
|
329
|
+
const { locale } = useLocale();
|
|
359
330
|
|
|
360
331
|
return (
|
|
361
332
|
<html lang={locale} dir={getHTMLTextDir(locale)}>
|
|
@@ -370,47 +341,40 @@ export const Document = (handle: Handle<DocumentProps>) => () => {
|
|
|
370
341
|
};
|
|
371
342
|
```
|
|
372
343
|
|
|
373
|
-
|
|
344
|
+
然后创建主页。它使用 `useIntlayer` 读取本地化字典并渲染语言切换器:
|
|
374
345
|
|
|
375
346
|
```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";
|
|
347
|
+
import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer";
|
|
348
|
+
import { useIntlayer, useLocale } from "remix-intlayer";
|
|
385
349
|
import { Document } from "./document";
|
|
386
350
|
|
|
387
|
-
|
|
388
|
-
locale
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
392
|
-
const { locale } = handle.props;
|
|
393
|
-
const home = getIntlayer("home", locale);
|
|
351
|
+
export const HomePage = () => () => {
|
|
352
|
+
const { locale, availableLocales } = useLocale();
|
|
353
|
+
const home = useIntlayer("home");
|
|
354
|
+
const pathWithoutLocale = getPathWithoutLocale();
|
|
394
355
|
|
|
395
356
|
return (
|
|
396
|
-
<Document
|
|
357
|
+
<Document title={home.title}>
|
|
397
358
|
<header>
|
|
398
359
|
<nav aria-label="Languages">
|
|
399
360
|
<span>{home.switchLanguage}</span>
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
key={
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
361
|
+
<ul>
|
|
362
|
+
{availableLocales.map((localeItem) => {
|
|
363
|
+
const isActive = localeItem === locale;
|
|
364
|
+
|
|
365
|
+
return (
|
|
366
|
+
<li key={localeItem} class="p-1">
|
|
367
|
+
<a
|
|
368
|
+
href={getLocalizedUrl(pathWithoutLocale, localeItem)}
|
|
369
|
+
class={isActive ? "active" : undefined}
|
|
370
|
+
aria-current={isActive ? "page" : undefined}
|
|
371
|
+
>
|
|
372
|
+
{getLocaleName(localeItem, locale)}
|
|
373
|
+
</a>
|
|
374
|
+
</li>
|
|
375
|
+
);
|
|
376
|
+
})}
|
|
377
|
+
</ul>
|
|
414
378
|
</nav>
|
|
415
379
|
</header>
|
|
416
380
|
<main>
|
|
@@ -422,7 +386,7 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
|
422
386
|
};
|
|
423
387
|
```
|
|
424
388
|
|
|
425
|
-
> Remix JSX
|
|
389
|
+
> Remix JSX 不是 React:`class` 原样书写(也接受 `className`),并且通过 `handle.update()` 显式触发重新渲染。插值会自动转义。Intlayer 钩子是读取请求作用域的普通函数,因此可以从 setup 函数或 render 函数中调用。
|
|
426
390
|
|
|
427
391
|
</Step>
|
|
428
392
|
<Step number={8} title="串联路由器与服务器">
|
|
@@ -431,39 +395,37 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
|
|
|
431
395
|
|
|
432
396
|
```tsx fileName="src/router.tsx" codeFormat={["typescript", "esm"]}
|
|
433
397
|
import { isDeclaredLocale } from "intlayer";
|
|
398
|
+
import { intlayer } from "remix-intlayer";
|
|
434
399
|
import { render } from "remix/middleware/render";
|
|
435
400
|
import { createRouter } from "remix/router";
|
|
436
|
-
import { intlayer, localeKey } from "./middleware/intlayer";
|
|
437
401
|
import { routes } from "./routes";
|
|
438
402
|
import { HomePage } from "./views/home";
|
|
439
403
|
|
|
440
|
-
// 1.
|
|
404
|
+
// 1. Initialize router with Intlayer + render middleware
|
|
441
405
|
export const router = createRouter({
|
|
442
406
|
middleware: [intlayer(), render()],
|
|
443
407
|
});
|
|
444
408
|
|
|
445
|
-
// 2.
|
|
409
|
+
// 2. Map route handlers
|
|
446
410
|
router.map(routes, {
|
|
447
411
|
actions: {
|
|
448
|
-
//
|
|
412
|
+
// Default locale route
|
|
449
413
|
home(context) {
|
|
450
|
-
|
|
451
|
-
return context.render(<HomePage locale={locale} />);
|
|
414
|
+
return context.render(<HomePage />);
|
|
452
415
|
},
|
|
453
416
|
|
|
454
|
-
//
|
|
417
|
+
// Localized route
|
|
455
418
|
localizedHome(context) {
|
|
456
419
|
if (!isDeclaredLocale(context.params.locale)) {
|
|
457
420
|
return new Response("Not Found", { status: 404 });
|
|
458
421
|
}
|
|
459
|
-
|
|
460
|
-
return context.render(<HomePage locale={locale} />);
|
|
422
|
+
return context.render(<HomePage />);
|
|
461
423
|
},
|
|
462
424
|
},
|
|
463
425
|
});
|
|
464
426
|
```
|
|
465
427
|
|
|
466
|
-
> `context.render`
|
|
428
|
+
> `context.render` 接受可选的 `ResponseInit` 作为第二个参数,例如 `context.render(<NotFoundPage />, { status: 404 })`。解析后的语言环境仍可作为 `context.intlayer.locale` 从处理程序访问,例如用于构建 `Response.json` 响应体。
|
|
467
429
|
|
|
468
430
|
最后,通过标准 `fetch` 处理函数暴露路由器。同一个路由器可无缝运行在 Node.js、Bun、Deno 及 Cloudflare Workers 上:
|
|
469
431
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-06
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-20
|
|
4
4
|
title: "Solid Start i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) SolidStart 应用的指南。包含服务端渲染的语言路由、hreflang、sitemap 和 AI 辅助翻译。"
|
|
6
6
|
keywords:
|
|
@@ -747,15 +747,13 @@ SolidStart 将导出 HTTP 方法的文件转换为 API 路由,并从路径中
|
|
|
747
747
|
import type { APIEvent } from "@solidjs/start/server";
|
|
748
748
|
import { generateSitemap } from "intlayer";
|
|
749
749
|
|
|
750
|
-
const SITE_URL = process.env.SITE_URL ?? "http://localhost:3000";
|
|
751
|
-
|
|
752
750
|
export const GET = (_event: APIEvent) => {
|
|
753
751
|
const sitemap = generateSitemap(
|
|
754
752
|
[
|
|
755
753
|
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
756
754
|
{ path: "/about", changefreq: "monthly", priority: 0.8 },
|
|
757
755
|
],
|
|
758
|
-
{ siteUrl:
|
|
756
|
+
{ siteUrl: "https://example.com" }
|
|
759
757
|
);
|
|
760
758
|
|
|
761
759
|
return new Response(sitemap, {
|
|
@@ -789,8 +787,6 @@ export const GET = (_event: APIEvent) => {
|
|
|
789
787
|
```typescript fileName="src/routes/robots.txt.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
790
788
|
import { getMultilingualUrls } from "intlayer";
|
|
791
789
|
|
|
792
|
-
const SITE_URL = process.env.SITE_URL ?? "http://localhost:3000";
|
|
793
|
-
|
|
794
790
|
const disallowedPaths = ["/admin", "/private"].flatMap((path) =>
|
|
795
791
|
Object.values(getMultilingualUrls(path))
|
|
796
792
|
);
|
|
@@ -802,7 +798,7 @@ export const GET = () =>
|
|
|
802
798
|
"Allow: /",
|
|
803
799
|
...disallowedPaths.map((path) => `Disallow: ${path}`),
|
|
804
800
|
"",
|
|
805
|
-
`Sitemap:
|
|
801
|
+
`Sitemap: https://example.com/sitemap.xml`,
|
|
806
802
|
].join("\n"),
|
|
807
803
|
{ headers: { "Content-Type": "text/plain" } }
|
|
808
804
|
);
|
|
@@ -921,8 +917,14 @@ bun x intlayer extract
|
|
|
921
917
|
</Tab>
|
|
922
918
|
<Tab value='Babel 编译器'>
|
|
923
919
|
|
|
920
|
+
<Tabs>
|
|
921
|
+
<Tab value='intlayer >= 9'>
|
|
922
|
+
|
|
924
923
|
> 从 v9 开始,`intlayerCompiler` 已包含在 `intlayer` 插件中。因此你无需手动添加它。
|
|
925
924
|
|
|
925
|
+
</Tab>
|
|
926
|
+
<Tab value='intlayer < 9'>
|
|
927
|
+
|
|
926
928
|
更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
927
929
|
|
|
928
930
|
```ts fileName="vite.config.ts"
|
|
@@ -941,6 +943,11 @@ export default defineConfig({
|
|
|
941
943
|
});
|
|
942
944
|
```
|
|
943
945
|
|
|
946
|
+
</Tab>
|
|
947
|
+
</Tabs>
|
|
948
|
+
|
|
949
|
+
构建你的应用程序来转换你的组件并提取内容
|
|
950
|
+
|
|
944
951
|
```bash packageManager="npm"
|
|
945
952
|
npm run build # 或 npm run dev
|
|
946
953
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-20
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-20
|
|
4
4
|
title: "SvelteKit i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) SvelteKit 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -713,8 +713,14 @@ bun x intlayer extract
|
|
|
713
713
|
</Tab>
|
|
714
714
|
<Tab value='Babel 编译器'>
|
|
715
715
|
|
|
716
|
+
<Tabs>
|
|
717
|
+
<Tab value='intlayer >= 9'>
|
|
718
|
+
|
|
716
719
|
> 自 v9 起,`intlayerCompiler` 包含在 `intlayer` 插件中。所以你不需要手动添加它。
|
|
717
720
|
|
|
721
|
+
</Tab>
|
|
722
|
+
<Tab value='intlayer < 9'>
|
|
723
|
+
|
|
718
724
|
更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
719
725
|
|
|
720
726
|
```ts fileName="vite.config.ts"
|
|
@@ -729,6 +735,11 @@ export default defineConfig({
|
|
|
729
735
|
});
|
|
730
736
|
```
|
|
731
737
|
|
|
738
|
+
</Tab>
|
|
739
|
+
</Tabs>
|
|
740
|
+
|
|
741
|
+
构建你的应用程序来转换你的组件并提取内容
|
|
742
|
+
|
|
732
743
|
```bash packageManager="npm"
|
|
733
744
|
npm run build # 或 npm run dev
|
|
734
745
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-03-25
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-20
|
|
4
4
|
title: "TanStack Start + Solid i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) TanStack Start + Solid 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -993,8 +993,14 @@ bun x intlayer extract
|
|
|
993
993
|
</Tab>
|
|
994
994
|
<Tab value='Babel 编译器'>
|
|
995
995
|
|
|
996
|
+
<Tabs>
|
|
997
|
+
<Tab value='intlayer >= 9'>
|
|
998
|
+
|
|
996
999
|
> 从 v9 开始,`intlayerCompiler` 已包含在 `intlayer` 插件中。所以你不需要手动添加它。
|
|
997
1000
|
|
|
1001
|
+
</Tab>
|
|
1002
|
+
<Tab value='intlayer < 9'>
|
|
1003
|
+
|
|
998
1004
|
更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
999
1005
|
|
|
1000
1006
|
```ts fileName="vite.config.ts"
|
|
@@ -1020,6 +1026,11 @@ export default defineConfig({
|
|
|
1020
1026
|
});
|
|
1021
1027
|
```
|
|
1022
1028
|
|
|
1029
|
+
</Tab>
|
|
1030
|
+
</Tabs>
|
|
1031
|
+
|
|
1032
|
+
构建你的应用程序来转换你的组件并提取内容
|
|
1033
|
+
|
|
1023
1034
|
```bash packageManager="npm"
|
|
1024
1035
|
npm run build # 或 npm run dev
|
|
1025
1036
|
```
|
|
@@ -1099,7 +1110,7 @@ export const Route = createFileRoute("/sitemap.xml")({
|
|
|
1099
1110
|
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
1100
1111
|
{ path: "/about", changefreq: "monthly", priority: 0.8 },
|
|
1101
1112
|
],
|
|
1102
|
-
{ siteUrl:
|
|
1113
|
+
{ siteUrl: "https://example.com" }
|
|
1103
1114
|
);
|
|
1104
1115
|
|
|
1105
1116
|
return new Response(sitemap, {
|
|
@@ -1266,6 +1277,13 @@ TanStack Start 本身不包含 i18n 层,而在 Solid 生态中可用的选择
|
|
|
1266
1277
|
|
|
1267
1278
|
可以通过在您自己的基础设施上运行的 [可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)(允许任何人直接在运行的应用中就地修改文本),或通过 [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md) 进行无需重新部署的内容外部化更新。
|
|
1268
1279
|
|
|
1280
|
+
</Question>
|
|
1281
|
+
<Question title="可视化编辑器的成本是多少?如果我不需要它,会不会显得多余?">
|
|
1282
|
+
|
|
1283
|
+
如果未进行配置,Intlayer [可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)对您的应用程序是 **零成本** 的。额外的逻辑仅在显式启用并在需要时才会加载。
|
|
1284
|
+
|
|
1285
|
+
即使启用,其开销也极其轻量(仅在激活时动态加载 +5 kB),因为主要逻辑由 [app.intlayer.org](https://app.intlayer.org) 上的服务端编辑器或通过 `intlayer-editor` 软件包进行处理。如果您只需要一个无需可视化编辑的简单翻译方案,Intlayer 不会给您的应用带来任何额外负担。
|
|
1286
|
+
|
|
1269
1287
|
</Question>
|
|
1270
1288
|
<Question title="Intlayer 是免费且开源的吗?">
|
|
1271
1289
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-20
|
|
4
4
|
title: "TanStack Start i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) TanStack Start 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -1077,8 +1077,14 @@ bun x intlayer extract
|
|
|
1077
1077
|
</Tab>
|
|
1078
1078
|
<Tab value="Babel compiler">
|
|
1079
1079
|
|
|
1080
|
+
<Tabs>
|
|
1081
|
+
<Tab value='intlayer >= 9'>
|
|
1082
|
+
|
|
1080
1083
|
> 从 v9 起,`intlayerCompiler` 包含在 `intlayer` 插件中。所以你不需要手动添加它。
|
|
1081
1084
|
|
|
1085
|
+
</Tab>
|
|
1086
|
+
<Tab value='intlayer < 9'>
|
|
1087
|
+
|
|
1082
1088
|
更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
1083
1089
|
|
|
1084
1090
|
```ts fileName="vite.config.ts"
|
|
@@ -1093,6 +1099,11 @@ export default defineConfig({
|
|
|
1093
1099
|
});
|
|
1094
1100
|
```
|
|
1095
1101
|
|
|
1102
|
+
</Tab>
|
|
1103
|
+
</Tabs>
|
|
1104
|
+
|
|
1105
|
+
构建你的应用程序来转换你的组件并提取内容
|
|
1106
|
+
|
|
1096
1107
|
```bash packageManager="npm"
|
|
1097
1108
|
npm run build # 或 npm run dev
|
|
1098
1109
|
```
|
|
@@ -1161,10 +1172,6 @@ export default defineConfig({
|
|
|
1161
1172
|
import { createFileRoute } from "@tanstack/react-router";
|
|
1162
1173
|
import { generateSitemap } from "intlayer";
|
|
1163
1174
|
|
|
1164
|
-
const SITE_URL = (
|
|
1165
|
-
import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
|
|
1166
|
-
).replace(/\/$/, "");
|
|
1167
|
-
|
|
1168
1175
|
export const Route = createFileRoute("/sitemap.xml")({
|
|
1169
1176
|
server: {
|
|
1170
1177
|
handlers: {
|
|
@@ -1174,7 +1181,7 @@ export const Route = createFileRoute("/sitemap.xml")({
|
|
|
1174
1181
|
{ path: "/", changefreq: "daily", priority: 1.0 },
|
|
1175
1182
|
{ path: "/about", changefreq: "monthly", priority: 0.8 },
|
|
1176
1183
|
],
|
|
1177
|
-
{ siteUrl:
|
|
1184
|
+
{ siteUrl: "https://example.com" }
|
|
1178
1185
|
);
|
|
1179
1186
|
|
|
1180
1187
|
return new Response(sitemap, {
|
|
@@ -1336,6 +1343,13 @@ TanStack Start 本身没有自带的 i18n 层,因此需要选择第三方库
|
|
|
1336
1343
|
|
|
1337
1344
|
可以通过在您自己的基础设施上运行的 [可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)(允许任何人直接在运行中的站点上就地修改文本),或通过 [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md) 进行无需重新部署的内容外部化更新。
|
|
1338
1345
|
|
|
1346
|
+
</Question>
|
|
1347
|
+
<Question title="可视化编辑器的成本是多少?如果我不需要它,会不会显得多余?">
|
|
1348
|
+
|
|
1349
|
+
如果未进行配置,Intlayer [可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)对您的应用程序是 **零成本** 的。额外的逻辑仅在显式启用并在需要时才会加载。
|
|
1350
|
+
|
|
1351
|
+
即使启用,其开销也极其轻量(仅在激活时动态加载 +5 kB),因为主要逻辑由 [app.intlayer.org](https://app.intlayer.org) 上的服务端编辑器或通过 `intlayer-editor` 软件包进行处理。如果您只需要一个无需可视化编辑的简单翻译方案,Intlayer 不会给您的应用带来任何额外负担。
|
|
1352
|
+
|
|
1339
1353
|
</Question>
|
|
1340
1354
|
<Question title="Intlayer 是免费且开源的吗?">
|
|
1341
1355
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-03-23
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-09-20
|
|
4
4
|
title: "Vite + Lit i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) Vite + Lit 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -618,6 +618,76 @@ const config: IntlayerConfig = {
|
|
|
618
618
|
export default config;
|
|
619
619
|
```
|
|
620
620
|
|
|
621
|
+
<Tabs>
|
|
622
|
+
<Tab value='Extract command'>
|
|
623
|
+
|
|
624
|
+
运行提取器来转换你的组件并提取内容
|
|
625
|
+
|
|
626
|
+
```bash packageManager="npm"
|
|
627
|
+
npx intlayer extract
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
```bash packageManager="pnpm"
|
|
631
|
+
pnpm intlayer extract
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
```bash packageManager="yarn"
|
|
635
|
+
yarn intlayer extract
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
```bash packageManager="bun"
|
|
639
|
+
bun x intlayer extract
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
</Tab>
|
|
643
|
+
<Tab value='Babel compiler'>
|
|
644
|
+
|
|
645
|
+
<Tabs>
|
|
646
|
+
<Tab value='intlayer >= 9'>
|
|
647
|
+
|
|
648
|
+
> 从 v9 开始,`intlayerCompiler` 包含在 `intlayer` 插件中。所以你不需要手动添加它。
|
|
649
|
+
|
|
650
|
+
</Tab>
|
|
651
|
+
<Tab value='intlayer < 9'>
|
|
652
|
+
|
|
653
|
+
更新你的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
654
|
+
|
|
655
|
+
```ts fileName="vite.config.ts"
|
|
656
|
+
import { defineConfig } from "vite";
|
|
657
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
658
|
+
|
|
659
|
+
export default defineConfig({
|
|
660
|
+
plugins: [
|
|
661
|
+
intlayer(),
|
|
662
|
+
intlayerCompiler(), // 添加编译器插件
|
|
663
|
+
],
|
|
664
|
+
});
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
</Tab>
|
|
668
|
+
</Tabs>
|
|
669
|
+
|
|
670
|
+
构建你的应用程序来转换你的组件并提取内容
|
|
671
|
+
|
|
672
|
+
```bash packageManager="npm"
|
|
673
|
+
npm run build # 或 npm run dev
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
```bash packageManager="pnpm"
|
|
677
|
+
pnpm run build # 或 pnpm run dev
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
```bash packageManager="yarn"
|
|
681
|
+
yarn build # 或 yarn dev
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
```bash packageManager="bun"
|
|
685
|
+
bun run build # 或 bun run dev
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
</Tab>
|
|
689
|
+
</Tabs>
|
|
690
|
+
|
|
621
691
|
</Step>
|
|
622
692
|
|
|
623
693
|
</Steps>
|
|
@@ -656,7 +726,9 @@ const pathList = [
|
|
|
656
726
|
{ path: "/about", changefreq: "monthly", priority: 0.7 },
|
|
657
727
|
];
|
|
658
728
|
|
|
659
|
-
const sitemapXml = generateSitemap(pathList, {
|
|
729
|
+
const sitemapXml = generateSitemap(pathList, {
|
|
730
|
+
siteUrl: "https://example.com",
|
|
731
|
+
});
|
|
660
732
|
fs.writeFileSync(path.join(__dirname, "public", "sitemap.xml"), sitemapXml);
|
|
661
733
|
|
|
662
734
|
const getAllMultilingualUrls = (urls) =>
|
|
@@ -669,7 +741,7 @@ const robotsTxt = [
|
|
|
669
741
|
"Allow: /",
|
|
670
742
|
...disallowedPaths.map((path) => `Disallow: ${path}`),
|
|
671
743
|
"",
|
|
672
|
-
`Sitemap:
|
|
744
|
+
`Sitemap: https://example.com/sitemap.xml`,
|
|
673
745
|
].join("\n");
|
|
674
746
|
|
|
675
747
|
fs.writeFileSync(path.join(__dirname, "public", "robots.txt"), robotsTxt);
|