\n\n It calls twice `loadMessages` first time from init, and second after \"locale-changing\" middleware.\n\n\u003Cimg width=\"1591\" height=\"419\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/956c305d-57e9-4a71-a3b6-5e2231a460df\" />\n\nLog from middleware handler\n\n\u003Cimg width=\"1080\" height=\"934\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/228c3154-f653-4190-b9a4-7ce6c197b00d\" />\n\nI faced this problem on big project, i thought maybe i have problems in router or something else, but used it tiny one to be sure\nTried to add and remove lazy: true, detectBrowserLanguage: false also tried.\n\n**Project structure, no custom routing**\n\u003Cimg width=\"1137\" height=\"991\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/9b9385cd-713e-4801-af61-6f8be38c73f1\" />\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3248],{"name":3196,"color":3197},3813,"Duplicate request on client for messages","2025-09-11T15:30:00Z","https://github.com/nuxt-modules/i18n/issues/3813",0.69092315,{"description":3255,"labels":3256,"number":3261,"owner":3185,"repository":3186,"state":3240,"title":3262,"updated_at":3263,"url":3264,"score":3265},"### Describe the feature\n\nDependencies:\n```\n\"nuxt\": \"^4.0.3\",\n@nuxtjs/i18n\": \"^10.0.6\",\n```\n\nWe are unable to translate the root segment of dynamic routes during SSG, specifically when defining pages with a structure like this:\n\n```\napp\n├── pages\n│ └── something # not able to translate this part\n│ └── [slug].vue # able to translate this part\n```\n\nWe passed translated routes to `i18n.pages` property in `nuxt.config.ts` and pre-rendering translated routes with nitro, however, we faced an issue where the dynamic page root part cannot be translated.\n\nFor example desired result should be:\n**English**: /pages/something/some-slug\n**Translated**: /pages/something-translated/some-slug-translation\n\nActual result:\nWhen running nuxt generate we receive 404 error that /something-translated/some-slug-translation is not found\n\nCouldn’t find related issues. We are seeking guidance on whether the translation of dynamic page root part is a supported feature within the current Nuxt.js and @nuxtjs/i18n ecosystem, and if so, how to properly configure it to achieve the desired translated URL structure during SSG. Thanks!\n\n### Additional information\n\n- [ ] 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).",[3257,3258],{"name":3196,"color":3197},{"name":3259,"color":3260},"need reproduction","CD234A",3816,"Inability to translate dynamic page root part during SSG","2025-09-17T14:07:01Z","https://github.com/nuxt-modules/i18n/issues/3816",0.7066327,{"description":3267,"labels":3268,"number":3272,"owner":3185,"repository":3186,"state":3240,"title":3273,"updated_at":3274,"url":3275,"score":3276},"### Environment\n\n- Operating System: Windows_NT\n- Node Version: v22.14.0\n- Nuxt Version: 3.16.2\n- CLI Version: 3.24.1\n- Nitro Version: 2.11.8\n- Package Manager: yarn@1.22.22\n- Builder: -\n- User Config: devtools, app, modules, css, build, i18n, site, compatibilityDate\n- Runtime Modules: @nuxtjs/tailwindcss@6.13.2, @nuxt/image@1.9.0, @nuxtjs/i18n@9.5.3, @hypernym/nuxt-anime@2.1.1, @nuxtjs/sitemap@7.2.10, @nuxtjs/robots@5.2.9 \n- Build Modules: -\n\n### Reproduction\n\nhttps://stackblitz.com/edit/bobbiegoede-nuxt-i18n-starter-yr15sl4p?file=locales%2Fen%2Findex.ts\n\n### Describe the bug\n\nI’m trying to auto-import all `.json` files in a ` locales/[lang]/` folder using `import.meta.glob` in each language’s `index.ts` file. This worked fine in Nuxt 2 using `require.context`, but in Nuxt 3 with` @nuxtjs/i18n`, I’m encountering the following error:\n\n`[plugin:vite:esbuild] Failed locale loading: 'unknown' type in **locales/ar/index.ts`**\n\n\n### Additional context\n\nWhat I’m Trying to Do\n```\n// locales/ar/index.ts\nconst modules = import.meta.glob('./**/*.json', { eager: true })\n\nconst messages: Record\u003Cstring, any> = {}\n\nfor (const path in modules) {\n const key = path\n .replace('./', '')\n .replace('.json', '')\n .replace(/\\//g, '.')\n messages[key] = modules[path].default\n}\n\nexport default messages\n```\n```\n// nuxt.config.ts\ni18n: {\n strategy: 'prefix_except_default',\n defaultLocale: 'ar',\n lazy: true,\n langDir: 'locales',\n locales: [\n { code: 'ar', name: 'Arabic', file: 'ar/index.ts' },\n { code: 'en', name: 'English', file: 'en/index.ts' }\n ]\n}\n```\n\nI expected Nuxt to allow ` import.meta.glob` usage in language-specific ` index.ts` files to auto-import and combine all locale messages from nested JSON files.\n\n**What Happened Instead**\n\nDynamic path template literals are not supported by Vite\n\nEven static `../locales/ar/**/*.json` fails due to path resolution issues\n\nErrors like `unknown type` or `Failed locale loading` appear\n\n\n**Workarounds Tried**\nUsing `require.context` – unsupported in Vite\n\nSwitching to manual static imports – works but violates DRY and doesn't scale\n\nMoving the glob loader to a utility file – still fails due to unresolved paths\n\nReplacing `lodash.set` with custom merging logic – no difference in behavior\n\nChecked paths, JSON validity, eager option – no effect\n\n### Logs\n\n```shell\n\n```",[3269],{"name":3270,"color":3271},"need more info","e295d6",3536,"Failed locale loading with static JSON imports in Nuxt 3","2025-05-23T10:27:57Z","https://github.com/nuxt-modules/i18n/issues/3536",0.70880795,{"description":3278,"labels":3279,"number":3283,"owner":3185,"repository":3186,"state":3240,"title":3284,"updated_at":3285,"url":3286,"score":3287},"### 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_",[3280],{"name":3281,"color":3282},"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.71666443,["Reactive",3289],{},["Set"],["ShallowReactive",3292],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f5uOpPa5u2iuyWII_ii0etXPU_iy4h0O2NCKev1XmgY0":-1},"/nuxt-modules/i18n/3699"]