` aren't sync. \r\n\r\n### Additional context\r\n\r\nif i go from Homepage `/it` to the blog page `/it/blog-1-ita` using the **Go at Blog Page** button, the alternate links don't change; but i've set all the i18nParams\r\n```js\r\nsetI18nParams({\r\n it: { blog: 'blog-1-it' },\r\n de: { blog: 'blog-1-de' },\r\n en: false,\r\n})\r\n```\r\n\r\nIf i refresh the page when i'm in the blog page, the `\u003Clink rel=\"alternate\" />` are duplicated (and also `canonical`).\r\n```html\r\n\u003Clink rel=\"alternate\" href=\"https://www.dummy.com/en/blog-1-ita\" hreflang=\"en\" data-hid=\"7fcee50\">\r\n\u003Clink rel=\"alternate\" href=\"https://www.dummy.com/it/blog-1-ita\" hreflang=\"it\" data-hid=\"08fce45\">\r\n\u003Clink rel=\"alternate\" href=\"https://www.dummy.com/de/blog-1-ita\" hreflang=\"de\" data-hid=\"5d718b2\">\r\n\u003Clink rel=\"alternate\" href=\"https://www.dummy.com/it/blog-1-ita\" hreflang=\"x-default\" data-hid=\"6527e7a\">\r\n\u003Clink rel=\"canonical\" href=\"https://www.dummy.com/it/blog-1-ita\" data-hid=\"5cca6f5\">\r\n\r\n\u003Clink id=\"i18n-alt-it\" rel=\"alternate\" href=\"https://www.dummy.com/it/blog-1-it\" hreflang=\"it\">\r\n\u003Clink id=\"i18n-alt-de\" rel=\"alternate\" href=\"https://www.dummy.com/de/blog-1-de\" hreflang=\"de\">\r\n\u003Clink id=\"i18n-xd\" rel=\"alternate\" href=\"https://www.dummy.com/it/blog-1-it\" hreflang=\"x-default\">\r\n\u003Clink id=\"i18n-can\" rel=\"canonical\" href=\"https://www.dummy.com/it/blog-1-ita\">\r\n```\r\n\r\n### Logs\r\n\r\n_No response_",[3033,3036],{"name":3034,"color":3035},"🍰 p2-nice-to-have","0e8a16",{"name":3037,"color":3038},"scope: seo","30CDE0",2779,"closed","`useSetI18nParams` and `useLocaleHead` `rel=\"alternate\"` aren't sync. ","2025-07-20T20:12:38Z","https://github.com/nuxt-modules/i18n/issues/2779",0.6167521,{"description":3046,"labels":3047,"number":3052,"owner":3023,"repository":3024,"state":3040,"title":3053,"updated_at":3054,"url":3055,"score":3056},"### Environment\n\n- Node Version: v20.11.0\r\n- Nuxt Version: 3.10.1\r\n- CLI Version: 3.10.0\r\n- Nitro Version: 2.8.1\r\n- Package Manager: yarn@4.0.1\r\n- Builder: -\r\n- User Config: modules, i18n, devtools\r\n- Runtime Modules: @nuxtjs/i18n@8.1.0\r\n- Build Modules: -\n\n### Reproduction\n\nhttps://stackblitz.com/edit/github-c7te5q-s3x21p?file=app.vue\n\n### Describe the bug\n\nAlso if i've set \r\n```js\r\nsetI18nParams({\r\n it: { blog: 'blog-1-it' },\r\n de: { blog: 'blog-1-de' },\r\n en: { blog: undefined },\r\n})\r\n```\r\n\r\nthe `og:locale:alternate` for the `en` lang it was addes\r\n\r\n```html\r\n\u003Cmeta id=\"i18n-og-alt-en\" property=\"og:locale:alternate\" content=\"en\">\r\n```\n\n### Additional context\n\n_No response_\n\n### Logs\n\n_No response_",[3048,3051],{"name":3049,"color":3050},"🔨 p3-minor-bug","fbca04",{"name":3037,"color":3038},2782,"Allow disabling page per locale with `useSetI18nParams`","2025-05-25T10:23:04Z","https://github.com/nuxt-modules/i18n/issues/2782",0.6431042,{"description":3058,"labels":3059,"number":3063,"owner":3023,"repository":3024,"state":3040,"title":3064,"updated_at":3065,"url":3066,"score":3067},"### Environment\n\n- Operating System: Darwin\r\n- Node Version: v18.16.0\r\n- Nuxt Version: 3.6.2\r\n- Nitro Version: 2.5.2\r\n- Package Manager: yarn@1.22.19\r\n- Builder: vite\r\n- User Config: build, css, devtools, modules, nitro, postcss, routeRules, runtimeConfig\r\n- Runtime Modules: @pinia/nuxt@0.4.11, @nuxt/image@1.0.0-rc.1, nuxt-api-party@0.13.0, @nuxtjs/i18n@8.0.0-beta.13\r\n- Build Modules: -\n\n### Reproduction\n\nhttps://github.com/joeykamsteeg/nuxt3-i18n-beforelocaleswitch-hook-not-working\n\n### Describe the bug\n\nThis hook should be triggered on app load (according to the documentation) and with initialSetup property we could hook our own logic how to handle URLs without locale in the URL. This is now not possible.\r\n\r\nIssue was reported earlier (#2248) but was closed without a resolution. \n\n### Additional context\n\n_No response_\n\n### Logs\n\n_No response_",[3060],{"name":3061,"color":3062},"hook","CF3B0A",2260,"Follow up: hook i18n:beforeLocaleSwitch does not use the locale that is return in the function","2025-05-22T19:39:58Z","https://github.com/nuxt-modules/i18n/issues/2260",0.68879473,{"description":3069,"labels":3070,"number":3080,"owner":3023,"repository":3024,"state":3040,"title":3081,"updated_at":3082,"url":3083,"score":3084},"### Environment\n\n```\n- Operating System: Darwin\n- Node Version: v22.11.0\n- Nuxt Version: 3.13.2\n- CLI Version: 3.16.0\n- Nitro Version: 2.10.4\n- Package Manager: npm@10.9.0\n- Builder: -\n- User Config: default\n- Runtime Modules: @nuxtjs/i18n@9.1.0, @pinia/nuxt@0.7.0\n- Build Modules: -\n```\n\n### Reproduction\n\nhttps://stackblitz.com/edit/bobbiegoede-nuxt-i18n-starter-l8bdri?file=pages%2Ftest.vue,pages%2Findex.vue but it won't work in stackblitz so it needs to be reproduced in local environment\n\n### Describe the bug\n\nWhen using `\u003CNuxtLinkLocale>` with `to=\"/some-url-in-your-application\"` with `target=\"_blank\"`, locale prefix is not inserted in the resulting URL.\n\n### Additional context\n\nIn my opinion prefix should be added (or omitted if it is a default locale) as I use `\u003CNuxtLinkLocale>` here with exact purpose to direct to my application. Otherwise I would have used just an ordinary `\u003Ca>` tag or even `\u003CNuxtLink>`\n\n### Logs\n\n```shell\n\n```",[3071,3074,3077],{"name":3072,"color":3073},"bug 🐛","ee0701",{"name":3075,"color":3076},"PR Welcome","40922A",{"name":3078,"color":3079},"nuxt-link-locale","B327C3",3252,"NuxtLinkLocale with an attribute target=\"_blank\" does not respect the locale prefix","2025-05-22T15:26:02Z","https://github.com/nuxt-modules/i18n/issues/3252",0.6934667,{"description":3086,"labels":3087,"number":3091,"owner":3023,"repository":3024,"state":3040,"title":3092,"updated_at":3093,"url":3094,"score":3095},"### Environment\r\n\r\n------------------------------\r\n- Operating System: Linux\r\n- Node Version: v18.16.0\r\n- Nuxt Version: 3.7.1\r\n- CLI Version: 3.7.3\r\n- Nitro Version: 2.6.2\r\n- Package Manager: pnpm@8.6.12\r\n- Builder: -\r\n- User Config: extends, telemetry, ssr, fontMetrics, nitro, routeRules, runtimeConfig, build, modules, delayHydration, image, components, bugsnag, devtools, i18n, experimental, pwa, app, dnGraphqlClient, vite, plugins\r\n- Runtime Modules: @nuxtjs/fontaine@0.4.1, @pinia/nuxt@0.4.11, @nuxt/devtools@0.8.2, @vite-pwa/nuxt@0.1.0, nuxt-bugsnag@7.0.0, @digitalnatives/css-variables/nuxt@5.1.3, @digitalnatives/graphql-client@4.0.3, @nuxtjs/i18n@8.0.0-rc.4, @nuxt/image@1.0.0-rc.1, nuxt-delay-hydration@1.2.1, @digitalnatives/composables@2.0.1\r\n- Build Modules: -\r\n------------------------------\r\n\r\n### Reproduction\r\n\r\nA naïve reproduction is the following:\r\n\r\n```js\r\nconst route = useRoute(); \r\nconst locale = useLocale();\r\n\r\n// On switch, this will first log the NEW locale with the OLD path, then it will trigger a second time, logging the NEW locale with the NEW path\r\nwatchEffect(() => {\r\n console.log(route.fullPath);\r\n console.log(locale);\r\n});\r\n```\r\n\r\nAdd it to a global component in the layout that doesn't get mounted/umounted on URI change.\r\n\r\n\r\n\r\n### Describe the bug\r\n\r\nWhen using prefixed routes and a language switcher as described in the docs, it seems the locale changes before the route does.\r\n\r\nWhen watching the locale with `useAsyncData()` or `useLazyAsyncData()` this will cause the results of this call to be associated with the wrong URL/path, which then has a side-effect of refetching API data which was already pre-rendered in Nuxt static mode. Therefore, the pre-rendered payload is NOT used in this pattern, even though it should.\r\n\r\nI've also seen this lead to data mismatching to the wrong paths, but this is a bit harder to create a reproduction for.\r\n\r\n### Additional context\r\n\r\nMy current workaround is this;\r\n\r\ncomposable:\r\n```js\r\nexport const useVariables = () => {\r\n const route = useRoute();\r\n const { $i18n }: any = useNuxtApp();\r\n // Don't automatically update the site and url to ensure they both change at the same time\r\n variables.uri = toValue(route.path);\r\n variables.lang = toValue($i18n?.localeProperties)?.apiLanguageHandle;\r\n\r\n // Update variables manually when the route changes, at this point both the locale AND the URI are correct.\r\n watch(() => route.path, () => {\r\n variables.uri = toValue(route.path);\r\n variables.lang = toValue($i18n?.localeProperties)?.apiLanguageHandle;\r\n });\r\n return { variables };\r\n});\r\n```\r\n\r\nthen:\r\n\r\n```js\r\nconst { variables } = useVariables();\r\nuseAsyncData(() => { console.log('trigger!') } , { watch: [ variables ] });\r\n```\r\n\r\n\r\nPerhaps it would be possible to inject the locale & locale properties into the localized route meta? That way we could just watch the route and apply the language from that.\r\n\r\nRelates to #2278 \r\n\r\n### Logs\r\n\r\n_No response_",[3088],{"name":3089,"color":3090},"switch locale","D2FCC6",2377,"`locale` changes BEFORE the route path does, which causes issues with (static) `asyncData`-payloads","2025-05-16T11:44:11Z","https://github.com/nuxt-modules/i18n/issues/2377",0.69818175,{"description":3097,"labels":3098,"number":3106,"owner":3023,"repository":3024,"state":3040,"title":3107,"updated_at":3108,"url":3109,"score":3110},"### Describe the feature\n\n# Description\n\nCurrently, the `useLocaleHead` composable in the `nuxt3-i18n` module automatically generates various meta tags, including `og:url`, based on non-configurable logic. While this works for many use cases, it creates challenges when custom logic is required.\n\n## Use Case\n\nIn our project, we manually determine the `og:url` using project-specific logic. We set this custom `og:url` using the [useSeoMeta](https://nuxt.com/docs/api/composables/use-seo-meta) method. However, when using `useLocaleHead` with default properties, it adds a second `og:url` meta tag, which cannot be disabled or customized without affecting other tags.\n\nSetting `seo: false` in `useLocaleHead` disables all SEO-related meta tags, including `og:locale:alternate` tags and `og:locale` for the current page. This is problematic because we only want to disable the automatic generation of `og:url`, while retaining the other meta tags provided by `useLocaleHead`.\n\nThe relevant behavior can be seen in the following code snippet: \n\nhttps://github.com/nuxt-modules/i18n/blob/d239bdd3db8c9790e6d11dd3848213674c4590a3/src/runtime/routing/compatibles/head.ts#L63-L72\n\n## PR\n\nI’d be happy to contribute a pull request (PR) to implement this feature if the idea is welcomed.\n\n### Additional information\n\n- [x] Would you be willing to help implement this feature?\n- [ ] Could this feature be implemented as a module?\n\n### Final checks\n\n- [x] Read the [contribution guide](https://nuxt.com/docs/community/contribution) (The contribution guideline of nuxt-modules/i18n is compliant with Nuxt too).\n- [x] Check existing [discussions](https://github.com/nuxt-modules/i18n/discussions) and [issues](https://github.com/nuxt/nuxt/issues).",[3099,3102,3105],{"name":3100,"color":3101},"feature request","ffbb00",{"name":3103,"color":3104},"need reproduction","CD234A",{"name":3037,"color":3038},3277,"Feature Request: Add fine-grained control for `og:url` and other Open Graph meta tags in `useLocaleHead`","2025-06-08T01:44:39Z","https://github.com/nuxt-modules/i18n/issues/3277",0.70552486,{"description":3112,"labels":3113,"number":3115,"owner":3023,"repository":3024,"state":3040,"title":3116,"updated_at":3117,"url":3118,"score":3119},"### Environment\n\n- Operating System: Darwin\n- Node Version: v23.9.0\n- Nuxt Version: 3.17.4\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.12\n- Package Manager: bun@1.2.12\n- Builder: -\n- User Config: compatibilityDate, devtools, future, experimental, modules, runtimeConfig, css, app, ui, icon, fonts, image, nitro, i18n, turnstile\n- Runtime Modules: @nuxt/ui@3.1.2, @nuxt/image@1.10.0, @nuxt/scripts@0.11.7, @nuxtjs/i18n@9.5.4, @nuxtjs/turnstile@1.0.0, nuxt-auth-utils@0.5.20\n- Build Modules: -\n\n### Reproduction\n\nNuxtLinkLocale's job should be to just convert the to parameter to the correct path. Right now it does too much!\n\nWhether or not a link is external is not determined by target! It should only control the transformation of to.\n\n### Describe the bug\n\n#3252\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3114],{"name":3020,"color":3021},3631,"Respect NuxtLink props, just like NuxtLink respects VueRouteLink!","2025-05-22T11:29:36Z","https://github.com/nuxt-modules/i18n/issues/3631",0.7066097,{"description":3121,"labels":3122,"number":3128,"owner":3023,"repository":3024,"state":3040,"title":3129,"updated_at":3130,"url":3131,"score":3132},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v20.11.1`\n- Nuxt Version: `3.13.2`\n- CLI Version: `3.15.0`\n- Nitro Version: `2.9.7`\n- Package Manager: `npm@10.2.4`\n- Builder: `-`\n- User Config: `default`\n- Runtime Modules: `@nuxtjs/i18n@8.5.5`, `@pinia/nuxt@0.6.0`\n- Build Modules: `-`\n\n\n### Reproduction\n\nhttps://stackblitz.com/edit/github-paob67?file=plugins%2Finit.ts but for some reason stackblitz not setting cookie when using setLocale from useI18n;\n\n### Describe the bug\n\nWhen calling window.location.reload() immediately in callback in\nnuxtApp.hook('i18n:localeSwitched'), cookie and current language resets to a previous value.\n\n```\nnuxtApp.hook('i18n:localeSwitched', () => window.location.reload());\n```\n\nBut if you wrap reload in setTimeout it works as expected\n\n```\nnuxtApp.hook('i18n:localeSwitched', () => {\n setTimeout(() => window.location.reload(), 100);\n});\n```\n\n### Additional context\n\nIf this hook is async we should probably wait for it and then execute our callback?\n\n### Logs\n\n_No response_",[3123,3126],{"name":3124,"color":3125},"scope: locales","006b75",{"name":3127,"color":3062},"scope: hooks",3192,"window.location.reload immediately after nuxtApp.hook('i18n:localeSwitched') not working as expected","2025-05-26T20:38:28Z","https://github.com/nuxt-modules/i18n/issues/3192",0.7102592,{"description":3134,"labels":3135,"number":3139,"owner":3023,"repository":3024,"state":3040,"title":3140,"updated_at":3141,"url":3142,"score":3143},"### Environment\n\n------------------------------\n- Operating System: Darwin\n- Node Version: v20.18.0\n- Nuxt Version: 3.16.0\n- CLI Version: 3.22.5\n- Nitro Version: 2.11.6\n- Package Manager: pnpm@9.12.2\n- Builder: -\n- User Config: modules, devtools, app, css, runtimeConfig, future, compatibilityDate, vite, postcss, eslint, i18n, image, prismic\n- Runtime Modules: @nuxt/eslint@1.2.0, @nuxtjs/prismic@4.1.0, @nuxt/fonts@0.11.0, @nuxtjs/i18n@9.3.1, @nuxt/image@1.9.0, @vueuse/nuxt@13.0.0\n- Build Modules: -\n------------------------------\n\n### Reproduction\n\nhttps://stackblitz.com/edit/bobbiegoede-nuxt-i18n-starter-w8n5eqto?file=pages%2Findex.vue\n\n### Describe the bug\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3136,3137],{"name":3034,"color":3035},{"name":3138,"color":3079},"scope: components",3402,"Double nested `NuxtLinkLocale`","2025-05-30T19:25:27Z","https://github.com/nuxt-modules/i18n/issues/3402",0.7135659,["Reactive",3145],{},["Set"],["ShallowReactive",3148],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fFYTe8-_QgPMsh50OnQbU2TdhtGMP3IimK9Jv9wjkV0c":-1},"/nuxt-modules/i18n/2780"]