\n\n### Additional context\n\n```ts\n// nuxt.config.ts\n\nimport { domains } from \"./locale-domains.config\";\n\nexport default defineNuxtConfig({\n // I18N\n i18n: {\n // baseUrl: process.env.NUXT_PUBLIC_I18N_BASE_URL || process.env.NUXT_SITE_URL,\n strategy: \"prefix\",\n multiDomainLocales: true,\n detectBrowserLanguage: false,\n langDir: \"./../src/i18n/locales/\",\n vueI18n: \"./../src/i18n/config\",\n locales: [\n {\n code: \"nl\",\n files: [\"nl-NL.ts\"],\n language: \"nl-NL\",\n domains: [\n ...[domains.nl, domains.be, domains.youkids_nl, domains.youkids_be],\n ] as string[],\n defaultForDomains: [\n ...[domains.nl, domains.be, domains.youkids_nl, domains.youkids_be],\n ] as string[],\n name: \"Nederlands\",\n isCatchallLocale: true,\n },\n {\n code: \"en\",\n file: \"en-GB.ts\",\n language: \"en-GB\",\n domains: [\n ...[domains.uk, domains.nl, domains.youkids_uk, domains.youkids_nl],\n ] as string[],\n defaultForDomains: [\n ...[domains.uk, domains.youkids_uk],\n ] as string[],\n name: \"English\",\n },\n {\n code: \"fr\",\n file: \"fr-FR.ts\",\n language: \"fr-FR\",\n domains: [\n ...[domains.fr, domains.be, domains.youkids_fr, domains.youkids_be],\n ] as string[],\n defaultForDomains: [\n ...[domains.fr, domains.youkids_fr],\n ] as string[],\n name: \"Français\",\n },\n {\n code: \"de\",\n file: \"de-DE.ts\",\n language: \"de-DE\",\n domains: [\n ...[domains.de, domains.youkids_de],\n ] as string[],\n defaultForDomains: [\n ...[domains.de, domains.youkids_de],\n ] as string[],\n name: \"Deutsch\",\n },\n ],\n customRoutes: \"page\",\n },\n});\n```\n\n\n```ts\n// locale-domains.config.ts\nexport const domains: Record\u003Cstring, string | undefined> = {\n nl: process.env.DOMAIN_NL,\n be: process.env.DOMAIN_BE,\n fr: process.env.DOMAIN_FR,\n de: process.env.DOMAIN_DE,\n uk: process.env.DOMAIN_UK,\n youkids_nl: process.env.DOMAIN_YOUKIDS_NL,\n youkids_be: process.env.DOMAIN_YOUKIDS_BE,\n youkids_fr: process.env.DOMAIN_YOUKIDS_FR,\n youkids_de: process.env.DOMAIN_YOUKIDS_DE,\n youkids_en: process.env.DOMAIN_YOUKIDS_EN,\n} as const;\n\nexport const developmentDomains: Record\u003Cstring, string> = {\n nl: \"localhost:3000\",\n be: \"be.localhost:3000\",\n fr: \"fr.localhost:3000\",\n de: \"de.localhost:3000\",\n uk: \"uk.localhost:3000\",\n youkids_nl: \"nl.youkids.localhost:3000\",\n youkids_be: \"be.youkids.localhost:3000\",\n youkids_fr: \"fr.youkids.localhost:3000\",\n youkids_de: \"de.youkids.localhost:3000\",\n youkids_en: \"en.youkids.localhost:3000\",\n} as const;\n\nexport const i18nDomains = [domains.nl, domains.be, domains.fr, domains.de, domains.uk, domains.youkids_nl, domains.youkids_be, domains.youkids_fr, domains.youkids_de, domains.youkids_en] as string[];\nexport const developmentI18nDomains = [developmentDomains.nl, developmentDomains.be, developmentDomains.fr, developmentDomains.de, developmentDomains.uk, developmentDomains.youkids_nl, developmentDomains.youkids_be, developmentDomains.youkids_fr, developmentDomains.youkids_de, developmentDomains.youkids_en] as string[];\n```\n\n### Logs\n\n```shell\nWARN I18n baseUrl is required to generate valid SEO tag links.\n```",[3102],{"name":3030,"color":3031},3727,"Warn: I18n baseUrl is required to generate valid SEO tag links.","2025-07-20T20:16:57Z","https://github.com/nuxt-modules/i18n/issues/3727",0.7065312,{"description":3109,"labels":3110,"number":3120,"owner":3019,"repository":3020,"state":3086,"title":3121,"updated_at":3122,"url":3123,"score":3124},"### Describe the feature\r\n\r\nAs discussed on Discord with @BobbieGoede and @harlan-zw, there is Harlan's amazing [site-config](https://nuxtseo.com/site-config/getting-started/background) project which aims to provide a central method for general site configuration so not every other module has to implement this itself.\r\n\r\n`nuxt-i18n` allows to specify a `baseUrl`, which is exactly such a reimplementation. I propose to support reading the `i18n.baseUrl` from `site.url` when it is available, keeping the fallback to `i18n.baseUrl`.\r\n\r\nOf course `i18n.baseUrl` *could* be marked as deprecated until the final `v8` release if everything works fine outsourcing the `baseUrl` to `nuxt-site-config` to keep a separation of concerns.\r\n\r\n### Additional information\r\n\r\n- [x] Would you be willing to help implement this feature?\r\n- [ ] Could this feature be implemented as a module?\r\n\r\n### Final checks\r\n\r\n- [X] Read the [contribution guide](https://nuxt.com/docs/community/contribution) (The contribution guideline of nuxt-modules/i18n is compliant with Nuxt too).\r\n- [X] Check existing [discussions](https://github.com/nuxt-modules/i18n/discussions) and [issues](https://github.com/nuxt/nuxt/issues).",[3111,3114,3117],{"name":3112,"color":3113},"need discussion","E9EC2E",{"name":3115,"color":3116},"PR Welcome","40922A",{"name":3118,"color":3119},"scope: configuration","b60205",2474,"feat: support `nuxt-site-config`","2025-07-03T13:00:13Z","https://github.com/nuxt-modules/i18n/issues/2474",0.7101078,{"description":3126,"labels":3127,"number":3128,"owner":3019,"repository":3020,"state":3086,"title":3129,"updated_at":3130,"url":3131,"score":3132},"The docs [here](https://i18n.nuxtjs.org/docs/guide/different-domains#runtime-environment-variables) reference the name of the runtime property which was used in v8, but v9 has a different naming. (`locales` => `domainLocales`) https://i18n.nuxtjs.org/docs/guide/migrating#runtime-config-properties",[],3691,"Different domains guide should be updated for the v9 property naming","2025-06-25T21:56:05Z","https://github.com/nuxt-modules/i18n/issues/3691",0.738855,["Reactive",3134],{},["Set"],["ShallowReactive",3137],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fo2DZXeScv5IZD7t2JT8z1IiDhgsrr5hXfBePbW_Rq3o":-1},"/nuxt-modules/i18n/2979"]