@intlayer/docs 9.4.1 → 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: 2025-04-18
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Angular 22 i18n - Complete guide to translate your app"
|
|
5
5
|
description: "No more i18next. The 2026 guide to building a multilingual (i18n) Angular 22 app. Translate with AI agents and optimise bundle size, SEO and performances."
|
|
6
6
|
keywords:
|
|
@@ -42,7 +42,6 @@ author: aymericzip
|
|
|
42
42
|
Compared to main solutions like `ngx-translate` or `angular-l10n`, Intlayer is a solution that comes with integrated optimizations such as:
|
|
43
43
|
|
|
44
44
|
<AccordionGroup>
|
|
45
|
-
|
|
46
45
|
<Accordion header="Full Angular coverage">
|
|
47
46
|
|
|
48
47
|
Intlayer is optimized to work perfectly with Angular by offering **component-level content scoping**, **lazy-loaded translations**, and all the features needed for scaling internationalization (i18n).
|
|
@@ -481,3 +480,105 @@ For more details on how to use the extension, refer to the [Intlayer VS Code Ext
|
|
|
481
480
|
To go further, you can implement the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md) or externalise your content using the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md).
|
|
482
481
|
|
|
483
482
|
---
|
|
483
|
+
|
|
484
|
+
## Frequently Asked Questions
|
|
485
|
+
|
|
486
|
+
<FAQ>
|
|
487
|
+
|
|
488
|
+
<Question title="What are the different solutions available to internationalize an Angular app?">
|
|
489
|
+
|
|
490
|
+
- **`@angular/localize`**, the built-in i18n: messages are extracted to XLIFF and each locale is compiled into its own build, which means one deployment artifact per language and no runtime locale switching.
|
|
491
|
+
- **`ngx-translate`** and **`Transloco`**: runtime JSON catalogues loaded through a service, with locale switching but no build time typing.
|
|
492
|
+
- **`Intlayer`**: the most advanced solution. Content declared anywhere in your codebase ([next to each component or centralized](https://intlayer.org/blog/per-component-vs-centralized-i18n)) and compiled at build time, fully typed, with runtime locale switching, AI translation, a visual editor and a CMS.
|
|
493
|
+
|
|
494
|
+
The usual reason to leave `@angular/localize` is the one build per locale model. Intlayer keeps a single build and switches language at runtime. See [why Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/interest_of_intlayer.md).
|
|
495
|
+
|
|
496
|
+
</Question>
|
|
497
|
+
|
|
498
|
+
<Question title="How much does i18n add to my Angular bundle size?">
|
|
499
|
+
|
|
500
|
+
Much less than a namespace based setup, because a page never downloads a catalogue it does not render. The build time compiler replaces `useIntlayer` calls with the exact dictionary entries a component uses, so unused keys and unused languages are dropped, and [dynamic dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dynamic_dictionaries/index.md) split the rest per locale. Measured against the usual alternatives, Intlayer reduces bundle and page size by up to 50%. See [bundle optimization](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/bundle_optimization.md) and the [benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/benchmark/index.md).
|
|
501
|
+
|
|
502
|
+
</Question>
|
|
503
|
+
|
|
504
|
+
<Question title="Can I migrate from `ngx-translate`, `Transloco` or `@angular/localize` without rewriting my templates?">
|
|
505
|
+
|
|
506
|
+
Largely. Follow the [ngx-translate migration guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compat/ngx-translate.md) or the [Transloco migration guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compat/transloco.md) to move the content over. You can also migrate gradually: the [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your existing JSON catalogues as the source of truth and generates Intlayer dictionaries from them, so both layers stay in sync while you move templates across one at a time.
|
|
507
|
+
|
|
508
|
+
</Question>
|
|
509
|
+
|
|
510
|
+
<Question title="Can I keep my existing JSON translation files?">
|
|
511
|
+
|
|
512
|
+
Yes. The [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your `/messages/{locale}/{namespace}.json` files as the source of truth and generates Intlayer dictionaries from them, in both directions. A [sync PO plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-po.md) does the same for gettext catalogues, and [per locale files](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/per_locale_file.md) let you split content by language instead of grouping locales in one file.
|
|
513
|
+
|
|
514
|
+
</Question>
|
|
515
|
+
|
|
516
|
+
<Question title="Do I have to move my content key by key?">
|
|
517
|
+
|
|
518
|
+
No. Run `npx intlayer extract` and Intlayer reads your source files, pulls the user facing strings out and writes a `.content` file next to each one, so you review a diff instead of copying strings into a catalogue one at a time. See the [extract command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/extract.md).
|
|
519
|
+
|
|
520
|
+
For a fully automated pipeline, the [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compiler.md) does the same at build time on JSX, TSX, Vue and Svelte source, generating the dictionaries on every change so there are no keys to maintain by hand. It works by static analysis, so strings that only exist at runtime stay out of reach, and it needs a few annotations to tell user facing text apart from application logic.
|
|
521
|
+
|
|
522
|
+
</Question>
|
|
523
|
+
|
|
524
|
+
<Question title="What editor and AI agent tooling is available?">
|
|
525
|
+
|
|
526
|
+
Five pieces, all optional:
|
|
527
|
+
|
|
528
|
+
- **[VS Code extension](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/vs_code_extension.md)**: jump from a `useIntlayer` key to the content file that declares it, extract content from a component, and run build, fill, test, push and pull from the command palette or a dedicated Intlayer tab.
|
|
529
|
+
- **[LSP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/lsp.md)**: the same awareness in any editor that speaks LSP, with go to definition, find all references, hover previews of a translated value, autocompletion of keys and fields, and a warning when a key is not declared anywhere. It also resolves `i18next`, `react-i18next`, `next-intl` and `use-intl` calls, which helps while you migrate.
|
|
530
|
+
- **[MCP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/mcp_server.md)**: exposes the Intlayer documentation and CLI to Cursor, VS Code, Claude Desktop, Claude Code and ChatGPT, so an assistant answers from current docs instead of guessing, and can run commands such as `intlayer fill` itself.
|
|
531
|
+
- **[Agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/agent_skills.md)**: focused skills such as `intlayer-config`, `intlayer-cli` and `intlayer-content`, plus one per framework, that teach an agent your routing setup and the content node types.
|
|
532
|
+
- **[ESLint plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/eslint.md)**: `no-raw-text` flags hardcoded strings, with further rules for static dictionary keys and unused content.
|
|
533
|
+
|
|
534
|
+
</Question>
|
|
535
|
+
|
|
536
|
+
<Question title="Does Intlayer support Angular signals and standalone components?">
|
|
537
|
+
|
|
538
|
+
Yes. Content is exposed through signals, so a template re-renders when the locale changes without a page reload, and the provider is registered like any other standalone provider.
|
|
539
|
+
|
|
540
|
+
</Question>
|
|
541
|
+
|
|
542
|
+
<Question title="Do I need one build per language?">
|
|
543
|
+
|
|
544
|
+
No. That is the `@angular/localize` model. With Intlayer a single build serves every declared locale, the active language is resolved at runtime from the URL, a cookie or the `Accept-Language` header, and only the rendered locale's content is downloaded.
|
|
545
|
+
|
|
546
|
+
</Question>
|
|
547
|
+
|
|
548
|
+
<Question title="How do I switch the language at runtime?">
|
|
549
|
+
|
|
550
|
+
Step 6 covers it. `useLocale` exposes the active locale, the declared locales and a setter that persists the choice, and `getLocalizedUrl` rewrites the current path so the user stays on the same route after switching.
|
|
551
|
+
|
|
552
|
+
</Question>
|
|
553
|
+
|
|
554
|
+
<Question title="How do I translate an Angular app automatically with AI?">
|
|
555
|
+
|
|
556
|
+
Run `npx intlayer fill`, which fills missing translations with the LLM of your choice using your own provider and API key. `--git-diff` limits the run to the content changed on the branch. See the [fill command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/fill.md) and [CI/CD integration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/CI_CD.md).
|
|
557
|
+
|
|
558
|
+
</Question>
|
|
559
|
+
|
|
560
|
+
<Question title="Does Intlayer support plurals, gender and rich text?">
|
|
561
|
+
|
|
562
|
+
Yes: [plural forms](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/plurial.md), [gender based content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/gender.md), conditions, [insertions](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/insertion.md), [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/markdown.md) and [formatters](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/formatters.md) for numbers, dates and currencies.
|
|
563
|
+
|
|
564
|
+
</Question>
|
|
565
|
+
|
|
566
|
+
<Question title="How do I catch missing translations before shipping?">
|
|
567
|
+
|
|
568
|
+
Run `npx intlayer test` in CI. It fails the build when a declared locale is missing content. The [VS Code extension](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/vs_code_extension.md) reports the same errors while you type. See [testing your content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/testing.md).
|
|
569
|
+
|
|
570
|
+
</Question>
|
|
571
|
+
|
|
572
|
+
<Question title="How can translators edit the content without touching the code?">
|
|
573
|
+
|
|
574
|
+
Through the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md), which runs on your own infrastructure and lets anyone edit text in place on the running app, or the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md), which externalizes content so it can change without a deployment.
|
|
575
|
+
|
|
576
|
+
</Question>
|
|
577
|
+
|
|
578
|
+
<Question title="Is Intlayer free and open source?">
|
|
579
|
+
|
|
580
|
+
Yes, under the Apache 2.0 licence, commercial use included. The hosted CMS is an optional paid service that can also be [self hosted](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/self_hosting.md).
|
|
581
|
+
|
|
582
|
+
</Question>
|
|
583
|
+
|
|
584
|
+
</FAQ>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-03-07
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Astro i18n - Complete guide to translate your app"
|
|
5
5
|
description: "No more i18next. The 2026 guide to building a multilingual (i18n) Astro app. Translate with AI agents and optimise bundle size, SEO and performances."
|
|
6
6
|
keywords:
|
|
@@ -66,7 +66,6 @@ author: aymericzip
|
|
|
66
66
|
Compared to main solutions like `astro-i18n` or `i18next`, Intlayer is a solution that comes with integrated optimizations such as:
|
|
67
67
|
|
|
68
68
|
<AccordionGroup>
|
|
69
|
-
|
|
70
69
|
<Accordion header="Full Astro coverage">
|
|
71
70
|
|
|
72
71
|
Intlayer is optimized to work perfectly with Astro by offering **multilingual routing**, **sitemap**, and all the features needed for scaling internationalization (i18n).
|
|
@@ -146,22 +145,16 @@ bunx intlayer@canary init --interactive
|
|
|
146
145
|
npm install intlayer astro-intlayer
|
|
147
146
|
```
|
|
148
147
|
|
|
149
|
-
```bash packageManager="npm"
|
|
150
|
-
npm install intlayer astro-intlayer
|
|
151
|
-
# Optional: If you add support for React islands
|
|
152
|
-
npm install react react-dom react-intlayer @astrojs/react
|
|
153
|
-
```
|
|
154
|
-
|
|
155
148
|
```bash packageManager="pnpm"
|
|
156
149
|
pnpm add intlayer astro-intlayer
|
|
157
|
-
# Optional: If you add support for React islands
|
|
158
|
-
pnpm add react react-dom react-intlayer @astrojs/react
|
|
159
150
|
```
|
|
160
151
|
|
|
161
152
|
```bash packageManager="yarn"
|
|
162
153
|
yarn add intlayer astro-intlayer
|
|
163
|
-
|
|
164
|
-
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```bash packageManager="bun"
|
|
157
|
+
bun add intlayer astro-intlayer
|
|
165
158
|
```
|
|
166
159
|
|
|
167
160
|
- **intlayer**
|
|
@@ -581,8 +574,6 @@ bun run build # Or bun run dev
|
|
|
581
574
|
</Tab>
|
|
582
575
|
</Tabs>
|
|
583
576
|
|
|
584
|
-
---
|
|
585
|
-
|
|
586
577
|
</Step>
|
|
587
578
|
|
|
588
579
|
</Steps>
|
|
@@ -638,3 +629,109 @@ For more information on using the extension, refer to the [VS Code Extension doc
|
|
|
638
629
|
### Deepen Your Knowledge
|
|
639
630
|
|
|
640
631
|
If you want to learn more, you can also implement the [Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md) or use the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md) to externalise your content.
|
|
632
|
+
|
|
633
|
+
## Frequently Asked Questions
|
|
634
|
+
|
|
635
|
+
<FAQ>
|
|
636
|
+
|
|
637
|
+
<Question title="What are the different solutions available to internationalize an Astro site?">
|
|
638
|
+
|
|
639
|
+
Astro ships a routing level `i18n` option that handles locale prefixes and redirects, but it does not manage the content itself, so you still need a message layer:
|
|
640
|
+
|
|
641
|
+
- **Astro's built-in `i18n`** plus hand written JSON or TypeScript dictionaries: no dependency, but no typing, no plural rules and no tooling.
|
|
642
|
+
- **`i18next`** or **`vue-i18n` / `svelte-i18n`** inside islands: a full library per island framework, each with its own catalogue.
|
|
643
|
+
- **`Intlayer`**: one content layer shared by Astro pages and every island framework, compiled at build time, fully typed, with AI translation, a visual editor and a CMS.
|
|
644
|
+
|
|
645
|
+
The Astro specific gain is that the same dictionary serves an `.astro` page and a React, Vue, Svelte, Solid, Preact or Lit island, instead of one i18n library per island runtime. See [why Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/interest_of_intlayer.md).
|
|
646
|
+
|
|
647
|
+
</Question>
|
|
648
|
+
|
|
649
|
+
<Question title="How much does i18n add to my Astro bundle size?">
|
|
650
|
+
|
|
651
|
+
Much less than a namespace based setup, because a page never downloads a catalogue it does not render. Astro pages are rendered at build time, so they ship translated HTML and no dictionary at all; only the islands receive one. The build time compiler resolves the content calls to the exact entries a component uses, and [dynamic dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dynamic_dictionaries/index.md) split the rest per locale. Measured against the usual alternatives, Intlayer reduces bundle and page size by up to 50%. See [bundle optimization](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/bundle_optimization.md) and the [benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/benchmark/index.md).
|
|
652
|
+
|
|
653
|
+
</Question>
|
|
654
|
+
|
|
655
|
+
<Question title="Can I migrate from `i18next` or a hand written dictionary without rewriting my components?">
|
|
656
|
+
|
|
657
|
+
Largely. Follow the [i18next migration guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/migration_from_i18next_to_intlayer.md) to move the content over. You can also migrate gradually: the [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your existing JSON catalogues as the source of truth and generates Intlayer dictionaries from them, so both layers stay in sync while you move components across one at a time.
|
|
658
|
+
|
|
659
|
+
</Question>
|
|
660
|
+
|
|
661
|
+
<Question title="Can I keep my existing JSON translation files?">
|
|
662
|
+
|
|
663
|
+
Yes. The [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your `/messages/{locale}/{namespace}.json` files as the source of truth and generates Intlayer dictionaries from them, in both directions. A [sync PO plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-po.md) does the same for gettext catalogues, and [per locale files](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/per_locale_file.md) let you split content by language instead of grouping locales in one file.
|
|
664
|
+
|
|
665
|
+
</Question>
|
|
666
|
+
|
|
667
|
+
<Question title="Do I have to move my content key by key?">
|
|
668
|
+
|
|
669
|
+
No. Run `npx intlayer extract` and Intlayer reads your components, pulls the user facing strings out and writes a `.content` file next to each one, so you review a diff instead of copying strings into a catalogue one at a time. Step 15 of this guide walks through it.
|
|
670
|
+
|
|
671
|
+
For a fully automated pipeline, the [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compiler.md) does the same at build time: it scans your JSX, TSX, Vue and Svelte source on every change, generates the dictionaries and keeps them in sync through hot module replacement, so there are no keys to maintain by hand at all.
|
|
672
|
+
|
|
673
|
+
Two limits are worth knowing before you turn the compiler on. It works by static analysis, so strings that only exist at runtime, such as API error codes or CMS fields, stay out of reach. And it has to tell user facing text apart from application logic like `className="active"` or a status code, which needs a few annotations in a large codebase. The [extract command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/extract.md) avoids both by keeping you in the loop.
|
|
674
|
+
|
|
675
|
+
</Question>
|
|
676
|
+
|
|
677
|
+
<Question title="What editor and AI agent tooling is available?">
|
|
678
|
+
|
|
679
|
+
Five pieces, all optional:
|
|
680
|
+
|
|
681
|
+
- **[VS Code extension](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/vs_code_extension.md)**: jump from a `useIntlayer` key to the content file that declares it, extract content from a component, and run build, fill, test, push and pull from the command palette or a dedicated Intlayer tab.
|
|
682
|
+
- **[LSP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/lsp.md)**: the same awareness in any editor that speaks LSP, with go to definition, find all references, hover previews of a translated value, autocompletion of keys and fields, and a warning when a key is not declared anywhere. It also resolves `i18next`, `react-i18next`, `next-intl` and `use-intl` calls, which helps while you migrate.
|
|
683
|
+
- **[MCP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/mcp_server.md)**: exposes the Intlayer documentation and CLI to Cursor, VS Code, Claude Desktop, Claude Code and ChatGPT, so an assistant answers from current docs instead of guessing, and can run commands such as `intlayer fill` itself.
|
|
684
|
+
- **[Agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/agent_skills.md)**: focused skills such as `intlayer-config`, `intlayer-cli` and `intlayer-content`, plus one per framework, that teach an agent your routing setup and the content node types.
|
|
685
|
+
- **[ESLint plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/eslint.md)**: `no-raw-text` flags hardcoded strings, with further rules for static dictionary keys and unused content.
|
|
686
|
+
|
|
687
|
+
</Question>
|
|
688
|
+
|
|
689
|
+
<Question title="Does Intlayer work inside Astro islands?">
|
|
690
|
+
|
|
691
|
+
Yes. `astro-intlayer` covers the `.astro` side, and each island framework has its own binding, so an island receives the active locale from the page instead of resolving it again. Dedicated guides exist for [Astro + React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_astro_react.md), [Astro + Vue](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_astro_vue.md) and [Astro + Svelte](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_with_astro_svelte.md), among others.
|
|
692
|
+
|
|
693
|
+
</Question>
|
|
694
|
+
|
|
695
|
+
<Question title="Does the translated content ship as static HTML?">
|
|
696
|
+
|
|
697
|
+
Yes. Astro renders pages at build time by default, and Intlayer resolves content during that render, so localized pages are plain static HTML. Only islands that need to switch locale at runtime receive a dictionary, and only for the locale they render.
|
|
698
|
+
|
|
699
|
+
</Question>
|
|
700
|
+
|
|
701
|
+
<Question title="How do I set up localized routing and a locale switcher?">
|
|
702
|
+
|
|
703
|
+
Step 6 and step 7 of this guide cover it. `routing.mode` controls whether the default locale is prefixed (`"prefix-no-default"`), whether every locale is (`"prefix-all"`), or whether the locale lives outside the path (`"no-prefix"` or `"search-params"`). `getLocalizedUrl` rewrites the current path into the target language so a switcher keeps the reader on the same page.
|
|
704
|
+
|
|
705
|
+
</Question>
|
|
706
|
+
|
|
707
|
+
<Question title="How do I generate a localized sitemap and hreflang tags?">
|
|
708
|
+
|
|
709
|
+
Step 8 covers `sitemap.xml` and `robots.txt`. `getMultilingualUrls` builds the alternates for every declared locale, including `x-default`, which is what search engines use to serve the right language version of a page.
|
|
710
|
+
|
|
711
|
+
</Question>
|
|
712
|
+
|
|
713
|
+
<Question title="How do I translate an Astro site automatically with AI?">
|
|
714
|
+
|
|
715
|
+
Run `npx intlayer fill`. It fills missing translations with the LLM of your choice, using your own provider and API key, and `--git-diff` limits the run to the content changed on the branch. See the [fill command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/fill.md) and [CI/CD integration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/CI_CD.md).
|
|
716
|
+
|
|
717
|
+
</Question>
|
|
718
|
+
|
|
719
|
+
<Question title="Does Intlayer support plurals, gender and Markdown content?">
|
|
720
|
+
|
|
721
|
+
Yes: [plural forms](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/plurial.md), [gender based content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/gender.md), conditions, [insertions](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/insertion.md) and [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/markdown.md), which is convenient in Astro for long form pages. [Formatters](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/formatters.md) handle numbers, dates and currencies.
|
|
722
|
+
|
|
723
|
+
</Question>
|
|
724
|
+
|
|
725
|
+
<Question title="How can translators edit the content without touching the code?">
|
|
726
|
+
|
|
727
|
+
Through the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md), which runs on your own infrastructure and lets anyone edit text in place on the running app, or the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md), which externalizes content so it can change without a deployment.
|
|
728
|
+
|
|
729
|
+
</Question>
|
|
730
|
+
|
|
731
|
+
<Question title="Is Intlayer free and open source?">
|
|
732
|
+
|
|
733
|
+
Yes, under the Apache 2.0 licence, commercial use included. The hosted CMS is an optional paid service that can also be [self hosted](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/self_hosting.md).
|
|
734
|
+
|
|
735
|
+
</Question>
|
|
736
|
+
|
|
737
|
+
</FAQ>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-24
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Astro + Lit i18n - Complete guide to translate your app"
|
|
5
5
|
description: "No more i18next. The 2026 guide to building a multilingual (i18n) Astro + Lit app. Translate with AI agents and optimise bundle size, SEO and performances."
|
|
6
6
|
keywords:
|
|
@@ -65,7 +65,6 @@ author: aymericzip
|
|
|
65
65
|
Compared to main solutions like `astro-i18n` or `i18next`, Intlayer is a solution that comes with integrated optimizations such as:
|
|
66
66
|
|
|
67
67
|
<AccordionGroup>
|
|
68
|
-
|
|
69
68
|
<Accordion header="Full Astro coverage">
|
|
70
69
|
|
|
71
70
|
Intlayer is optimized to work perfectly with Astro by offering **multilingual routing**, **sitemap**, and all the features needed for scaling internationalization (i18n).
|
|
@@ -643,8 +642,6 @@ bun run build # Or bun run dev
|
|
|
643
642
|
</Tab>
|
|
644
643
|
</Tabs>
|
|
645
644
|
|
|
646
|
-
---
|
|
647
|
-
|
|
648
645
|
</Step>
|
|
649
646
|
|
|
650
647
|
</Steps>
|
|
@@ -704,3 +701,114 @@ For more information on using the extension, refer to the [VS Code Extension doc
|
|
|
704
701
|
### Deepen Your Knowledge
|
|
705
702
|
|
|
706
703
|
If you want to learn more, you can also implement the [Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md) or use the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md) to externalise your content.
|
|
704
|
+
|
|
705
|
+
## Frequently Asked Questions
|
|
706
|
+
|
|
707
|
+
<FAQ>
|
|
708
|
+
|
|
709
|
+
<Question title="What are the different solutions available to internationalize an Astro site with Lit islands?">
|
|
710
|
+
|
|
711
|
+
Astro's built-in `i18n` option handles locale prefixes and redirects but not the content itself, so you still need a message layer, and an island adds a second problem: the island runs Lit, not Astro.
|
|
712
|
+
|
|
713
|
+
- **Astro `i18n` plus hand written dictionaries**, with **`@lit/localize`** inside the island: two content sources to keep in sync, and no shared typing between them.
|
|
714
|
+
- **`Intlayer`**: one content layer for both. `astro-intlayer` covers the `.astro` pages and `lit-intlayer` covers the Lit islands, reading the same declarations.
|
|
715
|
+
|
|
716
|
+
Declaring a label once and using it in both a static page and an interactive island is the reason to pick a single content layer here. See [why Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/interest_of_intlayer.md).
|
|
717
|
+
|
|
718
|
+
</Question>
|
|
719
|
+
|
|
720
|
+
<Question title="How much does i18n add to my Astro bundle size?">
|
|
721
|
+
|
|
722
|
+
Much less than a namespace based setup, because a page never downloads a catalogue it does not render. Astro pages are rendered at build time, so they ship translated HTML and no dictionary at all; only the islands receive one. The build time compiler resolves the content calls to the exact entries a component uses, and [dynamic dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dynamic_dictionaries/index.md) split the rest per locale. Measured against the usual alternatives, Intlayer reduces bundle and page size by up to 50%. See [bundle optimization](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/bundle_optimization.md) and the [benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/benchmark/index.md).
|
|
723
|
+
|
|
724
|
+
</Question>
|
|
725
|
+
|
|
726
|
+
<Question title="Can I migrate from `@lit/localize` without rewriting my components?">
|
|
727
|
+
|
|
728
|
+
Largely. Follow the [compat adapters overview](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compat/index.md) to move the content over. You can also migrate gradually: the [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your existing JSON catalogues as the source of truth and generates Intlayer dictionaries from them, so both layers stay in sync while you move components across one at a time.
|
|
729
|
+
|
|
730
|
+
</Question>
|
|
731
|
+
|
|
732
|
+
<Question title="Can I keep my existing JSON translation files?">
|
|
733
|
+
|
|
734
|
+
Yes. The [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your `/messages/{locale}/{namespace}.json` files as the source of truth and generates Intlayer dictionaries from them, in both directions. A [sync PO plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-po.md) does the same for gettext catalogues, and [per locale files](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/per_locale_file.md) let you split content by language instead of grouping locales in one file.
|
|
735
|
+
|
|
736
|
+
</Question>
|
|
737
|
+
|
|
738
|
+
<Question title="Do I have to move my content key by key?">
|
|
739
|
+
|
|
740
|
+
No. Run `npx intlayer extract` and Intlayer reads your components, pulls the user facing strings out and writes a `.content` file next to each one, so you review a diff instead of copying strings into a catalogue one at a time. Step 15 of this guide walks through it.
|
|
741
|
+
|
|
742
|
+
For a fully automated pipeline, the [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compiler.md) does the same at build time: it scans your JSX, TSX, Vue and Svelte source on every change, generates the dictionaries and keeps them in sync through hot module replacement, so there are no keys to maintain by hand at all.
|
|
743
|
+
|
|
744
|
+
Two limits are worth knowing before you turn the compiler on. It works by static analysis, so strings that only exist at runtime, such as API error codes or CMS fields, stay out of reach. And it has to tell user facing text apart from application logic like `className="active"` or a status code, which needs a few annotations in a large codebase. The [extract command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/extract.md) avoids both by keeping you in the loop.
|
|
745
|
+
|
|
746
|
+
</Question>
|
|
747
|
+
|
|
748
|
+
<Question title="What editor and AI agent tooling is available?">
|
|
749
|
+
|
|
750
|
+
Five pieces, all optional:
|
|
751
|
+
|
|
752
|
+
- **[VS Code extension](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/vs_code_extension.md)**: jump from a `useIntlayer` key to the content file that declares it, extract content from a component, and run build, fill, test, push and pull from the command palette or a dedicated Intlayer tab.
|
|
753
|
+
- **[LSP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/lsp.md)**: the same awareness in any editor that speaks LSP, with go to definition, find all references, hover previews of a translated value, autocompletion of keys and fields, and a warning when a key is not declared anywhere. It also resolves `i18next`, `react-i18next`, `next-intl` and `use-intl` calls, which helps while you migrate.
|
|
754
|
+
- **[MCP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/mcp_server.md)**: exposes the Intlayer documentation and CLI to Cursor, VS Code, Claude Desktop, Claude Code and ChatGPT, so an assistant answers from current docs instead of guessing, and can run commands such as `intlayer fill` itself.
|
|
755
|
+
- **[Agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/agent_skills.md)**: focused skills such as `intlayer-config`, `intlayer-cli` and `intlayer-content`, plus one per framework, that teach an agent your routing setup and the content node types.
|
|
756
|
+
- **[ESLint plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/eslint.md)**: `no-raw-text` flags hardcoded strings, with further rules for static dictionary keys and unused content.
|
|
757
|
+
|
|
758
|
+
</Question>
|
|
759
|
+
|
|
760
|
+
<Question title="Do I need a separate i18n library inside my Lit island?">
|
|
761
|
+
|
|
762
|
+
No. `lit-intlayer` reads the same dictionaries as the Astro side, so you do not install `@lit/localize` alongside it. Step 6 shows the island component receiving the active locale from the page instead of resolving it again.
|
|
763
|
+
|
|
764
|
+
</Question>
|
|
765
|
+
|
|
766
|
+
<Question title="How does the island know which locale the page is rendering?">
|
|
767
|
+
|
|
768
|
+
The Astro page passes it down as a prop and the Intlayer provider in the island picks it up, so the island hydrates in the same language the server rendered. This is what prevents the flash of default language you get when an island detects the locale on its own in the browser.
|
|
769
|
+
|
|
770
|
+
</Question>
|
|
771
|
+
|
|
772
|
+
<Question title="Does the translated content ship as static HTML?">
|
|
773
|
+
|
|
774
|
+
Yes for the Astro parts, which are rendered at build time, so localized pages are plain static HTML that crawlers read without executing JavaScript. Only the islands receive a dictionary, and only for the locale they render.
|
|
775
|
+
|
|
776
|
+
</Question>
|
|
777
|
+
|
|
778
|
+
<Question title="How do I set up localized routing and a locale switcher?">
|
|
779
|
+
|
|
780
|
+
Step 7 covers the switcher. `routing.mode` decides the URL scheme: `"prefix-no-default"` (the default, `/about` and `/fr/about`), `"prefix-all"`, `"no-prefix"` or `"search-params"`, and `routing.domains` maps a locale to its own domain. `getLocalizedUrl` rewrites the current path so switching language keeps the reader on the same page. See the [configuration reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/configuration.md).
|
|
781
|
+
|
|
782
|
+
</Question>
|
|
783
|
+
|
|
784
|
+
<Question title="How do I generate a localized sitemap and hreflang tags?">
|
|
785
|
+
|
|
786
|
+
Step 8 covers `sitemap.xml` and `robots.txt`. `getMultilingualUrls` builds the alternates for every declared locale, including `x-default`, which is what search engines use to serve the right language version.
|
|
787
|
+
|
|
788
|
+
</Question>
|
|
789
|
+
|
|
790
|
+
<Question title="How do I translate the site automatically with AI?">
|
|
791
|
+
|
|
792
|
+
Run `npx intlayer fill`. It fills missing translations with the LLM of your choice, using your own provider and API key, and `--git-diff` limits the run to the content changed on the branch. See the [fill command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/fill.md) and [CI/CD integration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/CI_CD.md).
|
|
793
|
+
|
|
794
|
+
</Question>
|
|
795
|
+
|
|
796
|
+
<Question title="Does Intlayer support plurals, gender and rich text?">
|
|
797
|
+
|
|
798
|
+
Yes: [plural forms](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/plurial.md), [gender based content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/gender.md), conditions, [insertions](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/insertion.md), [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/markdown.md) for long form text, and [formatters](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/formatters.md) for numbers, dates and currencies.
|
|
799
|
+
|
|
800
|
+
</Question>
|
|
801
|
+
|
|
802
|
+
<Question title="How can translators edit the content without touching the code?">
|
|
803
|
+
|
|
804
|
+
Through the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md), which runs on your own infrastructure and lets anyone edit text in place on the running app, or the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md), which externalizes content so it can change without a deployment.
|
|
805
|
+
|
|
806
|
+
</Question>
|
|
807
|
+
|
|
808
|
+
<Question title="Is Intlayer free and open source?">
|
|
809
|
+
|
|
810
|
+
Yes, under the Apache 2.0 licence, commercial use included. The hosted CMS is an optional paid service that can also be [self hosted](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/self_hosting.md).
|
|
811
|
+
|
|
812
|
+
</Question>
|
|
813
|
+
|
|
814
|
+
</FAQ>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-04-24
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-30
|
|
4
4
|
title: "Astro + Preact i18n - Complete guide to translate your app"
|
|
5
5
|
description: "No more i18next. The 2026 guide to building a multilingual (i18n) Astro + Preact app. Translate with AI agents and optimise bundle size, SEO and performances."
|
|
6
6
|
keywords:
|
|
@@ -64,7 +64,6 @@ author: aymericzip
|
|
|
64
64
|
Compared to main solutions like `astro-i18n` or `i18next`, Intlayer is a solution that comes with integrated optimizations such as:
|
|
65
65
|
|
|
66
66
|
<AccordionGroup>
|
|
67
|
-
|
|
68
67
|
<Accordion header="Full Astro coverage">
|
|
69
68
|
|
|
70
69
|
Intlayer is optimized to work perfectly with Astro by offering **multilingual routing**, **sitemap**, and all the features needed for scaling internationalization (i18n).
|
|
@@ -598,8 +597,6 @@ bun run build # Or bun run dev
|
|
|
598
597
|
</Tab>
|
|
599
598
|
</Tabs>
|
|
600
599
|
|
|
601
|
-
---
|
|
602
|
-
|
|
603
600
|
</Step>
|
|
604
601
|
|
|
605
602
|
</Steps>
|
|
@@ -659,3 +656,114 @@ For more information on using the extension, refer to the [VS Code Extension doc
|
|
|
659
656
|
### Deepen Your Knowledge
|
|
660
657
|
|
|
661
658
|
If you want to learn more, you can also implement the [Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md) or use the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md) to externalise your content.
|
|
659
|
+
|
|
660
|
+
## Frequently Asked Questions
|
|
661
|
+
|
|
662
|
+
<FAQ>
|
|
663
|
+
|
|
664
|
+
<Question title="What are the different solutions available to internationalize an Astro site with Preact islands?">
|
|
665
|
+
|
|
666
|
+
Astro's built-in `i18n` option handles locale prefixes and redirects but not the content itself, so you still need a message layer, and an island adds a second problem: the island runs Preact, not Astro.
|
|
667
|
+
|
|
668
|
+
- **Astro `i18n` plus hand written dictionaries**, with **`preact-i18n`** inside the island: two content sources to keep in sync, and no shared typing between them.
|
|
669
|
+
- **`Intlayer`**: one content layer for both. `astro-intlayer` covers the `.astro` pages and `preact-intlayer` covers the Preact islands, reading the same declarations.
|
|
670
|
+
|
|
671
|
+
Declaring a label once and using it in both a static page and an interactive island is the reason to pick a single content layer here. See [why Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/interest_of_intlayer.md).
|
|
672
|
+
|
|
673
|
+
</Question>
|
|
674
|
+
|
|
675
|
+
<Question title="How much does i18n add to my Astro bundle size?">
|
|
676
|
+
|
|
677
|
+
Much less than a namespace based setup, because a page never downloads a catalogue it does not render. Astro pages are rendered at build time, so they ship translated HTML and no dictionary at all; only the islands receive one. The build time compiler resolves the content calls to the exact entries a component uses, and [dynamic dictionaries](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dynamic_dictionaries/index.md) split the rest per locale. Measured against the usual alternatives, Intlayer reduces bundle and page size by up to 50%. See [bundle optimization](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/bundle_optimization.md) and the [benchmark](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/benchmark/index.md).
|
|
678
|
+
|
|
679
|
+
</Question>
|
|
680
|
+
|
|
681
|
+
<Question title="Can I migrate from `preact-i18n` or `react-i18next` without rewriting my components?">
|
|
682
|
+
|
|
683
|
+
Largely. Follow the [react-i18next migration guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/migration_from_react-i18next_to_intlayer.md) to move the content over. You can also migrate gradually: the [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your existing JSON catalogues as the source of truth and generates Intlayer dictionaries from them, so both layers stay in sync while you move components across one at a time.
|
|
684
|
+
|
|
685
|
+
</Question>
|
|
686
|
+
|
|
687
|
+
<Question title="Can I keep my existing JSON translation files?">
|
|
688
|
+
|
|
689
|
+
Yes. The [sync JSON plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-json.md) keeps your `/messages/{locale}/{namespace}.json` files as the source of truth and generates Intlayer dictionaries from them, in both directions. A [sync PO plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/plugins/sync-po.md) does the same for gettext catalogues, and [per locale files](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/per_locale_file.md) let you split content by language instead of grouping locales in one file.
|
|
690
|
+
|
|
691
|
+
</Question>
|
|
692
|
+
|
|
693
|
+
<Question title="Do I have to move my content key by key?">
|
|
694
|
+
|
|
695
|
+
No. Run `npx intlayer extract` and Intlayer reads your components, pulls the user facing strings out and writes a `.content` file next to each one, so you review a diff instead of copying strings into a catalogue one at a time. Step 15 of this guide walks through it.
|
|
696
|
+
|
|
697
|
+
For a fully automated pipeline, the [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/compiler.md) does the same at build time: it scans your JSX, TSX, Vue and Svelte source on every change, generates the dictionaries and keeps them in sync through hot module replacement, so there are no keys to maintain by hand at all.
|
|
698
|
+
|
|
699
|
+
Two limits are worth knowing before you turn the compiler on. It works by static analysis, so strings that only exist at runtime, such as API error codes or CMS fields, stay out of reach. And it has to tell user facing text apart from application logic like `className="active"` or a status code, which needs a few annotations in a large codebase. The [extract command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/extract.md) avoids both by keeping you in the loop.
|
|
700
|
+
|
|
701
|
+
</Question>
|
|
702
|
+
|
|
703
|
+
<Question title="What editor and AI agent tooling is available?">
|
|
704
|
+
|
|
705
|
+
Five pieces, all optional:
|
|
706
|
+
|
|
707
|
+
- **[VS Code extension](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/vs_code_extension.md)**: jump from a `useIntlayer` key to the content file that declares it, extract content from a component, and run build, fill, test, push and pull from the command palette or a dedicated Intlayer tab.
|
|
708
|
+
- **[LSP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/lsp.md)**: the same awareness in any editor that speaks LSP, with go to definition, find all references, hover previews of a translated value, autocompletion of keys and fields, and a warning when a key is not declared anywhere. It also resolves `i18next`, `react-i18next`, `next-intl` and `use-intl` calls, which helps while you migrate.
|
|
709
|
+
- **[MCP server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/mcp_server.md)**: exposes the Intlayer documentation and CLI to Cursor, VS Code, Claude Desktop, Claude Code and ChatGPT, so an assistant answers from current docs instead of guessing, and can run commands such as `intlayer fill` itself.
|
|
710
|
+
- **[Agent skills](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/agent_skills.md)**: focused skills such as `intlayer-config`, `intlayer-cli` and `intlayer-content`, plus one per framework, that teach an agent your routing setup and the content node types.
|
|
711
|
+
- **[ESLint plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/eslint.md)**: `no-raw-text` flags hardcoded strings, with further rules for static dictionary keys and unused content.
|
|
712
|
+
|
|
713
|
+
</Question>
|
|
714
|
+
|
|
715
|
+
<Question title="Do I need a separate i18n library inside my Preact island?">
|
|
716
|
+
|
|
717
|
+
No. `preact-intlayer` reads the same dictionaries as the Astro side, so you do not install `preact-i18n` alongside it. Step 6 shows the island component receiving the active locale from the page instead of resolving it again.
|
|
718
|
+
|
|
719
|
+
</Question>
|
|
720
|
+
|
|
721
|
+
<Question title="How does the island know which locale the page is rendering?">
|
|
722
|
+
|
|
723
|
+
The Astro page passes it down as a prop and the Intlayer provider in the island picks it up, so the island hydrates in the same language the server rendered. This is what prevents the flash of default language you get when an island detects the locale on its own in the browser.
|
|
724
|
+
|
|
725
|
+
</Question>
|
|
726
|
+
|
|
727
|
+
<Question title="Does the translated content ship as static HTML?">
|
|
728
|
+
|
|
729
|
+
Yes for the Astro parts, which are rendered at build time, so localized pages are plain static HTML that crawlers read without executing JavaScript. Only the islands receive a dictionary, and only for the locale they render.
|
|
730
|
+
|
|
731
|
+
</Question>
|
|
732
|
+
|
|
733
|
+
<Question title="How do I set up localized routing and a locale switcher?">
|
|
734
|
+
|
|
735
|
+
Step 7 covers the switcher. `routing.mode` decides the URL scheme: `"prefix-no-default"` (the default, `/about` and `/fr/about`), `"prefix-all"`, `"no-prefix"` or `"search-params"`, and `routing.domains` maps a locale to its own domain. `getLocalizedUrl` rewrites the current path so switching language keeps the reader on the same page. See the [configuration reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/configuration.md).
|
|
736
|
+
|
|
737
|
+
</Question>
|
|
738
|
+
|
|
739
|
+
<Question title="How do I generate a localized sitemap and hreflang tags?">
|
|
740
|
+
|
|
741
|
+
Step 8 covers `sitemap.xml` and `robots.txt`. `getMultilingualUrls` builds the alternates for every declared locale, including `x-default`, which is what search engines use to serve the right language version.
|
|
742
|
+
|
|
743
|
+
</Question>
|
|
744
|
+
|
|
745
|
+
<Question title="How do I translate the site automatically with AI?">
|
|
746
|
+
|
|
747
|
+
Run `npx intlayer fill`. It fills missing translations with the LLM of your choice, using your own provider and API key, and `--git-diff` limits the run to the content changed on the branch. See the [fill command](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/cli/fill.md) and [CI/CD integration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/CI_CD.md).
|
|
748
|
+
|
|
749
|
+
</Question>
|
|
750
|
+
|
|
751
|
+
<Question title="Does Intlayer support plurals, gender and rich text?">
|
|
752
|
+
|
|
753
|
+
Yes: [plural forms](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/plurial.md), [gender based content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/gender.md), conditions, [insertions](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/insertion.md), [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/dictionary/markdown.md) for long form text, and [formatters](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/formatters.md) for numbers, dates and currencies.
|
|
754
|
+
|
|
755
|
+
</Question>
|
|
756
|
+
|
|
757
|
+
<Question title="How can translators edit the content without touching the code?">
|
|
758
|
+
|
|
759
|
+
Through the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_visual_editor.md), which runs on your own infrastructure and lets anyone edit text in place on the running app, or the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md), which externalizes content so it can change without a deployment.
|
|
760
|
+
|
|
761
|
+
</Question>
|
|
762
|
+
|
|
763
|
+
<Question title="Is Intlayer free and open source?">
|
|
764
|
+
|
|
765
|
+
Yes, under the Apache 2.0 licence, commercial use included. The hosted CMS is an optional paid service that can also be [self hosted](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/self_hosting.md).
|
|
766
|
+
|
|
767
|
+
</Question>
|
|
768
|
+
|
|
769
|
+
</FAQ>
|