` and `og:property`. \r\n\r\n```html\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\u003Cmeta id=\"i18n-og-url\" property=\"og:url\" content=\"https://www.dummy.com/it/blog-1-ita\">\r\n\u003Cmeta id=\"i18n-og\" property=\"og:locale\" content=\"it\">\r\n\u003Cmeta id=\"i18n-og-alt-en\" property=\"og:locale:alternate\" content=\"en\">\r\n\u003Cmeta id=\"i18n-og-alt-de\" property=\"og:locale:alternate\" content=\"de\">\r\n```\n\n### Additional context\n\nWow, that's good, but why only whit `setI18nParams` and not in the othter pages? If i don't use `setI18nParams` i have to set all this code on `App.vue`\r\n```js\r\nconst localeHead = useLocaleHead({\r\n addSeoAttributes: true,\r\n addDirAttribute: true,\r\n})\r\n\r\nuseHead({\r\n htmlAttrs: () => localeHead.value.htmlAttrs ?? {},\r\n link: () => localeHead.value.link ?? [],\r\n meta: () => localeHead.value.meta ?? []\r\n})\r\n```\r\n\r\nSo either everything is handled automatically or everything is handled via the mix of `useLocaleHead` and `useHead`\n\n### Logs\n\n_No response_",[2951,2954],{"name":2952,"color":2953},"🍰 p2-nice-to-have","0e8a16",{"name":2955,"color":2956},"scope: seo","30CDE0",2780,"`setI18nParams` automatically adds `\u003Clink rel=\"alternate\" />`","2025-05-25T10:23:03Z","https://github.com/nuxt-modules/i18n/issues/2780",0.705251,{"description":2963,"labels":2964,"number":2969,"owner":2871,"repository":2872,"state":2909,"title":2970,"updated_at":2971,"url":2972,"score":2973},"### Environment\r\n\r\n```\r\n❯ npx nuxi info\r\nWorking directory: /home/projects/github-q5ddsy 17:08:17\r\nNuxt project info: 17:08:17\r\n\r\n------------------------------\r\n- Operating System: Linux\r\n- Node Version: v18.20.3\r\n- Nuxt Version: 3.13.1\r\n- CLI Version: 3.13.1\r\n- Nitro Version: 2.9.7\r\n- Package Manager: npm@10.2.3\r\n- Builder: -\r\n- User Config: compatibilityDate, devtools, modules, pages, routeRules, i18n\r\n- Runtime Modules: @nuxtjs/i18n@8.5.3\r\n- Build Modules: -\r\n------------------------------\r\n\r\n 17:08:17\r\n👉 Report an issue: https://github.com/nuxt/nuxt/issues/new?template=bug-report.yml\r\n👉 Suggest an improvement: https://github.com/nuxt/nuxt/discussions/new\r\n👉 Read documentation: https://nuxt.com\r\n```\r\n\r\n### Reproduction\r\n\r\nReproduction here:\r\n\r\nhttps://stackblitz.com/edit/github-q5ddsy-62oh2a?file=.output%2Fpublic%2Findex.html\r\n\r\nSummary: Using nuxt-i18n with a default language and a translated language\r\n\r\n### Describe the bug\r\n\r\n**Please check the output index.html at**\r\n\r\n- either live in your browser\r\n- build the project with `npx nuxt build --preset github_pages`\r\n\r\nTake a look at the __auto-generated__ `\u003Clink>` elements, especially the `rel=\"alternate\"` & `red=\"canonical\"`:\r\n\r\n```html\r\n\u003Clink id=\"i18n-alt-en\" rel=\"alternate\" href=\"https://example.com/en\" hreflang=\"en\">\r\n\u003Clink id=\"i18n-alt-en-US\" rel=\"alternate\" href=\"https://example.com/en\" hreflang=\"en-US\">\r\n\u003Clink id=\"i18n-alt-de\" rel=\"alternate\" href=\"https://example.com\" hreflang=\"de\">\r\n\u003Clink id=\"i18n-alt-de-DE\" rel=\"alternate\" href=\"https://example.com\" hreflang=\"de-DE\">\r\n\u003Clink id=\"i18n-xd\" rel=\"alternate\" href=\"https://example.com\" hreflang=\"x-default\">\r\n\u003Clink id=\"i18n-can\" rel=\"canonical\" href=\"https://example.com\">\r\n```\r\n\r\nNotice, that the same URL `https://example.com` is being referred to, from: \r\n\r\n```\r\n\u003Clink id=\"i18n-xd\" rel=\"alternate\" href=\"https://example.com\" hreflang=\"x-default\">\r\n\u003Clink id=\"i18n-can\" rel=\"canonical\" href=\"https://example.com\">\r\n\u003Clink id=\"i18n-alt-de\" rel=\"alternate\" href=\"https://example.com\" hreflang=\"de\">\r\n```\r\n\r\nThat leads in SEO indexing/crawling, to an issue:\r\n\r\n- Bing Webmaster tools are complaining about the canonical link, referring to a link that is already marked as an alternative translation\r\n- Google Search Console is complaining about the same issue\r\n\r\nURL that I requested indexing for: https://waldemarenns.de/\r\n\r\nBing Webmaster Tools:\r\n\r\n```\r\nURL cannot be indexed by Bing\r\nThe URL is not indexable as the page is an alternate version of the similar page which you have specified as canonical version using a \u003Clink rel=\"canonical\"> tag. Bing does not index the alternate version.\r\nCanonical URL :https://waldemarenns.de/en\r\n```\r\n\r\n**Screenshot:**\r\n\r\n\r\n\r\nGoogle Page Speed Insights:\r\n\r\n```\r\nDocument does not have a valid rel=canonicalPoints to another `hreflang` location (https://waldemarenns.de/)\r\n```\r\n\r\n**Screenshot:**\r\n\r\n\r\n\r\nTake a look: https://pagespeed.web.dev/analysis/https-waldemarenns-de/30jj8518lg?form_factor=desktop\r\n\r\nℹ️ Feel free to inspect my site that is mentioned.\r\n\r\n### Additional context\r\n\r\nRefers to #2925\r\n\r\n### Logs\r\n\r\n_No response_",[2965,2968],{"name":2966,"color":2967},"❗ p4-important","d93f0b",{"name":2955,"color":2956},3099,"Build output has canonical link linking to the same URL as another alternate link, leading to SEO issues","2025-05-24T23:09:03Z","https://github.com/nuxt-modules/i18n/issues/3099",0.70541364,{"description":2975,"labels":2976,"number":2979,"owner":2871,"repository":2872,"state":2909,"title":2980,"updated_at":2981,"url":2982,"score":2983},"### Environment\n\n- Operating System: `Windows_NT`\n- Node Version: `v22.14.0`\n- Nuxt Version: `3.16.2`\n- CLI Version: `3.24.0`\n- Nitro Version: `2.11.8`\n- Package Manager: `npm@10.8.1`\n- Builder: `-`\n- User Config: `modules`, `imports`, `devtools`, `app`, `css`, `site`, `runtimeConfig`, `devServer`, `experimental`, `compatibilityDate`, `nitro`, `vite`, `typescript`, `eslint`, `graphqlMiddleware`, `i18n`, `image`, `leaflet`, `multiCache`, `primevue`\n- Runtime Modules: `@pinia/nuxt@0.10.1`, `pinia-plugin-persistedstate/nuxt@4.2.0`, `nuxt-multi-cache@3.4.0`, `nuxt-graphql-middleware@4.3.2`, `normalizedModule()`, `@nuxtjs/i18n@9.4.0`, `@nuxtjs/seo@3.0.1`, `@nuxtjs/leaflet@1.2.6`, `nuxt-splide@1.1.1`, `@nuxt/icon@1.11.0`, `@primevue/nuxt-module@4.3.2`, `@nuxt/image@1.10.0`, `@formkit/auto-animate/nuxt@0.8.2`, `@vueuse/nuxt@13.0.0`, `nuxt-lodash@2.5.3`, `nuxt-monaco-editor@1.3.1`, `dayjs-nuxt@2.1.11`, `@nuxt/eslint@1.2.0`\n- Build Modules: `-`\n\n\n### Reproduction\n\n1. Create a new Nuxt 3 project and install @nuxtjs/i18n. Configure the module as needed.\n\n2. Create the following folder structure within the pages directory:\n\n```\npages/\n└── blog/\n├── [[category]]/\n│ ├── [article].html.vue\n│ └── index.vue\n└── index.vue\n```\n\n3. Add a basic HTML template to each of the .vue files for visual identification. For example:\n\npages/blog/index.vue:\n```html\n\u003Ctemplate>\n\n\u003Cdiv>Blog Index (root)\u003C/div>\n\u003C/template>\n```\npages/blog/[[category]]/index.vue:\n```html\n\u003Ctemplate>\n\n\u003Cdiv>Category Index: {{ $route.params.category }}\u003C/div>\n\u003C/template>\n```\npages/blog/[[category]]/[[article]].html.vue:\n```html\n\u003Ctemplate>\n\n\u003Cdiv>Article: {{ $route.params.article }} in Category: {{ $route.params.category }}\u003C/div>\n\u003C/template>\n```\n4. Run Nuxt in development mode (npm run dev or yarn dev or pnpm dev).\n\n5. Navigate to the following URLs in your browser:\n\n - /blog/ - Expected to render \"Blog Index (root)\" (Works as expected).\n \n - /blog/article2.html - Expected to render [article].html.vue with category as undefined and article as article2. Current Behavior: Instead, it seems to attempt to render [[category]]/index.vue, possibly interpreting \"article2.html\" as the category parameter, leading to unexpected output or a 404.\n \n - /blog/category1/ - Expected to render \"Category Index: category1\" (Works as expected).\n \n - /blog/category1/article1.html - Expected to render \"Article: article1 in Category: category1\" (Works as expected).\n\n\nMinimal reproduction:\nhttps://stackblitz.com/edit/github-wp13roib-mzypd8gg\n\n### Describe the bug\n\nWith @nuxtjs/i18n enabled, accessing a dynamic route [[article]].html.vue within a directory with an optional dynamic parameter [[category]] directly with the .html extension results in incorrect route resolution. Instead of correctly identifying the optional category parameter as missing and resolving to the [article].html.vue route, Nuxt seems to be trying to match the URL against the [[category]]/index.vue route, misinterpreting the \"article2.html\" segment.\n\n### Additional context\n\nThis issue only occurs when @nuxtjs/i18n is active. Without the module, a different routing issue arises (documented in the next issue). This suggests an interaction between the Nuxt routing and @nuxtjs/i18n in handling optional dynamic parameters with file extensions.\n\n\n\n### Logs\n\n```shell\n\n```",[2977],{"name":2978,"color":2942},"upstream issue",3504,"Dynamic route with optional parent parameter fails to resolve correctly when accessed directly with extension","2025-05-22T15:54:36Z","https://github.com/nuxt-modules/i18n/issues/3504",0.7125918,["Reactive",2985],{},["Set"],["ShallowReactive",2988],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$feph2BNA2kFyrcfqet1gis099m8gMDL2AXRbu45YfZMo":-1},"/nuxt-modules/i18n/3631"]