\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3044,3045],{"name":3019,"color":3020},{"name":3034,"color":3035},3271,"[WebStorm] Type error '__VLS_ctx.$t' is of type 'unknown'.","2025-07-04T14:54:08Z","https://github.com/nuxt-modules/i18n/issues/3271",0.6955475,{"description":3052,"labels":3053,"number":3055,"owner":3022,"repository":3023,"state":3024,"title":3056,"updated_at":3057,"url":3058,"score":3059},"### 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```",[3054],{"name":3019,"color":3020},3651,"Code inside defineI18nLocaleDetector is not reached","2025-05-29T06:34:13Z","https://github.com/nuxt-modules/i18n/issues/3651",0.6970922,{"description":3061,"labels":3062,"number":3064,"owner":3022,"repository":3023,"state":3024,"title":3065,"updated_at":3066,"url":3067,"score":3068},"### 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```",[3063],{"name":3019,"color":3020},3619,"Locale detection not working with `no_prefix` strategy","2025-05-19T06:13:27Z","https://github.com/nuxt-modules/i18n/issues/3619",0.6981676,{"description":3070,"labels":3071,"number":3073,"owner":3022,"repository":3023,"state":3024,"title":3074,"updated_at":3075,"url":3076,"score":3077},"### Describe the feature\n\nWhen loading and fetching messages for external sources, the current advised solution (https://i18n.nuxtjs.org/docs/composables/define-i18n-locale) is during build time, which means for every change in messages we need to run the build/deploy again.\n\n\"A function that is the dynamic locale messages loading, that has the following parameters:\"\n\nDoes this mean that all the messages are fetched only during build, and after that they are lazy loaded?\n\nIt would be nice to have a feature, where the messages are cached and aren't loaded during build time.\n\nWould it be possible to implement this?\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).",[3072],{"name":3019,"color":3020},3699,"Runtime dynamic loading of messages","2025-06-19T08:42:21Z","https://github.com/nuxt-modules/i18n/issues/3699",0.7006015,{"description":3079,"labels":3080,"number":3082,"owner":3022,"repository":3023,"state":3024,"title":3083,"updated_at":3084,"url":3085,"score":3086},"### Environment\n\n------------------------------\n- Operating System: Windows_NT\n- Node Version: v22.12.0\n- Nuxt Version: 4.0.1\n- CLI Version: 3.26.4\n- Nitro Version: 2.12.4\n- Package Manager: npm@11.1.0\n- Builder: -\n- User Config: modules, imports, devtools, app, css, router, site, colorMode, runtimeConfig, generate, dev, compatibilityDate, nitro, debug, eslint, i18n, ogImage, robots, security, vuefire\n- Runtime Modules: @nuxt/ui@3.2.0, @nuxt/eslint@1.7.0, @nuxtjs/seo@3.1.0, @nuxtjs/i18n@10.0.2, nuxt-security@2.3.0, nuxt-vuefire@1.1.0\n- Build Modules: -\n------------------------------\n\n### Reproduction\n\nThe problem starts to appear after updating to nuxt-i18n v10 module\n\nWhat we can do to replicate:\nhttps://stackblitz.com/edit/bobbiegoede-nuxt-i18n-starter-dwb5kaqj?file=nuxt.config.ts\n\n### Describe the bug\n\nAfter updating i19n from version 9.5.6 to 10.0.2 I receive the following error on startup\n\n```\n[16:02:12] ERROR [request error] [unhandled] [GET] http://localhost:3000/__nuxt_error?error=true&url=%2Fdashboard&statusCode=500&statusMessage=Internal+Server+Error&message=(0%2C+__vite_ssr_import_0__.getApps)+is+not+a+function&stack=(0%2C+__vite_ssr_import_0__.getApps)+is+not+a+function%0Aat+ensureAdminApp+(/project/node_modules/vuefire/dist/server/index.mjs:42:17)%0Aat+/project/node_modules/nuxt-vuefire/dist/runtime/admin/plugin.server.js:13:62)%0Aat+/project/node_modules/nuxt/dist/app/nuxt.js:142:40)%0Aat+fn+(/project/node_modules/nuxt/dist/app/nuxt.js:220:36)%0Aat+Object.callAsync+(/project/node_modules/unctx/dist/index.mjs:72:47)%0Aat+/project/node_modules/nuxt/dist/app/nuxt.js:225:52)%0Aat+Object.runWithContext+(/project/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4020:18)%0Aat+callWithNuxt+(/project/node_modules/nuxt/dist/app/nuxt.js:225:24)%0Aat+/project/node_modules/nuxt/dist/app/nuxt.js:61:41)%0Aat+EffectScope.run+(/project/node_modules/@vue/reactivity/dist/reactivity.cjs.js:97:16)\n\nℹ Error: _ctx.$t is not a function\n\n ⁃ at _sfc_ssrRender (/project/components/Navigation.vue:175:15)\n\n 171 ┃ \u003CUButton\n 172 ┃ variant=\"ghost\"\n 173 ┃ :aria-label=\"item.label\"\n 174 ┃ >\n ❯ 175 ┃ \u003CUIcon :name=\"item.icon\" />\n 176 ┃ {{ item.label }}\n 177 ┃ \u003C/UButton>\n\n ⁃ at renderComponentSubTree (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:737:9) \n ⁃ at renderComponentVNode (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:686:12) \n ⁃ at ssrRenderComponent (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:100:10) \n ⁃ at _sfc_ssrRender (/project/layouts/default.vue:28:41) \n ⁃ at renderComponentSubTree (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:737:9) \n ⁃ at renderVNode (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:801:14) \n ⁃ at callWithNuxt (/project/node_modules/nuxt/dist/app/nuxt.js:225:24)\n\n[CAUSE]\nTypeError {\n message: '_ctx.$t is not a function',\n stack: '_ctx.$t is not a function\\n' +\n 'at _sfc_ssrRender (/project/components/Navigation.vue:175:15)\\n' +\n 'at renderComponentSubTree (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:737:9)\\n' +\n 'at renderComponentVNode (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:686:12)\\n' +\n 'at ssrRenderComponent (/project/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:100:10)\\n' +\n 'at _sfc_ssrRender (/project/layouts/default.vue:28:41)\\n' +\n '...'\n}\n```\n\n\nHence I can't start the whole application.\n\nI tried to reproduce it in the stackblitz, but all works fine there. Maybe it has something to do with my envirnoment as I deleted all .nuxt files and also removed all node modules/reinstalled them\n\n\n### Additional context\n\n\nAlso I have a previous error which then causes the application to crash:\n```\n WARN [Vue warn]: Property \"$t\" was accessed during render but is not defined on instance. 14:28:44 \n at \u003CHeaderBar>\n at \u003CDefault ref=Ref\u003C undefined > >\n at \u003CAsyncComponentWrapper ref=Ref\u003C undefined > >\n at \u003CLayoutLoader key=\"default\" layoutProps={\n ref: RefImpl {\n dep: Dep {\n computed: undefined,\n version: 0,\n activeLink: undefined,\n subs: undefined,\n map: undefined,\n key: undefined,\n sc: 0,\n __v_skip: true,\n subsHead: undefined\n },\n __v_isRef: true,\n __v_isShallow: true,\n _rawValue: undefined,\n _value: undefined\n }\n } name=\"default\" >\n at \u003CNuxtLayoutProvider layoutProps={\n ref: RefImpl {\n dep: Dep {\n computed: undefined,\n version: 0,\n activeLink: undefined,\n subs: undefined,\n map: undefined,\n key: undefined,\n sc: 0,\n __v_skip: true,\n subsHead: undefined\n },\n __v_isRef: true,\n __v_isShallow: true,\n _rawValue: undefined,\n _value: undefined\n }\n } key=\"default\" name=\"default\" ... >\n at \u003CNuxtLayout>\n at \u003CError error=(0 , __vite_ssr_import_0__.getApps) is not a function\n\n at ensureAdminApp (/app/node_modules/vuefire/dist/server/index.mjs:36:41)\n at /app/node_modules/nuxt-vuefire/dist/runtime/admin/plugin.server.js:12:68\n at /app/node_modules/nuxt/dist/app/nuxt.js:156:60\n at fn (/app/node_modules/nuxt/dist/app/nuxt.js:233:44)\n at Object.callAsync (/app/node_modules/unctx/dist/index.mjs:68:55)\n at /app/node_modules/nuxt/dist/app/nuxt.js:236:56\n at Object.runWithContext (/app/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4002:18)\n at callWithNuxt (/app/node_modules/nuxt/dist/app/nuxt.js:236:24)\n at /app/node_modules/nuxt/dist/app/nuxt.js:55:41\n at EffectScope.run (/app/node_modules/@vue/reactivity/dist/reactivity.cjs.js:85:16) >\n at \u003CNuxtRoot>\n\n[nuxt-app] vue:error: 9.872ms 14:28:44 \n[nuxt-app] app:error: 0.022ms 14:28:44 \n[nitro-runtime] error: 0.571ms\n```\n\nWhen I remove nuxt-vuefire. It works again, no error on startup.\n\nWhen I downgrade to 9.5.6 for the i18n module, it works too even with nuxt-vuefire and even with it throwing an error directly\n\n### Logs\n\n```shell\n\n```",[3081],{"name":3019,"color":3020},3755,"_ctx.$t is not a function","2025-07-23T13:58:47Z","https://github.com/nuxt-modules/i18n/issues/3755",0.7024869,{"description":3088,"labels":3089,"number":3090,"owner":3022,"repository":3023,"state":3024,"title":3091,"updated_at":3092,"url":3093,"score":3094},"I'm looking at replacing the vuetify locale as described [here](https://vuetifyjs.com/en/features/internationalization/#vue-i18n). As a result, I need to import the vuetify locale objects and add them to the messages from my app.\n\nI'm wondering if something like this is possible:\n```ts\n// i18n\\locales\\en.ts\nimport { en } from 'vuetify/locale'\n\nexport default {\n $vuetify: en,\n\n // my app messages\n errors: { },\n}\n```\n\nI have tried ^, and can't seem to get it working as the raw content is not resolved.\n\nIt looks like I have 2 solutions, but wanted to know if there was a better route:\n1. add messages to vue i18n config:\n```ts\n// i18n.config.ts\nimport { en } from 'vuetify/locale'\n\nexport default defineI18nConfig(() =>\n{\n console.log('here')\n return {\n messages: {\n en: {\n $vuetify: {\n ...en,\n },\n },\n },\n }\n})\n```\n\n2. make use of async `defineI18nLocale`\n```ts\n// i18n\\locales\\en.ts\nimport { en } from 'vuetify/locale'\n\nexport default defineI18nLocale(async (locale) =>\n return {\n $vuetify: en,\n \n // my app messages\n errors: { },\n }\n})\n```",[],3688,"Importing file inside a language file","2025-06-11T18:36:20Z","https://github.com/nuxt-modules/i18n/issues/3688",0.70431334,{"description":3096,"labels":3097,"number":3101,"owner":3022,"repository":3023,"state":3102,"title":3103,"updated_at":3104,"url":3105,"score":3106},"### Environment\n\n```\n- Operating System: Darwin\n- Node Version: v22.14.0\n- Nuxt Version: 3.16.2\n- CLI Version: 3.25.0\n- Nitro Version: 2.11.9\n- Package Manager: npm@10.9.2\n- Builder: -\n- User Config: ssr, compatibilityDate, devtools, modules, i18n\n- Runtime Modules: @nuxt/content@3.4.0, @nuxtjs/i18n@9.5.3\n- Build Modules: -\n```\n\n### Reproduction\n\nReproduction: https://stackblitz.com/~/github.com/ismaoc/test2\nCode: https://github.com/ismaoc/test2\n\n### Describe the bug\n\nJust created a fresh Nuxt project with `npm create nuxt \u003Cproject_name>` and added nuxti18n with `npx nuxi@latest module add i18n`. Added a basic locale config (same as the docs) and get a \"not found error\" or \"Failed to parse JSON file.\" for the locales files.\n\nThe config\n\n```\ni18n: {\n lazy: false,\n locales: [\n { code: 'en', file: 'en' },\n { code: 'fr', file: 'fr' },\n ],\n }\n```\n\nthrows the error:\n\n\n```\n[9:12:36 PM] ERROR Pre-transform error: Failed to load url /i18n/locales/en (resolved id: /Users/user/pruebas/test2/i18n/locales/en) in /Users/user/pruebas/test2/.nuxt/i18n.options.mjs. Does the file exist?\n\n\n[9:12:36 PM] ERROR Pre-transform error: Failed to load url /i18n/locales/fr (resolved id: /Users/user/pruebas/test2/i18n/locales/fr) in /Users/user/pruebas/test2/.nuxt/i18n.options.mjs. Does the file exist?\n```\n\nIf I add the .json extension like this:\n\ni18n: {\n defaultLocale: 'en',\n locales: [\n { code: 'en', name: 'English', file: 'en.json' },\n { code: 'fr', name: 'Français', file: 'fr.json' }\n ]\n }\n\nthrows:\n\n```\n ERROR Pre-transform error: Failed to parse JSON file. 9:19:58 PM\n Plugin: vite:json\n File: /Users/user/pruebas/test2/i18n/locales/fr.json\n\n\n ERROR Pre-transform error: Failed to parse JSON file. 9:19:58 PM\n Plugin: vite:json\n File: /Users/user/pruebas/test2/i18n/locales/en.json\n```\n\nThanks.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3098],{"name":3099,"color":3100},"upstream issue","fbca04",3560,"closed","Bug: i18n Configuration Not Loading Locale Files","2025-05-16T11:33:25Z","https://github.com/nuxt-modules/i18n/issues/3560",0.60669273,{"description":3108,"labels":3109,"number":3116,"owner":3022,"repository":3023,"state":3102,"title":3117,"updated_at":3118,"url":3119,"score":3120},"### Environment\n\n- Nuxt version: 3.17.4\n- @nuxtjs/i18n version: 10.0.0-beta-7\n- Deployment target: Static site (nuxi generate)\n- Works fine in SSR build (nuxi build)\n- Node version: 22\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/prod-https-6gz2f5\n\n- run `pnpm generate` command and check output folder. there is no i18n folder. \n- run `pnpm start` to run generate build. open browser console. you'll see `Failed to load messages for locale en FetchError: [GET] \"/_i18n/en/messages.json\":`\n\n### Describe the bug\n\nWhen generating a static site using `nuxi generate`, I get the following error in the console when loading the site:\n```\nFailed to load messages for locale en FetchError: [GET] \"/_i18n/en/messages.json\": 404 Not Found\n```\n\nThe same Nuxt app works fine with nuxtjs/i18n v9\n\nSetting `ssr: true` works fine for both build & generate \n\n### Additional context\n\nHere’s part of my nuxt.config.ts:\n```\n{\n defaultLocale: 'en',\n debug: import.meta.env.DEV,\n locales: [\n {\n code: 'en',\n language: 'en-US',\n file: 'en.json',\n name: 'English',\n },\n {\n code: 'es',\n file: 'es.json',\n name: 'Spanish',\n },\n {\n code: 'tl',\n file: 'tl.json',\n name: 'Tagalog (Filipino)',\n },\n ],\n strategy: 'no_prefix',\n detectBrowserLanguage: {\n useCookie: true,\n cookieKey: 'dmc.locale',\n redirectOn: 'root',\n },\n}\n```\n\n### Logs\n\n```shell\nTkPgtAp_.js:9 Failed to load messages for locale en FetchError: [GET] \"/_i18n/en/messages.json\": 404 Not Found\n at async s (N_fP37pm.js:19:23784)\n at async Object.loadLocaleMessages (N_fP37pm.js:53:9792)\n at async B1 (N_fP37pm.js:53:11552)\n at async setup (N_fP37pm.js:67:48664)\n at async t$ (N_fP37pm.js:19:30748)\n at async i (N_fP37pm.js:19:31273)\n at async N_fP37pm.js:19:31213\n at async Promise.all (:8080/index 5)\n at async N_fP37pm.js:19:31122\n at async i (N_fP37pm.js:19:31273)\n at async n$ (N_fP37pm.js:19:31324)\n at async Qk (N_fP37pm.js:1100:1993)\n```",[3110,3113],{"name":3111,"color":3112},"scope: ssg","85eac7",{"name":3114,"color":3115},"scope: ssr","0052cc",3645,"Failed to load messages for locale only in static site generated with nuxi generate (404 on /_i18n/en/messages.json)","2025-05-26T18:06:23Z","https://github.com/nuxt-modules/i18n/issues/3645",0.6343143,["Reactive",3122],{},["Set"],["ShallowReactive",3125],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$foXKelB1oOOl-DVGC7bFTIiWXsLIEIjqYZT_HSWblIVI":-1},"/nuxt-modules/i18n/3536"]