|\u003Cimg width=\"324\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/cd6f6927-33b3-4b85-a984-64c6cb1f53e5\" />|\n\n#### Proposed Feature: `localeDetector` Option\n\n##### Current Behavior Example\n\nTo illustrate the current behavior, consider the following scenario:\n\n* Accessing `/en/about` and `/ja/about` under the `no_prefix` strategy will not trigger locale detection based on the pathname.\n* As a result, both paths will use the language setting of the build machine during SSG, resulting in both paths potentially being generated in the same language.\n\nScreenshots and repository links demonstrating the current behavior will be provided to further clarify the issue.\n\nTo address this issue, I propose adding a new `localeDetector` option to the module configuration. This option allows specifying the methods for locale detection as follows:\n\n```typescript\ntype LocaleDetector = (\"pathname\" | \"domain\" | \"cookie\" | \"browser\")[];\n\nconst localeDetector: LocaleDetector = [\"pathname\", \"domain\", \"cookie\", \"browser\"];\n```\n\nIf `pathname` is specified, the locale will be automatically detected based on the URL pathname.\n\nThe default value of `localeDetector` will vary depending on the `strategy` value to maintain backward compatibility. For instance, when `no_prefix` is selected, the default value would be:\n\n```javascript\nlocaleDetector: [\"domain\", \"cookie\", \"browser\"]\n```\n\n##### Example Configuration for My Use Case:\n\n```javascript\nstrategy: \"no_prefix\",\nlocaleDetector: [\"pathname\", \"cookie\", \"browser\"]\n```\n\nThis configuration would resolve the issue by enabling locale detection based on pathname while maintaining backward compatibility with existing behavior.\n\nThank you for considering this feature request. I would be happy to provide further clarifications or contribute to the implementation if needed.\n\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).",[2865],{"name":2866,"color":2867},"pending triage","c2e0c6",3609,"nuxt-modules","i18n","open","Add `localeDetector` option to customize locale detection during Vue component rendering","2025-05-16T18:51:35Z","https://github.com/nuxt-modules/i18n/issues/3609",0.7759483,{"description":2877,"labels":2878,"number":2880,"owner":2869,"repository":2870,"state":2871,"title":2881,"updated_at":2882,"url":2883,"score":2884},"### Environment\n\n- Operating System: Darwin\n- Node Version: v22.15.0\n- Nuxt Version: 3.17.3\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.12\n- Package Manager: npm@10.9.2\n- Builder: -\n- User Config: compatibilityDate, devtools, modules, i18n, nitro\n- Runtime Modules: @nuxt/content@3.5.1, @nuxtjs/i18n@9.5.4\n- Build Modules: -\n\n\n### Reproduction\n\nA minimal reproduction of this issue can be found in the following repository: https://github.com/odan-sandbox/nuxt-content-and-i18n-no_prefix-example\n\n\n### Describe the bug\n\nWhen using the `no_prefix` strategy in `nuxt-i18n`, the locale detection based on the URL pathname is not functioning as expected. This results in incorrect locale assignment during SSR/SSG.\n\nFor example, accessing `/en/about` and `/ja/about` should render the corresponding locale-specific content, but instead, both paths are rendered using the default or server locale, ignoring the locale information in the pathname.\n\nThis issue causes problems for multilingual documentation sites using `nuxt/content`, where the content is structured by locale (e.g., `docs/en/about.md`, `docs/ja/about.md`). During SSG, both paths may be generated with the same language content, leading to incorrect output.\n\nIf a PR to resolve this issue is considered appropriate, I would be willing to work on it.\n\n\n### Additional context\n\nRelated: https://github.com/nuxt-modules/i18n/issues/3609\n\n### Logs\n\n```shell\n\n```",[2879],{"name":2866,"color":2867},3619,"Locale detection not working with `no_prefix` strategy","2025-05-19T06:13:27Z","https://github.com/nuxt-modules/i18n/issues/3619",0.7957301,{"description":2886,"labels":2887,"number":2888,"owner":2869,"repository":2870,"state":2871,"title":2889,"updated_at":2890,"url":2891,"score":2892},"Hi, my nuxt application can be accessed through different domains, so I configured multiDomainLocales to work correctly.\nMy goal is that the SEO tags are changing based on the domain, is this possible? currently from any domain you can see the baseUrl that I configure from i18n in nuxt.config.ts.\nThese are my configurations:\n\n```typescript\n// nuxt.config.ts\nconst englishDomains = [/* ... */];\nconst portugueseDomains = [/* ... */];\nconst spanishDomains = [/* ... */];\n\nconst domains = [\n ...englishDomains,\n ...portugueseDomains,\n ...spanishDomains\n];\n\nexport default defineNuxtConfig({\n// ...\nsite: {\n multiTenancy: [\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: true, name: 'some name...', url: 'some url...' } },\n // Dev\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } },\n { hosts: [/* ... */], config: { indexable: false, name: 'some name Dev', url: 'some url...' } }\n ]\n},\n// ...\n i18n: {\n vueI18n: 'i18n.config.ts',\n strategy: 'prefix',\n baseUrl: 'https://somedomain.com',\n defaultLocale: 'es',\n detectBrowserLanguage: {\n useCookie: true,\n cookieKey: 'i18n_redirected',\n redirectOn: 'root'\n },\n multiDomainLocales: true,\n locales: [\n {\n code: 'en',\n file: 'en.json',\n domains,\n language: 'en-US',\n name: 'English',\n defaultForDomains: englishDomains\n },\n {\n code: 'es',\n file: 'es.json',\n domains,\n language: 'es-AR',\n name: 'Español',\n defaultForDomains: spanishDomains\n },\n {\n code: 'pt',\n file: 'pt.json',\n domains,\n language: 'pt-PT',\n name: 'Português',\n defaultForDomains: portugueseDomains\n }\n ],\n lazy: true\n },\n});\n// ...\n```\n\n```typescript\n// app.vue\n//...\nconst head = useLocaleHead({\n dir: true,\n key: 'id',\n seo: true\n});\n\nuseHead({\n htmlAttrs: {\n lang: head.value.htmlAttrs.lang,\n dir: head.value.htmlAttrs.dir\n },\n link: head.link,\n meta: head.meta\n});\n//...\n```",[],3635,"SEO and Multiple Domains","2025-05-22T19:19:28Z","https://github.com/nuxt-modules/i18n/issues/3635",0.8010869,{"description":2894,"labels":2895,"number":2897,"owner":2869,"repository":2870,"state":2871,"title":2898,"updated_at":2899,"url":2900,"score":2901},"### Environment\n\n------------------------------\n- Operating System: Windows_NT\n- Node Version: v19.9.0\n- Nuxt Version: 3.17.3\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.12\n- Package Manager: npm@9.6.3\n- Builder: -\n- User Config: modules, i18n, tailwindcss, css, plugins, devtools, compatibilityDate, runtimeConfig, vite, nitro\n- Runtime Modules: @geeks.solutions/nuxt-sections@3.0.1, @nuxt/image@1.10.0, @nuxtjs/i18n@9.5.4, @nuxtjs/tailwindcss@6.14.0, nuxt-lazytube@0.2.2, nuxt3-leaflet@1.0.13, @pinia/nuxt@0.11.0\n- Build Modules: -\n------------------------------\n\n\n### Reproduction\n\n* nuxt.config.ts\n\n```ts\nexport default defineNuxtConfig({\n ...(process.env.NODE_ENV === 'development' && {\n devServer: {\n https: {},\n host: '0.0.0.0',\n port: 443,\n }\n }),\n modules: [\n \"@geeks.solutions/nuxt-sections\",\n \"@nuxt/image\",\n \"@nuxtjs/i18n\",\n \"@nuxtjs/tailwindcss\",\n \"nuxt-lazytube\",\n \"nuxt3-leaflet\",\n \"@pinia/nuxt\"\n ],\n i18n: {\n detectBrowserLanguage: false,\n defaultLocale: \"en\",\n locales: [\n {\n name: \"French\",\n code: \"fr\",\n iso: \"fr\",\n file: \"fr.js\"\n },\n {\n name: \"English\",\n code: \"en\",\n iso: \"en\",\n file: \"en.js\"\n }\n ],\n langDir: \"lang/\",\n experimental: {\n localeDetector: 'localeDetector.ts'\n }\n },\n tailwindcss: {\n\n },\n css: [\n '~/assets/css/default.css'\n ],\n plugins: [\n '~/plugins/vue-dragscroll.js'\n ],\n devtools: { enabled: true },\n compatibilityDate: '2025-05-13',\n vite: {\n optimizeDeps: {\n include: ['quill', '@devdcodes9/quill-emojijs', 'quill-table-ui'],\n }\n },\n nitro: {\n compressPublicAssets: {\n gzip: true,\n brotli: true\n }\n }\n})\n```\n\n* localeDetector.ts inside i18n directory\n\n```ts\nconsole.log(\"Detector file loaded\")\n\n// Detect based on query, cookie, header\nexport default defineI18nLocaleDetector((event, config) => {\n\n console.log(\"Event\", event)\n\n // try to get locale from query\n const query = tryQueryLocale(event, { lang: '' }) // disable locale default value with `lang` option\n if (query) {\n return query.toString()\n }\n\n // try to get locale from cookie\n const cookie = tryCookieLocale(event, { lang: '', name: 'i18n_redirected' }) // disable locale default value with `lang` option\n if (cookie) {\n return cookie.toString()\n }\n\n // try to get locale from header (`accept-header`)\n const header = tryHeaderLocale(event, { lang: '' }) // disable locale default value with `lang` option\n if (header) {\n return header.toString()\n }\n\n // If the locale cannot be resolved up to this point, it is resolved with the value `defaultLocale` of the locale config passed to the function\n return config.defaultLocale\n})\n```\n\n* nuxi prepare\n* nuxi dev\n\n### Describe the bug\n\nI am trying to use the experimental localeDetector feature.\nThe localeDetector file is loaded and confirmed by having `Detector file loaded` logged on the server console.\n\nThe problem I am facing is that defineI18nLocaleDetector is never called and no Event is logged.\nAm I missing something ?\n\n### Additional context\n\nIn the documentation I saw that the local detector function is called per request on the server, so why the code inside the defineI18nLocaleDetector is never reached\n\n### Logs\n\n```shell\nNo errors logged at all\n```",[2896],{"name":2866,"color":2867},3651,"Code inside defineI18nLocaleDetector is not reached","2025-05-29T06:34:13Z","https://github.com/nuxt-modules/i18n/issues/3651",0.8062286,{"description":2903,"labels":2904,"number":2908,"owner":2869,"repository":2870,"state":2909,"title":2910,"updated_at":2911,"url":2912,"score":2913},"### Describe the feature\n\n\r\nI have a project that heavily relies on several modules injecting pages. It is used to create websites for different countries by feeding country-config into nuxt-config. As a result, each module may inject a different set of pages based on the configuration.\r\n\r\nCurrently, I have found no way to define custom routes for pages injected through modules. \r\nI cannot use `customRoutes: 'page'` because it would require modifying all modules whenever we release the website for a new country. \r\nAlso, I cannot use `customRoutes: 'config'` since it cannot resolve AnalyzedNuxtPageMeta for injected pages.\r\n\r\nI wrote some details in discussions few days ago:\r\nhttps://github.com/nuxt-modules/i18n/discussions/2398\r\n\r\nI'd like to have an ability to define customRoutes based on route name instead of fs-like path. \r\nSo next 2 blocks will give same result:\r\n\r\n```js\r\ni18n: {\r\n customRoutes: 'config',\r\n pages: {\r\n 'my/[param]/page': {\r\n en: 'my/[param]/page',\r\n de: 'mein/[param]/seite'\r\n }\r\n }\r\n}\r\n```\r\n\r\n```js\r\ni18n: {\r\n customRoutes: 'named-config',\r\n pages: {\r\n 'my-param-page': { \r\n en: 'my/:param()/page',\r\n de: 'mein/:param()/seite'\r\n }\r\n }\r\n}\r\n```\r\n\r\n\r\n\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).",[2905],{"name":2906,"color":2907},"scope: routing","21CD73",2407,"closed","Add one more way to define custom routes. 'named-config'","2025-05-23T09:36:57Z","https://github.com/nuxt-modules/i18n/issues/2407",0.70415473,{"description":2915,"labels":2916,"number":2923,"owner":2869,"repository":2870,"state":2909,"title":2924,"updated_at":2925,"url":2926,"score":2927},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v22.15.0`\n- Nuxt Version: `3.17.4`\n- CLI Version: `3.25.1`\n- Nitro Version: `2.11.12`\n- Package Manager: `npm@10.9.2`\n- Builder: `-`\n- User Config: `devtools`, `modules`, `i18n`, `compatibilityDate`, `app`\n- Runtime Modules: `@nuxtjs/i18n@9.5.4`\n- Build Modules: `-`\n\n\n### Reproduction\n\nhttps://github.com/cjpearson/switch-locale-path-repro\n\n### Describe the bug\n\nWhen using different domains for each locale, `switchLocalePath` will return an absolute URL for the current route in a different locale. However, if `app.baseURL` will not be included if it is set.\n\nFor example, calling `switchLocalePath` on `http://en.localhost/prefix/testing` will return `http://nl.localhost/testing`.\n\nThis is also the case when using path prefixes instead of domains, but less of an issue in practice since NuxtLink automatically adds the baseURL.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[2917,2920],{"name":2918,"color":2919},"bug 🐛","ee0701",{"name":2921,"color":2922},"domain","fbca04",3628,"`switchLocalePath` should include the baseURL","2025-05-22T15:50:22Z","https://github.com/nuxt-modules/i18n/issues/3628",0.7384366,{"description":2929,"labels":2930,"number":2933,"owner":2869,"repository":2870,"state":2909,"title":2934,"updated_at":2935,"url":2936,"score":2937},"### 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```",[2931],{"name":2932,"color":2922},"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.7552838,{"description":2939,"labels":2940,"number":2944,"owner":2869,"repository":2870,"state":2909,"title":2945,"updated_at":2946,"url":2947,"score":2948},"### 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_",[2941],{"name":2942,"color":2943},"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.7603316,{"description":2950,"labels":2951,"number":2956,"owner":2869,"repository":2870,"state":2909,"title":2957,"updated_at":2958,"url":2959,"score":2960},"### Environment\n\n------------------------------\n- Operating System: Linux\n- Node Version: v20.19.0\n- Nuxt Version: 3.16.2\n- CLI Version: 3.24.1\n- Nitro Version: 2.11.9\n- Package Manager: npm@10.8.2\n- Builder: -\n- User Config: devtools, modules, i18n, compatibilityDate\n- Runtime Modules: @nuxtjs/i18n@9.5.3\n- Build Modules: -\n------------------------------\n\n### Reproduction\n\nhttps://stackblitz.com/edit/bobbiegoede-nuxt-i18n-starter-ffnbvqqb?file=pages%2Findex.vue\n\nThis reproduction contains two links on the `index.vue` page which forwards to the `/state-test` page that just outputs the history state. \nOne of the links uses `NuxtLink` and the other uses the `NuxtLinkLocale` component.\nBoth are using the exact same `to` param including the `state` prop. When clicking the links, only the `NuxtLink` component forwards the `state` props.\n\n### Describe the bug\n\nThe `RouteLocationNamedRaw` interface supports a `state` property that can be used to save state to the History API as documented here: https://router.vuejs.org/api/interfaces/RouteLocationNamedRaw.html#state-\n\nWhen passing the `state` property to the `to` property of a standard `NuxtLink` component the state is successfully saved to the History API and is available on the forwarded page via `history.state`.\n\nHowever, the `NuxtLinkLocale` component drops the `state` property and does not save the passed state to the History API.\n\nSince the `NuxtLinkLocale` component should support all props documented for `NuxtLink` with the same functionality as documented [here](https://i18n.nuxtjs.org/docs/components/nuxt-link-locale) this should be considered as a bug.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[2952,2953],{"name":2918,"color":2919},{"name":2954,"color":2955},"scope: components","B327C3",3547,"Route param `state` for the history state gets lost on NuxtLinkLocale component","2025-05-23T07:01:09Z","https://github.com/nuxt-modules/i18n/issues/3547",0.7635807,{"description":2962,"labels":2963,"number":2971,"owner":2869,"repository":2870,"state":2909,"title":2972,"updated_at":2973,"url":2974,"score":2975},"### Environment\n\n\"@nuxtjs/i18n\": \"^8.0.0-beta.10\",\n\n### Reproduction\n\nI have the following pages:\r\n- `terms.vue`\r\n- `terms-fi.vue`\r\n\r\nand my `nuxt.config.ts` has the following:\r\n```\r\n customRoutes: 'config', // disable custom route with page components\r\n pages: {\r\n terms: {\r\n fi: '/terms-fi',\r\n },\r\n },\r\n```\r\nIt works correctly when going from Finnish to English. Though when I am at `/fi/terms-fi` (the Finnish page) and I switch to english with `switchLocalePath` the routes becomes `terms-fi` and it should just be `terms`\n\n### Describe the bug\n\nError in the route when switching language if custom pages are defined.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n_No response_",[2964,2967,2968],{"name":2965,"color":2966},"🍰 p2-nice-to-have","0e8a16",{"name":2906,"color":2907},{"name":2969,"color":2970},"PR Welcome","40922A",2033,"Custom routes issue with switchLocalePath","2025-05-22T23:35:14Z","https://github.com/nuxt-modules/i18n/issues/2033",0.7678217,["Reactive",2977],{},["Set"],["ShallowReactive",2980],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f1ASsdU6XuWkuH_L2WK7nSm0A3cNmLDfJSN-HGVM5IpU":-1},"/nuxt-modules/i18n/1897"]