\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3191],{"name":3175,"color":3176},3820,"ERROR Cannot restart nuxt: ERROR ENOENT: no such file or directory, open 'C:\\Users\\xxx\\Desktop\\puppy\\i18n\\locales\\en-US.ts'","2025-09-15T05:58:50Z","https://github.com/nuxt-modules/i18n/issues/3820",0.7208696,{"description":3198,"labels":3199,"number":3201,"owner":3181,"repository":3182,"state":3183,"title":3202,"updated_at":3203,"url":3204,"score":3205},"### Environment\n\n```\n- Operating System: Darwin\n- Node Version: v22.18.0\n- Nuxt Version: 4.1.2\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.6\n- Package Manager: npm@10.9.3\n- Builder: -\n- User Config: compatibilityDate, devtools, modules, ssr, i18n\n- Runtime Modules: @nuxtjs/i18n@10.1.0\n- Build Modules: -\n```\n\n### Reproduction\n\nhttps://github.com/invoxiagau/nuxt-18-detectBrowserLanguage\n\n- Run the production `cloud-build` and `cloud-run` scripts (check README), the bug is only occurring when serving static files\n- Set your browser default language as french\n\n### Describe the bug\n\n- Visit `localhost:8080`\n- I18n correctly detects the browser default language and redirects to `/fr`\n- You can see a list of links using different methods to localise links such as `NuxtLinkLocale`, `NuxtLink`+ `localePath`\n- The content is getting translated in french\n- But, the links are not getting updated:\n \nI expect: `/fr/generic-page`\nInstead I get: `/generic-page`\n\nI get the following error in my console:\n```Hydration completed but contains mismatches.```\n\n### Additional context\n\nI'm unable to reproduce this issue with the dev server, only after building and serving the static files using a http web server, in my case nginx.\n\n\n### Logs\n\n```shell\nHydration completed but contains mismatches.\n```",[3200],{"name":3175,"color":3176},3828,"localePath / NuxtLinkLocale hydration mismatches after browserRedirection with http web server","2025-09-29T08:39:16Z","https://github.com/nuxt-modules/i18n/issues/3828",0.7218253,{"description":3207,"labels":3208,"number":3210,"owner":3181,"repository":3182,"state":3183,"title":3211,"updated_at":3212,"url":3213,"score":3214},"### 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```",[3209],{"name":3175,"color":3176},3619,"Locale detection not working with `no_prefix` strategy","2025-05-19T06:13:27Z","https://github.com/nuxt-modules/i18n/issues/3619",0.7315104,{"description":3216,"labels":3217,"number":3219,"owner":3181,"repository":3182,"state":3183,"title":3220,"updated_at":3221,"url":3222,"score":3223},"### 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```",[3218],{"name":3175,"color":3176},3651,"Code inside defineI18nLocaleDetector is not reached","2025-05-29T06:34:13Z","https://github.com/nuxt-modules/i18n/issues/3651",0.73296905,{"description":3225,"labels":3226,"number":3228,"owner":3181,"repository":3182,"state":3183,"title":3229,"updated_at":3230,"url":3231,"score":3232},"### Describe the feature\n\nCurrently, the files property in the locales configuration only supports an array of file paths. I would like to propose supporting a prefix option for each file to namespace its translations when loaded.\n```\ni18n: {\n locales: [\n {\n code: \"en\",\n name: \"English\",\n files: [\n { path: \"en/common.json\", prefix: \"common\" },\n { path: \"en/checkout.json\", prefix: \"checkout\" },\n { path: \"en/order.json\", prefix: \"order\" }\n ]\n }\n ]\n}\n```\nWith this configuration, the keys inside en/checkout.json would be accessible via t('checkout.key'), while en/common.json would be t('common.key'), and so on.\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).",[3227],{"name":3175,"color":3176},3593,"Support for file prefix in locales.files config","2025-05-11T07:15:31Z","https://github.com/nuxt-modules/i18n/issues/3593",0.7393683,{"description":3234,"labels":3235,"number":3237,"owner":3181,"repository":3182,"state":3238,"title":3239,"updated_at":3240,"url":3241,"score":3242},"### Describe the feature\n\nNuxt 4 moved almost all folders into the app dir.\nWhen adding i18n I would expect the folder to be there as well.\n\nTo manually do this for nuxt4 change the restructureDir:\n```\nexport default defineNuxtConfig({\n i18n: {\n restructureDir: 'app/i18n',\n }\n});\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).",[3236],{"name":3175,"color":3176},3764,"closed","[Feature Request] Change default i18n dir location for Nuxt 4","2025-07-30T07:56:53Z","https://github.com/nuxt-modules/i18n/issues/3764",0.6961913,{"description":3244,"labels":3245,"number":3247,"owner":3181,"repository":3182,"state":3238,"title":3248,"updated_at":3249,"url":3250,"score":3251},"### Environment\n\n**Module version:** \n`@nuxtjs/i18n` version: `^9.4.0`\n\n**Nuxt version:** \n`Nuxt 3.16.2`\n\n### ❗ Problem\n\nAfter building CI/CD pipeline of project, the generated `nuxt.i18n.options.mjs` includes **absolute paths** to the locale files, for example:\n\n```js\n{\n path: \"/home/gitlab-runner/builds/QEWN8sP-g/0/client/i18n/locales/ru/errors.json\",\n cache: undefined\n}\n```\n\n### Reproduction\n\nConfigure @nuxtjs/i18n in nuxt.config.ts:\n\n```\ni18n: {\n locales: [\n { code: 'ru', file: 'ru/errors.json' },\n { code: 'ro', file: 'ro/errors.json' },\n ],\n langDir: 'i18n/locales/',\n defaultLocale: 'ru',\n}\n```\n\nRun nuxt build\n\nInspect the contents of .output/public/_nuxt/ or nuxt.i18n.options.mjs\n\nNotice absolute paths included in the files array\n\n💡 Workarounds tried\n\n✅ fullInstall: false → no effect\n\n✅ Using relative langDir and file values → still resolves to absolute paths\n\n✅ Changing build environment → problem persists\n\n### Describe the bug\n\nPlease avoid emitting absolute file paths into the build output. Relative or virtualized paths would ensure cleaner builds, better security, and fewer environment-specific artifacts.\n\nLet me know if you need a minimal reproduction repo or additional logs.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3246],{"name":3175,"color":3176},3742,"Absolute file paths included in production bundle","2025-07-21T08:55:25Z","https://github.com/nuxt-modules/i18n/issues/3742",0.7009877,{"description":3253,"labels":3254,"number":3256,"owner":3181,"repository":3182,"state":3238,"title":3257,"updated_at":3258,"url":3259,"score":3260},"### Environment\n\n- Operating System: Linux\n- Node Version: v22.14.0\n- Nuxt Version: 3.18.0\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.5\n- Package Manager: npm@10.9.2\n- Builder: -\n- User Config: compatibilityDate, devtools, modules, i18n, vite\n- Runtime Modules: @nuxt/eslint@1.0.1, @nuxtjs/i18n@10.0.6, @nuxt/image@1.9.0\n- Build Modules: -\n------------------------------\n\n\n### Reproduction\n\n**i18n config**\n```\nconst UA_LOCALE = 'ua';\nconst EN_LOCALE = 'en';\n\nexport const LOCALES = [\n {\n code: EN_LOCALE,\n iso: 'en',\n file: 'en.js',\n hreflang: EN_LOCALE,\n title: 'English',\n },\n {\n code: UA_LOCALE,\n iso: 'uk',\n file: 'ua.js',\n hreflang: 'uk',\n title: 'Українська',\n },\n];\n\nexport default {\n locales: LOCALES,\n defaultLocale: EN_LOCALE,\n strategy: 'prefix_except_default',\n fallbackLocale: EN_LOCALE,\n detectBrowserLanguage: true,\n langDir: './locales',\n restructureDir: '',\n};\n\n```\n\nnuxt.config.js\n```\nimport { defineNuxtConfig } from \"nuxt/config\"\nimport i18nConfig from './config/i18n.config';\n\nexport default defineNuxtConfig({\n compatibilityDate: '2024-11-01',\n devtools: { enabled: true },\n modules: ['@nuxt/eslint', '@nuxtjs/i18n', '@nuxt/image'],\n i18n: i18nConfig,\n vite: {\n css: {\n preprocessorOptions: {\n scss: {\n additionalData: '@use \"~/assets/scss/_variables.scss\" as *;'\n }\n }\n }\n },\n})\n\n```\n**Project is SSR not SSG**\n\n### Describe the bug\n\nOn direct app access i18n request twice for message.json.\n\n\u003Cimg width=\"918\" height=\"241\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e1267897-7583-47ee-8d94-3286f5f875cc\" />\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```",[3255],{"name":3175,"color":3176},3813,"Duplicate request on client for messages","2025-09-11T15:30:00Z","https://github.com/nuxt-modules/i18n/issues/3813",0.70743364,{"description":3262,"labels":3263,"number":3269,"owner":3181,"repository":3182,"state":3238,"title":3270,"updated_at":3271,"url":3272,"score":3273},"### Environment\n\nOperating System: Windows_NT\n- Node Version: v20.19.0\n- Nuxt Version: 3.19.0\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.4\n- Package Manager: npm@10.8.2\n- Builder: -\n- User Config: compatibilityDate, devtools, app, modules, i18n, runtimeConfig, css, nitro, image, experimental, dir\n- Runtime Modules: @nuxt/content@3.6.3, @nuxt/eslint@1.9.0, @nuxt/image@1.11.0, @nuxt/scripts@0.11.13, @nuxt/test-utils@3.19.2, @pinia/nuxt@0.11.2, @nuxtjs/i18n@10.0.6\n- Build Modules: -\n\n### Reproduction\n\nExample:\nProject A:\nhttps://xxx.com/en/xxx1\n\nProject B:\nhttps://xxx.com/en/xxx2\n\nBoth applications will request their translations from:\nhttps://xxx.com/_i18n/en/messages.json\n\nThis causes collisions, because the i18n resources from one project may overwrite or be mixed with those from another project.\n\nExpected behavior\nThere should be a way to namespace or scope the i18n assets per application, for example:\n\n/xxx1/_i18n/en/messages.json\n/xxx2/_i18n/en/messages.json\n\nOr, ideally, allow configuration of the base path for the i18n JSON files in nuxt.config.ts, similar to how app.baseURL or build.publicPath works.\n\nActual behavior\n\nCurrently, the i18n assets are always generated under the root /_i18n/ path, and there is no configuration option to change this.\n\nNotes\n\nIn Nuxt 2 (@nuxtjs/i18n v8), translation files were bundled via Webpack chunks and respected build.publicPath, so they could be scoped by project.\n\nIn Nuxt 3 (@nuxtjs/i18n v10), translation files are generated as Nitro public assets, with a hard-coded path.\n\nThis makes it difficult to host multiple Nuxt apps under the same domain without a reverse proxy rewrite or manual Nitro middleware.\n\n### Describe the bug\n\nWhen deploying multiple Nuxt 3 projects under the same domain, the @nuxtjs/i18n module (v10) always generates and serves translation files from the fixed path:\n/_i18n/{locale}/messages.json\n\nThis leads to conflicts between different projects, because all of them try to read from the same global /_i18n/ endpoint.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3264,3267,3268],{"name":3265,"color":3266},"need more info","e295d6",{"name":3175,"color":3176},{"name":3178,"color":3179},3806,"@nuxtjs/i18n v10: Multiple Nuxt apps on the same domain conflict because i18n JSON files are always served from /_i18n/...","2025-09-04T10:49:15Z","https://github.com/nuxt-modules/i18n/issues/3806",0.70808005,["Reactive",3275],{},["Set"],["ShallowReactive",3278],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$frfq1V2t3yyW1RAYJE-mhBIqNqkq1toj9rHZM0Zw11gI":-1},"/nuxt-modules/i18n/3620"]