@intlayer/docs 9.4.0 → 9.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/blog/ar/hreflang_guide_multilingual_seo.md +317 -0
- package/blog/ar/intlayer_with_i18next.md +0 -2
- package/blog/ar/intlayer_with_next-i18next.md +0 -4
- package/blog/ar/intlayer_with_vue-i18n.md +0 -4
- package/blog/de/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/de/intlayer_with_vue-i18n.md +0 -4
- package/blog/en/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/en/intlayer_with_i18next.md +0 -2
- package/blog/en/intlayer_with_next-i18next.md +0 -2
- package/blog/en/intlayer_with_next-intl.md +0 -2
- package/blog/en/intlayer_with_react-intl.md +0 -2
- package/blog/en/intlayer_with_vue-i18n.md +0 -2
- package/blog/en-GB/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/es/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/fr/hreflang_guide_multilingual_seo.md +315 -0
- package/blog/hi/hreflang_guide_multilingual_seo.md +323 -0
- package/blog/hi/intlayer_with_i18next.md +0 -2
- package/blog/hi/intlayer_with_next-i18next.md +0 -4
- package/blog/hi/intlayer_with_vue-i18n.md +0 -4
- package/blog/id/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/id/intlayer_with_i18next.md +0 -2
- package/blog/id/intlayer_with_next-i18next.md +0 -4
- package/blog/id/intlayer_with_vue-i18n.md +0 -4
- package/blog/it/hreflang_guide_multilingual_seo.md +315 -0
- package/blog/it/intlayer_with_i18next.md +0 -2
- package/blog/it/intlayer_with_next-i18next.md +0 -4
- package/blog/it/intlayer_with_vue-i18n.md +0 -4
- package/blog/ja/hreflang_guide_multilingual_seo.md +320 -0
- package/blog/ko/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/ko/intlayer_with_i18next.md +0 -2
- package/blog/ko/intlayer_with_next-i18next.md +0 -4
- package/blog/ko/intlayer_with_vue-i18n.md +0 -4
- package/blog/pl/hreflang_guide_multilingual_seo.md +316 -0
- package/blog/pt/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/pt/intlayer_with_i18next.md +0 -2
- package/blog/pt/intlayer_with_next-i18next.md +0 -4
- package/blog/pt/intlayer_with_vue-i18n.md +0 -4
- package/blog/ru/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/tr/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/tr/intlayer_with_i18next.md +0 -2
- package/blog/tr/intlayer_with_next-i18next.md +0 -4
- package/blog/tr/intlayer_with_vue-i18n.md +0 -4
- package/blog/uk/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/uk/intlayer_with_i18next.md +0 -2
- package/blog/uk/intlayer_with_next-i18next.md +0 -2
- package/blog/uk/intlayer_with_next-intl.md +0 -2
- package/blog/uk/intlayer_with_react-intl.md +0 -2
- package/blog/uk/intlayer_with_vue-i18n.md +0 -2
- package/blog/vi/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/vi/intlayer_with_i18next.md +0 -2
- package/blog/vi/intlayer_with_next-i18next.md +0 -4
- package/blog/vi/intlayer_with_vue-i18n.md +0 -4
- package/blog/zh/hreflang_guide_multilingual_seo.md +314 -0
- package/blog/zh/intlayer_with_i18next.md +0 -2
- package/blog/zh/intlayer_with_next-i18next.md +0 -2
- package/blog/zh/intlayer_with_next-intl.md +0 -2
- package/blog/zh/intlayer_with_react-intl.md +0 -2
- package/blog/zh/intlayer_with_vue-i18n.md +0 -2
- package/dist/cjs/common.cjs +29 -6
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +20 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +29 -6
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +20 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/analytics.md +458 -12
- package/docs/ar/configuration.md +98 -0
- package/docs/ar/dictionary/content_file.md +4 -4
- package/docs/ar/dictionary/html.md +117 -1
- package/docs/ar/dictionary/markdown.md +18 -1
- package/docs/ar/dictionary/plurial.md +5 -2
- package/docs/ar/how_works_intlayer.md +92 -0
- package/docs/ar/interest_of_intlayer.md +106 -9
- package/docs/ar/intlayer_CMS.md +92 -0
- package/docs/ar/intlayer_visual_editor.md +87 -1
- package/docs/ar/intlayer_with_adonisjs.md +121 -0
- package/docs/ar/intlayer_with_analog.md +116 -8
- package/docs/ar/intlayer_with_angular_19.md +115 -8
- package/docs/ar/intlayer_with_angular_21.md +109 -8
- package/docs/ar/intlayer_with_astro.md +117 -20
- package/docs/ar/intlayer_with_astro_lit.md +118 -10
- package/docs/ar/intlayer_with_astro_preact.md +118 -10
- package/docs/ar/intlayer_with_astro_react.md +118 -10
- package/docs/ar/intlayer_with_astro_solid.md +118 -10
- package/docs/ar/intlayer_with_astro_svelte.md +118 -10
- package/docs/ar/intlayer_with_astro_vanilla.md +112 -10
- package/docs/ar/intlayer_with_astro_vue.md +118 -10
- package/docs/ar/intlayer_with_create_react_app.md +105 -0
- package/docs/ar/intlayer_with_elysia.md +121 -0
- package/docs/ar/intlayer_with_express.md +114 -0
- package/docs/ar/intlayer_with_fastify.md +115 -0
- package/docs/ar/intlayer_with_hono.md +114 -0
- package/docs/ar/intlayer_with_htmx.md +771 -0
- package/docs/ar/intlayer_with_lynx+react.md +7 -14
- package/docs/ar/intlayer_with_nestjs.md +115 -0
- package/docs/ar/intlayer_with_nextjs_14.md +144 -120
- package/docs/ar/intlayer_with_nextjs_15.md +126 -51
- package/docs/ar/intlayer_with_nextjs_16.md +127 -49
- package/docs/ar/intlayer_with_nextjs_compiler.md +122 -13
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +121 -9
- package/docs/ar/intlayer_with_nextjs_page_router.md +139 -107
- package/docs/ar/intlayer_with_nuxt.md +110 -8
- package/docs/ar/intlayer_with_react_native+expo.md +102 -7
- package/docs/ar/intlayer_with_react_router_v7.md +119 -10
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +122 -22
- package/docs/ar/intlayer_with_solid_start.md +115 -1
- package/docs/ar/intlayer_with_storybook.md +7 -20
- package/docs/ar/intlayer_with_svelte_kit.md +107 -17
- package/docs/ar/intlayer_with_tanstack+solid.md +124 -22
- package/docs/ar/intlayer_with_tanstack.md +134 -43
- package/docs/ar/intlayer_with_vanilla.md +117 -9
- package/docs/ar/intlayer_with_vite+lit.md +118 -8
- package/docs/ar/intlayer_with_vite+preact.md +148 -40
- package/docs/ar/intlayer_with_vite+react.md +108 -20
- package/docs/ar/intlayer_with_vite+react_compiler.md +106 -1
- package/docs/ar/intlayer_with_vite+solid.md +114 -5
- package/docs/ar/intlayer_with_vite+svelte.md +118 -8
- package/docs/ar/intlayer_with_vite+vanilla.md +125 -8
- package/docs/ar/intlayer_with_vite+vue.md +105 -9
- package/docs/ar/introduction.md +104 -1
- package/docs/ar/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/ar/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/ar/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/ar/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/ar/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/ar/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/bn/introduction.md +0 -1
- package/docs/cs/interest_of_intlayer.md +0 -1
- package/docs/cs/intlayer_with_storybook.md +0 -12
- package/docs/cs/intlayer_with_vanilla.md +2 -1
- package/docs/cs/introduction.md +0 -1
- package/docs/de/analytics.md +458 -12
- package/docs/de/configuration.md +99 -1
- package/docs/de/dictionary/content_file.md +4 -4
- package/docs/de/dictionary/markdown.md +3 -0
- package/docs/de/dictionary/plurial.md +6 -3
- package/docs/de/how_works_intlayer.md +93 -1
- package/docs/de/interest_of_intlayer.md +97 -2
- package/docs/de/intlayer_CMS.md +93 -1
- package/docs/de/intlayer_visual_editor.md +88 -2
- package/docs/de/intlayer_with_adonisjs.md +121 -1
- package/docs/de/intlayer_with_analog.md +111 -2
- package/docs/de/intlayer_with_angular_19.md +109 -2
- package/docs/de/intlayer_with_angular_21.md +103 -2
- package/docs/de/intlayer_with_astro.md +111 -14
- package/docs/de/intlayer_with_astro_lit.md +112 -4
- package/docs/de/intlayer_with_astro_preact.md +112 -4
- package/docs/de/intlayer_with_astro_react.md +112 -4
- package/docs/de/intlayer_with_astro_solid.md +112 -4
- package/docs/de/intlayer_with_astro_svelte.md +112 -4
- package/docs/de/intlayer_with_astro_vanilla.md +106 -4
- package/docs/de/intlayer_with_astro_vue.md +112 -4
- package/docs/de/intlayer_with_create_react_app.md +107 -2
- package/docs/de/intlayer_with_elysia.md +121 -1
- package/docs/de/intlayer_with_express.md +115 -1
- package/docs/de/intlayer_with_fastify.md +115 -1
- package/docs/de/intlayer_with_hono.md +115 -1
- package/docs/de/intlayer_with_htmx.md +770 -0
- package/docs/de/intlayer_with_lynx+react.md +0 -7
- package/docs/de/intlayer_with_nestjs.md +115 -1
- package/docs/de/intlayer_with_nextjs_14.md +138 -110
- package/docs/de/intlayer_with_nextjs_15.md +120 -45
- package/docs/de/intlayer_with_nextjs_16.md +147 -51
- package/docs/de/intlayer_with_nextjs_compiler.md +113 -3
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/de/intlayer_with_nextjs_page_router.md +121 -95
- package/docs/de/intlayer_with_nuxt.md +104 -2
- package/docs/de/intlayer_with_react_native+expo.md +103 -8
- package/docs/de/intlayer_with_react_router_v7.md +113 -4
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/de/intlayer_with_solid_start.md +117 -2
- package/docs/de/intlayer_with_storybook.md +0 -13
- package/docs/de/intlayer_with_svelte_kit.md +99 -2
- package/docs/de/intlayer_with_tanstack+solid.md +119 -16
- package/docs/de/intlayer_with_tanstack.md +231 -152
- package/docs/de/intlayer_with_vanilla.md +111 -3
- package/docs/de/intlayer_with_vite+lit.md +113 -2
- package/docs/de/intlayer_with_vite+preact.md +170 -33
- package/docs/de/intlayer_with_vite+react.md +102 -6
- package/docs/de/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/de/intlayer_with_vite+solid.md +113 -2
- package/docs/de/intlayer_with_vite+svelte.md +113 -2
- package/docs/de/intlayer_with_vite+vanilla.md +119 -2
- package/docs/de/intlayer_with_vite+vue.md +98 -2
- package/docs/de/introduction.md +105 -2
- package/docs/de/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/de/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/de/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/de/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/de/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/de/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/en/configuration.md +99 -1
- package/docs/en/dictionary/content_file.md +4 -4
- package/docs/en/how_works_intlayer.md +93 -1
- package/docs/en/interest_of_intlayer.md +97 -2
- package/docs/en/intlayer_CMS.md +93 -1
- package/docs/en/intlayer_visual_editor.md +88 -2
- package/docs/en/intlayer_with_adonisjs.md +121 -1
- package/docs/en/intlayer_with_analog.md +111 -2
- package/docs/en/intlayer_with_angular_19.md +109 -2
- package/docs/en/intlayer_with_angular_21.md +103 -2
- package/docs/en/intlayer_with_astro.md +107 -4
- package/docs/en/intlayer_with_astro_lit.md +112 -4
- package/docs/en/intlayer_with_astro_preact.md +112 -4
- package/docs/en/intlayer_with_astro_react.md +112 -4
- package/docs/en/intlayer_with_astro_solid.md +112 -4
- package/docs/en/intlayer_with_astro_svelte.md +112 -4
- package/docs/en/intlayer_with_astro_vanilla.md +106 -4
- package/docs/en/intlayer_with_astro_vue.md +112 -4
- package/docs/en/intlayer_with_create_react_app.md +105 -2
- package/docs/en/intlayer_with_elysia.md +121 -1
- package/docs/en/intlayer_with_express.md +115 -1
- package/docs/en/intlayer_with_fastify.md +115 -1
- package/docs/en/intlayer_with_hono.md +115 -1
- package/docs/en/intlayer_with_htmx.md +754 -0
- package/docs/en/intlayer_with_lynx+react.md +0 -7
- package/docs/en/intlayer_with_nestjs.md +115 -1
- package/docs/en/intlayer_with_nextjs_14.md +120 -43
- package/docs/en/intlayer_with_nextjs_15.md +120 -44
- package/docs/en/intlayer_with_nextjs_16.md +121 -43
- package/docs/en/intlayer_with_nextjs_compiler.md +111 -2
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/en/intlayer_with_nextjs_page_router.md +110 -95
- package/docs/en/intlayer_with_nuxt.md +104 -2
- package/docs/en/intlayer_with_react_native+expo.md +103 -8
- package/docs/en/intlayer_with_react_router_v7.md +113 -4
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +112 -5
- package/docs/en/intlayer_with_solid_start.md +117 -2
- package/docs/en/intlayer_with_storybook.md +0 -13
- package/docs/en/intlayer_with_svelte_kit.md +99 -2
- package/docs/en/intlayer_with_tanstack+solid.md +120 -16
- package/docs/en/intlayer_with_tanstack.md +114 -16
- package/docs/en/intlayer_with_vanilla.md +111 -3
- package/docs/en/intlayer_with_vite+lit.md +113 -2
- package/docs/en/intlayer_with_vite+preact.md +143 -34
- package/docs/en/intlayer_with_vite+react.md +101 -4
- package/docs/en/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/en/intlayer_with_vite+solid.md +113 -2
- package/docs/en/intlayer_with_vite+svelte.md +113 -2
- package/docs/en/intlayer_with_vite+vanilla.md +119 -2
- package/docs/en/intlayer_with_vite+vue.md +98 -2
- package/docs/en/introduction.md +105 -2
- package/docs/en/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/en/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/en/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/en/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/en/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/en/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/en-GB/analytics.md +527 -58
- package/docs/en-GB/configuration.md +99 -1
- package/docs/en-GB/dictionary/content_file.md +4 -4
- package/docs/en-GB/dictionary/html.md +117 -1
- package/docs/en-GB/dictionary/markdown.md +18 -1
- package/docs/en-GB/dictionary/plurial.md +5 -2
- package/docs/en-GB/dictionary/translation.md +1 -1
- package/docs/en-GB/how_works_intlayer.md +93 -1
- package/docs/en-GB/interest_of_intlayer.md +97 -2
- package/docs/en-GB/intlayer_CMS.md +93 -1
- package/docs/en-GB/intlayer_visual_editor.md +88 -2
- package/docs/en-GB/intlayer_with_adonisjs.md +121 -1
- package/docs/en-GB/intlayer_with_analog.md +111 -2
- package/docs/en-GB/intlayer_with_angular_19.md +109 -2
- package/docs/en-GB/intlayer_with_angular_21.md +103 -2
- package/docs/en-GB/intlayer_with_astro.md +111 -14
- package/docs/en-GB/intlayer_with_astro_lit.md +112 -4
- package/docs/en-GB/intlayer_with_astro_preact.md +112 -4
- package/docs/en-GB/intlayer_with_astro_react.md +112 -4
- package/docs/en-GB/intlayer_with_astro_solid.md +112 -4
- package/docs/en-GB/intlayer_with_astro_svelte.md +112 -4
- package/docs/en-GB/intlayer_with_astro_vanilla.md +106 -4
- package/docs/en-GB/intlayer_with_astro_vue.md +112 -4
- package/docs/en-GB/intlayer_with_create_react_app.md +105 -2
- package/docs/en-GB/intlayer_with_elysia.md +121 -1
- package/docs/en-GB/intlayer_with_express.md +115 -1
- package/docs/en-GB/intlayer_with_fastify.md +115 -1
- package/docs/en-GB/intlayer_with_hono.md +115 -1
- package/docs/en-GB/intlayer_with_htmx.md +757 -0
- package/docs/en-GB/intlayer_with_lynx+react.md +0 -7
- package/docs/en-GB/intlayer_with_nestjs.md +115 -1
- package/docs/en-GB/intlayer_with_nextjs_14.md +120 -44
- package/docs/en-GB/intlayer_with_nextjs_15.md +123 -45
- package/docs/en-GB/intlayer_with_nextjs_16.md +121 -44
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +121 -12
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +122 -137
- package/docs/en-GB/intlayer_with_nuxt.md +104 -2
- package/docs/en-GB/intlayer_with_react_native+expo.md +103 -8
- package/docs/en-GB/intlayer_with_react_router_v7.md +113 -4
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/en-GB/intlayer_with_solid_start.md +117 -2
- package/docs/en-GB/intlayer_with_storybook.md +0 -13
- package/docs/en-GB/intlayer_with_svelte_kit.md +99 -2
- package/docs/en-GB/intlayer_with_tanstack+solid.md +120 -16
- package/docs/en-GB/intlayer_with_tanstack.md +255 -167
- package/docs/en-GB/intlayer_with_vanilla.md +111 -3
- package/docs/en-GB/intlayer_with_vite+lit.md +113 -2
- package/docs/en-GB/intlayer_with_vite+preact.md +179 -32
- package/docs/en-GB/intlayer_with_vite+react.md +101 -13
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/en-GB/intlayer_with_vite+solid.md +118 -2
- package/docs/en-GB/intlayer_with_vite+svelte.md +113 -11
- package/docs/en-GB/intlayer_with_vite+vanilla.md +119 -2
- package/docs/en-GB/intlayer_with_vite+vue.md +102 -8
- package/docs/en-GB/introduction.md +105 -2
- package/docs/en-GB/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/en-GB/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/en-GB/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/es/analytics.md +458 -12
- package/docs/es/configuration.md +99 -1
- package/docs/es/dictionary/content_file.md +4 -4
- package/docs/es/dictionary/markdown.md +18 -1
- package/docs/es/dictionary/plurial.md +5 -2
- package/docs/es/how_works_intlayer.md +93 -1
- package/docs/es/interest_of_intlayer.md +97 -2
- package/docs/es/intlayer_CMS.md +93 -1
- package/docs/es/intlayer_visual_editor.md +88 -2
- package/docs/es/intlayer_with_adonisjs.md +121 -1
- package/docs/es/intlayer_with_analog.md +111 -2
- package/docs/es/intlayer_with_angular_19.md +109 -2
- package/docs/es/intlayer_with_angular_21.md +103 -2
- package/docs/es/intlayer_with_astro.md +111 -14
- package/docs/es/intlayer_with_astro_lit.md +112 -4
- package/docs/es/intlayer_with_astro_preact.md +112 -4
- package/docs/es/intlayer_with_astro_react.md +112 -4
- package/docs/es/intlayer_with_astro_solid.md +112 -4
- package/docs/es/intlayer_with_astro_svelte.md +112 -4
- package/docs/es/intlayer_with_astro_vanilla.md +106 -4
- package/docs/es/intlayer_with_astro_vue.md +112 -4
- package/docs/es/intlayer_with_create_react_app.md +107 -2
- package/docs/es/intlayer_with_elysia.md +121 -1
- package/docs/es/intlayer_with_express.md +115 -1
- package/docs/es/intlayer_with_fastify.md +115 -1
- package/docs/es/intlayer_with_hono.md +115 -1
- package/docs/es/intlayer_with_htmx.md +763 -0
- package/docs/es/intlayer_with_lynx+react.md +0 -7
- package/docs/es/intlayer_with_nestjs.md +115 -1
- package/docs/es/intlayer_with_nextjs_14.md +120 -44
- package/docs/es/intlayer_with_nextjs_15.md +123 -45
- package/docs/es/intlayer_with_nextjs_16.md +142 -52
- package/docs/es/intlayer_with_nextjs_compiler.md +122 -12
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/es/intlayer_with_nextjs_page_router.md +110 -95
- package/docs/es/intlayer_with_nuxt.md +104 -2
- package/docs/es/intlayer_with_react_native+expo.md +103 -8
- package/docs/es/intlayer_with_react_router_v7.md +113 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/es/intlayer_with_solid_start.md +117 -2
- package/docs/es/intlayer_with_storybook.md +0 -13
- package/docs/es/intlayer_with_svelte_kit.md +99 -2
- package/docs/es/intlayer_with_tanstack+solid.md +119 -16
- package/docs/es/intlayer_with_tanstack.md +252 -147
- package/docs/es/intlayer_with_vanilla.md +111 -3
- package/docs/es/intlayer_with_vite+lit.md +113 -2
- package/docs/es/intlayer_with_vite+preact.md +143 -34
- package/docs/es/intlayer_with_vite+react.md +101 -4
- package/docs/es/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/es/intlayer_with_vite+solid.md +114 -2
- package/docs/es/intlayer_with_vite+svelte.md +113 -2
- package/docs/es/intlayer_with_vite+vanilla.md +119 -2
- package/docs/es/intlayer_with_vite+vue.md +99 -3
- package/docs/es/introduction.md +105 -2
- package/docs/es/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/es/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/es/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/es/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/es/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/es/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/fr/analytics.md +437 -13
- package/docs/fr/configuration.md +99 -1
- package/docs/fr/dictionary/content_file.md +4 -4
- package/docs/fr/dictionary/markdown.md +18 -1
- package/docs/fr/dictionary/plurial.md +5 -2
- package/docs/fr/how_works_intlayer.md +93 -1
- package/docs/fr/interest_of_intlayer.md +97 -2
- package/docs/fr/intlayer_CMS.md +93 -1
- package/docs/fr/intlayer_visual_editor.md +88 -2
- package/docs/fr/intlayer_with_adonisjs.md +121 -1
- package/docs/fr/intlayer_with_analog.md +111 -2
- package/docs/fr/intlayer_with_angular_19.md +109 -2
- package/docs/fr/intlayer_with_angular_21.md +103 -2
- package/docs/fr/intlayer_with_astro.md +111 -14
- package/docs/fr/intlayer_with_astro_lit.md +112 -4
- package/docs/fr/intlayer_with_astro_preact.md +112 -4
- package/docs/fr/intlayer_with_astro_react.md +112 -4
- package/docs/fr/intlayer_with_astro_solid.md +112 -4
- package/docs/fr/intlayer_with_astro_svelte.md +112 -4
- package/docs/fr/intlayer_with_astro_vanilla.md +106 -4
- package/docs/fr/intlayer_with_astro_vue.md +112 -4
- package/docs/fr/intlayer_with_create_react_app.md +107 -2
- package/docs/fr/intlayer_with_elysia.md +121 -1
- package/docs/fr/intlayer_with_express.md +115 -1
- package/docs/fr/intlayer_with_fastify.md +115 -1
- package/docs/fr/intlayer_with_hono.md +115 -1
- package/docs/fr/intlayer_with_htmx.md +756 -0
- package/docs/fr/intlayer_with_lynx+react.md +0 -7
- package/docs/fr/intlayer_with_nestjs.md +115 -1
- package/docs/fr/intlayer_with_nextjs_14.md +138 -110
- package/docs/fr/intlayer_with_nextjs_15.md +124 -46
- package/docs/fr/intlayer_with_nextjs_16.md +121 -43
- package/docs/fr/intlayer_with_nextjs_compiler.md +122 -12
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/fr/intlayer_with_nextjs_page_router.md +110 -95
- package/docs/fr/intlayer_with_nuxt.md +104 -2
- package/docs/fr/intlayer_with_react_native+expo.md +103 -8
- package/docs/fr/intlayer_with_react_router_v7.md +117 -10
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/fr/intlayer_with_solid_start.md +117 -2
- package/docs/fr/intlayer_with_storybook.md +0 -13
- package/docs/fr/intlayer_with_svelte_kit.md +99 -2
- package/docs/fr/intlayer_with_tanstack+solid.md +119 -16
- package/docs/fr/intlayer_with_tanstack.md +235 -128
- package/docs/fr/intlayer_with_vanilla.md +111 -3
- package/docs/fr/intlayer_with_vite+lit.md +113 -2
- package/docs/fr/intlayer_with_vite+preact.md +143 -34
- package/docs/fr/intlayer_with_vite+react.md +101 -4
- package/docs/fr/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/fr/intlayer_with_vite+solid.md +114 -2
- package/docs/fr/intlayer_with_vite+svelte.md +113 -2
- package/docs/fr/intlayer_with_vite+vanilla.md +119 -2
- package/docs/fr/intlayer_with_vite+vue.md +99 -3
- package/docs/fr/introduction.md +105 -2
- package/docs/fr/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/fr/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/fr/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/fr/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/fr/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/fr/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/hi/analytics.md +488 -21
- package/docs/hi/configuration.md +98 -0
- package/docs/hi/dictionary/content_file.md +4 -4
- package/docs/hi/dictionary/html.md +100 -3
- package/docs/hi/dictionary/markdown.md +3 -0
- package/docs/hi/dictionary/plurial.md +6 -3
- package/docs/hi/how_works_intlayer.md +92 -0
- package/docs/hi/interest_of_intlayer.md +106 -9
- package/docs/hi/intlayer_CMS.md +92 -0
- package/docs/hi/intlayer_visual_editor.md +87 -1
- package/docs/hi/intlayer_with_adonisjs.md +121 -0
- package/docs/hi/intlayer_with_analog.md +116 -8
- package/docs/hi/intlayer_with_angular_19.md +115 -8
- package/docs/hi/intlayer_with_angular_21.md +109 -8
- package/docs/hi/intlayer_with_astro.md +117 -20
- package/docs/hi/intlayer_with_astro_lit.md +118 -10
- package/docs/hi/intlayer_with_astro_preact.md +118 -10
- package/docs/hi/intlayer_with_astro_react.md +118 -10
- package/docs/hi/intlayer_with_astro_solid.md +118 -10
- package/docs/hi/intlayer_with_astro_svelte.md +118 -10
- package/docs/hi/intlayer_with_astro_vanilla.md +112 -10
- package/docs/hi/intlayer_with_astro_vue.md +118 -10
- package/docs/hi/intlayer_with_create_react_app.md +106 -1
- package/docs/hi/intlayer_with_elysia.md +121 -0
- package/docs/hi/intlayer_with_express.md +114 -0
- package/docs/hi/intlayer_with_fastify.md +115 -0
- package/docs/hi/intlayer_with_hono.md +114 -0
- package/docs/hi/intlayer_with_htmx.md +771 -0
- package/docs/hi/intlayer_with_lynx+react.md +7 -14
- package/docs/hi/intlayer_with_nestjs.md +115 -0
- package/docs/hi/intlayer_with_nextjs_14.md +144 -120
- package/docs/hi/intlayer_with_nextjs_15.md +129 -51
- package/docs/hi/intlayer_with_nextjs_16.md +129 -50
- package/docs/hi/intlayer_with_nextjs_compiler.md +121 -12
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +121 -9
- package/docs/hi/intlayer_with_nextjs_page_router.md +123 -96
- package/docs/hi/intlayer_with_nuxt.md +110 -8
- package/docs/hi/intlayer_with_react_native+expo.md +102 -7
- package/docs/hi/intlayer_with_react_router_v7.md +119 -10
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +122 -22
- package/docs/hi/intlayer_with_solid_start.md +115 -1
- package/docs/hi/intlayer_with_storybook.md +7 -20
- package/docs/hi/intlayer_with_svelte_kit.md +105 -8
- package/docs/hi/intlayer_with_tanstack+solid.md +124 -22
- package/docs/hi/intlayer_with_tanstack.md +269 -155
- package/docs/hi/intlayer_with_vanilla.md +117 -9
- package/docs/hi/intlayer_with_vite+lit.md +118 -8
- package/docs/hi/intlayer_with_vite+preact.md +170 -41
- package/docs/hi/intlayer_with_vite+react.md +108 -20
- package/docs/hi/intlayer_with_vite+react_compiler.md +106 -1
- package/docs/hi/intlayer_with_vite+solid.md +118 -8
- package/docs/hi/intlayer_with_vite+svelte.md +120 -9
- package/docs/hi/intlayer_with_vite+vanilla.md +125 -8
- package/docs/hi/intlayer_with_vite+vue.md +104 -8
- package/docs/hi/introduction.md +104 -1
- package/docs/hi/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/hi/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/hi/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/hi/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/hi/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/hi/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/id/analytics.md +488 -21
- package/docs/id/configuration.md +98 -0
- package/docs/id/dictionary/content_file.md +4 -4
- package/docs/id/dictionary/markdown.md +3 -0
- package/docs/id/dictionary/plurial.md +5 -2
- package/docs/id/how_works_intlayer.md +92 -0
- package/docs/id/interest_of_intlayer.md +96 -1
- package/docs/id/intlayer_CMS.md +92 -0
- package/docs/id/intlayer_visual_editor.md +87 -1
- package/docs/id/intlayer_with_adonisjs.md +121 -0
- package/docs/id/intlayer_with_analog.md +109 -1
- package/docs/id/intlayer_with_angular_19.md +108 -1
- package/docs/id/intlayer_with_angular_21.md +102 -1
- package/docs/id/intlayer_with_astro.md +110 -13
- package/docs/id/intlayer_with_astro_lit.md +111 -3
- package/docs/id/intlayer_with_astro_preact.md +111 -3
- package/docs/id/intlayer_with_astro_react.md +111 -3
- package/docs/id/intlayer_with_astro_solid.md +111 -3
- package/docs/id/intlayer_with_astro_svelte.md +111 -3
- package/docs/id/intlayer_with_astro_vanilla.md +105 -3
- package/docs/id/intlayer_with_astro_vue.md +111 -3
- package/docs/id/intlayer_with_create_react_app.md +106 -1
- package/docs/id/intlayer_with_elysia.md +121 -0
- package/docs/id/intlayer_with_express.md +114 -0
- package/docs/id/intlayer_with_fastify.md +115 -0
- package/docs/id/intlayer_with_hono.md +114 -0
- package/docs/id/intlayer_with_htmx.md +761 -0
- package/docs/id/intlayer_with_lynx+react.md +0 -7
- package/docs/id/intlayer_with_nestjs.md +115 -0
- package/docs/id/intlayer_with_nextjs_14.md +132 -66
- package/docs/id/intlayer_with_nextjs_15.md +119 -43
- package/docs/id/intlayer_with_nextjs_16.md +122 -42
- package/docs/id/intlayer_with_nextjs_compiler.md +122 -14
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +114 -2
- package/docs/id/intlayer_with_nextjs_page_router.md +111 -94
- package/docs/id/intlayer_with_nuxt.md +103 -1
- package/docs/id/intlayer_with_react_native+expo.md +102 -7
- package/docs/id/intlayer_with_react_router_v7.md +112 -3
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +116 -16
- package/docs/id/intlayer_with_solid_start.md +115 -1
- package/docs/id/intlayer_with_storybook.md +0 -13
- package/docs/id/intlayer_with_svelte_kit.md +98 -1
- package/docs/id/intlayer_with_tanstack+solid.md +117 -15
- package/docs/id/intlayer_with_tanstack.md +229 -129
- package/docs/id/intlayer_with_vanilla.md +110 -2
- package/docs/id/intlayer_with_vite+lit.md +111 -1
- package/docs/id/intlayer_with_vite+preact.md +141 -33
- package/docs/id/intlayer_with_vite+react.md +101 -13
- package/docs/id/intlayer_with_vite+react_compiler.md +106 -1
- package/docs/id/intlayer_with_vite+solid.md +112 -1
- package/docs/id/intlayer_with_vite+svelte.md +111 -1
- package/docs/id/intlayer_with_vite+vanilla.md +118 -1
- package/docs/id/intlayer_with_vite+vue.md +97 -1
- package/docs/id/introduction.md +104 -1
- package/docs/id/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/id/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/id/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/id/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/id/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/id/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/it/analytics.md +488 -21
- package/docs/it/configuration.md +99 -1
- package/docs/it/dictionary/content_file.md +4 -4
- package/docs/it/dictionary/markdown.md +18 -1
- package/docs/it/dictionary/plurial.md +5 -2
- package/docs/it/how_works_intlayer.md +93 -1
- package/docs/it/interest_of_intlayer.md +97 -2
- package/docs/it/intlayer_CMS.md +93 -1
- package/docs/it/intlayer_visual_editor.md +88 -2
- package/docs/it/intlayer_with_adonisjs.md +121 -1
- package/docs/it/intlayer_with_analog.md +111 -2
- package/docs/it/intlayer_with_angular_19.md +109 -2
- package/docs/it/intlayer_with_angular_21.md +103 -2
- package/docs/it/intlayer_with_astro.md +111 -14
- package/docs/it/intlayer_with_astro_lit.md +112 -4
- package/docs/it/intlayer_with_astro_preact.md +112 -4
- package/docs/it/intlayer_with_astro_react.md +112 -4
- package/docs/it/intlayer_with_astro_solid.md +112 -4
- package/docs/it/intlayer_with_astro_svelte.md +112 -4
- package/docs/it/intlayer_with_astro_vanilla.md +106 -4
- package/docs/it/intlayer_with_astro_vue.md +112 -4
- package/docs/it/intlayer_with_create_react_app.md +107 -2
- package/docs/it/intlayer_with_elysia.md +121 -1
- package/docs/it/intlayer_with_express.md +115 -1
- package/docs/it/intlayer_with_fastify.md +115 -1
- package/docs/it/intlayer_with_hono.md +115 -1
- package/docs/it/intlayer_with_htmx.md +761 -0
- package/docs/it/intlayer_with_lynx+react.md +0 -7
- package/docs/it/intlayer_with_nestjs.md +115 -1
- package/docs/it/intlayer_with_nextjs_14.md +138 -115
- package/docs/it/intlayer_with_nextjs_15.md +124 -47
- package/docs/it/intlayer_with_nextjs_16.md +123 -44
- package/docs/it/intlayer_with_nextjs_compiler.md +123 -14
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/it/intlayer_with_nextjs_page_router.md +119 -95
- package/docs/it/intlayer_with_nuxt.md +104 -2
- package/docs/it/intlayer_with_react_native+expo.md +103 -8
- package/docs/it/intlayer_with_react_router_v7.md +113 -4
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/it/intlayer_with_solid_start.md +117 -2
- package/docs/it/intlayer_with_storybook.md +0 -13
- package/docs/it/intlayer_with_svelte_kit.md +99 -2
- package/docs/it/intlayer_with_tanstack+solid.md +119 -16
- package/docs/it/intlayer_with_tanstack.md +232 -131
- package/docs/it/intlayer_with_vanilla.md +111 -3
- package/docs/it/intlayer_with_vite+lit.md +113 -2
- package/docs/it/intlayer_with_vite+preact.md +143 -34
- package/docs/it/intlayer_with_vite+react.md +102 -14
- package/docs/it/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/it/intlayer_with_vite+solid.md +114 -2
- package/docs/it/intlayer_with_vite+svelte.md +113 -2
- package/docs/it/intlayer_with_vite+vanilla.md +119 -2
- package/docs/it/intlayer_with_vite+vue.md +99 -3
- package/docs/it/introduction.md +105 -2
- package/docs/it/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/it/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/it/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/it/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/it/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/it/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ja/analytics.md +458 -12
- package/docs/ja/configuration.md +99 -1
- package/docs/ja/dictionary/content_file.md +4 -4
- package/docs/ja/dictionary/plurial.md +5 -2
- package/docs/ja/how_works_intlayer.md +93 -1
- package/docs/ja/interest_of_intlayer.md +107 -10
- package/docs/ja/intlayer_CMS.md +93 -1
- package/docs/ja/intlayer_visual_editor.md +88 -2
- package/docs/ja/intlayer_with_adonisjs.md +121 -1
- package/docs/ja/intlayer_with_analog.md +119 -10
- package/docs/ja/intlayer_with_angular_19.md +117 -10
- package/docs/ja/intlayer_with_angular_21.md +111 -10
- package/docs/ja/intlayer_with_astro.md +119 -22
- package/docs/ja/intlayer_with_astro_lit.md +120 -12
- package/docs/ja/intlayer_with_astro_preact.md +120 -12
- package/docs/ja/intlayer_with_astro_react.md +120 -12
- package/docs/ja/intlayer_with_astro_solid.md +120 -12
- package/docs/ja/intlayer_with_astro_svelte.md +120 -12
- package/docs/ja/intlayer_with_astro_vanilla.md +114 -12
- package/docs/ja/intlayer_with_astro_vue.md +120 -12
- package/docs/ja/intlayer_with_create_react_app.md +107 -2
- package/docs/ja/intlayer_with_elysia.md +121 -1
- package/docs/ja/intlayer_with_express.md +121 -1
- package/docs/ja/intlayer_with_fastify.md +115 -1
- package/docs/ja/intlayer_with_hono.md +115 -1
- package/docs/ja/intlayer_with_htmx.md +769 -0
- package/docs/ja/intlayer_with_lynx+react.md +8 -15
- package/docs/ja/intlayer_with_nestjs.md +115 -1
- package/docs/ja/intlayer_with_nextjs_14.md +128 -51
- package/docs/ja/intlayer_with_nextjs_15.md +136 -59
- package/docs/ja/intlayer_with_nextjs_16.md +131 -52
- package/docs/ja/intlayer_with_nextjs_compiler.md +123 -15
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +123 -11
- package/docs/ja/intlayer_with_nextjs_page_router.md +215 -110
- package/docs/ja/intlayer_with_nuxt.md +112 -10
- package/docs/ja/intlayer_with_react_native+expo.md +103 -8
- package/docs/ja/intlayer_with_react_router_v7.md +121 -11
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +123 -23
- package/docs/ja/intlayer_with_solid_start.md +117 -2
- package/docs/ja/intlayer_with_storybook.md +8 -21
- package/docs/ja/intlayer_with_svelte_kit.md +107 -10
- package/docs/ja/intlayer_with_tanstack+solid.md +128 -24
- package/docs/ja/intlayer_with_tanstack.md +254 -203
- package/docs/ja/intlayer_with_vanilla.md +119 -11
- package/docs/ja/intlayer_with_vite+lit.md +121 -10
- package/docs/ja/intlayer_with_vite+preact.md +151 -23
- package/docs/ja/intlayer_with_vite+react.md +109 -12
- package/docs/ja/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/ja/intlayer_with_vite+solid.md +121 -10
- package/docs/ja/intlayer_with_vite+svelte.md +121 -10
- package/docs/ja/intlayer_with_vite+vanilla.md +127 -10
- package/docs/ja/intlayer_with_vite+vue.md +107 -11
- package/docs/ja/introduction.md +105 -2
- package/docs/ja/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/ja/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/ja/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/ja/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/ja/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/ja/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ko/analytics.md +457 -11
- package/docs/ko/configuration.md +99 -1
- package/docs/ko/dictionary/content_file.md +4 -4
- package/docs/ko/dictionary/markdown.md +18 -1
- package/docs/ko/dictionary/plurial.md +6 -3
- package/docs/ko/how_works_intlayer.md +93 -1
- package/docs/ko/interest_of_intlayer.md +98 -3
- package/docs/ko/intlayer_CMS.md +93 -1
- package/docs/ko/intlayer_visual_editor.md +88 -2
- package/docs/ko/intlayer_with_adonisjs.md +121 -1
- package/docs/ko/intlayer_with_analog.md +111 -2
- package/docs/ko/intlayer_with_angular_19.md +110 -3
- package/docs/ko/intlayer_with_angular_21.md +104 -3
- package/docs/ko/intlayer_with_astro.md +119 -19
- package/docs/ko/intlayer_with_astro_lit.md +112 -4
- package/docs/ko/intlayer_with_astro_preact.md +112 -4
- package/docs/ko/intlayer_with_astro_react.md +112 -4
- package/docs/ko/intlayer_with_astro_solid.md +112 -4
- package/docs/ko/intlayer_with_astro_svelte.md +112 -4
- package/docs/ko/intlayer_with_astro_vanilla.md +106 -4
- package/docs/ko/intlayer_with_astro_vue.md +112 -4
- package/docs/ko/intlayer_with_create_react_app.md +107 -5
- package/docs/ko/intlayer_with_elysia.md +121 -1
- package/docs/ko/intlayer_with_express.md +115 -1
- package/docs/ko/intlayer_with_fastify.md +115 -2
- package/docs/ko/intlayer_with_hono.md +115 -1
- package/docs/ko/intlayer_with_htmx.md +763 -0
- package/docs/ko/intlayer_with_lynx+react.md +0 -7
- package/docs/ko/intlayer_with_nestjs.md +115 -1
- package/docs/ko/intlayer_with_nextjs_14.md +118 -42
- package/docs/ko/intlayer_with_nextjs_15.md +118 -43
- package/docs/ko/intlayer_with_nextjs_16.md +121 -43
- package/docs/ko/intlayer_with_nextjs_compiler.md +110 -1
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +117 -7
- package/docs/ko/intlayer_with_nextjs_page_router.md +110 -94
- package/docs/ko/intlayer_with_nuxt.md +104 -2
- package/docs/ko/intlayer_with_react_native+expo.md +103 -8
- package/docs/ko/intlayer_with_react_router_v7.md +116 -10
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +113 -11
- package/docs/ko/intlayer_with_solid_start.md +122 -7
- package/docs/ko/intlayer_with_storybook.md +0 -14
- package/docs/ko/intlayer_with_svelte_kit.md +99 -2
- package/docs/ko/intlayer_with_tanstack+solid.md +121 -17
- package/docs/ko/intlayer_with_tanstack.md +260 -191
- package/docs/ko/intlayer_with_vanilla.md +111 -2
- package/docs/ko/intlayer_with_vite+lit.md +114 -3
- package/docs/ko/intlayer_with_vite+preact.md +143 -34
- package/docs/ko/intlayer_with_vite+react.md +101 -5
- package/docs/ko/intlayer_with_vite+react_compiler.md +107 -10
- package/docs/ko/intlayer_with_vite+solid.md +115 -2
- package/docs/ko/intlayer_with_vite+svelte.md +114 -6
- package/docs/ko/intlayer_with_vite+vanilla.md +121 -11
- package/docs/ko/intlayer_with_vite+vue.md +99 -3
- package/docs/ko/introduction.md +105 -2
- package/docs/ko/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/ko/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/ko/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/ko/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/ko/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/ko/packages/express-intlayer/t.md +9 -6
- package/docs/ko/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/nl/interest_of_intlayer.md +0 -1
- package/docs/nl/intlayer_with_storybook.md +0 -12
- package/docs/nl/intlayer_with_vanilla.md +2 -1
- package/docs/nl/introduction.md +0 -1
- package/docs/pl/analytics.md +488 -21
- package/docs/pl/configuration.md +98 -0
- package/docs/pl/dictionary/content_file.md +4 -4
- package/docs/pl/dictionary/markdown.md +3 -0
- package/docs/pl/dictionary/plurial.md +5 -2
- package/docs/pl/how_works_intlayer.md +92 -0
- package/docs/pl/interest_of_intlayer.md +96 -1
- package/docs/pl/intlayer_CMS.md +92 -0
- package/docs/pl/intlayer_visual_editor.md +87 -1
- package/docs/pl/intlayer_with_adonisjs.md +120 -0
- package/docs/pl/intlayer_with_analog.md +116 -8
- package/docs/pl/intlayer_with_angular_19.md +115 -8
- package/docs/pl/intlayer_with_angular_21.md +109 -8
- package/docs/pl/intlayer_with_astro.md +117 -20
- package/docs/pl/intlayer_with_astro_lit.md +118 -10
- package/docs/pl/intlayer_with_astro_preact.md +118 -10
- package/docs/pl/intlayer_with_astro_react.md +118 -10
- package/docs/pl/intlayer_with_astro_solid.md +118 -10
- package/docs/pl/intlayer_with_astro_svelte.md +118 -10
- package/docs/pl/intlayer_with_astro_vanilla.md +112 -10
- package/docs/pl/intlayer_with_astro_vue.md +118 -10
- package/docs/pl/intlayer_with_create_react_app.md +106 -1
- package/docs/pl/intlayer_with_elysia.md +120 -0
- package/docs/pl/intlayer_with_express.md +114 -0
- package/docs/pl/intlayer_with_fastify.md +114 -0
- package/docs/pl/intlayer_with_hono.md +114 -0
- package/docs/pl/intlayer_with_htmx.md +767 -0
- package/docs/pl/intlayer_with_lynx+react.md +7 -14
- package/docs/pl/intlayer_with_nestjs.md +114 -0
- package/docs/pl/intlayer_with_nextjs_14.md +127 -50
- package/docs/pl/intlayer_with_nextjs_15.md +141 -62
- package/docs/pl/intlayer_with_nextjs_16.md +128 -51
- package/docs/pl/intlayer_with_nextjs_compiler.md +122 -13
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +122 -10
- package/docs/pl/intlayer_with_nextjs_page_router.md +115 -97
- package/docs/pl/intlayer_with_nuxt.md +110 -8
- package/docs/pl/intlayer_with_react_native+expo.md +102 -7
- package/docs/pl/intlayer_with_react_router_v7.md +131 -22
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +121 -20
- package/docs/pl/intlayer_with_solid_start.md +115 -1
- package/docs/pl/intlayer_with_storybook.md +7 -20
- package/docs/pl/intlayer_with_svelte_kit.md +105 -8
- package/docs/pl/intlayer_with_tanstack+solid.md +124 -22
- package/docs/pl/intlayer_with_tanstack.md +238 -160
- package/docs/pl/intlayer_with_vanilla.md +117 -9
- package/docs/pl/intlayer_with_vite+lit.md +118 -8
- package/docs/pl/intlayer_with_vite+preact.md +148 -40
- package/docs/pl/intlayer_with_vite+react.md +108 -20
- package/docs/pl/intlayer_with_vite+react_compiler.md +108 -3
- package/docs/pl/intlayer_with_vite+solid.md +112 -5
- package/docs/pl/intlayer_with_vite+svelte.md +118 -8
- package/docs/pl/intlayer_with_vite+vanilla.md +125 -8
- package/docs/pl/intlayer_with_vite+vue.md +104 -8
- package/docs/pl/introduction.md +104 -1
- package/docs/pl/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/pl/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/pl/packages/next-intlayer/useIntlayer.md +3 -0
- package/docs/pl/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/pt/analytics.md +488 -21
- package/docs/pt/configuration.md +99 -1
- package/docs/pt/dictionary/content_file.md +4 -4
- package/docs/pt/dictionary/html.md +18 -1
- package/docs/pt/dictionary/markdown.md +3 -0
- package/docs/pt/dictionary/plurial.md +5 -2
- package/docs/pt/how_works_intlayer.md +93 -1
- package/docs/pt/interest_of_intlayer.md +98 -3
- package/docs/pt/intlayer_CMS.md +93 -1
- package/docs/pt/intlayer_visual_editor.md +88 -2
- package/docs/pt/intlayer_with_adonisjs.md +121 -1
- package/docs/pt/intlayer_with_analog.md +112 -3
- package/docs/pt/intlayer_with_angular_19.md +109 -2
- package/docs/pt/intlayer_with_angular_21.md +103 -2
- package/docs/pt/intlayer_with_astro.md +111 -14
- package/docs/pt/intlayer_with_astro_lit.md +112 -4
- package/docs/pt/intlayer_with_astro_preact.md +112 -4
- package/docs/pt/intlayer_with_astro_react.md +112 -4
- package/docs/pt/intlayer_with_astro_solid.md +112 -4
- package/docs/pt/intlayer_with_astro_svelte.md +112 -4
- package/docs/pt/intlayer_with_astro_vanilla.md +106 -4
- package/docs/pt/intlayer_with_astro_vue.md +111 -3
- package/docs/pt/intlayer_with_create_react_app.md +107 -2
- package/docs/pt/intlayer_with_elysia.md +121 -1
- package/docs/pt/intlayer_with_express.md +115 -1
- package/docs/pt/intlayer_with_fastify.md +115 -2
- package/docs/pt/intlayer_with_hono.md +115 -1
- package/docs/pt/intlayer_with_htmx.md +771 -0
- package/docs/pt/intlayer_with_lynx+react.md +0 -7
- package/docs/pt/intlayer_with_nestjs.md +115 -1
- package/docs/pt/intlayer_with_nextjs_14.md +138 -117
- package/docs/pt/intlayer_with_nextjs_15.md +120 -45
- package/docs/pt/intlayer_with_nextjs_16.md +122 -45
- package/docs/pt/intlayer_with_nextjs_compiler.md +122 -12
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/pt/intlayer_with_nextjs_page_router.md +121 -95
- package/docs/pt/intlayer_with_nuxt.md +104 -2
- package/docs/pt/intlayer_with_react_native+expo.md +103 -8
- package/docs/pt/intlayer_with_react_router_v7.md +140 -33
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +115 -8
- package/docs/pt/intlayer_with_solid_start.md +121 -6
- package/docs/pt/intlayer_with_storybook.md +0 -13
- package/docs/pt/intlayer_with_svelte_kit.md +99 -2
- package/docs/pt/intlayer_with_tanstack+solid.md +120 -16
- package/docs/pt/intlayer_with_tanstack.md +252 -144
- package/docs/pt/intlayer_with_vanilla.md +111 -3
- package/docs/pt/intlayer_with_vite+lit.md +113 -2
- package/docs/pt/intlayer_with_vite+preact.md +143 -34
- package/docs/pt/intlayer_with_vite+react.md +101 -4
- package/docs/pt/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/pt/intlayer_with_vite+solid.md +114 -2
- package/docs/pt/intlayer_with_vite+svelte.md +113 -2
- package/docs/pt/intlayer_with_vite+vanilla.md +119 -2
- package/docs/pt/intlayer_with_vite+vue.md +98 -2
- package/docs/pt/introduction.md +105 -2
- package/docs/pt/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/pt/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/pt/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/pt/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/pt/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/pt/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ru/analytics.md +458 -12
- package/docs/ru/cli/doc-review.md +0 -2
- package/docs/ru/configuration.md +99 -1
- package/docs/ru/dictionary/content_file.md +4 -4
- package/docs/ru/dictionary/markdown.md +0 -2
- package/docs/ru/dictionary/plurial.md +6 -3
- package/docs/ru/dictionary/translation.md +1 -1
- package/docs/ru/how_works_intlayer.md +93 -1
- package/docs/ru/interest_of_intlayer.md +97 -2
- package/docs/ru/intlayer_CMS.md +93 -1
- package/docs/ru/intlayer_visual_editor.md +88 -2
- package/docs/ru/intlayer_with_adonisjs.md +121 -1
- package/docs/ru/intlayer_with_analog.md +111 -2
- package/docs/ru/intlayer_with_angular_19.md +109 -2
- package/docs/ru/intlayer_with_angular_21.md +103 -2
- package/docs/ru/intlayer_with_astro.md +111 -14
- package/docs/ru/intlayer_with_astro_lit.md +112 -4
- package/docs/ru/intlayer_with_astro_preact.md +112 -4
- package/docs/ru/intlayer_with_astro_react.md +112 -4
- package/docs/ru/intlayer_with_astro_solid.md +112 -4
- package/docs/ru/intlayer_with_astro_svelte.md +112 -4
- package/docs/ru/intlayer_with_astro_vanilla.md +106 -4
- package/docs/ru/intlayer_with_astro_vue.md +112 -4
- package/docs/ru/intlayer_with_create_react_app.md +107 -2
- package/docs/ru/intlayer_with_elysia.md +121 -1
- package/docs/ru/intlayer_with_express.md +115 -1
- package/docs/ru/intlayer_with_fastify.md +115 -1
- package/docs/ru/intlayer_with_hono.md +115 -1
- package/docs/ru/intlayer_with_htmx.md +767 -0
- package/docs/ru/intlayer_with_lynx+react.md +0 -7
- package/docs/ru/intlayer_with_nestjs.md +115 -1
- package/docs/ru/intlayer_with_nextjs_14.md +138 -114
- package/docs/ru/intlayer_with_nextjs_15.md +123 -62
- package/docs/ru/intlayer_with_nextjs_16.md +122 -45
- package/docs/ru/intlayer_with_nextjs_compiler.md +123 -14
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +115 -3
- package/docs/ru/intlayer_with_nextjs_page_router.md +110 -95
- package/docs/ru/intlayer_with_nuxt.md +104 -2
- package/docs/ru/intlayer_with_react_native+expo.md +103 -8
- package/docs/ru/intlayer_with_react_router_v7.md +113 -4
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +111 -4
- package/docs/ru/intlayer_with_solid_start.md +117 -2
- package/docs/ru/intlayer_with_storybook.md +0 -13
- package/docs/ru/intlayer_with_svelte_kit.md +99 -2
- package/docs/ru/intlayer_with_tanstack+solid.md +119 -16
- package/docs/ru/intlayer_with_tanstack.md +230 -151
- package/docs/ru/intlayer_with_vanilla.md +111 -3
- package/docs/ru/intlayer_with_vite+lit.md +113 -2
- package/docs/ru/intlayer_with_vite+preact.md +143 -34
- package/docs/ru/intlayer_with_vite+react.md +102 -14
- package/docs/ru/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/ru/intlayer_with_vite+solid.md +114 -2
- package/docs/ru/intlayer_with_vite+svelte.md +115 -12
- package/docs/ru/intlayer_with_vite+vanilla.md +119 -2
- package/docs/ru/intlayer_with_vite+vue.md +99 -3
- package/docs/ru/introduction.md +105 -2
- package/docs/ru/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/ru/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/ru/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/ru/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/ru/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/ru/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/tr/analytics.md +488 -21
- package/docs/tr/cli/doc-review.md +0 -2
- package/docs/tr/configuration.md +98 -0
- package/docs/tr/dictionary/content_file.md +4 -4
- package/docs/tr/dictionary/markdown.md +3 -0
- package/docs/tr/dictionary/plurial.md +6 -3
- package/docs/tr/how_works_intlayer.md +92 -0
- package/docs/tr/interest_of_intlayer.md +96 -1
- package/docs/tr/intlayer_CMS.md +92 -0
- package/docs/tr/intlayer_visual_editor.md +87 -1
- package/docs/tr/intlayer_with_adonisjs.md +121 -0
- package/docs/tr/intlayer_with_analog.md +109 -1
- package/docs/tr/intlayer_with_angular_19.md +108 -1
- package/docs/tr/intlayer_with_angular_21.md +102 -1
- package/docs/tr/intlayer_with_astro.md +117 -27
- package/docs/tr/intlayer_with_astro_lit.md +111 -3
- package/docs/tr/intlayer_with_astro_preact.md +111 -3
- package/docs/tr/intlayer_with_astro_react.md +111 -3
- package/docs/tr/intlayer_with_astro_solid.md +111 -3
- package/docs/tr/intlayer_with_astro_svelte.md +111 -3
- package/docs/tr/intlayer_with_astro_vanilla.md +105 -3
- package/docs/tr/intlayer_with_astro_vue.md +111 -3
- package/docs/tr/intlayer_with_create_react_app.md +106 -1
- package/docs/tr/intlayer_with_elysia.md +121 -0
- package/docs/tr/intlayer_with_express.md +114 -0
- package/docs/tr/intlayer_with_fastify.md +115 -0
- package/docs/tr/intlayer_with_hono.md +114 -0
- package/docs/tr/intlayer_with_htmx.md +761 -0
- package/docs/tr/intlayer_with_lynx+react.md +0 -7
- package/docs/tr/intlayer_with_nestjs.md +115 -0
- package/docs/tr/intlayer_with_nextjs_14.md +125 -51
- package/docs/tr/intlayer_with_nextjs_15.md +119 -44
- package/docs/tr/intlayer_with_nextjs_16.md +120 -43
- package/docs/tr/intlayer_with_nextjs_compiler.md +121 -13
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +114 -2
- package/docs/tr/intlayer_with_nextjs_page_router.md +124 -120
- package/docs/tr/intlayer_with_nuxt.md +103 -1
- package/docs/tr/intlayer_with_react_native+expo.md +102 -7
- package/docs/tr/intlayer_with_react_router_v7.md +112 -3
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +110 -3
- package/docs/tr/intlayer_with_solid_start.md +115 -1
- package/docs/tr/intlayer_with_storybook.md +0 -13
- package/docs/tr/intlayer_with_svelte_kit.md +98 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +117 -15
- package/docs/tr/intlayer_with_tanstack.md +259 -128
- package/docs/tr/intlayer_with_vanilla.md +110 -2
- package/docs/tr/intlayer_with_vite+lit.md +111 -1
- package/docs/tr/intlayer_with_vite+preact.md +141 -33
- package/docs/tr/intlayer_with_vite+react.md +100 -3
- package/docs/tr/intlayer_with_vite+react_compiler.md +106 -1
- package/docs/tr/intlayer_with_vite+solid.md +112 -1
- package/docs/tr/intlayer_with_vite+svelte.md +111 -1
- package/docs/tr/intlayer_with_vite+vanilla.md +118 -1
- package/docs/tr/intlayer_with_vite+vue.md +99 -4
- package/docs/tr/introduction.md +104 -1
- package/docs/tr/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/tr/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/tr/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/tr/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/tr/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/tr/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/uk/analytics.md +488 -21
- package/docs/uk/configuration.md +98 -0
- package/docs/uk/dictionary/content_file.md +4 -4
- package/docs/uk/dictionary/markdown.md +3 -0
- package/docs/uk/dictionary/plurial.md +6 -3
- package/docs/uk/how_works_intlayer.md +92 -0
- package/docs/uk/interest_of_intlayer.md +96 -1
- package/docs/uk/intlayer_CMS.md +92 -0
- package/docs/uk/intlayer_visual_editor.md +87 -1
- package/docs/uk/intlayer_with_adonisjs.md +121 -0
- package/docs/uk/intlayer_with_analog.md +109 -1
- package/docs/uk/intlayer_with_angular_19.md +108 -1
- package/docs/uk/intlayer_with_angular_21.md +102 -1
- package/docs/uk/intlayer_with_astro.md +110 -13
- package/docs/uk/intlayer_with_astro_lit.md +111 -3
- package/docs/uk/intlayer_with_astro_preact.md +111 -3
- package/docs/uk/intlayer_with_astro_react.md +111 -3
- package/docs/uk/intlayer_with_astro_solid.md +111 -3
- package/docs/uk/intlayer_with_astro_svelte.md +111 -3
- package/docs/uk/intlayer_with_astro_vanilla.md +105 -3
- package/docs/uk/intlayer_with_astro_vue.md +111 -3
- package/docs/uk/intlayer_with_create_react_app.md +106 -1
- package/docs/uk/intlayer_with_elysia.md +121 -0
- package/docs/uk/intlayer_with_express.md +114 -0
- package/docs/uk/intlayer_with_fastify.md +115 -0
- package/docs/uk/intlayer_with_hono.md +114 -0
- package/docs/uk/intlayer_with_htmx.md +760 -0
- package/docs/uk/intlayer_with_lynx+react.md +0 -7
- package/docs/uk/intlayer_with_nestjs.md +115 -0
- package/docs/uk/intlayer_with_nextjs_14.md +119 -44
- package/docs/uk/intlayer_with_nextjs_15.md +133 -56
- package/docs/uk/intlayer_with_nextjs_16.md +121 -44
- package/docs/uk/intlayer_with_nextjs_compiler.md +122 -14
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +114 -2
- package/docs/uk/intlayer_with_nextjs_page_router.md +111 -96
- package/docs/uk/intlayer_with_nuxt.md +103 -1
- package/docs/uk/intlayer_with_react_native+expo.md +102 -7
- package/docs/uk/intlayer_with_react_router_v7.md +112 -3
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +110 -3
- package/docs/uk/intlayer_with_solid_start.md +115 -1
- package/docs/uk/intlayer_with_storybook.md +0 -13
- package/docs/uk/intlayer_with_svelte_kit.md +98 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +117 -15
- package/docs/uk/intlayer_with_tanstack.md +235 -132
- package/docs/uk/intlayer_with_vanilla.md +110 -2
- package/docs/uk/intlayer_with_vite+lit.md +111 -1
- package/docs/uk/intlayer_with_vite+preact.md +167 -31
- package/docs/uk/intlayer_with_vite+react.md +101 -13
- package/docs/uk/intlayer_with_vite+react_compiler.md +106 -1
- package/docs/uk/intlayer_with_vite+solid.md +112 -1
- package/docs/uk/intlayer_with_vite+svelte.md +111 -1
- package/docs/uk/intlayer_with_vite+vanilla.md +118 -1
- package/docs/uk/intlayer_with_vite+vue.md +97 -1
- package/docs/uk/introduction.md +104 -1
- package/docs/uk/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/uk/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/uk/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/uk/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/uk/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/uk/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/ur/intlayer_with_storybook.md +0 -12
- package/docs/ur/intlayer_with_vanilla.md +2 -1
- package/docs/ur/introduction.md +0 -1
- package/docs/vi/analytics.md +488 -21
- package/docs/vi/configuration.md +98 -0
- package/docs/vi/dictionary/content_file.md +4 -4
- package/docs/vi/dictionary/markdown.md +3 -0
- package/docs/vi/dictionary/plurial.md +5 -2
- package/docs/vi/how_works_intlayer.md +92 -0
- package/docs/vi/interest_of_intlayer.md +96 -1
- package/docs/vi/intlayer_CMS.md +92 -0
- package/docs/vi/intlayer_visual_editor.md +87 -1
- package/docs/vi/intlayer_with_adonisjs.md +121 -0
- package/docs/vi/intlayer_with_analog.md +109 -1
- package/docs/vi/intlayer_with_angular_19.md +108 -1
- package/docs/vi/intlayer_with_angular_21.md +102 -1
- package/docs/vi/intlayer_with_astro.md +110 -13
- package/docs/vi/intlayer_with_astro_lit.md +111 -3
- package/docs/vi/intlayer_with_astro_preact.md +111 -3
- package/docs/vi/intlayer_with_astro_react.md +111 -3
- package/docs/vi/intlayer_with_astro_solid.md +111 -3
- package/docs/vi/intlayer_with_astro_svelte.md +111 -3
- package/docs/vi/intlayer_with_astro_vanilla.md +105 -3
- package/docs/vi/intlayer_with_astro_vue.md +111 -3
- package/docs/vi/intlayer_with_create_react_app.md +106 -1
- package/docs/vi/intlayer_with_elysia.md +121 -0
- package/docs/vi/intlayer_with_express.md +114 -0
- package/docs/vi/intlayer_with_fastify.md +115 -0
- package/docs/vi/intlayer_with_hono.md +114 -0
- package/docs/vi/intlayer_with_htmx.md +760 -0
- package/docs/vi/intlayer_with_lynx+react.md +0 -7
- package/docs/vi/intlayer_with_nestjs.md +115 -0
- package/docs/vi/intlayer_with_nextjs_14.md +133 -53
- package/docs/vi/intlayer_with_nextjs_15.md +133 -56
- package/docs/vi/intlayer_with_nextjs_16.md +121 -44
- package/docs/vi/intlayer_with_nextjs_compiler.md +122 -14
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +114 -2
- package/docs/vi/intlayer_with_nextjs_page_router.md +111 -92
- package/docs/vi/intlayer_with_nuxt.md +103 -1
- package/docs/vi/intlayer_with_react_native+expo.md +102 -7
- package/docs/vi/intlayer_with_react_router_v7.md +112 -3
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +116 -16
- package/docs/vi/intlayer_with_solid_start.md +115 -1
- package/docs/vi/intlayer_with_storybook.md +0 -13
- package/docs/vi/intlayer_with_svelte_kit.md +98 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +117 -15
- package/docs/vi/intlayer_with_tanstack.md +249 -169
- package/docs/vi/intlayer_with_vanilla.md +110 -2
- package/docs/vi/intlayer_with_vite+lit.md +111 -1
- package/docs/vi/intlayer_with_vite+preact.md +147 -14
- package/docs/vi/intlayer_with_vite+react.md +101 -13
- package/docs/vi/intlayer_with_vite+react_compiler.md +106 -1
- package/docs/vi/intlayer_with_vite+solid.md +112 -1
- package/docs/vi/intlayer_with_vite+svelte.md +111 -1
- package/docs/vi/intlayer_with_vite+vanilla.md +118 -1
- package/docs/vi/intlayer_with_vite+vue.md +97 -1
- package/docs/vi/introduction.md +104 -1
- package/docs/vi/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/vi/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/vi/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/vi/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/vi/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/vi/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/zh/analytics.md +458 -12
- package/docs/zh/configuration.md +99 -1
- package/docs/zh/dictionary/content_file.md +4 -4
- package/docs/zh/dictionary/markdown.md +18 -1
- package/docs/zh/dictionary/plurial.md +6 -3
- package/docs/zh/how_works_intlayer.md +93 -1
- package/docs/zh/interest_of_intlayer.md +108 -13
- package/docs/zh/intlayer_CMS.md +93 -1
- package/docs/zh/intlayer_visual_editor.md +88 -2
- package/docs/zh/intlayer_with_adonisjs.md +121 -1
- package/docs/zh/intlayer_with_analog.md +118 -9
- package/docs/zh/intlayer_with_angular_19.md +117 -10
- package/docs/zh/intlayer_with_angular_21.md +110 -9
- package/docs/zh/intlayer_with_astro.md +108 -4
- package/docs/zh/intlayer_with_astro_lit.md +114 -7
- package/docs/zh/intlayer_with_astro_preact.md +114 -7
- package/docs/zh/intlayer_with_astro_react.md +114 -7
- package/docs/zh/intlayer_with_astro_solid.md +114 -7
- package/docs/zh/intlayer_with_astro_svelte.md +114 -7
- package/docs/zh/intlayer_with_astro_vanilla.md +108 -7
- package/docs/zh/intlayer_with_astro_vue.md +114 -7
- package/docs/zh/intlayer_with_create_react_app.md +110 -6
- package/docs/zh/intlayer_with_elysia.md +121 -1
- package/docs/zh/intlayer_with_express.md +115 -1
- package/docs/zh/intlayer_with_fastify.md +115 -1
- package/docs/zh/intlayer_with_hono.md +115 -1
- package/docs/zh/intlayer_with_htmx.md +769 -0
- package/docs/zh/intlayer_with_lynx+react.md +8 -13
- package/docs/zh/intlayer_with_nestjs.md +115 -1
- package/docs/zh/intlayer_with_nextjs_14.md +120 -45
- package/docs/zh/intlayer_with_nextjs_15.md +121 -44
- package/docs/zh/intlayer_with_nextjs_16.md +121 -42
- package/docs/zh/intlayer_with_nextjs_compiler.md +121 -14
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +122 -10
- package/docs/zh/intlayer_with_nextjs_page_router.md +110 -94
- package/docs/zh/intlayer_with_nuxt.md +111 -9
- package/docs/zh/intlayer_with_react_native+expo.md +103 -8
- package/docs/zh/intlayer_with_react_router_v7.md +131 -28
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +134 -30
- package/docs/zh/intlayer_with_solid_start.md +122 -7
- package/docs/zh/intlayer_with_storybook.md +7 -20
- package/docs/zh/intlayer_with_svelte_kit.md +106 -9
- package/docs/zh/intlayer_with_tanstack+solid.md +129 -29
- package/docs/zh/intlayer_with_tanstack.md +251 -191
- package/docs/zh/intlayer_with_vanilla.md +118 -10
- package/docs/zh/intlayer_with_vite+lit.md +121 -8
- package/docs/zh/intlayer_with_vite+preact.md +150 -41
- package/docs/zh/intlayer_with_vite+react.md +104 -12
- package/docs/zh/intlayer_with_vite+react_compiler.md +107 -2
- package/docs/zh/intlayer_with_vite+solid.md +113 -2
- package/docs/zh/intlayer_with_vite+svelte.md +127 -14
- package/docs/zh/intlayer_with_vite+vanilla.md +126 -9
- package/docs/zh/intlayer_with_vite+vue.md +99 -3
- package/docs/zh/introduction.md +105 -2
- package/docs/zh/migration_from_i18next_to_intlayer.md +0 -2
- package/docs/zh/migration_from_next-i18next_to_intlayer.md +0 -2
- package/docs/zh/migration_from_next-intl_to_intlayer.md +0 -2
- package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +0 -2
- package/docs/zh/migration_from_react-i18next_to_intlayer.md +0 -2
- package/docs/zh/migration_from_vue-i18n_to_intlayer.md +0 -2
- package/docs/zh/packages/vite-intlayer/intlayerMinify.md +1 -1
- package/docs/zh/releases/v6.md +1 -1
- package/docs/zh-TW/introduction.md +0 -1
- package/package.json +7 -7
- package/src/common.ts +45 -18
- package/src/generated/blog.entry.ts +20 -0
- package/src/generated/docs.entry.ts +20 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-24
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Astro + Vue i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) Astro + Vue 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -63,21 +63,19 @@ author: aymericzip
|
|
|
63
63
|
|
|
64
64
|
与“astro-i18n”或“i18next”等主要解决方案相比,Intlayer是一个具有集成优化的解决方案,例如:
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
<AccordionGroup>
|
|
68
67
|
<Accordion header="完整 Astro 覆盖">
|
|
69
68
|
|
|
70
69
|
Intlayer 经过优化,可与 Astro 完美配合,提供**多语言路由**、**站点地图**以及扩展国际化 (i18n) 所需的所有功能。
|
|
71
70
|
|
|
72
71
|
</Accordion>
|
|
73
72
|
|
|
74
|
-
|
|
73
|
+
<Accordion header="捆绑尺寸">
|
|
75
74
|
|
|
76
75
|
不要将大量 JSON 文件加载到页面中,而只需加载必要的内容。 Intlayer 有助于**将捆绑包和页面大小减少多达 50%**。
|
|
77
76
|
|
|
78
77
|
</Accordion>
|
|
79
78
|
|
|
80
|
-
<AccordionGroup>
|
|
81
79
|
<Accordion header="可维护性">
|
|
82
80
|
|
|
83
81
|
确定应用程序内容的范围**有利于大型应用程序的维护**。您可以复制或删除单个功能文件夹,而无需承担检查整个内容代码库的精神负担。此外,Intlayer 具有**完全类型化 (fully typed)**,以确保您的内容的准确性。
|
|
@@ -604,8 +602,6 @@ bun run build # 或 bun run dev
|
|
|
604
602
|
</Tab>
|
|
605
603
|
</Tabs>
|
|
606
604
|
|
|
607
|
-
---
|
|
608
|
-
|
|
609
605
|
</Step>
|
|
610
606
|
|
|
611
607
|
</Steps>
|
|
@@ -661,3 +657,114 @@ Intlayer 使用模块扩展来利用 TypeScript,使您的代码库更加健壮
|
|
|
661
657
|
### 深入了解
|
|
662
658
|
|
|
663
659
|
如果您想了解更多,还可以实现[可视化编辑器](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) 将您的内容外部化。
|
|
660
|
+
|
|
661
|
+
## 常见问题
|
|
662
|
+
|
|
663
|
+
<FAQ>
|
|
664
|
+
|
|
665
|
+
<Question title="国际化带有 Vue 孤岛 (islands) 的 Astro 站点有哪些不同的解决方案?">
|
|
666
|
+
|
|
667
|
+
Astro 内置的 `i18n` 选项仅处理语言前缀和重定向,并不包含内容层本身,因此您仍然需要消息层。此外,孤岛带来了第二个问题:孤岛运行的是 Vue,而不是 Astro。
|
|
668
|
+
|
|
669
|
+
- **Astro `i18n` 加上手写字典,并在孤岛内部使用 `vue-i18n`**:需要维护两个保持同步的内容源,且两者之间没有共享的类型支持。
|
|
670
|
+
- **`Intlayer`**:为两者提供统一的内容层。`astro-intlayer` 负责 `.astro` 页面,`vue-intlayer` 负责 Vue 孤岛,共同读取相同的内容声明。
|
|
671
|
+
|
|
672
|
+
只需声明一次文本标签,即可在静态页面和交互式孤岛中共同使用,这是在此类场景下选择统一内容层的关键原因。请参阅 [为什么选择 Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/interest_of_intlayer.md)。
|
|
673
|
+
|
|
674
|
+
</Question>
|
|
675
|
+
|
|
676
|
+
<Question title="i18n 会给我的 Astro bundle 体积增加多少?">
|
|
677
|
+
|
|
678
|
+
远少于基于命名空间的方案,因为页面永远不会下载它不渲染的语言目录。Astro 页面是在构建时渲染的,因此它们输出的是纯 HTML,完全不包含字典;只有孤岛才会接收字典。构建时编译器将内容调用解析为组件使用的确切条目,并且 [动态字典](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dynamic_dictionaries/index.md) 会按语言环境拆分剩余内容。与常规替代方案相比,Intlayer 可将 bundle 和页面体积减少高达 50%。请参阅 [Bundle 体积优化](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/bundle_optimization.md) 和 [性能基准](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/benchmark/index.md)。
|
|
679
|
+
|
|
680
|
+
</Question>
|
|
681
|
+
|
|
682
|
+
<Question title="我可以从 vue-i18n 迁移而无需重写组件吗?">
|
|
683
|
+
|
|
684
|
+
基本可以。请按照 [vue-i18n 迁移指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/migration_from_vue-i18n_to_intlayer.md) 迁移内容。您也可以逐步迁移:[JSON 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md) 将现有的 JSON 目录作为单一真实来源(source of truth),并生成 Intlayer 字典,使两个层在逐个组件迁移时保持同步。
|
|
685
|
+
|
|
686
|
+
</Question>
|
|
687
|
+
|
|
688
|
+
<Question title="我可以保留现有的 JSON 翻译文件吗?">
|
|
689
|
+
|
|
690
|
+
可以。[JSON 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md) 将您的 `/messages/{locale}/{namespace}.json` 文件作为单一真实来源(source of truth),并双向生成 Intlayer 字典。[PO 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-po.md) 对 gettext 目录执行相同的操作,而 [按语言环境组织的文件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/per_locale_file.md) 允许您按语言拆分内容,而不是将所有语言打包到一个文件中。
|
|
691
|
+
|
|
692
|
+
</Question>
|
|
693
|
+
|
|
694
|
+
<Question title="我必须逐个键迁移我的内容吗?">
|
|
695
|
+
|
|
696
|
+
不需要。运行 `npx intlayer extract`,Intlayer 会读取您的组件,提取面向用户的字符串,并在每个组件旁边生成 `.content` 文件,这样您只需审查 diff,而无需手动逐一复制字符串到语言目录中。本指南的第 15 步详细介绍了此过程。
|
|
697
|
+
|
|
698
|
+
如需全自动流程,[Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) 可在构建时执行相同操作:它在每次更改时扫描您的 JSX、TSX、Vue 和 Svelte 源代码,生成字典并通过热模块替换 (HMR) 保持同步,因此完全无需手动维护键名。
|
|
699
|
+
|
|
700
|
+
开启编译器前有两个限制值得了解:它通过静态分析工作,因此仅在运行时存在的字符串(如 API 错误代码或 CMS 字段)无法被捕获;此外它需要区分用户文本和应用程序逻辑(如 `className="active"` 或状态代码),在大型代码库中需要少量注解。而 [extract 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 则通过让您参与审查避免了这两个问题。
|
|
701
|
+
|
|
702
|
+
</Question>
|
|
703
|
+
|
|
704
|
+
<Question title="有哪些可用的编辑器和 AI 代理工具?">
|
|
705
|
+
|
|
706
|
+
共有 5 个工具,均为可选:
|
|
707
|
+
|
|
708
|
+
- **[VS Code 扩展](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/vs_code_extension.md)**:从 `useIntlayer` 键跳转到声明它的内容文件,从组件中提取内容,并从命令面板或专属的 Intlayer 选项卡运行 build、fill、test、push 和 pull。
|
|
709
|
+
- **[LSP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/lsp.md)**:在任何支持 LSP 的编辑器中提供相同的感知能力,支持跳转到定义、查找所有引用、悬停预览翻译值、键和字段的自动补全,以及在键未声明时发出警告。它还可以解析 `i18next`、`react-i18next`、`next-intl` 和 `use-intl` 调用,助力平滑迁移。
|
|
710
|
+
- **[MCP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md)**:向 Cursor、VS Code、Claude Desktop、Claude Code 和 ChatGPT 公开 Intlayer 文档与 CLI,使 AI 助手能够基于最新文档进行准确回答,并能自行运行 `intlayer fill` 等命令。
|
|
711
|
+
- **[Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/agent_skills.md)**:针对特定领域的技能(如 `intlayer-config`、`intlayer-cli` 和 `intlayer-content`,以及每个框架对应的专属技能),教导 AI 代理您的路由配置和内容节点类型。
|
|
712
|
+
- **[ESLint 插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/eslint.md)**:`no-raw-text` 规则标记硬编码字符串,并提供针对静态字典键和未使用内容的额外规则。
|
|
713
|
+
|
|
714
|
+
</Question>
|
|
715
|
+
|
|
716
|
+
<Question title="我是否需要在 Vue 孤岛内单独安装 i18n 库?">
|
|
717
|
+
|
|
718
|
+
不需要。`vue-intlayer` 读取与 Astro 侧相同的字典,因此您无需在孤岛中安装 `vue-i18n`。第 6 步展示了孤岛组件直接从页面接收活动语言环境,而无需在浏览器中重新检测。
|
|
719
|
+
|
|
720
|
+
</Question>
|
|
721
|
+
|
|
722
|
+
<Question title="孤岛如何知道页面正在渲染哪种语言?">
|
|
723
|
+
|
|
724
|
+
Astro 页面将语言环境作为 prop 向下传递,孤岛中的 Intlayer Provider 接收该值,因此孤岛会以与服务端渲染相同的语言进行水合 (hydration)。这有效防止了孤岛在浏览器中自行检测语言环境时出现的默认语言闪烁现象。
|
|
725
|
+
|
|
726
|
+
</Question>
|
|
727
|
+
|
|
728
|
+
<Question title="翻译内容是否会以静态 HTML 输出?">
|
|
729
|
+
|
|
730
|
+
对于 Astro 部分是的,它们在构建时渲染,因此本地化页面是搜索引擎爬虫无需执行 JavaScript 即可读取的纯静态 HTML。只有孤岛才会接收字典,并且仅接收其渲染的语言环境字典。
|
|
731
|
+
|
|
732
|
+
</Question>
|
|
733
|
+
|
|
734
|
+
<Question title="如何设置支持语言环境的路由和语言切换器?">
|
|
735
|
+
|
|
736
|
+
第 7 步介绍了切换器。`routing.mode` 决定 URL 方案:`"prefix-no-default"`(默认,`/about` 与 `/fr/about`)、`"prefix-all"`、`"no-prefix"` 或 `"search-params"`,而 `routing.domains` 可将语言环境映射到其独立域名。`getLocalizedUrl` 会重写当前路径,使切换语言时读者保留在同一页面。请参阅 [配置参考](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
737
|
+
|
|
738
|
+
</Question>
|
|
739
|
+
|
|
740
|
+
<Question title="如何生成本地化站点地图和 hreflang 标签?">
|
|
741
|
+
|
|
742
|
+
第 8 步涵盖了 `sitemap.xml` 和 `robots.txt`。`getMultilingualUrls` 为每个声明的语言环境构建备用链接(包括 `x-default`),搜索引擎以此为不同受众提供对应语言版本。
|
|
743
|
+
|
|
744
|
+
</Question>
|
|
745
|
+
|
|
746
|
+
<Question title="如何使用 AI 自动翻译站点?">
|
|
747
|
+
|
|
748
|
+
运行 `npx intlayer fill`。它会使用您选择的 LLM、您自己的提供商和 API 密钥填充缺失的翻译,并且 `--git-diff` 参数可将处理范围限制在当前分支修改的内容。请参阅 [fill 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/fill.md) 和 [CI/CD 集成](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/CI_CD.md)。
|
|
749
|
+
|
|
750
|
+
</Question>
|
|
751
|
+
|
|
752
|
+
<Question title="Intlayer 是否支持复数、性别和富文本?">
|
|
753
|
+
|
|
754
|
+
支持:包括 [复数形式](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/plurial.md)、[基于性别的内容](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/gender.md)、条件渲染、插值用的 [插入内容 (insertions)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/insertion.md)、长文本使用的 [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/markdown.md),以及用于数字、日期和货币的 [格式化工具](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/formatters.md)。
|
|
755
|
+
|
|
756
|
+
</Question>
|
|
757
|
+
|
|
758
|
+
<Question title="翻译人员如何无需接触代码即可编辑内容?">
|
|
759
|
+
|
|
760
|
+
可以通过自托管的 [可视化编辑器](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) 进行无需重新部署的内容外部化更新。
|
|
761
|
+
|
|
762
|
+
</Question>
|
|
763
|
+
|
|
764
|
+
<Question title="Intlayer 是免费且开源的吗?">
|
|
765
|
+
|
|
766
|
+
是的,基于 Apache 2.0 许可证开源,包含商业用途。托管版 CMS 是可选的付费服务,同时完全支持 [自托管](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/self_hosting.md)。
|
|
767
|
+
|
|
768
|
+
</Question>
|
|
769
|
+
|
|
770
|
+
</FAQ>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Create React App i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) Create React App 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -46,7 +46,6 @@ author: aymericzip
|
|
|
46
46
|
与 `react-i18next` 或 `i18next` 等主要解决方案相比,Intlayer 是一个集成了以下优化的解决方案:
|
|
47
47
|
|
|
48
48
|
<AccordionGroup>
|
|
49
|
-
|
|
50
49
|
<Accordion header="完整的 React 支持">
|
|
51
50
|
|
|
52
51
|
Intlayer 针对 React 进行了优化,提供 **组件级内容作用域**、**延迟加载的翻译** 以及国际化 (i18n) 扩展所需的所有功能。
|
|
@@ -620,6 +619,8 @@ export default App;
|
|
|
620
619
|
- 根据语言环境调整 **文本方向** (`dir`),提升不同阅读顺序语言的可读性和可用性。
|
|
621
620
|
- 提供更 **无障碍** 的体验,因为辅助技术依赖这些属性以实现最佳功能。
|
|
622
621
|
|
|
622
|
+
</Step>
|
|
623
|
+
|
|
623
624
|
</Steps>
|
|
624
625
|
|
|
625
626
|
### 配置 TypeScript
|
|
@@ -653,11 +654,10 @@ Intlayer 使用模块增强来利用 TypeScript 的优势,使您的代码库
|
|
|
653
654
|
.intlayer
|
|
654
655
|
```
|
|
655
656
|
|
|
656
|
-
###
|
|
657
|
+
### VS Code 扩展
|
|
657
658
|
|
|
658
|
-
为了改进您使用 Intlayer
|
|
659
|
+
为了改进您使用 Intlayer 的开发体验,您可以安装官方的 **Intlayer VS Code Extension**。
|
|
659
660
|
|
|
660
|
-
要进一步了解,您可以实现 [可视化编辑器](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) 外部化您的内容。
|
|
661
661
|
[从 VS Code Marketplace 安装](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
662
662
|
|
|
663
663
|
此扩展提供:
|
|
@@ -669,6 +669,110 @@ Intlayer 使用模块增强来利用 TypeScript 的优势,使您的代码库
|
|
|
669
669
|
|
|
670
670
|
有关如何使用此扩展的更多详细信息,请参阅[Intlayer VS Code 扩展文档](https://intlayer.org/doc/vs-code-extension)。
|
|
671
671
|
|
|
672
|
-
###
|
|
672
|
+
### 深入了解
|
|
673
673
|
|
|
674
674
|
要进一步了解,您可以实现 [可视化编辑器](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) 外部化您的内容。
|
|
675
|
+
|
|
676
|
+
## 常见问题
|
|
677
|
+
|
|
678
|
+
<FAQ>
|
|
679
|
+
|
|
680
|
+
<Question title="国际化 Create React App 项目有哪些不同的解决方案?">
|
|
681
|
+
|
|
682
|
+
- **`react-i18next` / `i18next`**:应用最广泛的方案,在运行时加载 JSON 命名空间。
|
|
683
|
+
- **`react-intl`** 和 **`Lingui`**:基于 ICU 消息格式和内容提取。
|
|
684
|
+
- **`Intlayer`**:最先进的解决方案。内容可以在代码库中的任何位置声明([靠近每个组件或集中管理](https://intlayer.org/zh/blog/per-component-vs-centralized-i18n)),并通过 `react-scripts-intlayer` 在构建时进行编译,全链路类型安全,提供 AI 翻译、可视化编辑器和 CMS。
|
|
685
|
+
|
|
686
|
+
Create React App 封装了自己的 webpack 配置,因此集成是通过 `react-scripts-intlayer` 作为 `react-scripts` 的直接替代品来进行的,而无需您手动注册插件。请参阅 [为什么选择 Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/interest_of_intlayer.md) 和 [性能基准](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/benchmark/index.md)。
|
|
687
|
+
|
|
688
|
+
</Question>
|
|
689
|
+
|
|
690
|
+
<Question title="i18n 会给我的 React bundle 体积增加多少?">
|
|
691
|
+
|
|
692
|
+
远少于基于命名空间的方案,因为页面永远不会下载它不渲染的语言目录。构建时编译器将 `useIntlayer` 调用替换为组件使用的确切字典条目,因此未使用的键和未使用的语言都会被自动丢弃,并且 [动态字典](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dynamic_dictionaries/index.md) 会按语言环境拆分剩余内容。与常规替代方案相比,Intlayer 可将 bundle 和页面体积减少高达 50%。请参阅 [Bundle 体积优化](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/bundle_optimization.md) 和 [性能基准](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/benchmark/index.md)。
|
|
693
|
+
|
|
694
|
+
</Question>
|
|
695
|
+
|
|
696
|
+
<Question title="我可以从 react-i18next 或 react-intl 迁移而无需重写组件吗?">
|
|
697
|
+
|
|
698
|
+
可以,有两条迁移路径。您可以使用 [react-i18next 迁移指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/migration_from_react-i18next_to_intlayer.md) 或 [i18next 迁移指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/migration_from_i18next_to_intlayer.md) 逐步迁移内容。或者,您可以完全保留当前的 API:[兼容性适配器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compat/index.md) 公开与 `react-i18next`、`react-intl` 和 `i18next` 完全相同的 API,但底层由 Intlayer 字典驱动,因此只需更改导入语句,组件代码无需修改。
|
|
699
|
+
|
|
700
|
+
</Question>
|
|
701
|
+
|
|
702
|
+
<Question title="我可以保留现有的 JSON 翻译文件吗?">
|
|
703
|
+
|
|
704
|
+
可以。[JSON 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md) 将您的 `/messages/{locale}/{namespace}.json` 文件作为单一真实来源(source of truth),并双向生成 Intlayer 字典。[PO 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-po.md) 对 gettext 目录执行相同的操作,而 [按语言环境组织的文件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/per_locale_file.md) 允许您按语言拆分内容,而不是将所有语言打包到一个文件中。
|
|
705
|
+
|
|
706
|
+
</Question>
|
|
707
|
+
|
|
708
|
+
<Question title="我必须逐个键迁移我的内容吗?">
|
|
709
|
+
|
|
710
|
+
不需要。运行 `npx intlayer extract`,Intlayer 会读取您的组件,提取面向用户的字符串,并在每个组件旁边生成 `.content` 文件,这样您只需审查 diff,而无需手动逐一复制字符串到语言目录中。
|
|
711
|
+
|
|
712
|
+
如需全自动流程,[Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) 可在构建时执行相同操作:它在每次更改时扫描您的 JSX、TSX、Vue 和 Svelte 源代码,生成字典并通过热模块替换 (HMR) 保持同步,因此完全无需手动维护键名。
|
|
713
|
+
|
|
714
|
+
开启编译器前有两个限制值得了解:它通过静态分析工作,因此仅在运行时存在的字符串(如 API 错误代码或 CMS 字段)无法被捕获;此外它需要区分用户文本和应用程序逻辑(如 `className="active"` 或状态代码),在大型代码库中需要少量注解。而 [extract 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 则通过让您参与审查避免了这两个问题。
|
|
715
|
+
|
|
716
|
+
</Question>
|
|
717
|
+
|
|
718
|
+
<Question title="有哪些可用的编辑器和 AI 代理工具?">
|
|
719
|
+
|
|
720
|
+
共有 5 个工具,均为可选:
|
|
721
|
+
|
|
722
|
+
- **[VS Code 扩展](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/vs_code_extension.md)**:从 `useIntlayer` 键跳转到声明它的内容文件,从组件中提取内容,并从命令面板或专属的 Intlayer 选项卡运行 build、fill、test、push 和 pull。
|
|
723
|
+
- **[LSP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/lsp.md)**:在任何支持 LSP 的编辑器中提供相同的感知能力,支持跳转到定义、查找所有引用、悬停预览翻译值、键和字段的自动补全,以及在键未声明时发出警告。它还可以解析 `i18next`、`react-i18next`、`next-intl` 和 `use-intl` 调用,助力平滑迁移。
|
|
724
|
+
- **[MCP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md)**:向 Cursor、VS Code、Claude Desktop、Claude Code 和 ChatGPT 公开 Intlayer 文档与 CLI,使 AI 助手能够基于最新文档进行准确回答,并能自行运行 `intlayer fill` 等命令。
|
|
725
|
+
- **[Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/agent_skills.md)**:针对特定领域的技能(如 `intlayer-config`、`intlayer-cli` 和 `intlayer-content`,以及每个框架对应的专属技能),教导 AI 代理您的路由配置和内容节点类型。
|
|
726
|
+
- **[ESLint 插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/eslint.md)**:`no-raw-text` 规则标记硬编码字符串,并提供针对静态字典键和未使用内容的额外规则。
|
|
727
|
+
|
|
728
|
+
</Question>
|
|
729
|
+
|
|
730
|
+
<Question title="Create React App 已不再维护,我是否应该先迁移到 Vite?">
|
|
731
|
+
|
|
732
|
+
如果您已经在计划迁移,建议优先迁移并参考 [Vite + React 指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_vite+react.md):Vite 插件支持更完善,且重建速度更快。如果您尚未准备好迁移构建工具,本指南依然完全可用,并且两种方案之间的内容声明格式完全一致,因此后续迁移构建工具时无需重写您的 i18n 代码。
|
|
733
|
+
|
|
734
|
+
</Question>
|
|
735
|
+
|
|
736
|
+
<Question title="如何在 Create React App 项目中设置本地化路由?">
|
|
737
|
+
|
|
738
|
+
第 7 步和第 8 步介绍了本地化路由以及在语言环境更改时重写 URL。如果您不希望在路径中包含语言环境,可以将 `routing.mode` 设置为 `"no-prefix"` 或 `"search-params"`,此时语言环境将通过 Cookie 或查询参数进行解析。请参阅 [配置参考](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
739
|
+
|
|
740
|
+
</Question>
|
|
741
|
+
|
|
742
|
+
<Question title="如何在客户端渲染的 React 应用中处理 SEO 元数据?">
|
|
743
|
+
|
|
744
|
+
根据第 9 步的展示,从活动语言环境中为 `html` 元素设置 `lang` 和 `dir`,并使用 `getMultilingualUrls` 为每个声明的语言环境输出 `hreflang` 备用链接(包括 `x-default`)。由于 Create React App 输出的是纯客户端渲染的外壳,对于必须可靠爬取的页面,建议优先使用预渲染或服务端渲染方案,如 [TanStack Start](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_tanstack.md) 或 [React Router v7](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_react_router_v7.md)。
|
|
745
|
+
|
|
746
|
+
</Question>
|
|
747
|
+
|
|
748
|
+
<Question title="如何支持阿拉伯语或希伯来语等从右到左 (RTL) 的语言?">
|
|
749
|
+
|
|
750
|
+
第 9 步对此进行了介绍。`getHTMLTextDir` 会为特定语言环境返回 `ltr`、`rtl` 或 `auto`,因此您只需在根元素上根据活动语言环境绑定 `lang` 和 `dir`,并让 CSS 逻辑属性处理其余样式排版。
|
|
751
|
+
|
|
752
|
+
</Question>
|
|
753
|
+
|
|
754
|
+
<Question title="如何使用 AI 自动翻译应用?">
|
|
755
|
+
|
|
756
|
+
运行 `npx intlayer fill`。它会使用您选择的 LLM、您自己的提供商和 API 密钥填充缺失的翻译,并且 `--git-diff` 参数可将处理范围限制在当前分支修改的内容。请参阅 [fill 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/fill.md) 和 [CI/CD 集成](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/CI_CD.md)。
|
|
757
|
+
|
|
758
|
+
</Question>
|
|
759
|
+
|
|
760
|
+
<Question title="Intlayer 是否支持复数、性别和富文本?">
|
|
761
|
+
|
|
762
|
+
支持:包括 [复数形式](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/plurial.md)、[基于性别的内容](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/gender.md)、条件渲染、插值用的 [插入内容 (insertions)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/insertion.md)、用于长文本的 [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/markdown.md),以及用于数字、日期和货币的 [格式化工具](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/formatters.md)。
|
|
763
|
+
|
|
764
|
+
</Question>
|
|
765
|
+
|
|
766
|
+
<Question title="翻译人员如何无需接触代码即可编辑内容?">
|
|
767
|
+
|
|
768
|
+
可以通过自托管的 [可视化编辑器](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) 进行无需重新部署的内容外部化更新。
|
|
769
|
+
|
|
770
|
+
</Question>
|
|
771
|
+
|
|
772
|
+
<Question title="Intlayer 是免费且开源的吗?">
|
|
773
|
+
|
|
774
|
+
是的,基于 Apache 2.0 许可证开源,包含商业用途。托管版 CMS 是可选的付费服务,同时完全支持 [自托管](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/self_hosting.md)。
|
|
775
|
+
|
|
776
|
+
</Question>
|
|
777
|
+
|
|
778
|
+
</FAQ>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-08-23
|
|
3
|
-
updatedAt: 2026-08-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Elysia i18n - 完整指南翻译你的应用"
|
|
5
5
|
description: "不再使用 i18next。2026 年构建多语言 (i18n) Elysia 应用的指南。使用 AI 代理翻译并优化 bundle 大小、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -341,3 +341,123 @@ export default config;
|
|
|
341
341
|
# 忽略 Intlayer 生成的文件
|
|
342
342
|
.intlayer
|
|
343
343
|
```
|
|
344
|
+
|
|
345
|
+
## 常见问题
|
|
346
|
+
|
|
347
|
+
<FAQ>
|
|
348
|
+
|
|
349
|
+
<Question title="国际化 Elysia 后端有哪些不同的解决方案?">
|
|
350
|
+
|
|
351
|
+
Elysia 本身没有内置的 i18n 层,因此选择通常是:手动将诸如 `i18next` 之类的通用库接入钩子中,或者通过 `elysia-intlayer` 使用 `Intlayer`。`elysia-intlayer` 会自动为您注册插件,按请求解析语言环境,并与前端共享相同的类型化内容。
|
|
352
|
+
|
|
353
|
+
后端国际化的核心原因在于,用户阅读的大量文本并不经过前端:API 错误消息、事务性邮件、推送通知、短信以及导出的 PDF 文件。这些内容都需要根据接收者的语言进行解析,且应针对每个请求独立解析,而非按会话存储。
|
|
354
|
+
|
|
355
|
+
请参阅 [为什么选择 Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/interest_of_intlayer.md)。
|
|
356
|
+
|
|
357
|
+
</Question>
|
|
358
|
+
|
|
359
|
+
<Question title="i18n 会给我的 Elysia 服务端体积增加多少?">
|
|
360
|
+
|
|
361
|
+
极少。字典在构建前预先编译,仅包含您声明的语言环境,因此启动时无需加载整个大目录,处理请求路径时也无需读取文件系统。这在 Serverless 和 Edge 环境中尤为重要,因为体积直接决定冷启动耗时。请参阅 [Bundle 体积优化](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/bundle_optimization.md)。
|
|
362
|
+
|
|
363
|
+
</Question>
|
|
364
|
+
|
|
365
|
+
<Question title="我可以从 i18next 迁移而无需重写路由处理函数吗?">
|
|
366
|
+
|
|
367
|
+
可以,有两条迁移路径。您可以使用 [i18next 迁移指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/migration_from_i18next_to_intlayer.md) 逐步迁移内容。或者,您可以完全保留当前的 API:[兼容性适配器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compat/index.md) 公开与 `i18next` 完全相同的 API,但底层由 Intlayer 字典驱动,因此只需更改导入语句,路由处理函数代码无需修改。
|
|
368
|
+
|
|
369
|
+
</Question>
|
|
370
|
+
|
|
371
|
+
<Question title="我可以保留现有的 JSON 翻译文件吗?">
|
|
372
|
+
|
|
373
|
+
可以。[JSON 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md) 将您的 `/messages/{locale}/{namespace}.json` 文件作为单一真实来源(source of truth),并双向生成 Intlayer 字典。[PO 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-po.md) 对 gettext 目录执行相同的操作,而 [按语言环境组织的文件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/per_locale_file.md) 允许您按语言拆分内容,而不是将所有语言打包到一个文件中。
|
|
374
|
+
|
|
375
|
+
</Question>
|
|
376
|
+
|
|
377
|
+
<Question title="我必须逐个键迁移我的内容吗?">
|
|
378
|
+
|
|
379
|
+
不需要。运行 `npx intlayer extract`,Intlayer 会读取您的源码文件,提取面向用户的字符串,并在每个组件旁边生成 `.content` 文件,这样您只需审查 diff,而无需手动逐一复制字符串到语言目录中。请参阅 [extract 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md)。
|
|
380
|
+
|
|
381
|
+
在同一项目的前端部分,[Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) 则更进一步,可以在构建时直接从 JSX、TSX、Vue 或 Svelte 源码生成字典,使应用的前后端共享同一套内容层,完全无需手动维护键名。
|
|
382
|
+
|
|
383
|
+
</Question>
|
|
384
|
+
|
|
385
|
+
<Question title="有哪些可用的编辑器和 AI 代理工具?">
|
|
386
|
+
|
|
387
|
+
共有 5 个工具,均为可选:
|
|
388
|
+
|
|
389
|
+
- **[VS Code 扩展](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/vs_code_extension.md)**:从 `useIntlayer` 键跳转到声明它的内容文件,从组件中提取内容,并从命令面板或专属的 Intlayer 选项卡运行 build、fill、test、push 和 pull。
|
|
390
|
+
- **[LSP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/lsp.md)**:在任何支持 LSP 的编辑器中提供相同的感知能力,支持跳转到定义、查找所有引用、悬停预览翻译值、键和字段的自动补全,以及在键未声明时发出警告。它还可以解析 `i18next`、`react-i18next`、`next-intl` 和 `use-intl` 调用,助力平滑迁移。
|
|
391
|
+
- **[MCP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md)**:向 Cursor、VS Code、Claude Desktop、Claude Code 和 ChatGPT 公开 Intlayer 文档与 CLI,使 AI 助手能够基于最新文档进行准确回答,并能自行运行 `intlayer fill` 等命令。
|
|
392
|
+
- **[Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/agent_skills.md)**:针对特定领域的技能(如 `intlayer-config`、`intlayer-cli` 和 `intlayer-content`,以及每个框架对应的专属技能),教导 AI 代理您的路由配置和内容节点类型。
|
|
393
|
+
- **[ESLint 插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/eslint.md)**:`no-raw-text` 规则标记硬编码字符串,并提供针对静态字典键和未使用内容的额外规则。
|
|
394
|
+
|
|
395
|
+
</Question>
|
|
396
|
+
|
|
397
|
+
<Question title="Intlayer 如何知道用哪种语言响应?">
|
|
398
|
+
|
|
399
|
+
默认情况下,`elysia-intlayer` 读取传入请求的 `Accept-Language` 请求头,并选择最匹配的已声明语言环境,若无匹配则回退到默认语言环境。您可以通过 `routing.storage` 自定义来源,例如自定义标头或由前端设置的 Cookie,从而使 API 按照用户实际选择的语言响应,而非浏览器默认宣称的语言。请参阅 [配置参考](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
400
|
+
|
|
401
|
+
</Question>
|
|
402
|
+
|
|
403
|
+
<Question title="语言环境在每个请求之间是否隔离?">
|
|
404
|
+
|
|
405
|
+
是的。插件会将活动语言环境限定在当前请求范围内,因此两个使用不同语言的并发请求绝不会互相读取或干扰对方的语言环境。这使得在服务内部调用 `t()` 和 `getIntlayer()` 具备完全的线程与并发安全性,而无需在每个函数中显式传递语言环境参数。
|
|
406
|
+
|
|
407
|
+
</Question>
|
|
408
|
+
|
|
409
|
+
<Question title="如何使用接收者的语言发送事务性邮件?">
|
|
410
|
+
|
|
411
|
+
像声明其他内容一样在内容文件中声明邮件文本,然后使用 `getIntlayer` 针对接收者存储的语言环境进行解析,而不是使用请求的语言环境。这对于后台作业和队列处理至关重要,因为这类场景下语言属于用户数据库记录,并不存在传入请求标头可供读取。
|
|
412
|
+
|
|
413
|
+
</Question>
|
|
414
|
+
|
|
415
|
+
<Question title="如何本地化 API 错误消息?">
|
|
416
|
+
|
|
417
|
+
在构建错误对象的代码位置使用 `t()` 包裹消息文本。当前活动的请求语言环境会直接将其解析,使客户端能够直接显示该文本,从而无需在前端维护一套冗余平行的错误码目录。
|
|
418
|
+
|
|
419
|
+
</Question>
|
|
420
|
+
|
|
421
|
+
<Question title="它是否适用于 Bun 和 Edge 运行时?">
|
|
422
|
+
|
|
423
|
+
Elysia 原生首要面向 Bun,并且 Intlayer 是通过构建时编译好的字典直接解析内容,而不是在运行时从磁盘读取目录文件,这正是 Edge 环境中最常出现问题的地方。保持 `dictionary.importMode` 为默认的 `"static"` 即可将内容直接打包进服务端代码中。
|
|
424
|
+
|
|
425
|
+
</Question>
|
|
426
|
+
|
|
427
|
+
<Question title="该插件是否保留 Elysia 的端到端类型推导?">
|
|
428
|
+
|
|
429
|
+
是的。该插件像任何其他 Elysia 插件一样使用 `.use()` 进行注册,因此链式推导的类型完全得以保留流转,并且您的字典键由生成的 `types/intlayer.d.ts` 单独提供强类型保障。
|
|
430
|
+
|
|
431
|
+
</Question>
|
|
432
|
+
|
|
433
|
+
<Question title="如何使用 AI 自动翻译后端内容?">
|
|
434
|
+
|
|
435
|
+
运行 `npx intlayer fill`,它会使用您选择的 LLM、您自己的提供商和 API 密钥填充缺失的翻译。添加 `--git-diff` 参数可以仅翻译当前分支修改过的内容。请参阅 [fill 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/fill.md) 和 [CI/CD 集成](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/CI_CD.md)。
|
|
436
|
+
|
|
437
|
+
</Question>
|
|
438
|
+
|
|
439
|
+
<Question title="Intlayer 在服务端是否支持复数、性别和插值?">
|
|
440
|
+
|
|
441
|
+
支持:包括 [复数形式](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/plurial.md)、[基于性别的内容](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/gender.md)、条件分支、用于插值变量的 [插入内容 (insertions)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/insertion.md)、用于邮件正文的 [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/markdown.md),以及用于数字、日期和货币的 [格式化工具](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/formatters.md)。
|
|
442
|
+
|
|
443
|
+
</Question>
|
|
444
|
+
|
|
445
|
+
<Question title="我在服务端能获得 TypeScript 自动补全吗?">
|
|
446
|
+
|
|
447
|
+
是的。Intlayer 会在 `./types/intlayer.d.ts` 中为您的字典生成类型定义,因此访问不存在的键会在编译期直接报错,而不会在运行时返回空字符串。在 CI 中运行 `npx intlayer test` 可在声明的语言环境缺失内容时使构建失败。
|
|
448
|
+
|
|
449
|
+
</Question>
|
|
450
|
+
|
|
451
|
+
<Question title="前端和后端可以共享相同的内容吗?">
|
|
452
|
+
|
|
453
|
+
可以,这正是推荐的架构模式。`elysia-intlayer` 可以与 `react-intlayer`、`next-intlayer` 和 `vite-intlayer` 共同基于完全相同的声明内容工作,因此在 API 响应和页面展示中使用的文案只需声明一次。请参阅 [Intlayer 工作原理](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/how_works_intlayer.md)。
|
|
454
|
+
|
|
455
|
+
</Question>
|
|
456
|
+
|
|
457
|
+
<Question title="Intlayer 是免费且开源的吗?">
|
|
458
|
+
|
|
459
|
+
是的,基于 Apache 2.0 许可证开源,包含商业用途。托管版 [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md) 是可选的付费服务,同时完全支持 [自托管](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/self_hosting.md)。
|
|
460
|
+
|
|
461
|
+
</Question>
|
|
462
|
+
|
|
463
|
+
</FAQ>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-11
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Express i18n - 翻译你的应用的完整指南"
|
|
5
5
|
description: "告别 i18next。2026 年构建多语言 (i18n) Express 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
@@ -281,3 +281,117 @@ export default config;
|
|
|
281
281
|
# 忽略 Intlayer 生成的文件
|
|
282
282
|
.intlayer
|
|
283
283
|
```
|
|
284
|
+
|
|
285
|
+
## 常见问题
|
|
286
|
+
|
|
287
|
+
<FAQ>
|
|
288
|
+
|
|
289
|
+
<Question title="国际化 Express 后端有哪些不同的解决方案?">
|
|
290
|
+
|
|
291
|
+
传统方案是使用 `i18next` 配合 `i18next-http-middleware`,它按命名空间加载 JSON 目录并将语言环境存储在请求对象上。另一种选择是通过 `express-intlayer` 使用 `Intlayer`,它在与前端共享的类型化文件中声明内容,按请求解析语言环境,并提供 AI 翻译和 CMS 功能。
|
|
292
|
+
|
|
293
|
+
后端国际化的核心原因在于,用户阅读的大量文本并不经过前端:API 错误消息、事务性邮件、推送通知、短信以及导出的 PDF 文件。这些内容都需要根据接收者的语言进行解析,且应针对每个请求独立解析,而非按会话存储。
|
|
294
|
+
|
|
295
|
+
请参阅 [为什么选择 Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/interest_of_intlayer.md)。
|
|
296
|
+
|
|
297
|
+
</Question>
|
|
298
|
+
|
|
299
|
+
<Question title="i18n 会给我的 Express 服务端体积增加多少?">
|
|
300
|
+
|
|
301
|
+
极少。字典在构建前预先编译,仅包含您声明的语言环境,因此启动时无需加载整个大目录,处理请求路径时也无需读取文件系统。这在 Serverless 和 Edge 环境中尤为重要,因为体积直接决定冷启动耗时。请参阅 [Bundle 体积优化](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/bundle_optimization.md)。
|
|
302
|
+
|
|
303
|
+
</Question>
|
|
304
|
+
|
|
305
|
+
<Question title="我可以从 i18next 迁移而无需重写路由处理函数吗?">
|
|
306
|
+
|
|
307
|
+
可以,有两条迁移路径。您可以使用 [i18next 迁移指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/migration_from_i18next_to_intlayer.md) 逐步迁移内容。或者,您可以完全保留当前的 API:[兼容性适配器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compat/index.md) 公开与 `i18next` 完全相同的 API,但底层由 Intlayer 字典驱动,因此只需更改导入语句,路由处理函数代码无需修改。
|
|
308
|
+
|
|
309
|
+
</Question>
|
|
310
|
+
|
|
311
|
+
<Question title="我可以保留现有的 JSON 翻译文件吗?">
|
|
312
|
+
|
|
313
|
+
可以。[JSON 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md) 将您的 `/messages/{locale}/{namespace}.json` 文件作为单一真实来源(source of truth),并双向生成 Intlayer 字典。[PO 同步插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-po.md) 对 gettext 目录执行相同的操作,而 [按语言环境组织的文件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/per_locale_file.md) 允许您按语言拆分内容,而不是将所有语言打包到一个文件中。
|
|
314
|
+
|
|
315
|
+
</Question>
|
|
316
|
+
|
|
317
|
+
<Question title="我必须逐个键迁移我的内容吗?">
|
|
318
|
+
|
|
319
|
+
不需要。运行 `npx intlayer extract`,Intlayer 会读取您的源码文件,提取面向用户的字符串,并在每个组件旁边生成 `.content` 文件,这样您只需审查 diff,而无需手动逐一复制字符串到语言目录中。请参阅 [extract 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md)。
|
|
320
|
+
|
|
321
|
+
在同一项目的前端部分,[Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) 则更进一步,可以在构建时直接从 JSX、TSX、Vue 或 Svelte 源码生成字典,使应用的前后端共享同一套内容层,完全无需手动维护键名。
|
|
322
|
+
|
|
323
|
+
</Question>
|
|
324
|
+
|
|
325
|
+
<Question title="有哪些可用的编辑器和 AI 代理工具?">
|
|
326
|
+
|
|
327
|
+
共有 5 个工具,均为可选:
|
|
328
|
+
|
|
329
|
+
- **[VS Code 扩展](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/vs_code_extension.md)**:从 `useIntlayer` 键跳转到声明它的内容文件,从组件中提取内容,并从命令面板或专属的 Intlayer 选项卡运行 build、fill、test、push 和 pull。
|
|
330
|
+
- **[LSP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/lsp.md)**:在任何支持 LSP 的编辑器中提供相同的感知能力,支持跳转到定义、查找所有引用、悬停预览翻译值、键和字段的自动补全,以及在键未声明时发出警告。它还可以解析 `i18next`、`react-i18next`、`next-intl` 和 `use-intl` 调用,助力平滑迁移。
|
|
331
|
+
- **[MCP 服务器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/mcp_server.md)**:向 Cursor、VS Code、Claude Desktop、Claude Code 和 ChatGPT 公开 Intlayer 文档与 CLI,使 AI 助手能够基于最新文档进行准确回答,并能自行运行 `intlayer fill` 等命令。
|
|
332
|
+
- **[Agent Skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/agent_skills.md)**:针对特定领域的技能(如 `intlayer-config`、`intlayer-cli` 和 `intlayer-content`,以及每个框架对应的专属技能),教导 AI 代理您的路由配置和内容节点类型。
|
|
333
|
+
- **[ESLint 插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/eslint.md)**:`no-raw-text` 规则标记硬编码字符串,并提供针对静态字典键和未使用内容的额外规则。
|
|
334
|
+
|
|
335
|
+
</Question>
|
|
336
|
+
|
|
337
|
+
<Question title="Intlayer 如何知道用哪种语言响应?">
|
|
338
|
+
|
|
339
|
+
默认情况下,`express-intlayer` 读取传入请求的 `Accept-Language` 请求头,并选择最匹配的已声明语言环境,若无匹配则回退到默认语言环境。您可以通过 `routing.storage` 自定义来源,例如自定义标头或由前端设置的 Cookie,从而使 API 按照用户实际选择的语言响应,而非浏览器默认宣称的语言。请参阅 [配置参考](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
340
|
+
|
|
341
|
+
</Question>
|
|
342
|
+
|
|
343
|
+
<Question title="语言环境在每个请求之间是否隔离?">
|
|
344
|
+
|
|
345
|
+
是的。中间件会将活动语言环境限定在当前请求范围内,因此两个使用不同语言的并发请求绝不会互相读取或干扰对方的语言环境。这使得在服务内部调用 `t()` 和 `getIntlayer()` 具备完全的线程与并发安全性,而无需在每个函数中显式传递语言环境参数。
|
|
346
|
+
|
|
347
|
+
</Question>
|
|
348
|
+
|
|
349
|
+
<Question title="如何使用接收者的语言发送事务性邮件?">
|
|
350
|
+
|
|
351
|
+
像声明其他内容一样在内容文件中声明邮件文本,然后使用 `getIntlayer` 针对接收者存储的语言环境进行解析,而不是使用请求的语言环境。这对于后台作业和队列处理至关重要,因为这类场景下语言属于用户数据库记录,并不存在传入请求标头可供读取。
|
|
352
|
+
|
|
353
|
+
</Question>
|
|
354
|
+
|
|
355
|
+
<Question title="如何本地化 API 错误消息?">
|
|
356
|
+
|
|
357
|
+
在构建错误对象的代码位置使用 `t()` 包裹消息文本。当前活动的请求语言环境会直接将其解析,使客户端能够直接显示该文本,从而无需在前端维护一套冗余平行的错误码目录。
|
|
358
|
+
|
|
359
|
+
</Question>
|
|
360
|
+
|
|
361
|
+
<Question title="它是否适用于现有的 Express 应用和其他中间件?">
|
|
362
|
+
|
|
363
|
+
是的。`express-intlayer` 是一个标准的 Express 中间件,能够与您现有的技术栈完美组合。只需将其注册在读取内容的路由之前,即可确保当处理函数调用 `t()` 或 `getIntlayer()` 时语言环境已正确就绪。
|
|
364
|
+
|
|
365
|
+
</Question>
|
|
366
|
+
|
|
367
|
+
<Question title="如何使用 AI 自动翻译后端内容?">
|
|
368
|
+
|
|
369
|
+
运行 `npx intlayer fill`,它会使用您选择的 LLM、您自己的提供商和 API 密钥填充缺失的翻译。添加 `--git-diff` 参数可以仅翻译当前分支修改过的内容。请参阅 [fill 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/fill.md) 和 [CI/CD 集成](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/CI_CD.md)。
|
|
370
|
+
|
|
371
|
+
</Question>
|
|
372
|
+
|
|
373
|
+
<Question title="Intlayer 在服务端是否支持复数、性别和插值?">
|
|
374
|
+
|
|
375
|
+
支持:包括 [复数形式](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/plurial.md)、[基于性别的内容](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/gender.md)、条件分支、用于插值变量的 [插入内容 (insertions)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/insertion.md)、用于邮件正文的 [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/markdown.md),以及用于数字、日期和货币的 [格式化工具](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/formatters.md)。
|
|
376
|
+
|
|
377
|
+
</Question>
|
|
378
|
+
|
|
379
|
+
<Question title="我在服务端能获得 TypeScript 自动补全吗?">
|
|
380
|
+
|
|
381
|
+
是的。Intlayer 会在 `./types/intlayer.d.ts` 中为您的字典生成类型定义,因此访问不存在的键会在编译期直接报错,而不会在运行时返回空字符串。在 CI 中运行 `npx intlayer test` 可在声明的语言环境缺失内容时使构建失败。
|
|
382
|
+
|
|
383
|
+
</Question>
|
|
384
|
+
|
|
385
|
+
<Question title="前端和后端可以共享相同的内容吗?">
|
|
386
|
+
|
|
387
|
+
可以,这正是推荐的架构模式。`express-intlayer` 可以与 `react-intlayer`、`next-intlayer` 和 `vite-intlayer` 共同基于完全相同的声明内容工作,因此在 API 响应和页面展示中使用的文案只需声明一次。请参阅 [Intlayer 工作原理](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/how_works_intlayer.md)。
|
|
388
|
+
|
|
389
|
+
</Question>
|
|
390
|
+
|
|
391
|
+
<Question title="Intlayer 是免费且开源的吗?">
|
|
392
|
+
|
|
393
|
+
是的,基于 Apache 2.0 许可证开源,包含商业用途。托管版 [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md) 是可选的付费服务,同时完全支持 [自托管](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/self_hosting.md)。
|
|
394
|
+
|
|
395
|
+
</Question>
|
|
396
|
+
|
|
397
|
+
</FAQ>
|