@intlayer/docs 9.0.0-canary.10 → 9.0.0-canary.12
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/blog/ar/internationalization_and_SEO.md +6 -0
- package/blog/ar/intlayer_with_i18next.md +8 -4
- package/blog/ar/intlayer_with_next-i18next.md +8 -4
- package/blog/ar/intlayer_with_next-intl.md +8 -4
- package/blog/ar/intlayer_with_react-i18next.md +8 -4
- package/blog/ar/intlayer_with_react-intl.md +8 -4
- package/blog/ar/intlayer_with_vue-i18n.md +8 -4
- package/blog/ar/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/de/internationalization_and_SEO.md +6 -0
- package/blog/de/intlayer_with_i18next.md +8 -4
- package/blog/de/intlayer_with_next-i18next.md +8 -4
- package/blog/de/intlayer_with_next-intl.md +8 -4
- package/blog/de/intlayer_with_react-i18next.md +8 -4
- package/blog/de/intlayer_with_react-intl.md +8 -4
- package/blog/de/intlayer_with_vue-i18n.md +8 -4
- package/blog/de/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/en/internationalization_and_SEO.md +6 -0
- package/blog/en/intlayer_with_i18next.md +8 -4
- package/blog/en/intlayer_with_next-i18next.md +8 -4
- package/blog/en/intlayer_with_next-intl.md +8 -4
- package/blog/en/intlayer_with_react-i18next.md +8 -4
- package/blog/en/intlayer_with_react-intl.md +8 -4
- package/blog/en/intlayer_with_vue-i18n.md +8 -4
- package/blog/en/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/en-GB/internationalization_and_SEO.md +6 -0
- package/blog/en-GB/intlayer_with_i18next.md +8 -4
- package/blog/en-GB/intlayer_with_next-i18next.md +8 -4
- package/blog/en-GB/intlayer_with_next-intl.md +8 -4
- package/blog/en-GB/intlayer_with_react-i18next.md +8 -4
- package/blog/en-GB/intlayer_with_react-intl.md +8 -4
- package/blog/en-GB/intlayer_with_vue-i18n.md +8 -4
- package/blog/en-GB/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/es/internationalization_and_SEO.md +6 -0
- package/blog/es/intlayer_with_i18next.md +8 -4
- package/blog/es/intlayer_with_next-i18next.md +8 -4
- package/blog/es/intlayer_with_next-intl.md +8 -4
- package/blog/es/intlayer_with_react-i18next.md +8 -4
- package/blog/es/intlayer_with_react-intl.md +8 -4
- package/blog/es/intlayer_with_vue-i18n.md +8 -4
- package/blog/es/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/fr/internationalization_and_SEO.md +6 -0
- package/blog/fr/intlayer_with_i18next.md +8 -4
- package/blog/fr/intlayer_with_next-i18next.md +8 -4
- package/blog/fr/intlayer_with_next-intl.md +8 -4
- package/blog/fr/intlayer_with_react-i18next.md +8 -4
- package/blog/fr/intlayer_with_react-intl.md +8 -4
- package/blog/fr/intlayer_with_vue-i18n.md +8 -4
- package/blog/fr/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/hi/internationalization_and_SEO.md +6 -0
- package/blog/hi/intlayer_with_i18next.md +8 -4
- package/blog/hi/intlayer_with_next-i18next.md +8 -4
- package/blog/hi/intlayer_with_next-intl.md +8 -4
- package/blog/hi/intlayer_with_react-i18next.md +8 -4
- package/blog/hi/intlayer_with_react-intl.md +8 -4
- package/blog/hi/intlayer_with_vue-i18n.md +8 -4
- package/blog/hi/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/id/internationalization_and_SEO.md +6 -0
- package/blog/id/intlayer_with_i18next.md +8 -4
- package/blog/id/intlayer_with_next-i18next.md +8 -4
- package/blog/id/intlayer_with_next-intl.md +8 -4
- package/blog/id/intlayer_with_react-i18next.md +8 -4
- package/blog/id/intlayer_with_react-intl.md +8 -4
- package/blog/id/intlayer_with_vue-i18n.md +8 -4
- package/blog/id/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/it/internationalization_and_SEO.md +6 -0
- package/blog/it/intlayer_with_i18next.md +8 -4
- package/blog/it/intlayer_with_next-i18next.md +8 -4
- package/blog/it/intlayer_with_next-intl.md +8 -4
- package/blog/it/intlayer_with_react-i18next.md +8 -4
- package/blog/it/intlayer_with_react-intl.md +8 -4
- package/blog/it/intlayer_with_vue-i18n.md +8 -4
- package/blog/it/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/ja/internationalization_and_SEO.md +6 -0
- package/blog/ja/intlayer_with_i18next.md +8 -4
- package/blog/ja/intlayer_with_next-i18next.md +8 -4
- package/blog/ja/intlayer_with_next-intl.md +8 -4
- package/blog/ja/intlayer_with_react-i18next.md +8 -4
- package/blog/ja/intlayer_with_react-intl.md +8 -4
- package/blog/ja/intlayer_with_vue-i18n.md +8 -4
- package/blog/ja/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/ko/internationalization_and_SEO.md +6 -0
- package/blog/ko/intlayer_with_i18next.md +8 -4
- package/blog/ko/intlayer_with_next-i18next.md +8 -4
- package/blog/ko/intlayer_with_next-intl.md +8 -4
- package/blog/ko/intlayer_with_react-i18next.md +8 -4
- package/blog/ko/intlayer_with_react-intl.md +8 -4
- package/blog/ko/intlayer_with_vue-i18n.md +8 -4
- package/blog/ko/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/pl/internationalization_and_SEO.md +6 -0
- package/blog/pl/intlayer_with_i18next.md +8 -4
- package/blog/pl/intlayer_with_next-i18next.md +8 -4
- package/blog/pl/intlayer_with_next-intl.md +8 -4
- package/blog/pl/intlayer_with_react-i18next.md +8 -4
- package/blog/pl/intlayer_with_react-intl.md +8 -4
- package/blog/pl/intlayer_with_vue-i18n.md +8 -4
- package/blog/pl/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/pt/internationalization_and_SEO.md +6 -0
- package/blog/pt/intlayer_with_i18next.md +8 -4
- package/blog/pt/intlayer_with_next-i18next.md +8 -4
- package/blog/pt/intlayer_with_next-intl.md +8 -4
- package/blog/pt/intlayer_with_react-i18next.md +8 -4
- package/blog/pt/intlayer_with_react-intl.md +8 -4
- package/blog/pt/intlayer_with_vue-i18n.md +8 -4
- package/blog/pt/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/ru/internationalization_and_SEO.md +6 -0
- package/blog/ru/intlayer_with_i18next.md +8 -4
- package/blog/ru/intlayer_with_next-i18next.md +8 -4
- package/blog/ru/intlayer_with_next-intl.md +8 -4
- package/blog/ru/intlayer_with_react-i18next.md +8 -4
- package/blog/ru/intlayer_with_react-intl.md +8 -4
- package/blog/ru/intlayer_with_vue-i18n.md +8 -4
- package/blog/ru/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/tr/internationalization_and_SEO.md +6 -0
- package/blog/tr/intlayer_with_i18next.md +8 -4
- package/blog/tr/intlayer_with_next-i18next.md +8 -4
- package/blog/tr/intlayer_with_next-intl.md +8 -4
- package/blog/tr/intlayer_with_react-i18next.md +8 -4
- package/blog/tr/intlayer_with_react-intl.md +8 -4
- package/blog/tr/intlayer_with_vue-i18n.md +8 -4
- package/blog/tr/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/uk/internationalization_and_SEO.md +6 -0
- package/blog/uk/intlayer_with_i18next.md +8 -4
- package/blog/uk/intlayer_with_next-i18next.md +8 -4
- package/blog/uk/intlayer_with_next-intl.md +8 -4
- package/blog/uk/intlayer_with_react-i18next.md +8 -4
- package/blog/uk/intlayer_with_react-intl.md +8 -4
- package/blog/uk/intlayer_with_vue-i18n.md +8 -4
- package/blog/uk/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/vi/internationalization_and_SEO.md +6 -0
- package/blog/vi/intlayer_with_i18next.md +8 -4
- package/blog/vi/intlayer_with_next-i18next.md +8 -4
- package/blog/vi/intlayer_with_next-intl.md +8 -4
- package/blog/vi/intlayer_with_react-i18next.md +8 -4
- package/blog/vi/intlayer_with_react-intl.md +8 -4
- package/blog/vi/intlayer_with_vue-i18n.md +8 -4
- package/blog/vi/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/zh/internationalization_and_SEO.md +6 -0
- package/blog/zh/nextjs-multilingual-seo-comparison.md +6 -0
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.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/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +16 -0
- package/docs/ar/cli/scan.md +2 -2
- package/docs/ar/how_works_intlayer.md +2 -2
- package/docs/ar/intlayer_CMS.md +16 -1
- package/docs/ar/intlayer_with_adonisjs.md +8 -4
- package/docs/ar/intlayer_with_analog.md +8 -4
- package/docs/ar/intlayer_with_angular_19.md +8 -4
- package/docs/ar/intlayer_with_angular_21.md +8 -4
- package/docs/ar/intlayer_with_astro_lit.md +11 -7
- package/docs/ar/intlayer_with_astro_preact.md +8 -4
- package/docs/ar/intlayer_with_astro_react.md +8 -4
- package/docs/ar/intlayer_with_astro_solid.md +8 -4
- package/docs/ar/intlayer_with_astro_svelte.md +8 -4
- package/docs/ar/intlayer_with_astro_vanilla.md +8 -4
- package/docs/ar/intlayer_with_astro_vue.md +8 -4
- package/docs/ar/intlayer_with_create_react_app.md +8 -4
- package/docs/ar/intlayer_with_express.md +8 -4
- package/docs/ar/intlayer_with_fastify.md +8 -4
- package/docs/ar/intlayer_with_hono.md +8 -4
- package/docs/ar/intlayer_with_lynx+react.md +8 -4
- package/docs/ar/intlayer_with_nestjs.md +8 -4
- package/docs/ar/intlayer_with_next-i18next.md +8 -4
- package/docs/ar/intlayer_with_nextjs_14.md +8 -4
- package/docs/ar/intlayer_with_nextjs_15.md +10 -8
- package/docs/ar/intlayer_with_nextjs_16.md +10 -8
- package/docs/ar/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/ar/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/ar/intlayer_with_nuxt.md +9 -5
- package/docs/ar/intlayer_with_react_native+expo.md +8 -4
- package/docs/ar/intlayer_with_react_router_v7.md +9 -5
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +9 -5
- package/docs/ar/intlayer_with_svelte_kit.md +8 -4
- package/docs/ar/intlayer_with_tanstack+solid.md +9 -5
- package/docs/ar/intlayer_with_tanstack.md +10 -7
- package/docs/ar/intlayer_with_vite+lit.md +8 -4
- package/docs/ar/intlayer_with_vite+preact.md +9 -5
- package/docs/ar/intlayer_with_vite+react.md +9 -5
- package/docs/ar/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/ar/intlayer_with_vite+solid.md +9 -5
- package/docs/ar/intlayer_with_vite+svelte.md +8 -4
- package/docs/ar/intlayer_with_vite+vanilla.md +8 -4
- package/docs/ar/intlayer_with_vite+vue.md +9 -5
- package/docs/ar/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/ar/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/ar/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/ar/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/ar/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/ar/releases/v9.md +58 -19
- package/docs/ar/self_hosting.md +350 -0
- package/docs/bn/bundle_optimization.md +16 -0
- package/docs/bn/cli/scan.md +2 -2
- package/docs/bn/intlayer_CMS.md +570 -0
- package/docs/bn/intlayer_with_angular_21.md +8 -4
- package/docs/bn/intlayer_with_fastify.md +8 -4
- package/docs/bn/intlayer_with_hono.md +8 -4
- package/docs/bn/intlayer_with_vite+lit.md +8 -4
- package/docs/bn/intlayer_with_vite+vanilla.md +8 -4
- package/docs/bn/releases/v9.md +340 -0
- package/docs/cs/bundle_optimization.md +16 -0
- package/docs/cs/cli/scan.md +2 -2
- package/docs/cs/intlayer_with_angular_21.md +8 -4
- package/docs/cs/intlayer_with_fastify.md +8 -4
- package/docs/cs/intlayer_with_hono.md +8 -4
- package/docs/cs/intlayer_with_vite+lit.md +8 -4
- package/docs/cs/intlayer_with_vite+vanilla.md +8 -4
- package/docs/cs/releases/v9.md +340 -0
- package/docs/de/bundle_optimization.md +16 -0
- package/docs/de/cli/scan.md +2 -2
- package/docs/de/how_works_intlayer.md +2 -2
- package/docs/de/intlayer_CMS.md +117 -1
- package/docs/de/intlayer_with_adonisjs.md +8 -4
- package/docs/de/intlayer_with_analog.md +8 -4
- package/docs/de/intlayer_with_angular_19.md +8 -4
- package/docs/de/intlayer_with_angular_21.md +8 -4
- package/docs/de/intlayer_with_astro_lit.md +11 -7
- package/docs/de/intlayer_with_astro_preact.md +8 -4
- package/docs/de/intlayer_with_astro_react.md +8 -4
- package/docs/de/intlayer_with_astro_solid.md +8 -4
- package/docs/de/intlayer_with_astro_svelte.md +8 -4
- package/docs/de/intlayer_with_astro_vanilla.md +8 -4
- package/docs/de/intlayer_with_astro_vue.md +8 -4
- package/docs/de/intlayer_with_create_react_app.md +8 -4
- package/docs/de/intlayer_with_express.md +8 -4
- package/docs/de/intlayer_with_fastify.md +8 -4
- package/docs/de/intlayer_with_hono.md +8 -4
- package/docs/de/intlayer_with_lynx+react.md +8 -4
- package/docs/de/intlayer_with_nestjs.md +8 -4
- package/docs/de/intlayer_with_next-i18next.md +8 -4
- package/docs/de/intlayer_with_nextjs_14.md +8 -4
- package/docs/de/intlayer_with_nextjs_15.md +10 -8
- package/docs/de/intlayer_with_nextjs_16.md +10 -8
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/de/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/de/intlayer_with_nuxt.md +9 -5
- package/docs/de/intlayer_with_react_native+expo.md +8 -4
- package/docs/de/intlayer_with_react_router_v7.md +9 -5
- package/docs/de/intlayer_with_svelte_kit.md +8 -4
- package/docs/de/intlayer_with_tanstack+solid.md +9 -5
- package/docs/de/intlayer_with_tanstack.md +10 -7
- package/docs/de/intlayer_with_vite+lit.md +8 -4
- package/docs/de/intlayer_with_vite+preact.md +9 -5
- package/docs/de/intlayer_with_vite+react.md +9 -5
- package/docs/de/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/de/intlayer_with_vite+solid.md +9 -5
- package/docs/de/intlayer_with_vite+vanilla.md +8 -4
- package/docs/de/intlayer_with_vite+vue.md +9 -5
- package/docs/de/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/de/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/de/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/de/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/de/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/de/releases/v9.md +61 -19
- package/docs/de/self_hosting.md +350 -0
- package/docs/en/bundle_optimization.md +16 -0
- package/docs/en/cli/scan.md +2 -2
- package/docs/en/how_works_intlayer.md +2 -2
- package/docs/en/intlayer_CMS.md +171 -1
- package/docs/en/intlayer_with_adonisjs.md +8 -4
- package/docs/en/intlayer_with_analog.md +8 -4
- package/docs/en/intlayer_with_angular_19.md +8 -4
- package/docs/en/intlayer_with_angular_21.md +8 -4
- package/docs/en/intlayer_with_astro.md +8 -4
- package/docs/en/intlayer_with_astro_lit.md +11 -7
- package/docs/en/intlayer_with_astro_preact.md +8 -4
- package/docs/en/intlayer_with_astro_react.md +8 -4
- package/docs/en/intlayer_with_astro_solid.md +8 -4
- package/docs/en/intlayer_with_astro_svelte.md +8 -4
- package/docs/en/intlayer_with_astro_vanilla.md +8 -4
- package/docs/en/intlayer_with_astro_vue.md +8 -4
- package/docs/en/intlayer_with_create_react_app.md +8 -4
- package/docs/en/intlayer_with_express.md +8 -4
- package/docs/en/intlayer_with_fastify.md +8 -4
- package/docs/en/intlayer_with_hono.md +8 -4
- package/docs/en/intlayer_with_lynx+react.md +8 -4
- package/docs/en/intlayer_with_nestjs.md +8 -4
- package/docs/en/intlayer_with_next-i18next.md +8 -4
- package/docs/en/intlayer_with_nextjs_14.md +8 -4
- package/docs/en/intlayer_with_nextjs_15.md +9 -7
- package/docs/en/intlayer_with_nextjs_16.md +10 -8
- package/docs/en/intlayer_with_nextjs_compiler.md +10 -8
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/en/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/en/intlayer_with_nuxt.md +9 -5
- package/docs/en/intlayer_with_react_native+expo.md +8 -4
- package/docs/en/intlayer_with_react_router_v7.md +9 -5
- package/docs/en/intlayer_with_svelte_kit.md +8 -4
- package/docs/en/intlayer_with_tanstack+solid.md +9 -5
- package/docs/en/intlayer_with_tanstack.md +10 -7
- package/docs/en/intlayer_with_vite+lit.md +8 -4
- package/docs/en/intlayer_with_vite+preact.md +9 -5
- package/docs/en/intlayer_with_vite+react.md +9 -5
- package/docs/en/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/en/intlayer_with_vite+solid.md +9 -5
- package/docs/en/intlayer_with_vite+svelte.md +8 -4
- package/docs/en/intlayer_with_vite+vanilla.md +8 -4
- package/docs/en/intlayer_with_vite+vue.md +9 -5
- package/docs/en/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/en/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/en/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/en/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/en/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/en/releases/v9.md +45 -20
- package/docs/en/self_hosting.md +292 -0
- package/docs/en-GB/bundle_optimization.md +16 -0
- package/docs/en-GB/cli/scan.md +2 -2
- package/docs/en-GB/how_works_intlayer.md +2 -2
- package/docs/en-GB/intlayer_CMS.md +16 -1
- package/docs/en-GB/intlayer_with_adonisjs.md +8 -4
- package/docs/en-GB/intlayer_with_analog.md +8 -4
- package/docs/en-GB/intlayer_with_angular_19.md +8 -4
- package/docs/en-GB/intlayer_with_angular_21.md +8 -4
- package/docs/en-GB/intlayer_with_astro_lit.md +11 -7
- package/docs/en-GB/intlayer_with_astro_preact.md +8 -4
- package/docs/en-GB/intlayer_with_astro_react.md +8 -4
- package/docs/en-GB/intlayer_with_astro_solid.md +8 -4
- package/docs/en-GB/intlayer_with_astro_svelte.md +8 -4
- package/docs/en-GB/intlayer_with_astro_vanilla.md +8 -4
- package/docs/en-GB/intlayer_with_astro_vue.md +8 -4
- package/docs/en-GB/intlayer_with_create_react_app.md +16 -8
- package/docs/en-GB/intlayer_with_express.md +8 -4
- package/docs/en-GB/intlayer_with_fastify.md +8 -4
- package/docs/en-GB/intlayer_with_hono.md +8 -4
- package/docs/en-GB/intlayer_with_lynx+react.md +16 -8
- package/docs/en-GB/intlayer_with_nestjs.md +8 -4
- package/docs/en-GB/intlayer_with_next-i18next.md +8 -4
- package/docs/en-GB/intlayer_with_nextjs_14.md +8 -4
- package/docs/en-GB/intlayer_with_nextjs_15.md +10 -8
- package/docs/en-GB/intlayer_with_nextjs_16.md +10 -8
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/en-GB/intlayer_with_nuxt.md +9 -5
- package/docs/en-GB/intlayer_with_react_native+expo.md +8 -4
- package/docs/en-GB/intlayer_with_react_router_v7.md +9 -5
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +9 -5
- package/docs/en-GB/intlayer_with_svelte_kit.md +8 -4
- package/docs/en-GB/intlayer_with_tanstack+solid.md +9 -5
- package/docs/en-GB/intlayer_with_tanstack.md +10 -7
- package/docs/en-GB/intlayer_with_vite+lit.md +8 -4
- package/docs/en-GB/intlayer_with_vite+preact.md +9 -5
- package/docs/en-GB/intlayer_with_vite+react.md +9 -5
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/en-GB/intlayer_with_vite+solid.md +9 -5
- package/docs/en-GB/intlayer_with_vite+svelte.md +8 -4
- package/docs/en-GB/intlayer_with_vite+vanilla.md +8 -4
- package/docs/en-GB/intlayer_with_vite+vue.md +9 -5
- package/docs/en-GB/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/en-GB/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/en-GB/releases/v9.md +47 -20
- package/docs/en-GB/self_hosting.md +350 -0
- package/docs/es/bundle_optimization.md +16 -0
- package/docs/es/cli/scan.md +2 -2
- package/docs/es/how_works_intlayer.md +2 -2
- package/docs/es/intlayer_CMS.md +117 -1
- package/docs/es/intlayer_with_adonisjs.md +8 -4
- package/docs/es/intlayer_with_analog.md +8 -4
- package/docs/es/intlayer_with_angular_19.md +8 -4
- package/docs/es/intlayer_with_angular_21.md +8 -4
- package/docs/es/intlayer_with_astro_lit.md +11 -7
- package/docs/es/intlayer_with_astro_preact.md +8 -4
- package/docs/es/intlayer_with_astro_react.md +8 -4
- package/docs/es/intlayer_with_astro_solid.md +8 -4
- package/docs/es/intlayer_with_astro_svelte.md +8 -4
- package/docs/es/intlayer_with_astro_vanilla.md +8 -4
- package/docs/es/intlayer_with_astro_vue.md +8 -4
- package/docs/es/intlayer_with_create_react_app.md +8 -4
- package/docs/es/intlayer_with_express.md +8 -4
- package/docs/es/intlayer_with_fastify.md +8 -4
- package/docs/es/intlayer_with_hono.md +8 -4
- package/docs/es/intlayer_with_lynx+react.md +8 -4
- package/docs/es/intlayer_with_nestjs.md +8 -4
- package/docs/es/intlayer_with_next-i18next.md +8 -4
- package/docs/es/intlayer_with_nextjs_14.md +8 -4
- package/docs/es/intlayer_with_nextjs_15.md +10 -8
- package/docs/es/intlayer_with_nextjs_16.md +10 -8
- package/docs/es/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/es/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/es/intlayer_with_nuxt.md +9 -5
- package/docs/es/intlayer_with_react_native+expo.md +8 -4
- package/docs/es/intlayer_with_react_router_v7.md +9 -5
- package/docs/es/intlayer_with_svelte_kit.md +8 -4
- package/docs/es/intlayer_with_tanstack+solid.md +9 -5
- package/docs/es/intlayer_with_tanstack.md +10 -7
- package/docs/es/intlayer_with_vite+lit.md +8 -4
- package/docs/es/intlayer_with_vite+preact.md +9 -5
- package/docs/es/intlayer_with_vite+react.md +9 -5
- package/docs/es/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/es/intlayer_with_vite+solid.md +9 -5
- package/docs/es/intlayer_with_vite+svelte.md +8 -4
- package/docs/es/intlayer_with_vite+vanilla.md +8 -4
- package/docs/es/intlayer_with_vite+vue.md +9 -5
- package/docs/es/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/es/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/es/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/es/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/es/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/es/releases/v9.md +61 -19
- package/docs/es/self_hosting.md +350 -0
- package/docs/fr/bundle_optimization.md +16 -0
- package/docs/fr/cli/scan.md +2 -2
- package/docs/fr/how_works_intlayer.md +2 -2
- package/docs/fr/intlayer_CMS.md +117 -1
- package/docs/fr/intlayer_with_adonisjs.md +8 -4
- package/docs/fr/intlayer_with_analog.md +8 -4
- package/docs/fr/intlayer_with_angular_19.md +8 -4
- package/docs/fr/intlayer_with_angular_21.md +8 -4
- package/docs/fr/intlayer_with_astro_lit.md +11 -7
- package/docs/fr/intlayer_with_astro_preact.md +8 -4
- package/docs/fr/intlayer_with_astro_react.md +8 -4
- package/docs/fr/intlayer_with_astro_solid.md +8 -4
- package/docs/fr/intlayer_with_astro_svelte.md +8 -4
- package/docs/fr/intlayer_with_astro_vanilla.md +8 -4
- package/docs/fr/intlayer_with_astro_vue.md +8 -4
- package/docs/fr/intlayer_with_create_react_app.md +8 -4
- package/docs/fr/intlayer_with_express.md +8 -4
- package/docs/fr/intlayer_with_fastify.md +8 -4
- package/docs/fr/intlayer_with_hono.md +8 -4
- package/docs/fr/intlayer_with_lynx+react.md +8 -4
- package/docs/fr/intlayer_with_nestjs.md +8 -4
- package/docs/fr/intlayer_with_next-i18next.md +8 -4
- package/docs/fr/intlayer_with_nextjs_14.md +8 -4
- package/docs/fr/intlayer_with_nextjs_15.md +10 -8
- package/docs/fr/intlayer_with_nextjs_16.md +10 -8
- package/docs/fr/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/fr/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/fr/intlayer_with_nuxt.md +9 -5
- package/docs/fr/intlayer_with_react_native+expo.md +8 -4
- package/docs/fr/intlayer_with_react_router_v7.md +9 -5
- package/docs/fr/intlayer_with_svelte_kit.md +8 -4
- package/docs/fr/intlayer_with_tanstack+solid.md +9 -5
- package/docs/fr/intlayer_with_tanstack.md +10 -7
- package/docs/fr/intlayer_with_vite+lit.md +8 -4
- package/docs/fr/intlayer_with_vite+preact.md +9 -5
- package/docs/fr/intlayer_with_vite+react.md +9 -5
- package/docs/fr/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/fr/intlayer_with_vite+solid.md +9 -5
- package/docs/fr/intlayer_with_vite+svelte.md +8 -4
- package/docs/fr/intlayer_with_vite+vanilla.md +8 -4
- package/docs/fr/intlayer_with_vite+vue.md +9 -5
- package/docs/fr/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/fr/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/fr/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/fr/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/fr/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/fr/releases/v9.md +61 -19
- package/docs/fr/self_hosting.md +350 -0
- package/docs/hi/bundle_optimization.md +16 -0
- package/docs/hi/cli/scan.md +2 -2
- package/docs/hi/how_works_intlayer.md +2 -2
- package/docs/hi/intlayer_CMS.md +16 -1
- package/docs/hi/intlayer_with_adonisjs.md +8 -4
- package/docs/hi/intlayer_with_analog.md +8 -4
- package/docs/hi/intlayer_with_angular_19.md +8 -4
- package/docs/hi/intlayer_with_angular_21.md +8 -4
- package/docs/hi/intlayer_with_astro_vue.md +8 -4
- package/docs/hi/intlayer_with_create_react_app.md +8 -4
- package/docs/hi/intlayer_with_express.md +8 -4
- package/docs/hi/intlayer_with_fastify.md +8 -4
- package/docs/hi/intlayer_with_hono.md +8 -4
- package/docs/hi/intlayer_with_lynx+react.md +8 -4
- package/docs/hi/intlayer_with_nestjs.md +8 -4
- package/docs/hi/intlayer_with_next-i18next.md +8 -4
- package/docs/hi/intlayer_with_nextjs_14.md +8 -4
- package/docs/hi/intlayer_with_nextjs_15.md +10 -8
- package/docs/hi/intlayer_with_nextjs_16.md +10 -8
- package/docs/hi/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/hi/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/hi/intlayer_with_nuxt.md +9 -5
- package/docs/hi/intlayer_with_react_native+expo.md +8 -4
- package/docs/hi/intlayer_with_react_router_v7.md +9 -5
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +9 -5
- package/docs/hi/intlayer_with_svelte_kit.md +8 -4
- package/docs/hi/intlayer_with_tanstack+solid.md +9 -5
- package/docs/hi/intlayer_with_tanstack.md +10 -7
- package/docs/hi/intlayer_with_vite+lit.md +8 -4
- package/docs/hi/intlayer_with_vite+preact.md +9 -5
- package/docs/hi/intlayer_with_vite+react.md +9 -5
- package/docs/hi/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/hi/intlayer_with_vite+solid.md +9 -5
- package/docs/hi/intlayer_with_vite+svelte.md +8 -4
- package/docs/hi/intlayer_with_vite+vanilla.md +8 -4
- package/docs/hi/intlayer_with_vite+vue.md +9 -5
- package/docs/hi/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/hi/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/hi/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/hi/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/hi/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/hi/packages/intlayer/index.md +8 -4
- package/docs/hi/releases/v9.md +59 -19
- package/docs/hi/self_hosting.md +350 -0
- package/docs/id/bundle_optimization.md +16 -0
- package/docs/id/cli/scan.md +2 -2
- package/docs/id/how_works_intlayer.md +2 -2
- package/docs/id/intlayer_with_adonisjs.md +8 -4
- package/docs/id/intlayer_with_analog.md +8 -4
- package/docs/id/intlayer_with_angular_19.md +8 -4
- package/docs/id/intlayer_with_angular_21.md +8 -4
- package/docs/id/intlayer_with_astro_lit.md +11 -7
- package/docs/id/intlayer_with_astro_preact.md +8 -4
- package/docs/id/intlayer_with_astro_react.md +8 -4
- package/docs/id/intlayer_with_astro_solid.md +8 -4
- package/docs/id/intlayer_with_astro_svelte.md +8 -4
- package/docs/id/intlayer_with_astro_vanilla.md +8 -4
- package/docs/id/intlayer_with_astro_vue.md +8 -4
- package/docs/id/intlayer_with_create_react_app.md +8 -4
- package/docs/id/intlayer_with_express.md +8 -4
- package/docs/id/intlayer_with_fastify.md +8 -4
- package/docs/id/intlayer_with_hono.md +8 -4
- package/docs/id/intlayer_with_lynx+react.md +8 -4
- package/docs/id/intlayer_with_nestjs.md +8 -4
- package/docs/id/intlayer_with_next-i18next.md +8 -4
- package/docs/id/intlayer_with_nextjs_14.md +8 -4
- package/docs/id/intlayer_with_nextjs_15.md +9 -7
- package/docs/id/intlayer_with_nextjs_16.md +10 -8
- package/docs/id/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/id/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/id/intlayer_with_nuxt.md +9 -5
- package/docs/id/intlayer_with_react_native+expo.md +8 -4
- package/docs/id/intlayer_with_react_router_v7.md +9 -5
- package/docs/id/intlayer_with_svelte_kit.md +8 -4
- package/docs/id/intlayer_with_tanstack+solid.md +9 -5
- package/docs/id/intlayer_with_tanstack.md +10 -7
- package/docs/id/intlayer_with_vite+lit.md +8 -4
- package/docs/id/intlayer_with_vite+preact.md +9 -5
- package/docs/id/intlayer_with_vite+react.md +9 -5
- package/docs/id/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/id/intlayer_with_vite+solid.md +9 -5
- package/docs/id/intlayer_with_vite+svelte.md +8 -4
- package/docs/id/intlayer_with_vite+vanilla.md +8 -4
- package/docs/id/intlayer_with_vite+vue.md +9 -5
- package/docs/id/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/id/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/id/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/id/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/id/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/id/releases/v9.md +31 -19
- package/docs/id/self_hosting.md +350 -0
- package/docs/it/bundle_optimization.md +16 -0
- package/docs/it/cli/scan.md +2 -2
- package/docs/it/how_works_intlayer.md +2 -2
- package/docs/it/intlayer_CMS.md +117 -1
- package/docs/it/intlayer_with_adonisjs.md +8 -4
- package/docs/it/intlayer_with_analog.md +8 -4
- package/docs/it/intlayer_with_angular_19.md +8 -4
- package/docs/it/intlayer_with_angular_21.md +8 -4
- package/docs/it/intlayer_with_astro_lit.md +11 -7
- package/docs/it/intlayer_with_astro_preact.md +8 -4
- package/docs/it/intlayer_with_astro_react.md +8 -4
- package/docs/it/intlayer_with_astro_solid.md +8 -4
- package/docs/it/intlayer_with_astro_svelte.md +8 -4
- package/docs/it/intlayer_with_astro_vanilla.md +8 -4
- package/docs/it/intlayer_with_astro_vue.md +8 -4
- package/docs/it/intlayer_with_create_react_app.md +8 -4
- package/docs/it/intlayer_with_express.md +8 -4
- package/docs/it/intlayer_with_fastify.md +8 -4
- package/docs/it/intlayer_with_hono.md +8 -4
- package/docs/it/intlayer_with_lynx+react.md +8 -4
- package/docs/it/intlayer_with_nestjs.md +8 -4
- package/docs/it/intlayer_with_next-i18next.md +8 -4
- package/docs/it/intlayer_with_nextjs_14.md +8 -4
- package/docs/it/intlayer_with_nextjs_15.md +10 -8
- package/docs/it/intlayer_with_nextjs_16.md +10 -8
- package/docs/it/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/it/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/it/intlayer_with_nuxt.md +9 -5
- package/docs/it/intlayer_with_react_native+expo.md +8 -4
- package/docs/it/intlayer_with_react_router_v7.md +9 -5
- package/docs/it/intlayer_with_svelte_kit.md +8 -4
- package/docs/it/intlayer_with_tanstack+solid.md +9 -5
- package/docs/it/intlayer_with_tanstack.md +10 -7
- package/docs/it/intlayer_with_vite+lit.md +8 -4
- package/docs/it/intlayer_with_vite+preact.md +9 -5
- package/docs/it/intlayer_with_vite+react.md +10 -6
- package/docs/it/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/it/intlayer_with_vite+solid.md +9 -5
- package/docs/it/intlayer_with_vite+svelte.md +8 -4
- package/docs/it/intlayer_with_vite+vanilla.md +8 -4
- package/docs/it/intlayer_with_vite+vue.md +9 -5
- package/docs/it/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/it/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/it/migration_from_next-intl_to_intlayer.md +8 -4
- package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/it/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/it/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/it/releases/v9.md +61 -19
- package/docs/it/self_hosting.md +350 -0
- package/docs/ja/bundle_optimization.md +16 -0
- package/docs/ja/cli/scan.md +2 -2
- package/docs/ja/how_works_intlayer.md +2 -2
- package/docs/ja/intlayer_CMS.md +191 -10
- package/docs/ja/intlayer_with_adonisjs.md +8 -4
- package/docs/ja/intlayer_with_analog.md +8 -4
- package/docs/ja/intlayer_with_angular_19.md +8 -4
- package/docs/ja/intlayer_with_angular_21.md +8 -4
- package/docs/ja/intlayer_with_astro_lit.md +11 -7
- package/docs/ja/intlayer_with_astro_preact.md +8 -4
- package/docs/ja/intlayer_with_astro_react.md +8 -4
- package/docs/ja/intlayer_with_astro_solid.md +8 -4
- package/docs/ja/intlayer_with_astro_svelte.md +8 -4
- package/docs/ja/intlayer_with_astro_vanilla.md +8 -4
- package/docs/ja/intlayer_with_astro_vue.md +8 -4
- package/docs/ja/intlayer_with_create_react_app.md +8 -4
- package/docs/ja/intlayer_with_express.md +8 -4
- package/docs/ja/intlayer_with_fastify.md +8 -4
- package/docs/ja/intlayer_with_hono.md +8 -4
- package/docs/ja/intlayer_with_lynx+react.md +8 -4
- package/docs/ja/intlayer_with_nestjs.md +8 -4
- package/docs/ja/intlayer_with_next-i18next.md +8 -4
- package/docs/ja/intlayer_with_nextjs_14.md +8 -4
- package/docs/ja/intlayer_with_nextjs_15.md +10 -8
- package/docs/ja/intlayer_with_nextjs_16.md +10 -8
- package/docs/ja/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/ja/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/ja/intlayer_with_nuxt.md +9 -5
- package/docs/ja/intlayer_with_react_native+expo.md +8 -4
- package/docs/ja/intlayer_with_tanstack+solid.md +9 -5
- package/docs/ja/intlayer_with_tanstack.md +10 -7
- package/docs/ja/intlayer_with_vite+lit.md +8 -4
- package/docs/ja/intlayer_with_vite+preact.md +9 -5
- package/docs/ja/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/ja/intlayer_with_vite+solid.md +9 -5
- package/docs/ja/intlayer_with_vite+svelte.md +8 -4
- package/docs/ja/intlayer_with_vite+vanilla.md +8 -4
- package/docs/ja/intlayer_with_vite+vue.md +9 -5
- package/docs/ja/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/ja/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/ja/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/ja/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/ja/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/ja/releases/v9.md +31 -19
- package/docs/ja/self_hosting.md +350 -0
- package/docs/ko/bundle_optimization.md +16 -0
- package/docs/ko/cli/scan.md +2 -2
- package/docs/ko/how_works_intlayer.md +2 -2
- package/docs/ko/intlayer_CMS.md +189 -6
- package/docs/ko/intlayer_with_adonisjs.md +8 -4
- package/docs/ko/intlayer_with_analog.md +8 -4
- package/docs/ko/intlayer_with_angular_19.md +8 -4
- package/docs/ko/intlayer_with_angular_21.md +8 -4
- package/docs/ko/intlayer_with_astro_vue.md +8 -4
- package/docs/ko/intlayer_with_create_react_app.md +8 -4
- package/docs/ko/intlayer_with_express.md +8 -4
- package/docs/ko/intlayer_with_fastify.md +8 -4
- package/docs/ko/intlayer_with_hono.md +8 -4
- package/docs/ko/intlayer_with_nestjs.md +8 -4
- package/docs/ko/intlayer_with_next-i18next.md +8 -4
- package/docs/ko/intlayer_with_nextjs_15.md +10 -8
- package/docs/ko/intlayer_with_nextjs_16.md +10 -8
- package/docs/ko/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/ko/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/ko/intlayer_with_nuxt.md +9 -5
- package/docs/ko/intlayer_with_react_native+expo.md +8 -4
- package/docs/ko/intlayer_with_react_router_v7.md +9 -5
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +9 -5
- package/docs/ko/intlayer_with_svelte_kit.md +8 -4
- package/docs/ko/intlayer_with_tanstack+solid.md +9 -5
- package/docs/ko/intlayer_with_tanstack.md +10 -7
- package/docs/ko/intlayer_with_vite+lit.md +8 -4
- package/docs/ko/intlayer_with_vite+preact.md +9 -5
- package/docs/ko/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/ko/intlayer_with_vite+solid.md +9 -5
- package/docs/ko/intlayer_with_vite+svelte.md +8 -4
- package/docs/ko/intlayer_with_vite+vanilla.md +8 -4
- package/docs/ko/intlayer_with_vite+vue.md +9 -5
- package/docs/ko/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/ko/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/ko/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/ko/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/ko/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/ko/releases/v9.md +30 -19
- package/docs/ko/self_hosting.md +350 -0
- package/docs/nl/bundle_optimization.md +16 -0
- package/docs/nl/cli/scan.md +2 -2
- package/docs/nl/intlayer_with_angular_21.md +8 -4
- package/docs/nl/intlayer_with_fastify.md +8 -4
- package/docs/nl/intlayer_with_hono.md +8 -4
- package/docs/nl/intlayer_with_vite+lit.md +8 -4
- package/docs/nl/intlayer_with_vite+vanilla.md +8 -4
- package/docs/nl/releases/v9.md +340 -0
- package/docs/pl/bundle_optimization.md +16 -0
- package/docs/pl/cli/scan.md +2 -2
- package/docs/pl/how_works_intlayer.md +2 -2
- package/docs/pl/intlayer_CMS.md +16 -1
- package/docs/pl/intlayer_with_adonisjs.md +8 -4
- package/docs/pl/intlayer_with_analog.md +8 -4
- package/docs/pl/intlayer_with_angular_19.md +8 -4
- package/docs/pl/intlayer_with_angular_21.md +8 -4
- package/docs/pl/intlayer_with_astro_lit.md +11 -7
- package/docs/pl/intlayer_with_astro_preact.md +8 -4
- package/docs/pl/intlayer_with_astro_react.md +8 -4
- package/docs/pl/intlayer_with_astro_solid.md +8 -4
- package/docs/pl/intlayer_with_astro_svelte.md +8 -4
- package/docs/pl/intlayer_with_astro_vanilla.md +8 -4
- package/docs/pl/intlayer_with_astro_vue.md +8 -4
- package/docs/pl/intlayer_with_create_react_app.md +8 -4
- package/docs/pl/intlayer_with_express.md +8 -4
- package/docs/pl/intlayer_with_fastify.md +8 -4
- package/docs/pl/intlayer_with_hono.md +8 -4
- package/docs/pl/intlayer_with_lynx+react.md +8 -4
- package/docs/pl/intlayer_with_nestjs.md +8 -4
- package/docs/pl/intlayer_with_next-i18next.md +8 -4
- package/docs/pl/intlayer_with_nextjs_14.md +8 -4
- package/docs/pl/intlayer_with_nextjs_15.md +9 -7
- package/docs/pl/intlayer_with_nextjs_16.md +10 -8
- package/docs/pl/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/pl/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/pl/intlayer_with_nuxt.md +9 -5
- package/docs/pl/intlayer_with_react_native+expo.md +8 -4
- package/docs/pl/intlayer_with_react_router_v7.md +9 -5
- package/docs/pl/intlayer_with_svelte_kit.md +8 -4
- package/docs/pl/intlayer_with_tanstack+solid.md +9 -5
- package/docs/pl/intlayer_with_tanstack.md +10 -7
- package/docs/pl/intlayer_with_vite+lit.md +8 -4
- package/docs/pl/intlayer_with_vite+preact.md +9 -5
- package/docs/pl/intlayer_with_vite+react.md +9 -5
- package/docs/pl/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/pl/intlayer_with_vite+solid.md +9 -5
- package/docs/pl/intlayer_with_vite+svelte.md +8 -4
- package/docs/pl/intlayer_with_vite+vanilla.md +8 -4
- package/docs/pl/intlayer_with_vite+vue.md +9 -5
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/pl/releases/v9.md +58 -19
- package/docs/pl/self_hosting.md +350 -0
- package/docs/pt/bundle_optimization.md +16 -0
- package/docs/pt/cli/scan.md +2 -2
- package/docs/pt/how_works_intlayer.md +2 -2
- package/docs/pt/intlayer_CMS.md +117 -1
- package/docs/pt/intlayer_with_adonisjs.md +8 -4
- package/docs/pt/intlayer_with_analog.md +8 -4
- package/docs/pt/intlayer_with_angular_19.md +8 -4
- package/docs/pt/intlayer_with_angular_21.md +8 -4
- package/docs/pt/intlayer_with_astro_lit.md +11 -7
- package/docs/pt/intlayer_with_astro_preact.md +8 -4
- package/docs/pt/intlayer_with_astro_react.md +8 -4
- package/docs/pt/intlayer_with_astro_solid.md +8 -4
- package/docs/pt/intlayer_with_astro_svelte.md +8 -4
- package/docs/pt/intlayer_with_astro_vanilla.md +8 -4
- package/docs/pt/intlayer_with_astro_vue.md +8 -4
- package/docs/pt/intlayer_with_create_react_app.md +8 -4
- package/docs/pt/intlayer_with_express.md +8 -4
- package/docs/pt/intlayer_with_fastify.md +8 -4
- package/docs/pt/intlayer_with_hono.md +8 -4
- package/docs/pt/intlayer_with_lynx+react.md +8 -4
- package/docs/pt/intlayer_with_nestjs.md +8 -4
- package/docs/pt/intlayer_with_next-i18next.md +8 -4
- package/docs/pt/intlayer_with_nextjs_14.md +8 -4
- package/docs/pt/intlayer_with_nextjs_15.md +10 -8
- package/docs/pt/intlayer_with_nextjs_16.md +10 -8
- package/docs/pt/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/pt/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/pt/intlayer_with_nuxt.md +9 -5
- package/docs/pt/intlayer_with_react_native+expo.md +8 -4
- package/docs/pt/intlayer_with_react_router_v7.md +9 -5
- package/docs/pt/intlayer_with_svelte_kit.md +8 -4
- package/docs/pt/intlayer_with_tanstack+solid.md +9 -5
- package/docs/pt/intlayer_with_tanstack.md +10 -7
- package/docs/pt/intlayer_with_vite+lit.md +8 -4
- package/docs/pt/intlayer_with_vite+preact.md +9 -5
- package/docs/pt/intlayer_with_vite+react.md +9 -5
- package/docs/pt/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/pt/intlayer_with_vite+solid.md +9 -5
- package/docs/pt/intlayer_with_vite+svelte.md +8 -4
- package/docs/pt/intlayer_with_vite+vanilla.md +8 -4
- package/docs/pt/intlayer_with_vite+vue.md +9 -5
- package/docs/pt/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/pt/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/pt/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/pt/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/pt/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/pt/releases/v9.md +61 -19
- package/docs/pt/self_hosting.md +350 -0
- package/docs/ru/bundle_optimization.md +16 -0
- package/docs/ru/cli/scan.md +2 -2
- package/docs/ru/how_works_intlayer.md +2 -2
- package/docs/ru/intlayer_CMS.md +196 -15
- package/docs/ru/intlayer_with_adonisjs.md +8 -4
- package/docs/ru/intlayer_with_analog.md +8 -4
- package/docs/ru/intlayer_with_angular_19.md +8 -4
- package/docs/ru/intlayer_with_angular_21.md +8 -4
- package/docs/ru/intlayer_with_astro_vue.md +8 -4
- package/docs/ru/intlayer_with_create_react_app.md +8 -4
- package/docs/ru/intlayer_with_express.md +8 -4
- package/docs/ru/intlayer_with_fastify.md +8 -4
- package/docs/ru/intlayer_with_hono.md +8 -4
- package/docs/ru/intlayer_with_lynx+react.md +8 -4
- package/docs/ru/intlayer_with_nestjs.md +8 -4
- package/docs/ru/intlayer_with_next-i18next.md +8 -4
- package/docs/ru/intlayer_with_nextjs_14.md +8 -4
- package/docs/ru/intlayer_with_nextjs_15.md +10 -8
- package/docs/ru/intlayer_with_nextjs_16.md +10 -8
- package/docs/ru/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/ru/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/ru/intlayer_with_nuxt.md +9 -5
- package/docs/ru/intlayer_with_react_native+expo.md +8 -4
- package/docs/ru/intlayer_with_react_router_v7.md +9 -5
- package/docs/ru/intlayer_with_svelte_kit.md +8 -4
- package/docs/ru/intlayer_with_tanstack+solid.md +9 -5
- package/docs/ru/intlayer_with_tanstack.md +10 -7
- package/docs/ru/intlayer_with_vite+lit.md +8 -4
- package/docs/ru/intlayer_with_vite+preact.md +9 -5
- package/docs/ru/intlayer_with_vite+react.md +9 -5
- package/docs/ru/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/ru/intlayer_with_vite+solid.md +9 -5
- package/docs/ru/intlayer_with_vite+svelte.md +8 -4
- package/docs/ru/intlayer_with_vite+vanilla.md +8 -4
- package/docs/ru/intlayer_with_vite+vue.md +9 -5
- package/docs/ru/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/ru/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/ru/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/ru/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/ru/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/ru/releases/v9.md +59 -19
- package/docs/ru/self_hosting.md +350 -0
- package/docs/tr/bundle_optimization.md +16 -0
- package/docs/tr/cli/scan.md +2 -2
- package/docs/tr/how_works_intlayer.md +2 -2
- package/docs/tr/intlayer_CMS.md +16 -1
- package/docs/tr/intlayer_with_adonisjs.md +8 -4
- package/docs/tr/intlayer_with_analog.md +8 -4
- package/docs/tr/intlayer_with_angular_19.md +8 -4
- package/docs/tr/intlayer_with_angular_21.md +8 -4
- package/docs/tr/intlayer_with_astro_lit.md +11 -7
- package/docs/tr/intlayer_with_astro_preact.md +8 -4
- package/docs/tr/intlayer_with_astro_react.md +8 -4
- package/docs/tr/intlayer_with_astro_solid.md +8 -4
- package/docs/tr/intlayer_with_astro_svelte.md +8 -4
- package/docs/tr/intlayer_with_astro_vanilla.md +8 -4
- package/docs/tr/intlayer_with_astro_vue.md +8 -4
- package/docs/tr/intlayer_with_create_react_app.md +8 -4
- package/docs/tr/intlayer_with_express.md +8 -4
- package/docs/tr/intlayer_with_fastify.md +8 -4
- package/docs/tr/intlayer_with_hono.md +8 -4
- package/docs/tr/intlayer_with_lynx+react.md +8 -4
- package/docs/tr/intlayer_with_nestjs.md +8 -4
- package/docs/tr/intlayer_with_next-i18next.md +8 -4
- package/docs/tr/intlayer_with_nextjs_14.md +8 -4
- package/docs/tr/intlayer_with_nextjs_15.md +10 -8
- package/docs/tr/intlayer_with_nextjs_16.md +10 -8
- package/docs/tr/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/tr/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/tr/intlayer_with_nuxt.md +9 -5
- package/docs/tr/intlayer_with_react_native+expo.md +8 -4
- package/docs/tr/intlayer_with_react_router_v7.md +9 -5
- package/docs/tr/intlayer_with_svelte_kit.md +8 -4
- package/docs/tr/intlayer_with_tanstack+solid.md +9 -5
- package/docs/tr/intlayer_with_tanstack.md +10 -7
- package/docs/tr/intlayer_with_vite+lit.md +8 -4
- package/docs/tr/intlayer_with_vite+preact.md +9 -5
- package/docs/tr/intlayer_with_vite+react.md +9 -5
- package/docs/tr/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/tr/intlayer_with_vite+solid.md +9 -5
- package/docs/tr/intlayer_with_vite+svelte.md +8 -4
- package/docs/tr/intlayer_with_vite+vanilla.md +8 -4
- package/docs/tr/intlayer_with_vite+vue.md +9 -5
- package/docs/tr/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/tr/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/tr/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/tr/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/tr/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/tr/releases/v9.md +46 -19
- package/docs/tr/self_hosting.md +350 -0
- package/docs/uk/bundle_optimization.md +16 -0
- package/docs/uk/cli/scan.md +2 -2
- package/docs/uk/how_works_intlayer.md +2 -2
- package/docs/uk/intlayer_CMS.md +16 -1
- package/docs/uk/intlayer_with_adonisjs.md +8 -4
- package/docs/uk/intlayer_with_analog.md +8 -4
- package/docs/uk/intlayer_with_angular_19.md +8 -4
- package/docs/uk/intlayer_with_angular_21.md +8 -4
- package/docs/uk/intlayer_with_astro_lit.md +11 -7
- package/docs/uk/intlayer_with_astro_preact.md +8 -4
- package/docs/uk/intlayer_with_astro_react.md +8 -4
- package/docs/uk/intlayer_with_astro_solid.md +8 -4
- package/docs/uk/intlayer_with_astro_svelte.md +8 -4
- package/docs/uk/intlayer_with_astro_vanilla.md +8 -4
- package/docs/uk/intlayer_with_astro_vue.md +8 -4
- package/docs/uk/intlayer_with_create_react_app.md +8 -4
- package/docs/uk/intlayer_with_express.md +8 -4
- package/docs/uk/intlayer_with_fastify.md +8 -4
- package/docs/uk/intlayer_with_hono.md +8 -4
- package/docs/uk/intlayer_with_lynx+react.md +8 -4
- package/docs/uk/intlayer_with_nestjs.md +8 -4
- package/docs/uk/intlayer_with_next-i18next.md +8 -4
- package/docs/uk/intlayer_with_nextjs_14.md +8 -4
- package/docs/uk/intlayer_with_nextjs_15.md +10 -8
- package/docs/uk/intlayer_with_nextjs_16.md +10 -8
- package/docs/uk/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/uk/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/uk/intlayer_with_nuxt.md +9 -5
- package/docs/uk/intlayer_with_react_native+expo.md +8 -4
- package/docs/uk/intlayer_with_react_router_v7.md +9 -5
- package/docs/uk/intlayer_with_svelte_kit.md +8 -4
- package/docs/uk/intlayer_with_tanstack+solid.md +9 -5
- package/docs/uk/intlayer_with_tanstack.md +10 -7
- package/docs/uk/intlayer_with_vite+lit.md +8 -4
- package/docs/uk/intlayer_with_vite+preact.md +9 -5
- package/docs/uk/intlayer_with_vite+react.md +9 -5
- package/docs/uk/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/uk/intlayer_with_vite+solid.md +9 -5
- package/docs/uk/intlayer_with_vite+svelte.md +8 -4
- package/docs/uk/intlayer_with_vite+vanilla.md +8 -4
- package/docs/uk/intlayer_with_vite+vue.md +9 -5
- package/docs/uk/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/uk/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/uk/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/uk/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/uk/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/uk/releases/v9.md +58 -19
- package/docs/uk/self_hosting.md +350 -0
- package/docs/ur/bundle_optimization.md +16 -0
- package/docs/ur/cli/scan.md +2 -2
- package/docs/ur/intlayer_with_angular_21.md +8 -4
- package/docs/ur/intlayer_with_fastify.md +8 -4
- package/docs/ur/intlayer_with_hono.md +8 -4
- package/docs/ur/intlayer_with_vite+lit.md +8 -4
- package/docs/ur/intlayer_with_vite+vanilla.md +8 -4
- package/docs/vi/bundle_optimization.md +16 -0
- package/docs/vi/cli/scan.md +2 -2
- package/docs/vi/how_works_intlayer.md +2 -2
- package/docs/vi/intlayer_with_adonisjs.md +8 -4
- package/docs/vi/intlayer_with_analog.md +8 -4
- package/docs/vi/intlayer_with_angular_19.md +8 -4
- package/docs/vi/intlayer_with_angular_21.md +8 -4
- package/docs/vi/intlayer_with_astro_lit.md +11 -7
- package/docs/vi/intlayer_with_astro_preact.md +8 -4
- package/docs/vi/intlayer_with_astro_react.md +8 -4
- package/docs/vi/intlayer_with_astro_solid.md +8 -4
- package/docs/vi/intlayer_with_astro_svelte.md +8 -4
- package/docs/vi/intlayer_with_astro_vanilla.md +8 -4
- package/docs/vi/intlayer_with_astro_vue.md +8 -4
- package/docs/vi/intlayer_with_create_react_app.md +8 -4
- package/docs/vi/intlayer_with_express.md +8 -4
- package/docs/vi/intlayer_with_fastify.md +8 -4
- package/docs/vi/intlayer_with_hono.md +8 -4
- package/docs/vi/intlayer_with_lynx+react.md +8 -4
- package/docs/vi/intlayer_with_nestjs.md +8 -4
- package/docs/vi/intlayer_with_next-i18next.md +8 -4
- package/docs/vi/intlayer_with_nextjs_14.md +8 -4
- package/docs/vi/intlayer_with_nextjs_15.md +9 -7
- package/docs/vi/intlayer_with_nextjs_16.md +10 -8
- package/docs/vi/intlayer_with_nextjs_compiler.md +8 -4
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/vi/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/vi/intlayer_with_nuxt.md +9 -5
- package/docs/vi/intlayer_with_react_native+expo.md +8 -4
- package/docs/vi/intlayer_with_react_router_v7.md +9 -5
- package/docs/vi/intlayer_with_svelte_kit.md +8 -4
- package/docs/vi/intlayer_with_tanstack+solid.md +9 -5
- package/docs/vi/intlayer_with_tanstack.md +10 -7
- package/docs/vi/intlayer_with_vite+lit.md +8 -4
- package/docs/vi/intlayer_with_vite+preact.md +9 -5
- package/docs/vi/intlayer_with_vite+react.md +9 -5
- package/docs/vi/intlayer_with_vite+react_compiler.md +9 -5
- package/docs/vi/intlayer_with_vite+solid.md +9 -5
- package/docs/vi/intlayer_with_vite+svelte.md +8 -4
- package/docs/vi/intlayer_with_vite+vanilla.md +8 -4
- package/docs/vi/intlayer_with_vite+vue.md +9 -5
- package/docs/vi/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/vi/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/vi/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/vi/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/vi/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/vi/releases/v9.md +31 -19
- package/docs/vi/self_hosting.md +350 -0
- package/docs/zh/bundle_optimization.md +16 -0
- package/docs/zh/cli/scan.md +2 -2
- package/docs/zh/how_works_intlayer.md +2 -2
- package/docs/zh/intlayer_with_adonisjs.md +8 -4
- package/docs/zh/intlayer_with_angular_21.md +8 -4
- package/docs/zh/intlayer_with_astro.md +8 -4
- package/docs/zh/intlayer_with_astro_lit.md +11 -7
- package/docs/zh/intlayer_with_astro_preact.md +8 -4
- package/docs/zh/intlayer_with_astro_react.md +8 -4
- package/docs/zh/intlayer_with_astro_solid.md +8 -4
- package/docs/zh/intlayer_with_astro_svelte.md +8 -4
- package/docs/zh/intlayer_with_astro_vanilla.md +8 -4
- package/docs/zh/intlayer_with_astro_vue.md +8 -4
- package/docs/zh/intlayer_with_create_react_app.md +8 -4
- package/docs/zh/intlayer_with_express.md +8 -4
- package/docs/zh/intlayer_with_fastify.md +8 -4
- package/docs/zh/intlayer_with_hono.md +8 -4
- package/docs/zh/intlayer_with_nestjs.md +8 -4
- package/docs/zh/intlayer_with_next-i18next.md +8 -4
- package/docs/zh/intlayer_with_nextjs_14.md +8 -4
- package/docs/zh/intlayer_with_nextjs_15.md +10 -8
- package/docs/zh/intlayer_with_nextjs_16.md +10 -8
- package/docs/zh/intlayer_with_nextjs_compiler.md +9 -7
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +10 -8
- package/docs/zh/intlayer_with_nextjs_page_router.md +8 -4
- package/docs/zh/intlayer_with_react_native+expo.md +8 -4
- package/docs/zh/intlayer_with_react_router_v7.md +9 -5
- package/docs/zh/intlayer_with_vite+solid.md +9 -5
- package/docs/zh/intlayer_with_vite+svelte.md +8 -4
- package/docs/zh/intlayer_with_vite+vue.md +9 -5
- package/docs/zh/migration_from_i18next_to_intlayer.md +8 -4
- package/docs/zh/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/zh/migration_from_next-intl_to_intlayer.md +9 -7
- package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/zh/migration_from_react-i18next_to_intlayer.md +9 -7
- package/docs/zh/migration_from_vue-i18n_to_intlayer.md +8 -4
- package/docs/zh/releases/v9.md +31 -19
- package/docs/zh/self_hosting.md +350 -0
- package/docs/zh-TW/bundle_optimization.md +16 -0
- package/docs/zh-TW/intlayer_with_angular_21.md +8 -4
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: New Intlayer v9 - What's new?
|
|
5
|
-
description: Discover what's new in Intlayer v9. Introducing drop-in compatibility packages for popular i18n libraries
|
|
5
|
+
description: Discover what's new in Intlayer v9. Introducing drop-in compatibility packages for popular i18n libraries, support for Collections and Variants, and self-hosting via Docker Compose.
|
|
6
6
|
keywords:
|
|
7
7
|
- Intlayer
|
|
8
8
|
- Compatibility
|
|
9
9
|
- Migration
|
|
10
10
|
- Collections
|
|
11
11
|
- Variants
|
|
12
|
+
- CMS SDK
|
|
13
|
+
- Self-Hosting
|
|
14
|
+
- Docker
|
|
12
15
|
- i18next
|
|
13
16
|
- next-intl
|
|
14
17
|
- vue-i18n
|
|
@@ -198,24 +201,6 @@ const product = useIntlayer("product-copy", {
|
|
|
198
201
|
|
|
199
202
|
---
|
|
200
203
|
|
|
201
|
-
## Dynamic Loading & Bundle Size Optimisations
|
|
202
|
-
|
|
203
|
-
To keep bundles extremely small, Intlayer v9 supports dynamic lazy loading.
|
|
204
|
-
|
|
205
|
-
In your configuration, set `importMode` to `'dynamic'` or `'fetch'`:
|
|
206
|
-
|
|
207
|
-
```ts fileName="intlayer.config.ts"
|
|
208
|
-
export default {
|
|
209
|
-
dictionary: {
|
|
210
|
-
importMode: "dynamic", // "static" | "dynamic" | "fetch"
|
|
211
|
-
},
|
|
212
|
-
};
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
At build time, `@intlayer/swc` and `@intlayer/babel` scan your files and replace `useIntlayer` / `getIntlayer` calls with tree-shakeable wrappers (`useDictionary` / `useDictionaryDynamic`). Only the content required for the selected collection item, variant, or locale is loaded, preventing your production bundle from containing unused translations.
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
204
|
## Vite Plugin: Bundled Compiler & Proxy
|
|
220
205
|
|
|
221
206
|
The `intlayer()` Vite plugin now bundles the **compiler** and the **locale-routing proxy** directly, so most projects only need a single plugin in `vite.config.ts`:
|
|
@@ -295,6 +280,46 @@ npm install intlayer react-native-intlayer
|
|
|
295
280
|
|
|
296
281
|
---
|
|
297
282
|
|
|
283
|
+
## CMS SDK: use Intlayer as a headless content database
|
|
284
|
+
|
|
285
|
+
Intlayer v9 ships a clean, auto-authenticating SDK in `@intlayer/api` to interact with the CMS programmatically — fetch projects, fetch dictionaries, and push or update them from your own server, scripts, or CI. Authentication (OAuth2 `client_credentials`) is handled and refreshed for you.
|
|
286
|
+
|
|
287
|
+
The SDK is split into **two separate imports** so your bundle includes only the domains you actually use:
|
|
288
|
+
|
|
289
|
+
1. `createIntlayerCMS` — a lightweight **authenticator** holding the credentials and the managed token (no domain client bundled).
|
|
290
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — per-domain **endpoint binders**, each imported from its own subpath.
|
|
291
|
+
|
|
292
|
+
```ts fileName="cms.ts"
|
|
293
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
294
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
295
|
+
|
|
296
|
+
// Config is optional: credentials fall back to INTLAYER_CLIENT_ID /
|
|
297
|
+
// INTLAYER_CLIENT_SECRET resolved by `@intlayer/config/built`.
|
|
298
|
+
const cms = createIntlayerCMS();
|
|
299
|
+
|
|
300
|
+
// Read
|
|
301
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
302
|
+
|
|
303
|
+
// Write — use the CMS like a database
|
|
304
|
+
await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
> Security: the CMS credentials grant write access to your content. Only ever create the authenticator on the **server side** — never ship `clientId` / `clientSecret` to the browser.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Self-Hosting
|
|
312
|
+
|
|
313
|
+
Intlayer v9 ships first-class support for running your own Intlayer instance with a single command — no Intlayer Cloud account required.
|
|
314
|
+
|
|
315
|
+
```sh
|
|
316
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
The installer downloads a `docker-compose.yml` and a `.env`, auto-generates the required secrets, and runs `docker compose up -d`. Everything — the dashboard, the API, the database, object storage, and transactional email — runs locally in containers.
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
298
323
|
## Migration notes from v8
|
|
299
324
|
|
|
300
325
|
If you are upgrading from v8, note that the v9 does not include breaking changes. But here are the key changes:
|
|
@@ -310,3 +335,5 @@ If you are upgrading from v8, note that the v9 does not include breaking changes
|
|
|
310
335
|
- [Compat Adapter Packages Guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md)
|
|
311
336
|
- [Dynamic Dictionaries - Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dynamic_dictionaries/index.md)
|
|
312
337
|
- [Configuration Reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)
|
|
338
|
+
- [CMS SDK - Programmatic access with @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md)
|
|
339
|
+
- [Self-Hosting Guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/self_hosting.md)
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-30
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
|
+
title: Self-Hosting Intlayer
|
|
5
|
+
description: Run a complete Intlayer instance on your own infrastructure with a single command. No Intlayer Cloud account required.
|
|
6
|
+
keywords:
|
|
7
|
+
- Self-Hosting
|
|
8
|
+
- Docker
|
|
9
|
+
- Docker Compose
|
|
10
|
+
- Intlayer
|
|
11
|
+
- CMS
|
|
12
|
+
- Installation
|
|
13
|
+
- Infrastructure
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- self-hosting
|
|
17
|
+
author: aymericzip
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Self-Hosting Intlayer
|
|
21
|
+
|
|
22
|
+
Intlayer can run entirely on your own infrastructure — no Intlayer Cloud account required. A single command boots a production-ready stack:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The installer downloads a `docker-compose.yml` and a `.env`, auto-generates the required secrets, and starts all containers with `docker compose up -d`.
|
|
29
|
+
|
|
30
|
+
## Table of Contents
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Architecture
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
┌─────────────────────────────┐
|
|
40
|
+
browser ──────▶ │ app (TanStack Start) :3000│ ──┐
|
|
41
|
+
└─────────────────────────────┘ │ VITE_BACKEND_URL
|
|
42
|
+
┌─────────────────────────────┐ │
|
|
43
|
+
│ backend (Fastify/Bun) :3100│ ◀─┘
|
|
44
|
+
└──────────────┬──────────────┘
|
|
45
|
+
┌──────────┬─────────┼──────────┬───────────┐
|
|
46
|
+
▼ ▼ ▼ ▼ ▼
|
|
47
|
+
mongo:27017 redis:6379 minio:9000 mailpit:1025 Chromium
|
|
48
|
+
(1-node RS) (S3 API) (SMTP) (in-image)
|
|
49
|
+
minio:9001 mailpit:8025
|
|
50
|
+
(console) (web UI)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Chromium (used for Puppeteer screenshot generation) is bundled inside the backend image — no separate container is needed.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Prerequisites
|
|
58
|
+
|
|
59
|
+
- **Docker** ≥ 24 and **Docker Compose** ≥ v2. If either is missing, the installer prints the install link and exits.
|
|
60
|
+
- Ports `3000`, `3100`, `8025`, `9000`, and `9001` available on the host.
|
|
61
|
+
- A Linux or macOS host (or WSL2 on Windows).
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Quick start
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
What the installer does:
|
|
72
|
+
|
|
73
|
+
1. Checks that `docker` and `docker compose` are present.
|
|
74
|
+
2. Downloads `docker-compose.yml` and `.env.example` into `./intlayer/`.
|
|
75
|
+
3. If no `.env` exists, copies the example and generates random secrets for `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID`, and `S3_SECRET_ACCESS_KEY` via `openssl rand`.
|
|
76
|
+
4. Runs `docker compose pull` + `docker compose up -d`.
|
|
77
|
+
5. Prints the URLs: dashboard `:3000`, API `:3100`, email UI `:8025`, MinIO console `:9001`.
|
|
78
|
+
|
|
79
|
+
After the stack is up, open **http://localhost:3000** and create your first account.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Services
|
|
84
|
+
|
|
85
|
+
| Service | Image | Host port(s) | Purpose |
|
|
86
|
+
| ----------- | ------------------------------------ | ------------------------------ | -------------------------------------------------------- |
|
|
87
|
+
| **app** | built from `apps/app/Dockerfile` | `3000` | TanStack Start dashboard (CMS UI) |
|
|
88
|
+
| **backend** | built from `apps/backend/Dockerfile` | `3100` | Fastify REST API (`/health` endpoint) |
|
|
89
|
+
| **mongo** | `mongo:7` | internal | Single-node replica set (`rs0`) |
|
|
90
|
+
| **redis** | `redis:7-alpine` | internal | Job queues (BullMQ) and caching (ioredis) |
|
|
91
|
+
| **minio** | `minio/minio` | `9000` (S3), `9001` (console) | S3-compatible object storage for avatars and screenshots |
|
|
92
|
+
| **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (web UI) | Local transactional email sink |
|
|
93
|
+
|
|
94
|
+
Internal ports (mongo, redis) are not exposed to the host by default.
|
|
95
|
+
|
|
96
|
+
> MinIO port `9000` must be reachable by the browser because uploaded assets (avatars, screenshots) are loaded directly from `S3_PUBLIC_URL=http://localhost:9000/intlayer`.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Environment variables
|
|
101
|
+
|
|
102
|
+
The installer generates a ready-to-use `.env`. The table below describes every variable.
|
|
103
|
+
|
|
104
|
+
### Required (auto-generated or prompted)
|
|
105
|
+
|
|
106
|
+
| Variable | Example | Description |
|
|
107
|
+
| ---------------------- | ----------------------------------------------- | -------------------------------------------------- |
|
|
108
|
+
| `NODE_ENV` | `production` | Runtime environment |
|
|
109
|
+
| `PORT` | `3100` | Backend listening port |
|
|
110
|
+
| `BACKEND_URL` | `http://localhost:3100` | Public URL of the backend API |
|
|
111
|
+
| `APP_URL` | `http://localhost:3000` | Public URL of the dashboard |
|
|
112
|
+
| `DOMAIN` | `localhost` | Cookie domain |
|
|
113
|
+
| `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | Full MongoDB connection URI |
|
|
114
|
+
| `REDIS_URL` | `redis://redis:6379` | Redis connection URL |
|
|
115
|
+
| `BETTER_AUTH_SECRET` | _(generated)_ | 32-byte secret for session signing |
|
|
116
|
+
| `MAIL_PROVIDER` | `smtp` | Mail transport: `smtp` or `resend` |
|
|
117
|
+
| `MAIL_SMTP_HOST` | `mailpit` | SMTP hostname (Mailpit container name) |
|
|
118
|
+
| `MAIL_SMTP_PORT` | `1025` | SMTP port |
|
|
119
|
+
| `MAIL_FROM` | `Intlayer <no-reply@localhost>` | Sender address |
|
|
120
|
+
| `S3_ENDPOINT` | `http://minio:9000` | S3-compatible endpoint |
|
|
121
|
+
| `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | Public URL for browser asset loading |
|
|
122
|
+
| `S3_BUCKET_NAME` | `intlayer` | Bucket name |
|
|
123
|
+
| `S3_ACCESS_KEY_ID` | _(generated)_ | MinIO access key |
|
|
124
|
+
| `S3_SECRET_ACCESS_KEY` | _(generated)_ | MinIO secret key |
|
|
125
|
+
| `VITE_BACKEND_URL` | `http://localhost:3100` | Backend URL baked into the dashboard at build time |
|
|
126
|
+
| `VITE_DOMAIN` | `localhost` | Domain baked into the dashboard at build time |
|
|
127
|
+
|
|
128
|
+
### Optional (features degrade gracefully when absent)
|
|
129
|
+
|
|
130
|
+
| Variable | Feature |
|
|
131
|
+
| -------------------------------------------------------- | ----------------------------------------------------------- |
|
|
132
|
+
| `OPENAI_API_KEY` | AI-assisted translation and content audit |
|
|
133
|
+
| `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Billing and subscription management |
|
|
134
|
+
| `RESEND_API_KEY` | Transactional email via Resend (overrides Mailpit when set) |
|
|
135
|
+
| `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | GitHub OAuth login |
|
|
136
|
+
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google OAuth login |
|
|
137
|
+
| `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET` | GitLab OAuth login |
|
|
138
|
+
| `MICROSOFT_CLIENT_ID`, `MICROSOFT_CLIENT_SECRET` | Microsoft OAuth login |
|
|
139
|
+
| `LINKEDIN_CLIENT_ID`, `LINKEDIN_CLIENT_SECRET` | LinkedIn OAuth login |
|
|
140
|
+
| `ATLASSIAN_CLIENT_ID`, `ATLASSIAN_CLIENT_SECRET` | Atlassian OAuth login |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Connecting your Intlayer project
|
|
145
|
+
|
|
146
|
+
Once the stack is running, point your project at the self-hosted backend and dashboard instead of `intlayer.org`.
|
|
147
|
+
|
|
148
|
+
### Project configuration
|
|
149
|
+
|
|
150
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
151
|
+
import type { IntlayerConfig } from "intlayer";
|
|
152
|
+
|
|
153
|
+
const config: IntlayerConfig = {
|
|
154
|
+
editor: {
|
|
155
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
156
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* URL of the self-hosted CMS dashboard.
|
|
160
|
+
* Default: https://app.intlayer.org
|
|
161
|
+
*/
|
|
162
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* URL of the self-hosted backend API.
|
|
166
|
+
* Default: https://back.intlayer.org
|
|
167
|
+
*/
|
|
168
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export default config;
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Set the environment variables in your project's `.env`:
|
|
176
|
+
|
|
177
|
+
```sh
|
|
178
|
+
INTLAYER_CMS_URL=http://localhost:3000
|
|
179
|
+
INTLAYER_BACKEND_URL=http://localhost:3100
|
|
180
|
+
INTLAYER_CLIENT_ID=<your-client-id>
|
|
181
|
+
INTLAYER_CLIENT_SECRET=<your-client-secret>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Create access credentials in your self-hosted dashboard under **Projects → Access keys** at `http://localhost:3000/projects`.
|
|
185
|
+
|
|
186
|
+
### `@intlayer/api` SDK
|
|
187
|
+
|
|
188
|
+
When using the `@intlayer/api` SDK programmatically, pass `backendURL` explicitly:
|
|
189
|
+
|
|
190
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
191
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
192
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
193
|
+
|
|
194
|
+
const cms = createIntlayerCMS({
|
|
195
|
+
editor: {
|
|
196
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
197
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
198
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // http://localhost:3100
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Upgrading
|
|
208
|
+
|
|
209
|
+
Re-running the installer on an existing deployment performs a rolling upgrade:
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
This pulls the latest images and restarts containers with `docker compose pull && docker compose up -d`. Existing volumes (`mongo-data`, `redis-data`, `minio-data`) are preserved — no data loss.
|
|
216
|
+
|
|
217
|
+
To upgrade manually from inside the `./intlayer/` directory:
|
|
218
|
+
|
|
219
|
+
```sh
|
|
220
|
+
docker compose pull
|
|
221
|
+
docker compose up -d
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Backup and restore
|
|
227
|
+
|
|
228
|
+
All persistent data lives in three named Docker volumes.
|
|
229
|
+
|
|
230
|
+
### Backup
|
|
231
|
+
|
|
232
|
+
```sh
|
|
233
|
+
docker run --rm \
|
|
234
|
+
-v intlayer_mongo-data:/data \
|
|
235
|
+
-v "$(pwd)":/backup \
|
|
236
|
+
busybox tar czf /backup/mongo-data.tar.gz /data
|
|
237
|
+
|
|
238
|
+
docker run --rm \
|
|
239
|
+
-v intlayer_redis-data:/data \
|
|
240
|
+
-v "$(pwd)":/backup \
|
|
241
|
+
busybox tar czf /backup/redis-data.tar.gz /data
|
|
242
|
+
|
|
243
|
+
docker run --rm \
|
|
244
|
+
-v intlayer_minio-data:/data \
|
|
245
|
+
-v "$(pwd)":/backup \
|
|
246
|
+
busybox tar czf /backup/minio-data.tar.gz /data
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Restore
|
|
250
|
+
|
|
251
|
+
```sh
|
|
252
|
+
docker run --rm \
|
|
253
|
+
-v intlayer_mongo-data:/data \
|
|
254
|
+
-v "$(pwd)":/backup \
|
|
255
|
+
busybox tar xzf /backup/mongo-data.tar.gz -C /
|
|
256
|
+
|
|
257
|
+
# Repeat for redis-data and minio-data
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Using a reverse proxy (Nginx / Caddy)
|
|
263
|
+
|
|
264
|
+
For production deployments, place a reverse proxy in front of the app and backend containers instead of exposing them directly.
|
|
265
|
+
|
|
266
|
+
### Nginx example
|
|
267
|
+
|
|
268
|
+
```nginx
|
|
269
|
+
server {
|
|
270
|
+
listen 80;
|
|
271
|
+
server_name cms.example.com;
|
|
272
|
+
|
|
273
|
+
location / {
|
|
274
|
+
proxy_pass http://localhost:3000;
|
|
275
|
+
proxy_set_header Host $host;
|
|
276
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
server {
|
|
281
|
+
listen 80;
|
|
282
|
+
server_name api.example.com;
|
|
283
|
+
|
|
284
|
+
location / {
|
|
285
|
+
proxy_pass http://localhost:3100;
|
|
286
|
+
proxy_set_header Host $host;
|
|
287
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Update the following `.env` variables to match your public domains:
|
|
293
|
+
|
|
294
|
+
```sh
|
|
295
|
+
BACKEND_URL=https://api.example.com
|
|
296
|
+
APP_URL=https://cms.example.com
|
|
297
|
+
DOMAIN=example.com
|
|
298
|
+
VITE_BACKEND_URL=https://api.example.com
|
|
299
|
+
VITE_DOMAIN=example.com
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
> `VITE_*` variables are baked into the dashboard image at build time. If you change them after the image is built, you need to rebuild the `app` image (`docker compose build app`) or use runtime config injection.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Troubleshooting
|
|
307
|
+
|
|
308
|
+
### Backend crash-loops on first start
|
|
309
|
+
|
|
310
|
+
MongoDB and Redis must be healthy before the backend starts. The compose file uses `depends_on` with `condition: service_healthy`. If you see repeated backend restarts, check that the `mongo` and `redis` healthchecks pass:
|
|
311
|
+
|
|
312
|
+
```sh
|
|
313
|
+
docker compose ps
|
|
314
|
+
docker compose logs mongo
|
|
315
|
+
docker compose logs redis
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Dashboard cannot reach the API
|
|
319
|
+
|
|
320
|
+
Verify that `VITE_BACKEND_URL` matches the URL where the backend is reachable from the **browser** (not the Docker network). If you changed the backend port or added a reverse proxy, rebuild the dashboard image:
|
|
321
|
+
|
|
322
|
+
```sh
|
|
323
|
+
docker compose build app
|
|
324
|
+
docker compose up -d app
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Email not sending
|
|
328
|
+
|
|
329
|
+
By default, all outbound email is captured by Mailpit. Open `http://localhost:8025` to see sent messages. To send real email, set `MAIL_PROVIDER=resend` and `RESEND_API_KEY=<your-key>` in `.env`, then restart the backend:
|
|
330
|
+
|
|
331
|
+
```sh
|
|
332
|
+
docker compose restart backend
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### MinIO bucket missing
|
|
336
|
+
|
|
337
|
+
If the `minio-init` one-shot service didn't run (or ran before MinIO was ready), create the bucket manually:
|
|
338
|
+
|
|
339
|
+
```sh
|
|
340
|
+
docker compose run --rm minio-init
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Useful links
|
|
346
|
+
|
|
347
|
+
- [Intlayer CMS documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md)
|
|
348
|
+
- [Configuration reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/configuration.md)
|
|
349
|
+
- [CMS SDK — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_CMS.md#programmatic-access-with-the-intlayerapi-sdk)
|
|
350
|
+
- [Docker Image (aymercizip/intlayer-selfhost)](https://hub.docker.com/repository/docker/aymercizip/intlayer-selfhost/general)
|
|
@@ -231,6 +231,9 @@ Next.js requiere el complemento `@intlayer/swc` para la fase de optimización (r
|
|
|
231
231
|
|
|
232
232
|
> Este complemento no se instala por defecto ya que los complementos SWC son experimentales en Next.js. Podría cambiar en el futuro.
|
|
233
233
|
|
|
234
|
+
<Tabs>
|
|
235
|
+
<Tab value="npm">
|
|
236
|
+
|
|
234
237
|
```bash packageManager="npm"
|
|
235
238
|
npm install -D @intlayer/swc
|
|
236
239
|
```
|
|
@@ -247,6 +250,19 @@ pnpm add -D @intlayer/swc
|
|
|
247
250
|
bun add -d @intlayer/swc
|
|
248
251
|
```
|
|
249
252
|
|
|
253
|
+
</Tab>
|
|
254
|
+
<Tab value="Crates.io (rust)">
|
|
255
|
+
|
|
256
|
+
```toml fileName="Cargo.toml"
|
|
257
|
+
[dependencies]
|
|
258
|
+
intlayer-swc-plugin = "*"
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
[View on Crates.io](https://crates.io/crates/intlayer-swc-plugin)
|
|
262
|
+
|
|
263
|
+
</Tab>
|
|
264
|
+
</Tabs>
|
|
265
|
+
|
|
250
266
|
Una vez instalado, Intlayer detectará y utilizará automáticamente el complemento.
|
|
251
267
|
|
|
252
268
|
Para las fases de **purga y minificación** (eliminación de campos y renombramiento), instala de manera adicional `@intlayer/babel` y añade los complementos de Babel. Debido a que Next.js usa SWC para la transformación pero aún evalúa `babel.config.js` para la configuración, estos complementos de Babel se ejecutan en un paso previo antes de SWC.
|
package/docs/es/cli/scan.md
CHANGED
|
@@ -150,10 +150,10 @@ await scan("https://example.com", {
|
|
|
150
150
|
});
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
Para un acceso de nivel inferior, `scanWebsite` de `@intlayer/
|
|
153
|
+
Para un acceso de nivel inferior, `scanWebsite` de `@intlayer/engine/scan` devuelve un objeto `ScanResult` estructurado:
|
|
154
154
|
|
|
155
155
|
```ts
|
|
156
|
-
import { scanWebsite } from "@intlayer/
|
|
156
|
+
import { scanWebsite } from "@intlayer/engine/scan";
|
|
157
157
|
|
|
158
158
|
const result = await scanWebsite("https://example.com", { deep: false });
|
|
159
159
|
console.log(result.score, result.totalPageSize, result.events);
|
|
@@ -218,9 +218,9 @@ El paquete `@intlayer/mcp` proporciona un servidor MCP (Model Context Protocol)
|
|
|
218
218
|
|
|
219
219
|
Los paquetes `@intlayer/dictionaries-entry`, `@intlayer/unmerged-dictionaries-entry` y `@intlayer/dynamic-dictionaries-entry` devuelven la ruta de entrada de los diccionarios de Intlayer. Dado que buscar en el sistema de archivos desde el navegador es imposible, no es posible usar empaquetadores como Webpack o Rollup para obtener la ruta de entrada de los diccionarios. Estos paquetes están diseñados para ser aliasados, lo que permite la optimización del empaquetado en varios empaquetadores como Vite, Webpack y Turbopack.
|
|
220
220
|
|
|
221
|
-
### @intlayer/
|
|
221
|
+
### @intlayer/engine
|
|
222
222
|
|
|
223
|
-
El paquete `@intlayer/
|
|
223
|
+
El paquete `@intlayer/engine` se utiliza para monitorizar archivos de contenido y regenerar el diccionario modificado en cada modificación.
|
|
224
224
|
|
|
225
225
|
### @intlayer/editor
|
|
226
226
|
|
package/docs/es/intlayer_CMS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-23
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Intlayer CMS | Externaliza tu contenido en el Intlayer CMS
|
|
5
5
|
description: Externaliza tu contenido en el Intlayer CMS para delegar la gestión de tu contenido a tu equipo.
|
|
6
6
|
keywords:
|
|
@@ -18,6 +18,9 @@ slugs:
|
|
|
18
18
|
- cms
|
|
19
19
|
youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
20
20
|
history:
|
|
21
|
+
- version: 9.0.0
|
|
22
|
+
date: 2026-06-30
|
|
23
|
+
changes: "Añadida sección de Auto-alojamiento: bootstrap Docker Compose, inventario de servicios, configuración SDK, características opcionales y notas de actualización"
|
|
21
24
|
- version: 6.0.1
|
|
22
25
|
date: 2025-09-22
|
|
23
26
|
changes: "Añadida documentación de sincronización en vivo"
|
|
@@ -385,6 +388,119 @@ Notas y restricciones:
|
|
|
385
388
|
|
|
386
389
|
- El editor visual utiliza un iframe para mostrar tu sitio web. Asegúrate de que la Política de Seguridad de Contenidos (CSP) de tu sitio web permita la URL del CMS como `frame-ancestors` ('https://app.intlayer.org' por defecto). Revisa la consola del editor para cualquier error.
|
|
387
390
|
|
|
391
|
+
## Auto-alojamiento
|
|
392
|
+
|
|
393
|
+
Intlayer puede ejecutarse completamente en tu propia infraestructura — no se requiere cuenta de Intlayer Cloud. Un solo comando arranca toda la pila (panel de control, API, base de datos, almacenamiento de objetos y correo electrónico) mediante Docker Compose:
|
|
394
|
+
|
|
395
|
+
```sh
|
|
396
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Esto descarga un `docker-compose.yml` y un `.env`, genera automáticamente los secretos necesarios (`BETTER_AUTH_SECRET`, credenciales de MinIO) y arranca todos los contenedores con `docker compose up -d`. Volver a ejecutar el mismo comando en una instalación existente realiza una actualización progresiva sin pérdida de datos.
|
|
400
|
+
|
|
401
|
+
### Servicios iniciados
|
|
402
|
+
|
|
403
|
+
| Servicio | Puerto(s) | Propósito |
|
|
404
|
+
| -------------------------- | ------------------------------------ | ----------------------------------------------------- |
|
|
405
|
+
| **app** (panel de control) | `3000` | Interfaz CMS TanStack Start |
|
|
406
|
+
| **backend** (API) | `3100` | API REST Fastify |
|
|
407
|
+
| **MongoDB 7** | interno | Base de datos principal (replica set de un solo nodo) |
|
|
408
|
+
| **Redis 7** | interno | Colas de trabajos y caché |
|
|
409
|
+
| **MinIO** | `9000` (S3), `9001` (consola) | Almacenamiento de objetos compatible con S3 |
|
|
410
|
+
| **Mailpit** | `1025` (SMTP), `8025` (interfaz web) | Sumidero local de correo transaccional |
|
|
411
|
+
|
|
412
|
+
Chromium (para la generación de capturas de pantalla con Puppeteer) está incluido en la imagen del backend — no se necesita ningún contenedor adicional.
|
|
413
|
+
|
|
414
|
+
### Conectar tu proyecto a una instancia auto-alojada
|
|
415
|
+
|
|
416
|
+
Apunta tu configuración de Intlayer a tu propio backend y panel de control en lugar de `intlayer.org`:
|
|
417
|
+
|
|
418
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
419
|
+
import type { IntlayerConfig } from "intlayer";
|
|
420
|
+
|
|
421
|
+
const config: IntlayerConfig = {
|
|
422
|
+
editor: {
|
|
423
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
424
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* URL del panel de control CMS auto-alojado.
|
|
428
|
+
* Por defecto: https://app.intlayer.org
|
|
429
|
+
*/
|
|
430
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // ej. http://localhost:3000
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* URL de la API backend auto-alojada.
|
|
434
|
+
* Por defecto: https://back.intlayer.org
|
|
435
|
+
*/
|
|
436
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // ej. http://localhost:3100
|
|
437
|
+
},
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
export default config;
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
Establece las variables de entorno correspondientes en tu proyecto:
|
|
444
|
+
|
|
445
|
+
```sh
|
|
446
|
+
INTLAYER_CMS_URL=http://localhost:3000
|
|
447
|
+
INTLAYER_BACKEND_URL=http://localhost:3100
|
|
448
|
+
INTLAYER_CLIENT_ID=<your-client-id>
|
|
449
|
+
INTLAYER_CLIENT_SECRET=<your-client-secret>
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
Crea credenciales de acceso en tu panel de control auto-alojado en `http://localhost:3000/projects`.
|
|
453
|
+
|
|
454
|
+
### SDK `@intlayer/api`: apuntar a un backend auto-alojado
|
|
455
|
+
|
|
456
|
+
Al usar el SDK de forma programática, pasa `backendURL` explícitamente a `createIntlayerCMS`:
|
|
457
|
+
|
|
458
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
459
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
460
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
461
|
+
|
|
462
|
+
const cms = createIntlayerCMS({
|
|
463
|
+
editor: {
|
|
464
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
465
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
466
|
+
backendURL: process.env.INTLAYER_BACKEND_URL, // http://localhost:3100
|
|
467
|
+
},
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### Características opcionales
|
|
474
|
+
|
|
475
|
+
Estas características requieren cuentas externas y funcionan correctamente cuando sus claves no están presentes en el `.env` auto-alojado:
|
|
476
|
+
|
|
477
|
+
| Característica | Variable(s) de entorno |
|
|
478
|
+
| -------------------------------------- | ----------------------------------------------- |
|
|
479
|
+
| Traducción / auditoría con IA | `OPENAI_API_KEY` |
|
|
480
|
+
| Facturación | `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, … |
|
|
481
|
+
| OAuth de GitHub | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` |
|
|
482
|
+
| OAuth de Google | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` |
|
|
483
|
+
| OAuth de GitLab / Microsoft / LinkedIn | `GITLAB_*`, `MICROSOFT_*`, `LINKEDIN_*` |
|
|
484
|
+
| Correo transaccional via Resend | `RESEND_API_KEY` (por defecto: Mailpit SMTP) |
|
|
485
|
+
|
|
486
|
+
### Persistencia de datos y actualizaciones
|
|
487
|
+
|
|
488
|
+
Tres volúmenes de Docker contienen todo el estado persistente: `mongo-data`, `redis-data` y `minio-data`. Sobreviven a los reinicios y actualizaciones de contenedores. Volver a ejecutar el instalador descarga las últimas imágenes y realiza un `docker compose up -d` progresivo.
|
|
489
|
+
|
|
490
|
+
Puertos expuestos en el host:
|
|
491
|
+
|
|
492
|
+
| Puerto | Servicio |
|
|
493
|
+
| ------ | ------------------------------------------------------------------- |
|
|
494
|
+
| `3000` | Panel de control |
|
|
495
|
+
| `3100` | API Backend |
|
|
496
|
+
| `8025` | Interfaz web de correo Mailpit |
|
|
497
|
+
| `9000` | API S3 de MinIO (necesaria para la carga de assets en el navegador) |
|
|
498
|
+
| `9001` | Consola de MinIO |
|
|
499
|
+
|
|
500
|
+
Para una referencia completa de todas las variables de entorno disponibles y opciones avanzadas (proxy inverso, dominios personalizados, respaldo/restauración), consulta la [Guía de Auto-alojamiento](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/self_hosting.md).
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
388
504
|
## Depuración
|
|
389
505
|
|
|
390
506
|
Si encuentras problemas con el CMS, verifica lo siguiente:
|
|
@@ -60,19 +60,23 @@ Ver la [Plantilla de la Aplicación](https://github.com/aymericzip/intlayer-adon
|
|
|
60
60
|
Para comenzar a usar `adonis-intlayer`, instala el paquete usando npm:
|
|
61
61
|
|
|
62
62
|
```bash packageManager="npm"
|
|
63
|
-
npx intlayer
|
|
63
|
+
npx intlayer@canary init --interactive # v9
|
|
64
|
+
# npx intlayer init # v8
|
|
64
65
|
```
|
|
65
66
|
|
|
66
67
|
```bash packageManager="pnpm"
|
|
67
|
-
pnpm dlx intlayer
|
|
68
|
+
pnpm dlx intlayer@canary init --interactive # v9
|
|
69
|
+
# pnpm dlx intlayer init # v8
|
|
68
70
|
```
|
|
69
71
|
|
|
70
72
|
```bash packageManager="yarn"
|
|
71
|
-
yarn dlx intlayer
|
|
73
|
+
yarn dlx intlayer@canary init --interactive # v9
|
|
74
|
+
# yarn dlx intlayer init # v8
|
|
72
75
|
```
|
|
73
76
|
|
|
74
77
|
```bash packageManager="bun"
|
|
75
|
-
bunx intlayer
|
|
78
|
+
bunx intlayer@canary init --interactive # v9
|
|
79
|
+
# bunx intlayer init # v8
|
|
76
80
|
```
|
|
77
81
|
|
|
78
82
|
> la bandera `--interactive` es opcional. Usa `intlayer-cli init` si eres un agente de IA.
|