@intlayer/docs 9.0.0-canary.9 → 9.0.1
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 +4 -4
- package/blog/ar/intlayer_with_next-i18next.md +4 -4
- package/blog/ar/intlayer_with_next-intl.md +4 -4
- package/blog/ar/intlayer_with_react-i18next.md +4 -4
- package/blog/ar/intlayer_with_react-intl.md +4 -4
- package/blog/ar/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/de/intlayer_with_next-i18next.md +4 -4
- package/blog/de/intlayer_with_next-intl.md +4 -4
- package/blog/de/intlayer_with_react-i18next.md +4 -4
- package/blog/de/intlayer_with_react-intl.md +4 -4
- package/blog/de/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/en/intlayer_with_next-i18next.md +4 -4
- package/blog/en/intlayer_with_next-intl.md +4 -4
- package/blog/en/intlayer_with_react-i18next.md +4 -4
- package/blog/en/intlayer_with_react-intl.md +4 -4
- package/blog/en/intlayer_with_vue-i18n.md +4 -4
- package/blog/en/nextjs-multilingual-seo-comparison.md +6 -0
- package/blog/en/rag_powered_documentation_assistant.md +6 -0
- package/blog/en-GB/internationalization_and_SEO.md +6 -0
- package/blog/en-GB/intlayer_with_i18next.md +4 -4
- package/blog/en-GB/intlayer_with_next-i18next.md +4 -4
- package/blog/en-GB/intlayer_with_next-intl.md +4 -4
- package/blog/en-GB/intlayer_with_react-i18next.md +4 -4
- package/blog/en-GB/intlayer_with_react-intl.md +4 -4
- package/blog/en-GB/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/es/intlayer_with_next-i18next.md +4 -4
- package/blog/es/intlayer_with_next-intl.md +4 -4
- package/blog/es/intlayer_with_react-i18next.md +4 -4
- package/blog/es/intlayer_with_react-intl.md +4 -4
- package/blog/es/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/fr/intlayer_with_next-i18next.md +4 -4
- package/blog/fr/intlayer_with_next-intl.md +4 -4
- package/blog/fr/intlayer_with_react-i18next.md +4 -4
- package/blog/fr/intlayer_with_react-intl.md +4 -4
- package/blog/fr/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/hi/intlayer_with_next-i18next.md +4 -4
- package/blog/hi/intlayer_with_next-intl.md +4 -4
- package/blog/hi/intlayer_with_react-i18next.md +4 -4
- package/blog/hi/intlayer_with_react-intl.md +4 -4
- package/blog/hi/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/id/intlayer_with_next-i18next.md +4 -4
- package/blog/id/intlayer_with_next-intl.md +4 -4
- package/blog/id/intlayer_with_react-i18next.md +4 -4
- package/blog/id/intlayer_with_react-intl.md +4 -4
- package/blog/id/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/it/intlayer_with_next-i18next.md +4 -4
- package/blog/it/intlayer_with_next-intl.md +4 -4
- package/blog/it/intlayer_with_react-i18next.md +4 -4
- package/blog/it/intlayer_with_react-intl.md +4 -4
- package/blog/it/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/ja/intlayer_with_next-i18next.md +4 -4
- package/blog/ja/intlayer_with_next-intl.md +4 -4
- package/blog/ja/intlayer_with_react-i18next.md +4 -4
- package/blog/ja/intlayer_with_react-intl.md +4 -4
- package/blog/ja/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/ko/intlayer_with_next-i18next.md +4 -4
- package/blog/ko/intlayer_with_next-intl.md +4 -4
- package/blog/ko/intlayer_with_react-i18next.md +4 -4
- package/blog/ko/intlayer_with_react-intl.md +4 -4
- package/blog/ko/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/pl/intlayer_with_next-i18next.md +4 -4
- package/blog/pl/intlayer_with_next-intl.md +4 -4
- package/blog/pl/intlayer_with_react-i18next.md +4 -4
- package/blog/pl/intlayer_with_react-intl.md +4 -4
- package/blog/pl/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/pt/intlayer_with_next-i18next.md +4 -4
- package/blog/pt/intlayer_with_next-intl.md +4 -4
- package/blog/pt/intlayer_with_react-i18next.md +4 -4
- package/blog/pt/intlayer_with_react-intl.md +4 -4
- package/blog/pt/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/ru/intlayer_with_next-i18next.md +4 -4
- package/blog/ru/intlayer_with_next-intl.md +4 -4
- package/blog/ru/intlayer_with_react-i18next.md +4 -4
- package/blog/ru/intlayer_with_react-intl.md +4 -4
- package/blog/ru/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/tr/intlayer_with_next-i18next.md +4 -4
- package/blog/tr/intlayer_with_next-intl.md +4 -4
- package/blog/tr/intlayer_with_react-i18next.md +4 -4
- package/blog/tr/intlayer_with_react-intl.md +4 -4
- package/blog/tr/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/uk/intlayer_with_next-i18next.md +4 -4
- package/blog/uk/intlayer_with_next-intl.md +4 -4
- package/blog/uk/intlayer_with_react-i18next.md +4 -4
- package/blog/uk/intlayer_with_react-intl.md +4 -4
- package/blog/uk/intlayer_with_vue-i18n.md +4 -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 +4 -4
- package/blog/vi/intlayer_with_next-i18next.md +4 -4
- package/blog/vi/intlayer_with_next-intl.md +4 -4
- package/blog/vi/intlayer_with_react-i18next.md +4 -4
- package/blog/vi/intlayer_with_react-intl.md +4 -4
- package/blog/vi/intlayer_with_vue-i18n.md +4 -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/authors.cjs.map +1 -1
- package/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs +2 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/doc.cjs.map +1 -1
- package/dist/cjs/frequentQuestions.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +0 -1
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +60 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +0 -1
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/cjs/legal.cjs.map +1 -1
- package/dist/esm/authors.mjs.map +1 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs +2 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/doc.mjs.map +1 -1
- package/dist/esm/frequentQuestions.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +60 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/esm/legal.mjs.map +1 -1
- package/dist/types/authors.d.ts +16 -8
- package/dist/types/authors.d.ts.map +1 -1
- package/dist/types/blog.d.ts +0 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts +0 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/doc.d.ts +0 -1
- package/dist/types/doc.d.ts.map +1 -1
- package/dist/types/frequentQuestions.d.ts +0 -1
- package/dist/types/frequentQuestions.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +0 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +3 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +0 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts +0 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/dist/types/legal.d.ts +0 -1
- package/dist/types/legal.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +16 -0
- package/docs/ar/cli/index.md +1 -1
- package/docs/ar/cli/scan.md +2 -2
- package/docs/ar/configuration.md +42 -1
- package/docs/ar/how_works_intlayer.md +2 -2
- package/docs/ar/intlayer_CMS.md +14 -122
- package/docs/ar/intlayer_with_adonisjs.md +4 -4
- package/docs/ar/intlayer_with_analog.md +4 -4
- package/docs/ar/intlayer_with_angular_19.md +4 -4
- package/docs/ar/intlayer_with_angular_21.md +4 -4
- package/docs/ar/intlayer_with_astro_lit.md +7 -7
- package/docs/ar/intlayer_with_astro_preact.md +4 -4
- package/docs/ar/intlayer_with_astro_react.md +4 -4
- package/docs/ar/intlayer_with_astro_solid.md +4 -4
- package/docs/ar/intlayer_with_astro_svelte.md +4 -4
- package/docs/ar/intlayer_with_astro_vanilla.md +4 -4
- package/docs/ar/intlayer_with_astro_vue.md +4 -4
- package/docs/ar/intlayer_with_create_react_app.md +4 -4
- package/docs/ar/intlayer_with_express.md +4 -4
- package/docs/ar/intlayer_with_fastify.md +4 -4
- package/docs/ar/intlayer_with_hono.md +4 -4
- package/docs/ar/intlayer_with_lynx+react.md +4 -4
- package/docs/ar/intlayer_with_nestjs.md +4 -4
- package/docs/ar/intlayer_with_next-i18next.md +4 -4
- package/docs/ar/intlayer_with_nextjs_14.md +4 -4
- package/docs/ar/intlayer_with_nextjs_15.md +6 -8
- package/docs/ar/intlayer_with_nextjs_16.md +6 -8
- package/docs/ar/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/ar/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/ar/intlayer_with_nuxt.md +5 -5
- package/docs/ar/intlayer_with_react_native+expo.md +4 -4
- package/docs/ar/intlayer_with_react_router_v7.md +5 -5
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +5 -5
- package/docs/ar/intlayer_with_svelte_kit.md +4 -4
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -5
- package/docs/ar/intlayer_with_tanstack.md +6 -7
- package/docs/ar/intlayer_with_vite+lit.md +4 -4
- package/docs/ar/intlayer_with_vite+preact.md +5 -5
- package/docs/ar/intlayer_with_vite+react.md +5 -5
- package/docs/ar/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/ar/intlayer_with_vite+solid.md +5 -5
- package/docs/ar/intlayer_with_vite+svelte.md +4 -4
- package/docs/ar/intlayer_with_vite+vanilla.md +4 -4
- package/docs/ar/intlayer_with_vite+vue.md +5 -5
- package/docs/ar/live-sync.md +174 -0
- package/docs/ar/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/ar/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/ar/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/ar/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/ar/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/ar/releases/v9.md +128 -33
- package/docs/ar/self_hosting.md +350 -0
- package/docs/bn/bundle_optimization.md +16 -0
- package/docs/bn/cli/index.md +1 -1
- package/docs/bn/cli/scan.md +2 -2
- package/docs/bn/configuration.md +45 -1
- package/docs/bn/intlayer_CMS.md +570 -0
- package/docs/bn/intlayer_with_angular_21.md +4 -4
- package/docs/bn/intlayer_with_fastify.md +4 -4
- package/docs/bn/intlayer_with_hono.md +4 -4
- package/docs/bn/intlayer_with_vite+lit.md +4 -4
- package/docs/bn/intlayer_with_vite+vanilla.md +4 -4
- package/docs/bn/releases/v9.md +349 -0
- package/docs/cs/bundle_optimization.md +16 -0
- package/docs/cs/cli/index.md +1 -1
- package/docs/cs/cli/scan.md +2 -2
- package/docs/cs/configuration.md +45 -1
- package/docs/cs/intlayer_with_angular_21.md +4 -4
- package/docs/cs/intlayer_with_fastify.md +4 -4
- package/docs/cs/intlayer_with_hono.md +4 -4
- package/docs/cs/intlayer_with_vite+lit.md +4 -4
- package/docs/cs/intlayer_with_vite+vanilla.md +4 -4
- package/docs/cs/releases/v9.md +349 -0
- package/docs/de/bundle_optimization.md +16 -0
- package/docs/de/cli/index.md +1 -1
- package/docs/de/cli/scan.md +2 -2
- package/docs/de/configuration.md +42 -1
- package/docs/de/how_works_intlayer.md +2 -2
- package/docs/de/intlayer_CMS.md +86 -100
- package/docs/de/intlayer_with_adonisjs.md +4 -4
- package/docs/de/intlayer_with_analog.md +4 -4
- package/docs/de/intlayer_with_angular_19.md +4 -4
- package/docs/de/intlayer_with_angular_21.md +4 -4
- package/docs/de/intlayer_with_astro_lit.md +7 -7
- package/docs/de/intlayer_with_astro_preact.md +4 -4
- package/docs/de/intlayer_with_astro_react.md +4 -4
- package/docs/de/intlayer_with_astro_solid.md +4 -4
- package/docs/de/intlayer_with_astro_svelte.md +4 -4
- package/docs/de/intlayer_with_astro_vanilla.md +4 -4
- package/docs/de/intlayer_with_astro_vue.md +4 -4
- package/docs/de/intlayer_with_create_react_app.md +4 -4
- package/docs/de/intlayer_with_express.md +4 -4
- package/docs/de/intlayer_with_fastify.md +4 -4
- package/docs/de/intlayer_with_hono.md +4 -4
- package/docs/de/intlayer_with_lynx+react.md +4 -4
- package/docs/de/intlayer_with_nestjs.md +4 -4
- package/docs/de/intlayer_with_next-i18next.md +4 -4
- package/docs/de/intlayer_with_nextjs_14.md +4 -4
- package/docs/de/intlayer_with_nextjs_15.md +6 -8
- package/docs/de/intlayer_with_nextjs_16.md +6 -8
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/de/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/de/intlayer_with_nuxt.md +5 -5
- package/docs/de/intlayer_with_react_native+expo.md +4 -4
- package/docs/de/intlayer_with_react_router_v7.md +5 -5
- package/docs/de/intlayer_with_svelte_kit.md +4 -4
- package/docs/de/intlayer_with_tanstack+solid.md +5 -5
- package/docs/de/intlayer_with_tanstack.md +6 -7
- package/docs/de/intlayer_with_vite+lit.md +4 -4
- package/docs/de/intlayer_with_vite+preact.md +5 -5
- package/docs/de/intlayer_with_vite+react.md +5 -5
- package/docs/de/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/de/intlayer_with_vite+solid.md +5 -5
- package/docs/de/intlayer_with_vite+vanilla.md +4 -4
- package/docs/de/intlayer_with_vite+vue.md +5 -5
- package/docs/de/live-sync.md +174 -0
- package/docs/de/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/de/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/de/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/de/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/de/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/de/releases/v9.md +131 -33
- package/docs/de/self_hosting.md +350 -0
- package/docs/en/analytics.md +222 -0
- package/docs/en/bundle_optimization.md +16 -0
- package/docs/en/cli/index.md +1 -1
- package/docs/en/cli/scan.md +2 -2
- package/docs/en/configuration.md +42 -1
- package/docs/en/dictionary/content_file.md +2 -2
- package/docs/en/how_works_intlayer.md +2 -2
- package/docs/en/intlayer_CMS.md +143 -107
- package/docs/en/intlayer_with_adonisjs.md +4 -4
- package/docs/en/intlayer_with_analog.md +4 -4
- package/docs/en/intlayer_with_angular_19.md +4 -4
- package/docs/en/intlayer_with_angular_21.md +4 -4
- package/docs/en/intlayer_with_astro.md +4 -4
- package/docs/en/intlayer_with_astro_lit.md +7 -7
- package/docs/en/intlayer_with_astro_preact.md +4 -4
- package/docs/en/intlayer_with_astro_react.md +4 -4
- package/docs/en/intlayer_with_astro_solid.md +4 -4
- package/docs/en/intlayer_with_astro_svelte.md +4 -4
- package/docs/en/intlayer_with_astro_vanilla.md +4 -4
- package/docs/en/intlayer_with_astro_vue.md +4 -4
- package/docs/en/intlayer_with_create_react_app.md +4 -4
- package/docs/en/intlayer_with_express.md +4 -4
- package/docs/en/intlayer_with_fastify.md +4 -4
- package/docs/en/intlayer_with_hono.md +4 -4
- package/docs/en/intlayer_with_lynx+react.md +4 -4
- package/docs/en/intlayer_with_nestjs.md +4 -4
- package/docs/en/intlayer_with_next-i18next.md +4 -4
- package/docs/en/intlayer_with_nextjs_14.md +4 -4
- package/docs/en/intlayer_with_nextjs_15.md +5 -7
- package/docs/en/intlayer_with_nextjs_16.md +6 -8
- package/docs/en/intlayer_with_nextjs_compiler.md +6 -8
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/en/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/en/intlayer_with_nuxt.md +5 -5
- package/docs/en/intlayer_with_react_native+expo.md +4 -4
- package/docs/en/intlayer_with_react_router_v7.md +5 -5
- package/docs/en/intlayer_with_svelte_kit.md +4 -4
- package/docs/en/intlayer_with_tanstack+solid.md +5 -5
- package/docs/en/intlayer_with_tanstack.md +6 -7
- package/docs/en/intlayer_with_vite+lit.md +4 -4
- package/docs/en/intlayer_with_vite+preact.md +5 -5
- package/docs/en/intlayer_with_vite+react.md +5 -5
- package/docs/en/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/en/intlayer_with_vite+solid.md +5 -5
- package/docs/en/intlayer_with_vite+svelte.md +4 -4
- package/docs/en/intlayer_with_vite+vanilla.md +4 -4
- package/docs/en/intlayer_with_vite+vue.md +5 -5
- package/docs/en/live-sync.md +184 -0
- package/docs/en/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/en/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/en/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/en/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/en/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/en/releases/v9.md +124 -29
- package/docs/en/self_hosting.md +310 -0
- package/docs/en-GB/bundle_optimization.md +16 -0
- package/docs/en-GB/cli/index.md +1 -1
- package/docs/en-GB/cli/scan.md +2 -2
- package/docs/en-GB/configuration.md +42 -1
- package/docs/en-GB/how_works_intlayer.md +2 -2
- package/docs/en-GB/intlayer_CMS.md +14 -122
- package/docs/en-GB/intlayer_with_adonisjs.md +4 -4
- package/docs/en-GB/intlayer_with_analog.md +4 -4
- package/docs/en-GB/intlayer_with_angular_19.md +4 -4
- package/docs/en-GB/intlayer_with_angular_21.md +4 -4
- package/docs/en-GB/intlayer_with_astro_lit.md +7 -7
- package/docs/en-GB/intlayer_with_astro_preact.md +4 -4
- package/docs/en-GB/intlayer_with_astro_react.md +4 -4
- package/docs/en-GB/intlayer_with_astro_solid.md +4 -4
- package/docs/en-GB/intlayer_with_astro_svelte.md +4 -4
- package/docs/en-GB/intlayer_with_astro_vanilla.md +4 -4
- package/docs/en-GB/intlayer_with_astro_vue.md +4 -4
- package/docs/en-GB/intlayer_with_create_react_app.md +8 -8
- package/docs/en-GB/intlayer_with_express.md +4 -4
- package/docs/en-GB/intlayer_with_fastify.md +4 -4
- package/docs/en-GB/intlayer_with_hono.md +4 -4
- package/docs/en-GB/intlayer_with_lynx+react.md +8 -8
- package/docs/en-GB/intlayer_with_nestjs.md +4 -4
- package/docs/en-GB/intlayer_with_next-i18next.md +4 -4
- package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
- package/docs/en-GB/intlayer_with_nextjs_15.md +6 -8
- package/docs/en-GB/intlayer_with_nextjs_16.md +6 -8
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/en-GB/intlayer_with_nuxt.md +5 -5
- package/docs/en-GB/intlayer_with_react_native+expo.md +4 -4
- package/docs/en-GB/intlayer_with_react_router_v7.md +5 -5
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +5 -5
- package/docs/en-GB/intlayer_with_svelte_kit.md +4 -4
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -5
- package/docs/en-GB/intlayer_with_tanstack.md +6 -7
- package/docs/en-GB/intlayer_with_vite+lit.md +4 -4
- package/docs/en-GB/intlayer_with_vite+preact.md +5 -5
- package/docs/en-GB/intlayer_with_vite+react.md +5 -5
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/en-GB/intlayer_with_vite+solid.md +5 -5
- package/docs/en-GB/intlayer_with_vite+svelte.md +4 -4
- package/docs/en-GB/intlayer_with_vite+vanilla.md +4 -4
- package/docs/en-GB/intlayer_with_vite+vue.md +5 -5
- package/docs/en-GB/live-sync.md +173 -0
- package/docs/en-GB/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/en-GB/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/en-GB/releases/v9.md +117 -26
- package/docs/en-GB/self_hosting.md +350 -0
- package/docs/es/bundle_optimization.md +16 -0
- package/docs/es/cli/index.md +1 -1
- package/docs/es/cli/scan.md +2 -2
- package/docs/es/configuration.md +42 -1
- package/docs/es/how_works_intlayer.md +2 -2
- package/docs/es/intlayer_CMS.md +85 -104
- package/docs/es/intlayer_with_adonisjs.md +4 -4
- package/docs/es/intlayer_with_analog.md +4 -4
- package/docs/es/intlayer_with_angular_19.md +4 -4
- package/docs/es/intlayer_with_angular_21.md +4 -4
- package/docs/es/intlayer_with_astro_lit.md +7 -7
- package/docs/es/intlayer_with_astro_preact.md +4 -4
- package/docs/es/intlayer_with_astro_react.md +4 -4
- package/docs/es/intlayer_with_astro_solid.md +4 -4
- package/docs/es/intlayer_with_astro_svelte.md +4 -4
- package/docs/es/intlayer_with_astro_vanilla.md +4 -4
- package/docs/es/intlayer_with_astro_vue.md +4 -4
- package/docs/es/intlayer_with_create_react_app.md +4 -4
- package/docs/es/intlayer_with_express.md +4 -4
- package/docs/es/intlayer_with_fastify.md +4 -4
- package/docs/es/intlayer_with_hono.md +4 -4
- package/docs/es/intlayer_with_lynx+react.md +4 -4
- package/docs/es/intlayer_with_nestjs.md +4 -4
- package/docs/es/intlayer_with_next-i18next.md +4 -4
- package/docs/es/intlayer_with_nextjs_14.md +4 -4
- package/docs/es/intlayer_with_nextjs_15.md +6 -8
- package/docs/es/intlayer_with_nextjs_16.md +6 -8
- package/docs/es/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/es/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/es/intlayer_with_nuxt.md +5 -5
- package/docs/es/intlayer_with_react_native+expo.md +4 -4
- package/docs/es/intlayer_with_react_router_v7.md +5 -5
- package/docs/es/intlayer_with_svelte_kit.md +4 -4
- package/docs/es/intlayer_with_tanstack+solid.md +5 -5
- package/docs/es/intlayer_with_tanstack.md +6 -7
- package/docs/es/intlayer_with_vite+lit.md +4 -4
- package/docs/es/intlayer_with_vite+preact.md +5 -5
- package/docs/es/intlayer_with_vite+react.md +5 -5
- package/docs/es/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/es/intlayer_with_vite+solid.md +5 -5
- package/docs/es/intlayer_with_vite+svelte.md +4 -4
- package/docs/es/intlayer_with_vite+vanilla.md +4 -4
- package/docs/es/intlayer_with_vite+vue.md +5 -5
- package/docs/es/live-sync.md +176 -0
- package/docs/es/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/es/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/es/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/es/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/es/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/es/releases/v9.md +131 -33
- package/docs/es/self_hosting.md +350 -0
- package/docs/fr/bundle_optimization.md +16 -0
- package/docs/fr/cli/index.md +1 -1
- package/docs/fr/cli/scan.md +2 -2
- package/docs/fr/configuration.md +42 -1
- package/docs/fr/how_works_intlayer.md +2 -2
- package/docs/fr/intlayer_CMS.md +86 -100
- package/docs/fr/intlayer_with_adonisjs.md +4 -4
- package/docs/fr/intlayer_with_analog.md +4 -4
- package/docs/fr/intlayer_with_angular_19.md +4 -4
- package/docs/fr/intlayer_with_angular_21.md +4 -4
- package/docs/fr/intlayer_with_astro_lit.md +7 -7
- package/docs/fr/intlayer_with_astro_preact.md +4 -4
- package/docs/fr/intlayer_with_astro_react.md +4 -4
- package/docs/fr/intlayer_with_astro_solid.md +4 -4
- package/docs/fr/intlayer_with_astro_svelte.md +4 -4
- package/docs/fr/intlayer_with_astro_vanilla.md +4 -4
- package/docs/fr/intlayer_with_astro_vue.md +4 -4
- package/docs/fr/intlayer_with_create_react_app.md +4 -4
- package/docs/fr/intlayer_with_express.md +4 -4
- package/docs/fr/intlayer_with_fastify.md +4 -4
- package/docs/fr/intlayer_with_hono.md +4 -4
- package/docs/fr/intlayer_with_lynx+react.md +4 -4
- package/docs/fr/intlayer_with_nestjs.md +4 -4
- package/docs/fr/intlayer_with_next-i18next.md +4 -4
- package/docs/fr/intlayer_with_nextjs_14.md +4 -4
- package/docs/fr/intlayer_with_nextjs_15.md +6 -8
- package/docs/fr/intlayer_with_nextjs_16.md +6 -8
- package/docs/fr/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/fr/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/fr/intlayer_with_nuxt.md +5 -5
- package/docs/fr/intlayer_with_react_native+expo.md +4 -4
- package/docs/fr/intlayer_with_react_router_v7.md +5 -5
- package/docs/fr/intlayer_with_svelte_kit.md +4 -4
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -5
- package/docs/fr/intlayer_with_tanstack.md +6 -7
- package/docs/fr/intlayer_with_vite+lit.md +4 -4
- package/docs/fr/intlayer_with_vite+preact.md +5 -5
- package/docs/fr/intlayer_with_vite+react.md +5 -5
- package/docs/fr/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/fr/intlayer_with_vite+solid.md +5 -5
- package/docs/fr/intlayer_with_vite+svelte.md +4 -4
- package/docs/fr/intlayer_with_vite+vanilla.md +4 -4
- package/docs/fr/intlayer_with_vite+vue.md +5 -5
- package/docs/fr/live-sync.md +174 -0
- package/docs/fr/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/fr/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/fr/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/fr/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/fr/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/fr/releases/v9.md +131 -25
- package/docs/fr/self_hosting.md +350 -0
- package/docs/hi/bundle_optimization.md +16 -0
- package/docs/hi/cli/index.md +1 -1
- package/docs/hi/cli/scan.md +2 -2
- package/docs/hi/configuration.md +42 -1
- package/docs/hi/how_works_intlayer.md +2 -2
- package/docs/hi/intlayer_CMS.md +14 -122
- package/docs/hi/intlayer_with_adonisjs.md +4 -4
- package/docs/hi/intlayer_with_analog.md +4 -4
- package/docs/hi/intlayer_with_angular_19.md +4 -4
- package/docs/hi/intlayer_with_angular_21.md +4 -4
- package/docs/hi/intlayer_with_astro_vue.md +4 -4
- package/docs/hi/intlayer_with_create_react_app.md +4 -4
- package/docs/hi/intlayer_with_express.md +4 -4
- package/docs/hi/intlayer_with_fastify.md +4 -4
- package/docs/hi/intlayer_with_hono.md +4 -4
- package/docs/hi/intlayer_with_lynx+react.md +4 -4
- package/docs/hi/intlayer_with_nestjs.md +4 -4
- package/docs/hi/intlayer_with_next-i18next.md +4 -4
- package/docs/hi/intlayer_with_nextjs_14.md +4 -4
- package/docs/hi/intlayer_with_nextjs_15.md +6 -8
- package/docs/hi/intlayer_with_nextjs_16.md +6 -8
- package/docs/hi/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/hi/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/hi/intlayer_with_nuxt.md +5 -5
- package/docs/hi/intlayer_with_react_native+expo.md +4 -4
- package/docs/hi/intlayer_with_react_router_v7.md +5 -5
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +5 -5
- package/docs/hi/intlayer_with_svelte_kit.md +4 -4
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -5
- package/docs/hi/intlayer_with_tanstack.md +6 -7
- package/docs/hi/intlayer_with_vite+lit.md +4 -4
- package/docs/hi/intlayer_with_vite+preact.md +5 -5
- package/docs/hi/intlayer_with_vite+react.md +5 -5
- package/docs/hi/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/hi/intlayer_with_vite+solid.md +5 -5
- package/docs/hi/intlayer_with_vite+svelte.md +4 -4
- package/docs/hi/intlayer_with_vite+vanilla.md +4 -4
- package/docs/hi/intlayer_with_vite+vue.md +5 -5
- package/docs/hi/live-sync.md +174 -0
- package/docs/hi/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/hi/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/hi/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/hi/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/hi/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/hi/packages/intlayer/index.md +4 -4
- package/docs/hi/releases/v9.md +129 -33
- package/docs/hi/self_hosting.md +350 -0
- package/docs/id/bundle_optimization.md +16 -0
- package/docs/id/cli/index.md +1 -1
- package/docs/id/cli/scan.md +2 -2
- package/docs/id/configuration.md +42 -1
- package/docs/id/how_works_intlayer.md +2 -2
- package/docs/id/intlayer_CMS.md +5 -139
- package/docs/id/intlayer_with_adonisjs.md +4 -4
- package/docs/id/intlayer_with_analog.md +4 -4
- package/docs/id/intlayer_with_angular_19.md +4 -4
- package/docs/id/intlayer_with_angular_21.md +4 -4
- package/docs/id/intlayer_with_astro_lit.md +7 -7
- package/docs/id/intlayer_with_astro_preact.md +4 -4
- package/docs/id/intlayer_with_astro_react.md +4 -4
- package/docs/id/intlayer_with_astro_solid.md +4 -4
- package/docs/id/intlayer_with_astro_svelte.md +4 -4
- package/docs/id/intlayer_with_astro_vanilla.md +4 -4
- package/docs/id/intlayer_with_astro_vue.md +4 -4
- package/docs/id/intlayer_with_create_react_app.md +4 -4
- package/docs/id/intlayer_with_express.md +4 -4
- package/docs/id/intlayer_with_fastify.md +4 -4
- package/docs/id/intlayer_with_hono.md +4 -4
- package/docs/id/intlayer_with_lynx+react.md +4 -4
- package/docs/id/intlayer_with_nestjs.md +4 -4
- package/docs/id/intlayer_with_next-i18next.md +4 -4
- package/docs/id/intlayer_with_nextjs_14.md +4 -4
- package/docs/id/intlayer_with_nextjs_15.md +5 -7
- package/docs/id/intlayer_with_nextjs_16.md +6 -8
- package/docs/id/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/id/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/id/intlayer_with_nuxt.md +5 -5
- package/docs/id/intlayer_with_react_native+expo.md +4 -4
- package/docs/id/intlayer_with_react_router_v7.md +5 -5
- package/docs/id/intlayer_with_svelte_kit.md +4 -4
- package/docs/id/intlayer_with_tanstack+solid.md +5 -5
- package/docs/id/intlayer_with_tanstack.md +6 -7
- package/docs/id/intlayer_with_vite+lit.md +4 -4
- package/docs/id/intlayer_with_vite+preact.md +5 -5
- package/docs/id/intlayer_with_vite+react.md +5 -5
- package/docs/id/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/id/intlayer_with_vite+solid.md +5 -5
- package/docs/id/intlayer_with_vite+svelte.md +4 -4
- package/docs/id/intlayer_with_vite+vanilla.md +4 -4
- package/docs/id/intlayer_with_vite+vue.md +5 -5
- package/docs/id/live-sync.md +185 -0
- package/docs/id/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/id/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/id/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/id/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/id/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/id/releases/v9.md +101 -33
- package/docs/id/self_hosting.md +350 -0
- package/docs/it/bundle_optimization.md +16 -0
- package/docs/it/cli/index.md +1 -1
- package/docs/it/cli/scan.md +2 -2
- package/docs/it/configuration.md +42 -1
- package/docs/it/how_works_intlayer.md +2 -2
- package/docs/it/intlayer_CMS.md +87 -94
- package/docs/it/intlayer_with_adonisjs.md +4 -4
- package/docs/it/intlayer_with_analog.md +4 -4
- package/docs/it/intlayer_with_angular_19.md +4 -4
- package/docs/it/intlayer_with_angular_21.md +4 -4
- package/docs/it/intlayer_with_astro_lit.md +7 -7
- package/docs/it/intlayer_with_astro_preact.md +4 -4
- package/docs/it/intlayer_with_astro_react.md +4 -4
- package/docs/it/intlayer_with_astro_solid.md +4 -4
- package/docs/it/intlayer_with_astro_svelte.md +4 -4
- package/docs/it/intlayer_with_astro_vanilla.md +4 -4
- package/docs/it/intlayer_with_astro_vue.md +4 -4
- package/docs/it/intlayer_with_create_react_app.md +4 -4
- package/docs/it/intlayer_with_express.md +4 -4
- package/docs/it/intlayer_with_fastify.md +4 -4
- package/docs/it/intlayer_with_hono.md +4 -4
- package/docs/it/intlayer_with_lynx+react.md +4 -4
- package/docs/it/intlayer_with_nestjs.md +4 -4
- package/docs/it/intlayer_with_next-i18next.md +4 -4
- package/docs/it/intlayer_with_nextjs_14.md +4 -4
- package/docs/it/intlayer_with_nextjs_15.md +6 -8
- package/docs/it/intlayer_with_nextjs_16.md +6 -8
- package/docs/it/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/it/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/it/intlayer_with_nuxt.md +5 -5
- package/docs/it/intlayer_with_react_native+expo.md +4 -4
- package/docs/it/intlayer_with_react_router_v7.md +5 -5
- package/docs/it/intlayer_with_svelte_kit.md +4 -4
- package/docs/it/intlayer_with_tanstack+solid.md +5 -5
- package/docs/it/intlayer_with_tanstack.md +6 -7
- package/docs/it/intlayer_with_vite+lit.md +4 -4
- package/docs/it/intlayer_with_vite+preact.md +5 -5
- package/docs/it/intlayer_with_vite+react.md +6 -6
- package/docs/it/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/it/intlayer_with_vite+solid.md +5 -5
- package/docs/it/intlayer_with_vite+svelte.md +4 -4
- package/docs/it/intlayer_with_vite+vanilla.md +4 -4
- package/docs/it/intlayer_with_vite+vue.md +5 -5
- package/docs/it/live-sync.md +174 -0
- package/docs/it/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/it/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/it/migration_from_next-intl_to_intlayer.md +4 -4
- package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/it/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/it/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/it/releases/v9.md +131 -33
- package/docs/it/self_hosting.md +350 -0
- package/docs/ja/bundle_optimization.md +16 -0
- package/docs/ja/cli/index.md +1 -1
- package/docs/ja/cli/scan.md +2 -2
- package/docs/ja/configuration.md +42 -1
- package/docs/ja/how_works_intlayer.md +2 -2
- package/docs/ja/intlayer_CMS.md +149 -102
- package/docs/ja/intlayer_with_adonisjs.md +4 -4
- package/docs/ja/intlayer_with_analog.md +4 -4
- package/docs/ja/intlayer_with_angular_19.md +4 -4
- package/docs/ja/intlayer_with_angular_21.md +4 -4
- package/docs/ja/intlayer_with_astro_lit.md +7 -7
- package/docs/ja/intlayer_with_astro_preact.md +4 -4
- package/docs/ja/intlayer_with_astro_react.md +4 -4
- package/docs/ja/intlayer_with_astro_solid.md +4 -4
- package/docs/ja/intlayer_with_astro_svelte.md +4 -4
- package/docs/ja/intlayer_with_astro_vanilla.md +4 -4
- package/docs/ja/intlayer_with_astro_vue.md +4 -4
- package/docs/ja/intlayer_with_create_react_app.md +4 -4
- package/docs/ja/intlayer_with_express.md +4 -4
- package/docs/ja/intlayer_with_fastify.md +4 -4
- package/docs/ja/intlayer_with_hono.md +4 -4
- package/docs/ja/intlayer_with_lynx+react.md +4 -4
- package/docs/ja/intlayer_with_nestjs.md +4 -4
- package/docs/ja/intlayer_with_next-i18next.md +4 -4
- package/docs/ja/intlayer_with_nextjs_14.md +4 -4
- package/docs/ja/intlayer_with_nextjs_15.md +6 -8
- package/docs/ja/intlayer_with_nextjs_16.md +6 -8
- package/docs/ja/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/ja/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/ja/intlayer_with_nuxt.md +5 -5
- package/docs/ja/intlayer_with_react_native+expo.md +4 -4
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -5
- package/docs/ja/intlayer_with_tanstack.md +6 -7
- package/docs/ja/intlayer_with_vite+lit.md +4 -4
- package/docs/ja/intlayer_with_vite+preact.md +5 -5
- package/docs/ja/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/ja/intlayer_with_vite+solid.md +5 -5
- package/docs/ja/intlayer_with_vite+svelte.md +4 -4
- package/docs/ja/intlayer_with_vite+vanilla.md +4 -4
- package/docs/ja/intlayer_with_vite+vue.md +5 -5
- package/docs/ja/live-sync.md +185 -0
- package/docs/ja/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/ja/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/ja/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/ja/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/ja/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/ja/releases/v9.md +101 -33
- package/docs/ja/self_hosting.md +350 -0
- package/docs/ko/bundle_optimization.md +16 -0
- package/docs/ko/cli/index.md +1 -1
- package/docs/ko/cli/scan.md +2 -2
- package/docs/ko/configuration.md +42 -1
- package/docs/ko/how_works_intlayer.md +2 -2
- package/docs/ko/intlayer_CMS.md +147 -100
- package/docs/ko/intlayer_with_adonisjs.md +4 -4
- package/docs/ko/intlayer_with_analog.md +4 -4
- package/docs/ko/intlayer_with_angular_19.md +4 -4
- package/docs/ko/intlayer_with_angular_21.md +4 -4
- package/docs/ko/intlayer_with_astro_vue.md +4 -4
- package/docs/ko/intlayer_with_create_react_app.md +4 -4
- package/docs/ko/intlayer_with_express.md +4 -4
- package/docs/ko/intlayer_with_fastify.md +4 -4
- package/docs/ko/intlayer_with_hono.md +4 -4
- package/docs/ko/intlayer_with_nestjs.md +4 -4
- package/docs/ko/intlayer_with_next-i18next.md +4 -4
- package/docs/ko/intlayer_with_nextjs_15.md +6 -8
- package/docs/ko/intlayer_with_nextjs_16.md +6 -8
- package/docs/ko/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/ko/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/ko/intlayer_with_nuxt.md +5 -5
- package/docs/ko/intlayer_with_react_native+expo.md +4 -4
- package/docs/ko/intlayer_with_react_router_v7.md +5 -5
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +5 -5
- package/docs/ko/intlayer_with_svelte_kit.md +4 -4
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -5
- package/docs/ko/intlayer_with_tanstack.md +6 -7
- package/docs/ko/intlayer_with_vite+lit.md +4 -4
- package/docs/ko/intlayer_with_vite+preact.md +5 -5
- package/docs/ko/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/ko/intlayer_with_vite+solid.md +5 -5
- package/docs/ko/intlayer_with_vite+svelte.md +4 -4
- package/docs/ko/intlayer_with_vite+vanilla.md +4 -4
- package/docs/ko/intlayer_with_vite+vue.md +5 -5
- package/docs/ko/live-sync.md +187 -0
- package/docs/ko/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/ko/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/ko/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/ko/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/ko/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/ko/releases/v9.md +100 -33
- package/docs/ko/self_hosting.md +350 -0
- package/docs/nl/bundle_optimization.md +16 -0
- package/docs/nl/cli/index.md +1 -1
- package/docs/nl/cli/scan.md +2 -2
- package/docs/nl/configuration.md +45 -1
- package/docs/nl/intlayer_with_angular_21.md +4 -4
- package/docs/nl/intlayer_with_fastify.md +4 -4
- package/docs/nl/intlayer_with_hono.md +4 -4
- package/docs/nl/intlayer_with_vite+lit.md +4 -4
- package/docs/nl/intlayer_with_vite+vanilla.md +4 -4
- package/docs/nl/releases/v9.md +349 -0
- package/docs/pl/bundle_optimization.md +16 -0
- package/docs/pl/cli/index.md +1 -1
- package/docs/pl/cli/scan.md +2 -2
- package/docs/pl/configuration.md +45 -1
- package/docs/pl/how_works_intlayer.md +2 -2
- package/docs/pl/intlayer_CMS.md +14 -133
- package/docs/pl/intlayer_with_adonisjs.md +4 -4
- package/docs/pl/intlayer_with_analog.md +4 -4
- package/docs/pl/intlayer_with_angular_19.md +4 -4
- package/docs/pl/intlayer_with_angular_21.md +4 -4
- package/docs/pl/intlayer_with_astro_lit.md +7 -7
- package/docs/pl/intlayer_with_astro_preact.md +4 -4
- package/docs/pl/intlayer_with_astro_react.md +4 -4
- package/docs/pl/intlayer_with_astro_solid.md +4 -4
- package/docs/pl/intlayer_with_astro_svelte.md +4 -4
- package/docs/pl/intlayer_with_astro_vanilla.md +4 -4
- package/docs/pl/intlayer_with_astro_vue.md +4 -4
- package/docs/pl/intlayer_with_create_react_app.md +4 -4
- package/docs/pl/intlayer_with_express.md +4 -4
- package/docs/pl/intlayer_with_fastify.md +4 -4
- package/docs/pl/intlayer_with_hono.md +4 -4
- package/docs/pl/intlayer_with_lynx+react.md +4 -4
- package/docs/pl/intlayer_with_nestjs.md +4 -4
- package/docs/pl/intlayer_with_next-i18next.md +4 -4
- package/docs/pl/intlayer_with_nextjs_14.md +4 -4
- package/docs/pl/intlayer_with_nextjs_15.md +5 -7
- package/docs/pl/intlayer_with_nextjs_16.md +6 -8
- package/docs/pl/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/pl/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/pl/intlayer_with_nuxt.md +5 -5
- package/docs/pl/intlayer_with_react_native+expo.md +4 -4
- package/docs/pl/intlayer_with_react_router_v7.md +5 -5
- package/docs/pl/intlayer_with_svelte_kit.md +4 -4
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -5
- package/docs/pl/intlayer_with_tanstack.md +6 -7
- package/docs/pl/intlayer_with_vite+lit.md +4 -4
- package/docs/pl/intlayer_with_vite+preact.md +5 -5
- package/docs/pl/intlayer_with_vite+react.md +5 -5
- package/docs/pl/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/pl/intlayer_with_vite+solid.md +5 -5
- package/docs/pl/intlayer_with_vite+svelte.md +4 -4
- package/docs/pl/intlayer_with_vite+vanilla.md +4 -4
- package/docs/pl/intlayer_with_vite+vue.md +5 -5
- package/docs/pl/live-sync.md +185 -0
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/pl/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/pl/releases/v9.md +128 -33
- package/docs/pl/self_hosting.md +350 -0
- package/docs/pt/bundle_optimization.md +16 -0
- package/docs/pt/cli/index.md +1 -1
- package/docs/pt/cli/scan.md +2 -2
- package/docs/pt/configuration.md +45 -1
- package/docs/pt/how_works_intlayer.md +2 -2
- package/docs/pt/intlayer_CMS.md +87 -109
- package/docs/pt/intlayer_with_adonisjs.md +4 -4
- package/docs/pt/intlayer_with_analog.md +4 -4
- package/docs/pt/intlayer_with_angular_19.md +4 -4
- package/docs/pt/intlayer_with_angular_21.md +4 -4
- package/docs/pt/intlayer_with_astro_lit.md +7 -7
- package/docs/pt/intlayer_with_astro_preact.md +4 -4
- package/docs/pt/intlayer_with_astro_react.md +4 -4
- package/docs/pt/intlayer_with_astro_solid.md +4 -4
- package/docs/pt/intlayer_with_astro_svelte.md +4 -4
- package/docs/pt/intlayer_with_astro_vanilla.md +4 -4
- package/docs/pt/intlayer_with_astro_vue.md +4 -4
- package/docs/pt/intlayer_with_create_react_app.md +4 -4
- package/docs/pt/intlayer_with_express.md +4 -4
- package/docs/pt/intlayer_with_fastify.md +4 -4
- package/docs/pt/intlayer_with_hono.md +4 -4
- package/docs/pt/intlayer_with_lynx+react.md +4 -4
- package/docs/pt/intlayer_with_nestjs.md +4 -4
- package/docs/pt/intlayer_with_next-i18next.md +4 -4
- package/docs/pt/intlayer_with_nextjs_14.md +4 -4
- package/docs/pt/intlayer_with_nextjs_15.md +6 -8
- package/docs/pt/intlayer_with_nextjs_16.md +6 -8
- package/docs/pt/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/pt/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/pt/intlayer_with_nuxt.md +5 -5
- package/docs/pt/intlayer_with_react_native+expo.md +4 -4
- package/docs/pt/intlayer_with_react_router_v7.md +5 -5
- package/docs/pt/intlayer_with_svelte_kit.md +4 -4
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -5
- package/docs/pt/intlayer_with_tanstack.md +6 -7
- package/docs/pt/intlayer_with_vite+lit.md +4 -4
- package/docs/pt/intlayer_with_vite+preact.md +5 -5
- package/docs/pt/intlayer_with_vite+react.md +5 -5
- package/docs/pt/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/pt/intlayer_with_vite+solid.md +5 -5
- package/docs/pt/intlayer_with_vite+svelte.md +4 -4
- package/docs/pt/intlayer_with_vite+vanilla.md +4 -4
- package/docs/pt/intlayer_with_vite+vue.md +5 -5
- package/docs/pt/live-sync.md +174 -0
- package/docs/pt/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/pt/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/pt/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/pt/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/pt/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/pt/releases/v9.md +131 -33
- package/docs/pt/self_hosting.md +350 -0
- package/docs/ru/bundle_optimization.md +16 -0
- package/docs/ru/cli/index.md +1 -1
- package/docs/ru/cli/scan.md +2 -2
- package/docs/ru/configuration.md +42 -1
- package/docs/ru/how_works_intlayer.md +2 -2
- package/docs/ru/intlayer_CMS.md +149 -102
- package/docs/ru/intlayer_with_adonisjs.md +4 -4
- package/docs/ru/intlayer_with_analog.md +4 -4
- package/docs/ru/intlayer_with_angular_19.md +4 -4
- package/docs/ru/intlayer_with_angular_21.md +4 -4
- package/docs/ru/intlayer_with_astro_vue.md +4 -4
- package/docs/ru/intlayer_with_create_react_app.md +4 -4
- package/docs/ru/intlayer_with_express.md +4 -4
- package/docs/ru/intlayer_with_fastify.md +4 -4
- package/docs/ru/intlayer_with_hono.md +4 -4
- package/docs/ru/intlayer_with_lynx+react.md +4 -4
- package/docs/ru/intlayer_with_nestjs.md +4 -4
- package/docs/ru/intlayer_with_next-i18next.md +4 -4
- package/docs/ru/intlayer_with_nextjs_14.md +4 -4
- package/docs/ru/intlayer_with_nextjs_15.md +6 -8
- package/docs/ru/intlayer_with_nextjs_16.md +6 -8
- package/docs/ru/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/ru/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/ru/intlayer_with_nuxt.md +5 -5
- package/docs/ru/intlayer_with_react_native+expo.md +4 -4
- package/docs/ru/intlayer_with_react_router_v7.md +5 -5
- package/docs/ru/intlayer_with_svelte_kit.md +4 -4
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -5
- package/docs/ru/intlayer_with_tanstack.md +6 -7
- package/docs/ru/intlayer_with_vite+lit.md +4 -4
- package/docs/ru/intlayer_with_vite+preact.md +5 -5
- package/docs/ru/intlayer_with_vite+react.md +5 -5
- package/docs/ru/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/ru/intlayer_with_vite+solid.md +5 -5
- package/docs/ru/intlayer_with_vite+svelte.md +4 -4
- package/docs/ru/intlayer_with_vite+vanilla.md +4 -4
- package/docs/ru/intlayer_with_vite+vue.md +5 -5
- package/docs/ru/live-sync.md +185 -0
- package/docs/ru/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/ru/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/ru/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/ru/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/ru/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/ru/releases/v9.md +129 -33
- package/docs/ru/self_hosting.md +350 -0
- package/docs/tr/bundle_optimization.md +16 -0
- package/docs/tr/cli/index.md +1 -1
- package/docs/tr/cli/scan.md +2 -2
- package/docs/tr/configuration.md +42 -1
- package/docs/tr/how_works_intlayer.md +2 -2
- package/docs/tr/intlayer_CMS.md +14 -121
- package/docs/tr/intlayer_with_adonisjs.md +4 -4
- package/docs/tr/intlayer_with_analog.md +4 -4
- package/docs/tr/intlayer_with_angular_19.md +4 -4
- package/docs/tr/intlayer_with_angular_21.md +4 -4
- package/docs/tr/intlayer_with_astro_lit.md +7 -7
- package/docs/tr/intlayer_with_astro_preact.md +4 -4
- package/docs/tr/intlayer_with_astro_react.md +4 -4
- package/docs/tr/intlayer_with_astro_solid.md +4 -4
- package/docs/tr/intlayer_with_astro_svelte.md +4 -4
- package/docs/tr/intlayer_with_astro_vanilla.md +4 -4
- package/docs/tr/intlayer_with_astro_vue.md +4 -4
- package/docs/tr/intlayer_with_create_react_app.md +4 -4
- package/docs/tr/intlayer_with_express.md +4 -4
- package/docs/tr/intlayer_with_fastify.md +4 -4
- package/docs/tr/intlayer_with_hono.md +4 -4
- package/docs/tr/intlayer_with_lynx+react.md +4 -4
- package/docs/tr/intlayer_with_nestjs.md +4 -4
- package/docs/tr/intlayer_with_next-i18next.md +4 -4
- package/docs/tr/intlayer_with_nextjs_14.md +4 -4
- package/docs/tr/intlayer_with_nextjs_15.md +6 -8
- package/docs/tr/intlayer_with_nextjs_16.md +6 -8
- package/docs/tr/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/tr/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/tr/intlayer_with_nuxt.md +5 -5
- package/docs/tr/intlayer_with_react_native+expo.md +4 -4
- package/docs/tr/intlayer_with_react_router_v7.md +5 -5
- package/docs/tr/intlayer_with_svelte_kit.md +4 -4
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -5
- package/docs/tr/intlayer_with_tanstack.md +6 -7
- package/docs/tr/intlayer_with_vite+lit.md +4 -4
- package/docs/tr/intlayer_with_vite+preact.md +5 -5
- package/docs/tr/intlayer_with_vite+react.md +5 -5
- package/docs/tr/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/tr/intlayer_with_vite+solid.md +5 -5
- package/docs/tr/intlayer_with_vite+svelte.md +4 -4
- package/docs/tr/intlayer_with_vite+vanilla.md +4 -4
- package/docs/tr/intlayer_with_vite+vue.md +5 -5
- package/docs/tr/live-sync.md +173 -0
- package/docs/tr/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/tr/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/tr/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/tr/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/tr/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/tr/releases/v9.md +116 -33
- package/docs/tr/self_hosting.md +350 -0
- package/docs/uk/bundle_optimization.md +16 -0
- package/docs/uk/cli/index.md +1 -1
- package/docs/uk/cli/scan.md +2 -2
- package/docs/uk/configuration.md +42 -1
- package/docs/uk/how_works_intlayer.md +2 -2
- package/docs/uk/intlayer_CMS.md +14 -133
- package/docs/uk/intlayer_with_adonisjs.md +4 -4
- package/docs/uk/intlayer_with_analog.md +4 -4
- package/docs/uk/intlayer_with_angular_19.md +4 -4
- package/docs/uk/intlayer_with_angular_21.md +4 -4
- package/docs/uk/intlayer_with_astro_lit.md +7 -7
- package/docs/uk/intlayer_with_astro_preact.md +4 -4
- package/docs/uk/intlayer_with_astro_react.md +4 -4
- package/docs/uk/intlayer_with_astro_solid.md +4 -4
- package/docs/uk/intlayer_with_astro_svelte.md +4 -4
- package/docs/uk/intlayer_with_astro_vanilla.md +4 -4
- package/docs/uk/intlayer_with_astro_vue.md +4 -4
- package/docs/uk/intlayer_with_create_react_app.md +4 -4
- package/docs/uk/intlayer_with_express.md +4 -4
- package/docs/uk/intlayer_with_fastify.md +4 -4
- package/docs/uk/intlayer_with_hono.md +4 -4
- package/docs/uk/intlayer_with_lynx+react.md +4 -4
- package/docs/uk/intlayer_with_nestjs.md +4 -4
- package/docs/uk/intlayer_with_next-i18next.md +4 -4
- package/docs/uk/intlayer_with_nextjs_14.md +4 -4
- package/docs/uk/intlayer_with_nextjs_15.md +6 -8
- package/docs/uk/intlayer_with_nextjs_16.md +6 -8
- package/docs/uk/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/uk/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/uk/intlayer_with_nuxt.md +5 -5
- package/docs/uk/intlayer_with_react_native+expo.md +4 -4
- package/docs/uk/intlayer_with_react_router_v7.md +5 -5
- package/docs/uk/intlayer_with_svelte_kit.md +4 -4
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -5
- package/docs/uk/intlayer_with_tanstack.md +6 -7
- package/docs/uk/intlayer_with_vite+lit.md +4 -4
- package/docs/uk/intlayer_with_vite+preact.md +5 -5
- package/docs/uk/intlayer_with_vite+react.md +5 -5
- package/docs/uk/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/uk/intlayer_with_vite+solid.md +5 -5
- package/docs/uk/intlayer_with_vite+svelte.md +4 -4
- package/docs/uk/intlayer_with_vite+vanilla.md +4 -4
- package/docs/uk/intlayer_with_vite+vue.md +5 -5
- package/docs/uk/live-sync.md +185 -0
- package/docs/uk/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/uk/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/uk/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/uk/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/uk/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/uk/releases/v9.md +128 -33
- package/docs/uk/self_hosting.md +350 -0
- package/docs/ur/bundle_optimization.md +16 -0
- package/docs/ur/cli/index.md +1 -1
- package/docs/ur/cli/scan.md +2 -2
- package/docs/ur/configuration.md +45 -1
- package/docs/ur/intlayer_with_angular_21.md +4 -4
- package/docs/ur/intlayer_with_fastify.md +4 -4
- package/docs/ur/intlayer_with_hono.md +4 -4
- package/docs/ur/intlayer_with_vite+lit.md +4 -4
- package/docs/ur/intlayer_with_vite+vanilla.md +4 -4
- package/docs/vi/bundle_optimization.md +16 -0
- package/docs/vi/cli/index.md +1 -1
- package/docs/vi/cli/scan.md +2 -2
- package/docs/vi/configuration.md +42 -1
- package/docs/vi/how_works_intlayer.md +2 -2
- package/docs/vi/intlayer_CMS.md +5 -139
- package/docs/vi/intlayer_with_adonisjs.md +4 -4
- package/docs/vi/intlayer_with_analog.md +4 -4
- package/docs/vi/intlayer_with_angular_19.md +4 -4
- package/docs/vi/intlayer_with_angular_21.md +4 -4
- package/docs/vi/intlayer_with_astro_lit.md +7 -7
- package/docs/vi/intlayer_with_astro_preact.md +4 -4
- package/docs/vi/intlayer_with_astro_react.md +4 -4
- package/docs/vi/intlayer_with_astro_solid.md +4 -4
- package/docs/vi/intlayer_with_astro_svelte.md +4 -4
- package/docs/vi/intlayer_with_astro_vanilla.md +4 -4
- package/docs/vi/intlayer_with_astro_vue.md +4 -4
- package/docs/vi/intlayer_with_create_react_app.md +4 -4
- package/docs/vi/intlayer_with_express.md +4 -4
- package/docs/vi/intlayer_with_fastify.md +4 -4
- package/docs/vi/intlayer_with_hono.md +4 -4
- package/docs/vi/intlayer_with_lynx+react.md +4 -4
- package/docs/vi/intlayer_with_nestjs.md +4 -4
- package/docs/vi/intlayer_with_next-i18next.md +4 -4
- package/docs/vi/intlayer_with_nextjs_14.md +4 -4
- package/docs/vi/intlayer_with_nextjs_15.md +5 -7
- package/docs/vi/intlayer_with_nextjs_16.md +6 -8
- package/docs/vi/intlayer_with_nextjs_compiler.md +4 -4
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/vi/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/vi/intlayer_with_nuxt.md +5 -5
- package/docs/vi/intlayer_with_react_native+expo.md +4 -4
- package/docs/vi/intlayer_with_react_router_v7.md +5 -5
- package/docs/vi/intlayer_with_svelte_kit.md +4 -4
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -5
- package/docs/vi/intlayer_with_tanstack.md +6 -7
- package/docs/vi/intlayer_with_vite+lit.md +4 -4
- package/docs/vi/intlayer_with_vite+preact.md +5 -5
- package/docs/vi/intlayer_with_vite+react.md +5 -5
- package/docs/vi/intlayer_with_vite+react_compiler.md +5 -5
- package/docs/vi/intlayer_with_vite+solid.md +5 -5
- package/docs/vi/intlayer_with_vite+svelte.md +4 -4
- package/docs/vi/intlayer_with_vite+vanilla.md +4 -4
- package/docs/vi/intlayer_with_vite+vue.md +5 -5
- package/docs/vi/live-sync.md +185 -0
- package/docs/vi/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/vi/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/vi/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/vi/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/vi/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/vi/releases/v9.md +101 -33
- package/docs/vi/self_hosting.md +350 -0
- package/docs/zh/bundle_optimization.md +16 -0
- package/docs/zh/cli/index.md +1 -1
- package/docs/zh/cli/scan.md +2 -2
- package/docs/zh/configuration.md +42 -1
- package/docs/zh/how_works_intlayer.md +2 -2
- package/docs/zh/intlayer_CMS.md +5 -129
- package/docs/zh/intlayer_with_adonisjs.md +4 -4
- package/docs/zh/intlayer_with_angular_21.md +4 -4
- package/docs/zh/intlayer_with_astro.md +4 -4
- package/docs/zh/intlayer_with_astro_lit.md +7 -7
- package/docs/zh/intlayer_with_astro_preact.md +4 -4
- package/docs/zh/intlayer_with_astro_react.md +4 -4
- package/docs/zh/intlayer_with_astro_solid.md +4 -4
- package/docs/zh/intlayer_with_astro_svelte.md +4 -4
- package/docs/zh/intlayer_with_astro_vanilla.md +4 -4
- package/docs/zh/intlayer_with_astro_vue.md +4 -4
- package/docs/zh/intlayer_with_create_react_app.md +4 -4
- package/docs/zh/intlayer_with_express.md +4 -4
- package/docs/zh/intlayer_with_fastify.md +4 -4
- package/docs/zh/intlayer_with_hono.md +4 -4
- package/docs/zh/intlayer_with_nestjs.md +4 -4
- package/docs/zh/intlayer_with_next-i18next.md +4 -4
- package/docs/zh/intlayer_with_nextjs_14.md +4 -4
- package/docs/zh/intlayer_with_nextjs_15.md +6 -8
- package/docs/zh/intlayer_with_nextjs_16.md +6 -8
- package/docs/zh/intlayer_with_nextjs_compiler.md +5 -7
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +6 -8
- package/docs/zh/intlayer_with_nextjs_page_router.md +4 -4
- package/docs/zh/intlayer_with_react_native+expo.md +4 -4
- package/docs/zh/intlayer_with_react_router_v7.md +5 -5
- package/docs/zh/intlayer_with_vite+solid.md +5 -5
- package/docs/zh/intlayer_with_vite+svelte.md +4 -4
- package/docs/zh/intlayer_with_vite+vue.md +5 -5
- package/docs/zh/live-sync.md +175 -0
- package/docs/zh/migration_from_i18next_to_intlayer.md +4 -4
- package/docs/zh/migration_from_next-i18next_to_intlayer.md +4 -4
- package/docs/zh/migration_from_next-intl_to_intlayer.md +5 -7
- package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +4 -4
- package/docs/zh/migration_from_react-i18next_to_intlayer.md +5 -7
- package/docs/zh/migration_from_vue-i18n_to_intlayer.md +4 -4
- package/docs/zh/releases/v9.md +101 -25
- 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 +4 -4
- package/package.json +10 -10
- package/src/generated/docs.entry.ts +60 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-30
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
|
+
title: "Intlayer selbst hosten"
|
|
5
|
+
description: "Betreiben Sie eine komplette Intlayer-Instanz auf Ihrer eigenen Infrastruktur mit einem einzigen Befehl. Kein Intlayer Cloud-Konto erforderlich."
|
|
6
|
+
keywords:
|
|
7
|
+
- Selbst-Hosting
|
|
8
|
+
- Docker
|
|
9
|
+
- Docker Compose
|
|
10
|
+
- Intlayer
|
|
11
|
+
- CMS
|
|
12
|
+
- Installation
|
|
13
|
+
- Infrastruktur
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- self-hosting
|
|
17
|
+
author: aymericzip
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Intlayer selbst hosten
|
|
21
|
+
|
|
22
|
+
Intlayer kann vollständig auf Ihrer eigenen Infrastruktur ausgeführt werden – kein Intlayer Cloud-Konto erforderlich. Ein einziger Befehl startet einen produktionsbereiten Stack:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Der Installer lädt eine `docker-compose.yml` und eine `.env` herunter, generiert automatisch die erforderlichen Secrets und startet alle Container mit `docker compose up -d`.
|
|
29
|
+
|
|
30
|
+
## Inhaltsverzeichnis
|
|
31
|
+
|
|
32
|
+
<TOC/>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Architektur
|
|
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 (wird für die Erzeugung von Puppeteer-Screenshots verwendet) ist im Backend-Image gebündelt – es wird kein separater Container benötigt.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Voraussetzungen
|
|
58
|
+
|
|
59
|
+
- **Docker** ≥ 24 und **Docker Compose** ≥ v2. Fehlt eines davon, gibt der Installer den Installationslink aus und beendet sich.
|
|
60
|
+
- Ports `3000`, `3100`, `8025`, `9000` und `9001` auf dem Host verfügbar.
|
|
61
|
+
- Ein Linux- oder macOS-Host (oder WSL2 unter Windows).
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Schnellstart
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Was der Installer tut:
|
|
72
|
+
|
|
73
|
+
1. Überprüft, ob `docker` und `docker compose` vorhanden sind.
|
|
74
|
+
2. Lädt `docker-compose.yml` und `.env.example` in `./intlayer/` herunter.
|
|
75
|
+
3. Falls keine `.env` existiert, kopiert er das Beispiel und generiert zufällige Secrets für `BETTER_AUTH_SECRET`, `S3_ACCESS_KEY_ID` und `S3_SECRET_ACCESS_KEY` mittels `openssl rand`.
|
|
76
|
+
4. Führt `docker compose pull` + `docker compose up -d` aus.
|
|
77
|
+
5. Gibt die URLs aus: Dashboard `:3000`, API `:3100`, E-Mail-UI `:8025`, MinIO-Konsole `:9001`.
|
|
78
|
+
|
|
79
|
+
Nachdem der Stack gestartet ist, öffnen Sie **http://localhost:3000** und erstellen Sie Ihr erstes Konto.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Dienste
|
|
84
|
+
|
|
85
|
+
| Service | Image | Host port(s) | Zweck |
|
|
86
|
+
| :---------- | :----------------------------------- | :--------------------------------------------- | :-------------------------------------------------------- |
|
|
87
|
+
| **app** | built from `apps/app/Dockerfile` | `3000` | TanStack Start Dashboard (CMS-Benutzeroberfläche) |
|
|
88
|
+
| **backend** | built from `apps/backend/Dockerfile` | `3100` | Fastify REST API (`/health` Endpunkt) |
|
|
89
|
+
| **mongo** | `mongo:7` | intern | Einzelknoten-Replica Set (`rs0`) |
|
|
90
|
+
| **redis** | `redis:7-alpine` | intern | Job-Warteschlangen (BullMQ) und Caching (ioredis) |
|
|
91
|
+
| **minio** | `minio/minio` | `9000` (S3), `9001` (Konsole) | S3-kompatibler Objektspeicher für Avatare und Screenshots |
|
|
92
|
+
| **mailpit** | `axllent/mailpit` | `1025` (SMTP), `8025` (Web-Benutzeroberfläche) | Lokale Transaktions-E-Mail-Senke |
|
|
93
|
+
|
|
94
|
+
Interne Ports (mongo, redis) werden standardmäßig nicht zum Host exponiert.
|
|
95
|
+
|
|
96
|
+
> MinIO-Port `9000` muss vom Browser erreichbar sein, da hochgeladene Assets (Avatare, Screenshots) direkt von `S3_PUBLIC_URL=http://localhost:9000/intlayer` geladen werden.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Umgebungsvariablen
|
|
101
|
+
|
|
102
|
+
Der Installer generiert eine gebrauchsfertige `.env`. Die folgende Tabelle beschreibt jede Variable.
|
|
103
|
+
|
|
104
|
+
### Erforderlich (automatisch generiert oder abgefragt)
|
|
105
|
+
|
|
106
|
+
| Variable | Beispiel | Beschreibung |
|
|
107
|
+
| :--------------------- | :---------------------------------------------- | :--------------------------------------------------------------- |
|
|
108
|
+
| `NODE_ENV` | `production` | Laufzeitumgebung |
|
|
109
|
+
| `PORT` | `3100` | Backend-Listenport |
|
|
110
|
+
| `BACKEND_URL` | `http://localhost:3100` | Öffentliche URL der Backend-API |
|
|
111
|
+
| `APP_URL` | `http://localhost:3000` | Öffentliche URL des Dashboards |
|
|
112
|
+
| `DOMAIN` | `localhost` | Cookie-Domain |
|
|
113
|
+
| `MONGODB_URI` | `mongodb://mongo:27017/intlayer?replicaSet=rs0` | Vollständige MongoDB-Verbindungs-URI |
|
|
114
|
+
| `REDIS_URL` | `redis://redis:6379` | Redis-Verbindungs-URL |
|
|
115
|
+
| `BETTER_AUTH_SECRET` | _(generiert)_ | 32-Byte-Secret für die Session-Signierung |
|
|
116
|
+
| `MAIL_PROVIDER` | `smtp` | Mail-Transport: `smtp` oder `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>` | Absenderadresse |
|
|
120
|
+
| `S3_ENDPOINT` | `http://minio:9000` | S3-kompatibler Endpunkt |
|
|
121
|
+
| `S3_PUBLIC_URL` | `http://localhost:9000/intlayer` | Öffentliche URL für das Laden von Browser-Assets |
|
|
122
|
+
| `S3_BUCKET_NAME` | `intlayer` | Bucket-Name |
|
|
123
|
+
| `S3_ACCESS_KEY_ID` | _(generiert)_ | MinIO-Zugangsschlüssel |
|
|
124
|
+
| `S3_SECRET_ACCESS_KEY` | _(generiert)_ | MinIO-Geheimschlüssel |
|
|
125
|
+
| `VITE_BACKEND_URL` | `http://localhost:3100` | Backend-URL, die zur Build-Zeit in das Dashboard integriert wird |
|
|
126
|
+
| `VITE_DOMAIN` | `localhost` | Domain, die zur Build-Zeit in das Dashboard integriert wird |
|
|
127
|
+
|
|
128
|
+
### Optional (Funktionen funktionieren bei Abwesenheit eingeschränkt)
|
|
129
|
+
|
|
130
|
+
| Variable | Funktion |
|
|
131
|
+
| :------------------------------------------------------- | :------------------------------------------------------------------- |
|
|
132
|
+
| `OPENAI_API_KEY` | KI-gestützte Übersetzung und Inhaltsprüfung |
|
|
133
|
+
| `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_*` | Abrechnung und Abonnementverwaltung |
|
|
134
|
+
| `RESEND_API_KEY` | Transaktions-E-Mail über Resend (überschreibt Mailpit, wenn gesetzt) |
|
|
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
|
+
## Ihr Intlayer-Projekt verbinden
|
|
145
|
+
|
|
146
|
+
Sobald der Stack läuft, verweisen Sie Ihr Projekt auf das selbst gehostete Backend und Dashboard anstelle von `intlayer.org`.
|
|
147
|
+
|
|
148
|
+
### Projektkonfiguration
|
|
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 des selbst gehosteten CMS-Dashboards.
|
|
160
|
+
* Standard: https://app.intlayer.org
|
|
161
|
+
*/
|
|
162
|
+
cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* URL der selbst gehosteten Backend-API.
|
|
166
|
+
* Standard: 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
|
+
Setzen Sie die Umgebungsvariablen in der `.env` Ihres Projekts:
|
|
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
|
+
Erstellen Sie Zugangsdaten in Ihrem selbst gehosteten Dashboard unter **Projects → Access keys** unter `http://localhost:3000/projects`.
|
|
185
|
+
|
|
186
|
+
### `@intlayer/api` SDK
|
|
187
|
+
|
|
188
|
+
Wenn Sie das `@intlayer/api` SDK programmatisch verwenden, übergeben Sie `backendURL` explizit:
|
|
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
|
+
## Upgrade
|
|
208
|
+
|
|
209
|
+
Ein erneutes Ausführen des Installers auf einer bestehenden Bereitstellung führt ein Rolling-Upgrade durch:
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Dies zieht die neuesten Images und startet Container neu mit `docker compose pull && docker compose up -d`. Bestehende Volumes (`mongo-data`, `redis-data`, `minio-data`) bleiben erhalten – kein Datenverlust.
|
|
216
|
+
|
|
217
|
+
Um manuell aus dem `./intlayer/`-Verzeichnis ein Upgrade durchzuführen:
|
|
218
|
+
|
|
219
|
+
```sh
|
|
220
|
+
docker compose pull
|
|
221
|
+
docker compose up -d
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Backup und Wiederherstellung
|
|
227
|
+
|
|
228
|
+
Alle persistenten Daten befinden sich in drei benannten 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
|
+
### Wiederherstellung
|
|
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
|
+
# Wiederholen Sie dies für redis-data und minio-data
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Verwendung eines Reverse-Proxys (Nginx / Caddy)
|
|
263
|
+
|
|
264
|
+
Für Produktionsbereitstellungen platzieren Sie einen Reverse-Proxy vor den App- und Backend-Containern, anstatt sie direkt zu exponieren.
|
|
265
|
+
|
|
266
|
+
### Nginx-Beispiel
|
|
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
|
+
Aktualisieren Sie die folgenden `.env`-Variablen, um sie an Ihre öffentlichen Domains anzupassen:
|
|
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_*`-Variablen werden zur Build-Zeit in das Dashboard-Image integriert. Wenn Sie diese nach dem Bau des Images ändern, müssen Sie das `app`-Image neu erstellen (`docker compose build app`) oder die Laufzeitkonfigurationsinjektion verwenden.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Fehlerbehebung
|
|
307
|
+
|
|
308
|
+
### Backend-Absturzschleifen beim ersten Start
|
|
309
|
+
|
|
310
|
+
MongoDB und Redis müssen fehlerfrei sein, bevor das Backend startet. Die Compose-Datei verwendet `depends_on` mit `condition: service_healthy`. Wenn Sie wiederholte Backend-Neustarts sehen, überprüfen Sie, ob die `mongo`- und `redis`-Healthchecks erfolgreich sind:
|
|
311
|
+
|
|
312
|
+
```sh
|
|
313
|
+
docker compose ps
|
|
314
|
+
docker compose logs mongo
|
|
315
|
+
docker compose logs redis
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Dashboard kann die API nicht erreichen
|
|
319
|
+
|
|
320
|
+
Stellen Sie sicher, dass `VITE_BACKEND_URL` der URL entspricht, unter der das Backend vom **Browser** (nicht vom Docker-Netzwerk) aus erreichbar ist. Wenn Sie den Backend-Port geändert oder einen Reverse-Proxy hinzugefügt haben, erstellen Sie das Dashboard-Image neu:
|
|
321
|
+
|
|
322
|
+
```sh
|
|
323
|
+
docker compose build app
|
|
324
|
+
docker compose up -d app
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### E-Mail wird nicht gesendet
|
|
328
|
+
|
|
329
|
+
Standardmäßig werden alle ausgehenden E-Mails von Mailpit abgefangen. Öffnen Sie `http://localhost:8025`, um gesendete Nachrichten anzuzeigen. Um echte E-Mails zu senden, setzen Sie `MAIL_PROVIDER=resend` und `RESEND_API_KEY=<Ihr-Schlüssel>` in `.env` und starten Sie dann das Backend neu:
|
|
330
|
+
|
|
331
|
+
```sh
|
|
332
|
+
docker compose restart backend
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### MinIO-Bucket fehlt
|
|
336
|
+
|
|
337
|
+
Wenn der `minio-init`-One-Shot-Service nicht ausgeführt wurde (oder vor der Bereitschaft von MinIO lief), erstellen Sie den Bucket manuell:
|
|
338
|
+
|
|
339
|
+
```sh
|
|
340
|
+
docker compose run --rm minio-init
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Nützliche Links
|
|
346
|
+
|
|
347
|
+
- [Intlayer CMS-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_CMS.md)
|
|
348
|
+
- [Konfigurationsreferenz](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
|
|
349
|
+
- [CMS SDK — `@intlayer/api`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/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)
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-07-08
|
|
3
|
+
updatedAt: 2026-07-08
|
|
4
|
+
title: Intlayer Analytics | Track content exposure and run A/B tests
|
|
5
|
+
description: Discover how @intlayer/analytics tracks page/locale views and content exposure, and how to use it to run A/B tests on your Intlayer content.
|
|
6
|
+
keywords:
|
|
7
|
+
- Analytics
|
|
8
|
+
- A/B Testing
|
|
9
|
+
- Audience
|
|
10
|
+
- Internationalization
|
|
11
|
+
- Documentation
|
|
12
|
+
- Intlayer
|
|
13
|
+
- Next.js
|
|
14
|
+
- JavaScript
|
|
15
|
+
- React
|
|
16
|
+
slugs:
|
|
17
|
+
- doc
|
|
18
|
+
- concept
|
|
19
|
+
- analytics
|
|
20
|
+
history:
|
|
21
|
+
- version: 9.0.0
|
|
22
|
+
date: 2026-07-08
|
|
23
|
+
changes: "Init doc — @intlayer/analytics package, provider/node-level tracking, A/B testing, dashboard"
|
|
24
|
+
author: aymericzip
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Intlayer Analytics Documentation
|
|
28
|
+
|
|
29
|
+
`@intlayer/analytics` is an optional companion package that tells you **which content is actually shown** to your visitors — which page, in which locale, and which specific piece of translated content — so you can understand your audience and run **A/B tests on content**.
|
|
30
|
+
|
|
31
|
+
## Table of Contents
|
|
32
|
+
|
|
33
|
+
<TOC/>
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## What it tracks
|
|
38
|
+
|
|
39
|
+
`@intlayer/analytics` batches three kinds of anonymous events:
|
|
40
|
+
|
|
41
|
+
| Event | Captured where | What it tells you |
|
|
42
|
+
| ------------------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
|
|
43
|
+
| `page_view` | Provider level (`IntlayerProvider`) | Which page and locale a session viewed, on first load, route change, or locale switch. |
|
|
44
|
+
| `content_exposure` | Node level (`useIntlayer` / interpreter plugins) | Which dictionary key / key path was actually resolved and displayed — and, when part of an experiment, which **variant**. |
|
|
45
|
+
| `conversion` | Wherever you call `useConversion()` | A goal reached (signup, click, purchase…) attributed to the A/B variant the session was exposed to. |
|
|
46
|
+
|
|
47
|
+
Events are collected in memory and sent as a **single batched request roughly every 20 seconds** — never on every keystroke or render — so analytics never impacts first render time or adds a request per interaction.
|
|
48
|
+
|
|
49
|
+
## How it powers A/B testing on content
|
|
50
|
+
|
|
51
|
+
Intlayer already lets you declare content [Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dynamic_dictionaries/index.md) (e.g. a `hero-banner` dictionary with a `control` and a `black_friday` variant). `@intlayer/analytics` closes the loop:
|
|
52
|
+
|
|
53
|
+
1. `getVariant(experimentKey, variants)` deterministically assigns each anonymous session to a variant — a pure function of the session id and the experiment key, so the assignment is **stable across the session** and requires **no server round-trip** before first render (no flicker, no layout shift).
|
|
54
|
+
2. Every `content_exposure` event carries the `variant` that was shown.
|
|
55
|
+
3. `useConversion()` lets you attribute a goal (e.g. `"cta_click"`) to that variant.
|
|
56
|
+
4. The dashboard's experiment results endpoint compares conversion rates per variant, including statistical significance (a z-test).
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
`@intlayer/analytics` is a **peer, optional** dependency — never installed automatically by a framework package. Add it alongside `intlayer`:
|
|
61
|
+
|
|
62
|
+
```bash packageManager="npm"
|
|
63
|
+
npm install @intlayer/analytics
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```bash packageManager="yarn"
|
|
67
|
+
yarn add @intlayer/analytics
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```bash packageManager="pnpm"
|
|
71
|
+
pnpm add @intlayer/analytics
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```bash packageManager="bun"
|
|
75
|
+
bun add @intlayer/analytics
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If you don't install it, every integration point resolves to a no-op — see [Zero-cost when not installed](#zero-cost-when-not-installed) below.
|
|
79
|
+
|
|
80
|
+
## Configuration
|
|
81
|
+
|
|
82
|
+
Analytics **reuses the existing `editor` configuration block** — there is no separate `analytics` config schema to fill in:
|
|
83
|
+
|
|
84
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
85
|
+
import type { IntlayerConfig } from "intlayer";
|
|
86
|
+
|
|
87
|
+
const config: IntlayerConfig = {
|
|
88
|
+
editor: {
|
|
89
|
+
backendURL: "https://back.intlayer.org", // Also used as the analytics ingestion endpoint
|
|
90
|
+
clientId: "your-client-id", // Also used as the analytics project key
|
|
91
|
+
clientSecret: "your-client-secret",
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export default config;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- `editor.backendURL` — the base URL analytics events are sent to (`POST {backendURL}/api/analytics/events`).
|
|
99
|
+
- `editor.clientId` — the public project key attributed to every ingested event. It also acts as the **enable switch**: analytics stays fully disabled (and tree-shaken, see below) until `clientId` is configured.
|
|
100
|
+
|
|
101
|
+
If you self-host Intlayer, analytics automatically points at your own instance since it shares `editor.backendURL`.
|
|
102
|
+
|
|
103
|
+
## Framework support
|
|
104
|
+
|
|
105
|
+
Analytics is wired into the shared `IntlayerProvider` from `react-intlayer`, so it is available today anywhere that provider is used:
|
|
106
|
+
|
|
107
|
+
| Framework | Status |
|
|
108
|
+
| -------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
109
|
+
| React | ✅ Available |
|
|
110
|
+
| Next.js (`next-intlayer`) | ✅ Available (via `react-intlayer`) |
|
|
111
|
+
| React Native / Expo (`react-native-intlayer`) | ✅ Available (via `react-intlayer`) |
|
|
112
|
+
| Vue, Svelte, Angular, Solid, Preact, Lit, Astro, Vanilla | 🚧 Planned — same client, provider-level bindings following the `@intlayer/editor` rollout pattern |
|
|
113
|
+
|
|
114
|
+
## Usage
|
|
115
|
+
|
|
116
|
+
### Automatic provider-level tracking
|
|
117
|
+
|
|
118
|
+
No code changes are required. Once `@intlayer/analytics` is installed and `editor.clientId` is configured, `IntlayerProvider` automatically:
|
|
119
|
+
|
|
120
|
+
- initializes the analytics client on mount,
|
|
121
|
+
- records a `page_view` on initial load,
|
|
122
|
+
- records a `page_view` on every locale change,
|
|
123
|
+
- starts the ~20s flush loop and flushes any remaining events on unmount / tab close (via `navigator.sendBeacon`, falling back to `fetch(..., { keepalive: true })`).
|
|
124
|
+
|
|
125
|
+
### Automatic node-level tracking
|
|
126
|
+
|
|
127
|
+
Every time `useIntlayer` resolves a piece of content for display, the interpreter reports a `content_exposure` event for that exact `dictionaryKey` + key path + locale — again, no code changes required. Repeated exposures of the same node within a flush window are coalesced into a single event with a `count`, so a list re-rendering 50 times doesn't send 50 events.
|
|
128
|
+
|
|
129
|
+
### Tracking conversions for A/B tests
|
|
130
|
+
|
|
131
|
+
Use `useConversion()` to attribute a goal to the variant a session saw:
|
|
132
|
+
|
|
133
|
+
```tsx fileName="CTAButton.tsx" codeFormat="tsx"
|
|
134
|
+
import { useConversion } from "react-intlayer";
|
|
135
|
+
|
|
136
|
+
const CTAButton = () => {
|
|
137
|
+
const trackConversion = useConversion();
|
|
138
|
+
|
|
139
|
+
return (
|
|
140
|
+
<button
|
|
141
|
+
onClick={() =>
|
|
142
|
+
trackConversion({
|
|
143
|
+
experimentKey: "homepage-hero",
|
|
144
|
+
variant: "black_friday",
|
|
145
|
+
goal: "cta_click",
|
|
146
|
+
})
|
|
147
|
+
}
|
|
148
|
+
>
|
|
149
|
+
Get started
|
|
150
|
+
</button>
|
|
151
|
+
);
|
|
152
|
+
};
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Resolving a variant client-side
|
|
156
|
+
|
|
157
|
+
```tsx fileName="useHeroVariant.ts" codeFormat="tsx"
|
|
158
|
+
import { getGlobalAnalyticsClient } from "@intlayer/analytics/client";
|
|
159
|
+
|
|
160
|
+
const client = getGlobalAnalyticsClient();
|
|
161
|
+
const variant = client?.getVariant("homepage-hero", [
|
|
162
|
+
"control",
|
|
163
|
+
"black_friday",
|
|
164
|
+
]);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Privacy & performance
|
|
168
|
+
|
|
169
|
+
- **Anonymous by design**: sessions are identified by a rotating id; the backend only ever stores a **SHA-256 hash** of that id — never the raw id, never an IP address.
|
|
170
|
+
- **Location is coarse**: only a country code, derived from CDN geolocation headers (`cf-ipcountry`, `x-vercel-ip-country`, …) — no IP is read or stored.
|
|
171
|
+
- **URLs exclude search params** by default, so query strings are never captured.
|
|
172
|
+
- **Sampling**: `sampleRate` lets you keep only a fraction of content-exposure events on high-traffic apps.
|
|
173
|
+
- **Batched**: one request roughly every 20 seconds (`flushInterval`), or earlier if the buffer fills up (`maxBufferSize`) — never one request per event.
|
|
174
|
+
|
|
175
|
+
### Zero-cost when not installed
|
|
176
|
+
|
|
177
|
+
`@intlayer/analytics` follows the exact same optional-dependency pattern as `@intlayer/editor`:
|
|
178
|
+
|
|
179
|
+
- every integration point loads the package via a **dynamic `import()` wrapped in `try/catch`** — an app that never installs `@intlayer/analytics` never pays a bundle-size or runtime cost, and never sees an error;
|
|
180
|
+
- a compile-time env var (`INTLAYER_ANALYTICS_ENABLED`), automatically set to `'false'` by `@intlayer/config` whenever `editor.clientId` is not configured, lets bundlers **dead-code-eliminate** the whole integration;
|
|
181
|
+
- analytics is disabled inside the Intlayer editor/CMS preview iframe, so editor sessions are never counted as real traffic.
|
|
182
|
+
|
|
183
|
+
## Dashboard: Analytics page
|
|
184
|
+
|
|
185
|
+
Once your project has collected events, the **Analytics** page in the [Intlayer dashboard](https://app.intlayer.org/analytics) (visible in the sidebar once a project is selected) shows:
|
|
186
|
+
|
|
187
|
+
- **Active users** — distinct visitors over the selected rolling window (7 / 30 / 90 days).
|
|
188
|
+
- **Users today** and **users over the last 7 days**.
|
|
189
|
+
- **Page views** over the selected window.
|
|
190
|
+
- An **evolution graph** of daily distinct visitors.
|
|
191
|
+
- **Locales** and **Location** breakdown tabs, ranking your audience by locale and by country.
|
|
192
|
+
|
|
193
|
+
## Backend API reference
|
|
194
|
+
|
|
195
|
+
All read endpoints require authentication; ingestion is public and attributed by `clientId`.
|
|
196
|
+
|
|
197
|
+
| Method | Endpoint | Description |
|
|
198
|
+
| ------ | ------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
199
|
+
| `POST` | `/api/analytics/events` | Ingest a batch of events (public, attributed by `clientId` in the body). |
|
|
200
|
+
| `GET` | `/api/analytics/overview` | Page/locale totals for the authenticated project. |
|
|
201
|
+
| `GET` | `/api/analytics/audience?days=30` | Distinct visitors, page views, daily series, locale + country breakdowns. |
|
|
202
|
+
| `GET` | `/api/analytics/content-stats` | Per-content exposure totals, grouped by dictionary key / key path / locale. |
|
|
203
|
+
| `GET` | `/api/analytics/experiments/:experimentKey` | Per-variant conversion rates and statistical significance for an A/B experiment. |
|
|
204
|
+
|
|
205
|
+
You can also call these programmatically with the [CMS SDK](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md):
|
|
206
|
+
|
|
207
|
+
```ts fileName="analytics.ts"
|
|
208
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
209
|
+
import { analyticsEndpoint } from "@intlayer/api/analytics";
|
|
210
|
+
|
|
211
|
+
const cms = createIntlayerCMS();
|
|
212
|
+
|
|
213
|
+
const { data: audience } = await analyticsEndpoint(cms).getAudience(30);
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Useful links
|
|
217
|
+
|
|
218
|
+
- [Dynamic Dictionaries - Collections & Variants](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dynamic_dictionaries/index.md)
|
|
219
|
+
- [Intlayer CMS - CMS SDK](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md)
|
|
220
|
+
- [Intlayer Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md)
|
|
221
|
+
- [Configuration Reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)
|
|
222
|
+
- [Self-Hosting Guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/self_hosting.md)
|
|
@@ -236,6 +236,9 @@ Next.js requires the `@intlayer/swc` plugin for the optimize (import rewriting)
|
|
|
236
236
|
|
|
237
237
|
> This plugin is not installed by default because SWC plugins are still experimental for Next.js. It may change in the future.
|
|
238
238
|
|
|
239
|
+
<Tabs>
|
|
240
|
+
<Tab value="npm">
|
|
241
|
+
|
|
239
242
|
```bash packageManager="npm"
|
|
240
243
|
npm install -D @intlayer/swc
|
|
241
244
|
```
|
|
@@ -252,6 +255,19 @@ pnpm add -D @intlayer/swc
|
|
|
252
255
|
bun add -d @intlayer/swc
|
|
253
256
|
```
|
|
254
257
|
|
|
258
|
+
</Tab>
|
|
259
|
+
<Tab value="Crates.io (rust)">
|
|
260
|
+
|
|
261
|
+
```toml fileName="Cargo.toml"
|
|
262
|
+
[dependencies]
|
|
263
|
+
intlayer-swc-plugin = "*"
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
[View on Crates.io](https://crates.io/crates/intlayer-swc-plugin)
|
|
267
|
+
|
|
268
|
+
</Tab>
|
|
269
|
+
</Tabs>
|
|
270
|
+
|
|
255
271
|
Once installed, Intlayer will automatically detect and use the plugin.
|
|
256
272
|
|
|
257
273
|
For the **purge and minify** passes (field removal and field renaming), install `@intlayer/babel` alongside and add the Babel plugins. Because Next.js uses SWC for transform but still evaluates `babel.config.js` for plugin configuration, the Babel plugins run as a pre-pass before SWC.
|
package/docs/en/cli/index.md
CHANGED
|
@@ -125,7 +125,7 @@ To see how to configure available locales, or other parameters, refer to the [co
|
|
|
125
125
|
|
|
126
126
|
### Authentication
|
|
127
127
|
|
|
128
|
-
- **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/login.md)** - Authenticate with the Intlayer CMS and get access credentials
|
|
128
|
+
- **[Login](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/login.md)** - Authenticate with the Intlayer CMS and get access credentials
|
|
129
129
|
|
|
130
130
|
### Core Commands
|
|
131
131
|
|
package/docs/en/cli/scan.md
CHANGED
|
@@ -150,10 +150,10 @@ await scan("https://example.com", {
|
|
|
150
150
|
});
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
For lower-level access, `scanWebsite` from `@intlayer/
|
|
153
|
+
For lower-level access, `scanWebsite` from `@intlayer/engine/scan` returns a structured `ScanResult` object:
|
|
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);
|