\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3172,3175],{"name":3173,"color":3174},"pending triage","c2e0c6",{"name":3176,"color":3177},"need reproduction","CD234A",3271,"nuxt-modules","i18n","open","[WebStorm] Type error '__VLS_ctx.$t' is of type 'unknown'.","2025-07-04T14:54:08Z","https://github.com/nuxt-modules/i18n/issues/3271",0.65836185,{"description":3187,"labels":3188,"number":3190,"owner":3179,"repository":3180,"state":3181,"title":3191,"updated_at":3192,"url":3193,"score":3194},"### Environment\n\n- Operating System: Linux\n- Node Version: v20.19.0\n- Nuxt Version: 4.0.2\n- CLI Version: 3.27.0\n- Nitro Version: 2.12.4\n- Package Manager: npm@10.8.2\n- Builder: -\n- User Config: modules, $development, $production, devtools, css, mdc, runtimeConfig, routeRules, experimental, compatibilityDate, nitro, vite, hooks, eslint, fonts, i18n, icon, image, shadcn, supabase, tiptap\n- Runtime Modules: @sentry/nuxt/module@9.42.1, @nuxtjs/color-mode@3.5.2, @nuxtjs/tailwindcss@7.0.0-beta.0, shadcn-nuxt@2.2.0, @nuxtjs/i18n@10.0.3, @nuxtjs/supabase@1.6.0, @nuxt/icon@1.15.0, @nuxt/eslint@1.7.1, nuxt-tiptap-editor@2.3.1, @nuxtjs/mdc@0.17.2, @vueuse/nuxt@13.6.0, @nuxt/image@1.10.0, @nuxt/fonts@0.11.4, nuxt-time@1.0.3, @nuxt/icon@1.15.0, @nuxtjs/leaflet@1.3.2\n- Build Modules: -\n\n### Reproduction\n\nhttps://github.com/Chrissi2812/nuxt_bug_reports/tree/i18n/types-router\n--- Or ---\nhttps://stackblitz.com/edit/github-9m9yc3ub\n\n\u003Cimg width=\"502\" height=\"411\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f725bb5d-c55d-4200-b26b-8d76338624b0\" />\n\n### Describe the bug\n\nWith the default settings and `experimental.typedPages: true` the generated types are not correctly picked up.\n\nIf I rename `RouteNamedMapI18n` to `RouteNamedMap` the types are available.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3189],{"name":3173,"color":3174},3771,"useRoute needs suffix to work","2025-08-05T16:28:06Z","https://github.com/nuxt-modules/i18n/issues/3771",0.6805513,{"description":3196,"labels":3197,"number":3199,"owner":3179,"repository":3180,"state":3181,"title":3200,"updated_at":3201,"url":3202,"score":3203},"### Environment\n\nThe issue is not happening in local, only on Vercel (preview and production env).\nBut still here are the local information:\n- Operating System: Windows_NT\n- Node Version: v22.17.0\n- Nuxt Version: 3.18.1\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.4\n- Package Manager: yarn@4.9.2\n- Builder: -\n- User Config: app, ssr, nitro, components, image, plugins, build, typescript, modules, imports, runtimeConfig, ui, icon, i18n, vite, compatibilityDate, devtools, site, \nschemaOrg, ogImage\n- Runtime Modules: @nuxt/image@1.11.0, @nuxtjs/i18n@10.0.6, @nuxtjs/seo@3.1.0, @nuxt/ui@3.3.2, @nuxt/fonts@0.11.4, @nuxt/eslint@1.9.0\n- Build Modules: -\n\n\nOn the Vercel side, nothing has really been tweaked (no env variables), it takes the default config.\n\u003Cimg width=\"927\" height=\"550\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ba24b828-c014-4c83-994a-d199031ac827\" />\n\n### Reproduction\n\nHere is the repo where the issue is happening:\nhttps://github.com/PABERTHIER/atelier-libr-emotions\nFor this PR more precisely:\nhttps://github.com/PABERTHIER/atelier-libr-emotions/pull/22/files\n\nYou can find the nuxt-config here:\nhttps://github.com/PABERTHIER/atelier-libr-emotions/blob/main/nuxt.config.ts\n\nI can't put into production the issue since it will break the images rendering.\nBut you can find more information in the **Describe the bug** section.\n\n### Describe the bug\n\nI know that sounds weird because nuxtjs/i18n is not tied to NuxtImg / IPX / Vercel but still, the issue is only happening when I upgrade the nuxtjs/i18n package from 9.5.6 to 10.0.6.\nI've tried many things to resolve this issue but without success.\nI've checked all breaking changes and I don't think those have a direct impact to this issue.\nCould it be related to all new packages added / modified ?\nOr maybe something about I18n intercepting the route ?\n\nI know there already are some issues like this in the NuxtImg repo:\nhttps://github.com/nuxt/image/issues/1281\nBut still, I never experienced it since the migration to V10.\nWhen rollbacking to 9.5.6 the issue disappears so there is a direct link.\n\nFor the record, it is intentional to use IPX as the provider instead of Vercel.\n\nSince the upgrade, I'm getting 404 for images rendered with IPX:\n{error: {message: \"[404] [IPX_FILE_NOT_FOUND] File not found: /paintings/celestial-collision.jpg\"}}\n\n- **Before the upgrade**:\n\u003Cimg width=\"1016\" height=\"715\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ce265489-8260-4e83-9936-9a4a542be950\" />\n\n- **After the upgrade**:\n\u003Cimg width=\"1022\" height=\"352\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1f3f854b-ceee-41b0-935d-9fdaef11c21d\" />\n\u003Cimg width=\"1410\" height=\"196\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c93d82ec-735c-4485-95ac-eb8e816c367a\" />\n\u003Cimg width=\"666\" height=\"57\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f33f4988-4b44-4e0e-9bbe-c2ad7b91a07a\" />\n\n- **For the generated HTML**:\nBefore the upgrade:\n\u003Cimg width=\"1126\" height=\"136\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/41225aa1-a371-43f8-bb9b-14cc5307b515\" />\n\nAfter the upgrade:\n\u003Cimg width=\"1123\" height=\"103\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8f47c7c9-ba34-4fe5-a83f-10712fc2876b\" />\n\n### Additional context\n\nIf you need more information, feel free to ask, I will do my best to provide anything useful.\nI'd happy to help.\nI wanted to point out that issue and try to understand what is really happening under the hood.\n\n### Logs\n\n```shell\n\n```",[3198],{"name":3173,"color":3174},3796,"Unable to display NuxtImg on Vercel when using the IPX provider since V10 migration","2025-08-23T12:16:49Z","https://github.com/nuxt-modules/i18n/issues/3796",0.6931944,{"description":3205,"labels":3206,"number":3208,"owner":3179,"repository":3180,"state":3181,"title":3209,"updated_at":3210,"url":3211,"score":3212},"### Environment\n\nmacOS 26\n\"nuxt\": \"^4.1.2\",\n\"@nuxtjs/i18n\": \"^10.1.0\",\n\"typescript\": \"^5.9.3\",\n\nlatest vsCode\n\nhereafter is an extract of my nuxtConfig :\n` i18n: {\n defaultLocale: 'fr',\n locales: [\n { code: 'fr', name: 'Français', file: 'fr.json' },\n { code: 'en', name: 'English', file: 'en.json' },\n ],\n strategy: 'prefix_except_default',\n detectBrowserLanguage: {\n useCookie: true,\n cookieKey: 'i18n_redirected',\n redirectOn: 'root',\n },\n },`\n\n### Reproduction\n\nconst { locales } = useI18n();\n\n### Describe the bug\n\nAccording to typeScript locales property is not exported by usei18n composable :\nProperty 'locales' does not exist on type 'Composer\u003C{ fr: LocaleMessage\u003CVueMessageType>; en: LocaleMessage\u003CVueMessageType>; }, { fr: DateTimeFormat; en: DateTimeFormat; }, { ...; }, string, \"fr\" | \"en\", \"fr\" | \"en\">'.ts-plugin(2339)\n\n\u003Cimg width=\"1553\" height=\"273\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4028cf40-4dd1-4fd3-bde3-12c460c5cd73\" />\n\n\n### Additional context\n\nAt runtime the locales array is properly available see console log :\n\n\u003Cimg width=\"574\" height=\"98\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a567197b-ed0e-477c-a908-3ce9b0e47c7d\" />\n\n### Logs\n\n```shell\n\n```",[3207],{"name":3173,"color":3174},3834,"TS error: According to typeScript locales property is not exported by usei18n composable","2025-10-04T07:35:11Z","https://github.com/nuxt-modules/i18n/issues/3834",0.70661616,{"description":3214,"labels":3215,"number":3217,"owner":3179,"repository":3180,"state":3181,"title":3218,"updated_at":3219,"url":3220,"score":3221},"### 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```",[3216],{"name":3173,"color":3174},3755,"_ctx.$t is not a function","2025-07-23T13:58:47Z","https://github.com/nuxt-modules/i18n/issues/3755",0.7070211,{"description":3223,"labels":3224,"number":3226,"owner":3179,"repository":3180,"state":3181,"title":3227,"updated_at":3228,"url":3229,"score":3230},"### Environment\n\n``` \n- Operating System: Darwin\n- Node Version: v22.16.0\n- Nuxt Version: 4.0.3\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.4\n- Package Manager: npm@10.9.2\n- Builder: -\n- User Config: compatibilityDate, devtools, modules, css, vite, routeRules, i18n, sanctum, runtimeConfig, uiPro\n- Runtime Modules: @nuxt/eslint@1.8.0, @nuxt/image@1.11.0, @nuxt/scripts@0.11.10, @nuxt/ui-pro@3.3.2, @nuxtjs/i18n@10.0.5, nuxt-auth-sanctum@1.1.2, dayjs-nuxt@2.1.11\n- Build Modules: -\n```\n\n### Reproduction\n\n1. Create translation files in the default location:\n```\ni18n/locales/es.ts\ni18n/locales/en.ts\n```\n\n2. Configure nuxt.config.ts:\n```ts\nrouteRules: {\n \"/\": { prerender: true },\n \"/en\": { prerender: true },\n...\n// We have prerender y routes, because are landings and astatic\n},\n i18n: {\n defaultLocale: \"es\",\n strategy: \"prefix_except_default\",\n baseUrl: process.env.NUXT_PUBLIC_FRONTEND_URL,\n locales: [\n { code: \"en\", name: \"English\", file: \"en.ts\", language: \"en\" },\n { code: \"es\", name: \"Español\", file: \"es.ts\", language: \"es\" },\n ],\n}\n```\n\n3. layouts/default.vue\n```vue\n\u003Cscript lang=\"ts\" setup>\nconst i18nHead = useLocaleHead({\n dir: true,\n seo: true,\n});\nconst { t } = useI18n();\nconst route = useRoute();\nconst config = useRuntimeConfig();\nconst { locale } = useI18n();\nconst title = computed(() =>\n t((route.meta.title as string) ?? \"layout.default.title\", {\n appName: config.public.appName,\n })\n);\ntype Meta = {\n property?: string;\n content: string;\n name?: string;\n};\nconst metaTags = computed\u003CMeta[]>(() => {\n const description = t(\n (route.meta.description as string) ?? \"layout.default.description\"\n );\n\n return [\n ...(i18nHead.value.meta || []),\n {\n name: \"description\",\n content: description,\n },\n {\n property: \"og:title\",\n content: title.value,\n },\n {\n property: \"og:description\",\n content: description,\n },\n {\n property: \"og:image\",\n content: `/media/common/${locale.value}/og.webp`,\n },\n {\n property: \"og:url\",\n content: `${config.public.frontendUrl}${route.fullPath}`,\n },\n {\n property: \"og:locale\",\n content: i18nHead.value.htmlAttrs.lang,\n },\n {\n property: \"og:site_name\",\n content: config.public.appName as string,\n },\n {\n property: \"og:type\",\n content: \"website\",\n },\n {\n name: \"twitter:card\",\n content: \"summary_large_image\",\n },\n {\n name: \"twitter:title\",\n content: title.value,\n },\n {\n name: \"twitter:description\",\n content: description,\n },\n {\n name: \"twitter:image\",\n content: `/media/common/${locale.value}/og.webp`,\n },\n {\n name: \"robots\",\n // Only if we are in production\n content:\n config.public.vercelEnv == \"production\"\n ? \"index, follow\"\n : \"noindex, nofollow\",\n },\n ] as Meta[];\n});\n\nconst links = computed(() => [\n ...(i18nHead.value.link || []),\n { rel: \"icon\", type: \"image/x-icon\", href: \"/favicon.ico\" },\n]);\n\u003C/script>\n\n\u003Ctemplate>\n \u003CHtml :lang=\"i18nHead.htmlAttrs.lang\" :dir=\"i18nHead.htmlAttrs.dir\">\n \u003CHead>\n \u003CTitle>{{ title }}\u003C/Title>\n \u003Ctemplate v-for=\"link in links\" :key=\"link.id\">\n \u003CLink\n :id=\"link.id\"\n :rel=\"link.rel\"\n :href=\"link.href\"\n :hreflang=\"link.hreflang\"\n />\n \u003C/template>\n \u003Ctemplate v-for=\"meta in metaTags\" :key=\"meta.id\">\n \u003CMeta\n :property=\"meta.property\"\n :content=\"meta.content\"\n :name=\"meta.name\"\n />\n \u003C/template>\n \u003C/Head>\n \u003CBody>\n \u003CAppHeader />\n \u003Cslot />\n \u003CAppFooter />\n \u003C/Body>\n \u003C/Html>\n\u003C/template>\n\n\u003Cstyle>\u003C/style>\n```\n\n4. Some page\n```vue\ndefinePageMeta({\n layout: \"default\",\n title: \"essay.meta.title\",\n description: \"essay.meta.description\",\n});\n```\n\n5. Example of translation file:\n```\nexport default {\n appHeader: {\n tools: \"Herramientas\",\n summary: {\n title: \"Resumidor\",\n description: \"Resume textos de forma automática.\",\n },\n....\n```\n\n\n\n### Describe the bug\n\nWhen using the current Nuxt i18n setup (translations inside i18n/locales/es.ts, i18n/locales/en.ts, etc.), translation keys appear in the \u003Chead> instead of resolved translations.\n\nFor example, Google is indexing essay.meta.title instead of the translated string because the SSR HTML is rendered before locale messages are available. The client later fetches /_i18n/es/messages.json, but if that request fails or is delayed, the \u003Ctitle> and \u003Cmeta> remain as raw keys. This is problematic for SEO since crawlers usually index the raw SSR HTML.\n\nWhen inspect with search console:\n\u003Cimg width=\"399\" height=\"76\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/9b9fcc11-0244-4eab-a624-1e60ac29d6e3\" />\n\u003Cimg width=\"400\" height=\"223\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3f70c9a6-ec7e-4a20-9ec1-16dc62958297\" />\nIn google SERP\n\u003Cimg width=\"705\" height=\"151\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ea3e3b89-9bcf-421d-96cc-5987aff8a64c\" />\n\n### Additional context\n\n#### Documentation issues\n\nIn older versions there was a lazy: true/false option. This no longer exists, but the migration path is unclear.\n\nIt’s not documented whether .ts files (with export default {}) behave the same as .json for SSR vs client-only loading.\n\nThe docs show how to use file/files, but don’t explain how to guarantee SSR has messages ready for SEO-critical content like \u003Chead>.\n\nRight now it’s unclear if the messages are truly lazy-loaded, or if something else prevents them from being available at SSR.\n\n### Logs\n\n```shell\n\n```",[3225],{"name":3173,"color":3174},3794,"SEO issue with SSR translations and unclear lazy-loading behavior","2025-08-22T04:43:37Z","https://github.com/nuxt-modules/i18n/issues/3794",0.7119594,{"description":3232,"labels":3233,"number":3238,"owner":3179,"repository":3180,"state":3239,"title":3240,"updated_at":3241,"url":3242,"score":3243},"### Environment\n\n- Operating System: Darwin\n- Node Version: v24.5.0\n- Nuxt Version: 4.0.3\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.4\n- Package Manager: bun@1.2.20\n- Builder: -\n- User Config: modules, devtools, app, hooks, components, compatibilityDate, i18n, vite\n- Runtime Modules: @nuxt/eslint@1.8.0, @nuxt/test-utils/module@3.19.2\n- Build Modules: -\n\n(I am using a nuxt layer which configures the i18n module so I suspect that's the reason the module does not show up above)\n\n### Reproduction\n\nUnfortunately did not manage to create a reliable reproduction 😕\n\n### Describe the bug\n\nHello 👋,\n\nsince updating to the new version v10.0.4 I am having a problem with the i18n module. It seems the global `$t` instance is not available as I get the following error message: `ReferenceError: $t is not defined`.\n\nUnfortunately I wasn't able to create a minimal reproduction in stackblitz, so it must be something specific to my project that is causing this. Do you maybe have an idea what might be the issue or what I could check, based on the changes you did in v10.0.4?\n\nI am using the `$t` instance directly in my script setup block in a component and in there the error is thrown:\n```vue\n\u003Cscript setup lang=\"ts\">\n const test = computed(()=> $t('test'))\n\u003C/script>\n\n\u003Ctemplate>\n \u003Cspan>{{ test }}\u003C/span>\n\u003C/template>\n```\n\nIs this an anti-pattern and the `useI18n` composable should be used instead? I was using the global `$t` instance directly since it saved a line of code and worked up to v10.0.3.\n\nI can't share the full project as it is work-related but here are some additional informations about my setup:\n- Nuxt layers: the i18n module is set-up in a \"core\" layer and all other layers and the main app extend from it\n- Multiple translation files: one i18n folder per layer with layer-specific translations\n- I am not using any `i18n.config.ts` files\n\nSorry for the non-existant repro and minimal info but maybe you have an idea what I could try. Thanks. 🙏\n\n### Additional context\n\n### package.json\n```\n{\n \"name\": \"a-project\",\n \"private\": true,\n \"type\": \"module\",\n \"engines\": {\n \"node\": \"22.x\"\n },\n \"scripts\": {\n \"build\": \"nuxt build\",\n \"dev\": \"nuxt dev\",\n \"dev:host\": \"nuxt dev --host\",\n \"start\": \"node .output/server/index.mjs\",\n \"generate\": \"nuxt generate\",\n \"preview\": \"nuxt preview\",\n \"postinstall\": \"nuxt prepare\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest run --coverage\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint . --fix\",\n \"prettier\": \"prettier --write .\",\n \"typecheck\": \"nuxt typecheck\"\n },\n \"dependencies\": {\n \"@iconify-json/lucide\": \"^1.2.62\",\n \"@nuxt/image\": \"^1.11.0\",\n \"@nuxt/ui\": \"^3.3.0\",\n \"@nuxtjs/i18n\": \"10.0.4\",\n \"@samk-dev/nuxt-vcalendar\": \"^1.0.4\",\n \"@tanstack/vue-query\": \"^5.83.1\",\n \"@vueuse/core\": \"^13.6.0\",\n \"dayjs\": \"^1.11.13\",\n \"dayjs-nuxt\": \"^2.1.11\",\n \"nuxt\": \"^4.0.3\",\n \"nuxt-auth-sanctum\": \"^1.1.2\",\n \"nuxt-charts\": \"^0.2.3\",\n \"nuxt-viewport\": \"^2.3.1\",\n \"v-calendar\": \"^3.1.2\",\n \"vue\": \"^3.5.18\",\n \"vue-router\": \"^4.5.1\",\n \"zod\": \"^4.0.17\"\n },\n \"devDependencies\": {\n \"@nuxt/eslint\": \"^1.8.0\",\n \"@nuxt/test-utils\": \"^3.19.2\",\n \"@tanstack/eslint-plugin-query\": \"^5.83.1\",\n \"@types/node\": \"^24.2.1\",\n \"@vue/test-utils\": \"^2.4.6\",\n \"eslint\": \"^9.33.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"happy-dom\": \"^18.0.1\",\n \"prettier\": \"^3.6.2\",\n \"prettier-plugin-organize-imports\": \"^4.2.0\",\n \"prettier-plugin-tailwindcss\": \"^0.6.14\",\n \"typescript\": \"^5.9.2\",\n \"vitest\": \"^3.2.4\",\n \"vue-tsc\": \"^3.0.5\"\n },\n \"patchedDependencies\": {\n \"@samk-dev/nuxt-vcalendar@1.0.4\": \"patches/@samk-dev%2Fnuxt-vcalendar@1.0.4.patch\"\n }\n}\n```\n\n### nuxt.config.ts\n```ts\nexport default defineNuxtConfig({\n // ...,\n i18n: {\n locales: [\n { code: 'de', file: 'de.app.json' },\n { code: 'en', file: 'en.app.json' },\n ],\n defaultLocale: 'de',\n strategy: 'no_prefix',\n experimental: {\n typedOptionsAndMessages: 'default',\n },\n },\n})\n```\n\n### Logs\n\n```shell\n\n```",[3234,3235],{"name":3176,"color":3177},{"name":3236,"color":3237},"possible regression","B78041",3775,"closed","\"$t is not defined\" after updating to v10.0.4","2025-08-12T14:18:23Z","https://github.com/nuxt-modules/i18n/issues/3775",0.66515696,{"description":3245,"labels":3246,"number":3251,"owner":3179,"repository":3180,"state":3239,"title":3252,"updated_at":3253,"url":3254,"score":3255},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v22.14.0`\n- Nuxt Version: `4.0.1`\n- CLI Version: `3.26.4`\n- Nitro Version: `2.12.4`\n- Package Manager: `pnpm@10.12.4`\n- Builder: `-`\n- User Config: `compatibilityDate`, `devtools`, `modules`, `i18n`\n- Runtime Modules: `@nuxt/scripts@0.11.10`, `@nuxt/test-utils@3.19.2`, `@nuxtjs/i18n@10.0.2`\n- Build Modules: `-`\n\n\n### Reproduction\n\n修改多语言热更新报错,\n\n\u003Cimg width=\"3318\" height=\"334\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ba25f21a-3216-4066-9e49-269efad06425\" />\n\n\u003Cimg width=\"1436\" height=\"474\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/378d9d5d-c5ae-48e5-a3b5-da94d168e206\" />\n\n### Describe the bug\n\n修改多语言热更新报错,\n\n\u003Cimg width=\"3318\" height=\"334\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ba25f21a-3216-4066-9e49-269efad06425\" />\n\n\u003Cimg width=\"1436\" height=\"474\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/378d9d5d-c5ae-48e5-a3b5-da94d168e206\" />\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3247,3250],{"name":3248,"color":3249},"upstream","fbca04",{"name":3176,"color":3177},3753,"在 nuxt4.0.2 里使用 \"@nuxtjs/i18n\": \"^10.0.2\" 热更新报错","2025-07-24T09:13:52Z","https://github.com/nuxt-modules/i18n/issues/3753",0.67723894,{"description":3257,"labels":3258,"number":3260,"owner":3179,"repository":3180,"state":3239,"title":3261,"updated_at":3262,"url":3263,"score":3264},"### Environment\n\nReproduction env:\n- Operating System: Linux\n- Node Version: v20.19.1\n- Nuxt Version: 3.17.5\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.12\n- Package Manager: pnpm@8.15.6\n- Builder: -\n- User Config: modules, future, compatibilityDate, devtools, i18n\n- Runtime Modules: @nuxtjs/i18n@10.0.0-rc.1\n- Build Modules: -\n\nLocal dev env:\n- Operating System: Linux\n- Node Version: v22.16.0\n- Nuxt Version: 3.17.5\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.13\n- Package Manager: pnpm@10.12.4\n- Builder: -\n- User Config: modules, future, compatibilityDate, devtools, experimental, plugins, css, app, nitro, router, routeRules, runtimeConfig, fonts, i18n, icon, image, pwa, robots, security, typescript, vite, webVitals\n- Runtime Modules: nuxt-security@2.2.0, @pinia/nuxt@0.11.1, @nuxtjs/i18n@10.0.0-rc.1, @nuxtjs/robots@5.2.11, @nuxt/content@3.6.1, @nuxt/fonts@0.11.4, @nuxt/icon@1.15.0, @nuxt/image@1.10.0, @nuxtjs/color-mode@3.5.2, @vueuse/nuxt@13.4.0, @vueuse/motion/nuxt@3.0.3, @vite-pwa/nuxt@1.0.4, @nuxtjs/web-vitals@0.2.7, @nuxt/eslint@1.4.1, @nuxt/test-utils/module@3.19.1\n- Build Modules: -\n\n### Reproduction\n\nhttps://stackblitz.com/edit/github-jjpn8kps\n\nRun `pnpm typecheck` after installing dependencies (`pnpm install`), and see the error.\n\n### Describe the bug\n\nThe next i18n implementation breaks types augmentation, for example, defining PageMeta additional props leads to TS error:\n// auth.d.ts\n```ts\ntype AccountRoleType = 'admin' | 'user'\n\ndeclare module '#app' {\n interface PageMeta {\n roles?: AccountRoleType[]\n }\n}\n\nexport {}\n```\nand in middleware/auth.ts\n```ts\nexport default defineNuxtRouteMiddleware(async (to) => {\n if (!to.meta.roles?.includes('admin')) {\n throw createError({\n statusCode: 404,\n message: 'Not found',\n fatal: true,\n })\n }\n})\n```\n\nleads to this TS error:\n```\nerror TS2339: Property 'includes' does not exist on type '{}'.\n```\n\n### Additional context\n\nIf I remember correctly, nuxt/i18n module v10.0.0-beta.1 was working correctly. A couple of days ago I tried beta.10 and today - rc.1, and such TS error start throwing.\n\n### Logs\n\n```shell\npnpm typecheck\n\n> nuxt-app@ typecheck /home/projects/github-jjpn8kps\n> nuxi typecheck\n\n\n[2:28:51 PM] ERROR (node:19) ExperimentalWarning: WASI is an experimental feature and might change at any time\n(Use node --trace-warnings ... to show where the warning was created)\n\n\n WARN Slow module @nuxt/devtools took 23273.91ms to setup. 2:29:30 PM\n\nℹ Running with compatibility version 4 nuxt 2:29:41 PM\napp/middleware/auth.ts:2:23 - error TS2339: Property 'includes' does not exist on type '{}'.\n\n2 if (!to.meta.roles?.includes('admin')) {\n ~~~~~~~~\n\n\nFound 1 error in app/middleware/auth.ts:2\n\n\n ERROR Process exited with non-zero status (2) 2:30:30 PM\n\n at new x (node_modules/.pnpm/tinyexec@1.0.1/node_modules/tinyexec/dist/main.js:440:5)\n at R._waitForOutput (node_modules/.pnpm/tinyexec@1.0.1/node_modules/tinyexec/dist/main.js:548:13)\n at async Object.run (node_modules/.pnpm/@nuxt+cli@3.25.1/node_modules/@nuxt/cli/dist/chunks/typecheck.mjs:60:7)\n at async runCommand (node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs:337:16)\n at async runCommand (node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs:328:11)\n at async Module.runMain (node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs:466:7) \n\n\n\n ERROR Process exited with non-zero status (2) 2:30:30 PM\n\n ELIFECYCLE Command failed with exit code 1.\n```",[3259],{"name":3173,"color":3174},3713,"[v10.0.0-rc.1] Breaks PageMeta augmentation","2025-06-30T19:00:03Z","https://github.com/nuxt-modules/i18n/issues/3713",0.6814296,{"description":3266,"labels":3267,"number":3274,"owner":3179,"repository":3180,"state":3239,"title":3275,"updated_at":3276,"url":3277,"score":3278},"### Environment\n\n------------------------------\n- Operating System: Darwin\n- Node Version: v20.18.0\n- Nuxt Version: 3.16.0\n- CLI Version: 3.22.5\n- Nitro Version: 2.11.6\n- Package Manager: pnpm@9.12.2\n- Builder: -\n- User Config: modules, devtools, app, css, runtimeConfig, future, compatibilityDate, vite, postcss, eslint, i18n, image, prismic\n- Runtime Modules: @nuxt/eslint@1.2.0, @nuxtjs/prismic@4.1.0, @nuxt/fonts@0.11.0, @nuxtjs/i18n@9.3.1, @nuxt/image@1.9.0, @vueuse/nuxt@13.0.0\n- Build Modules: -\n------------------------------\n\n### Reproduction\n\nhttps://stackblitz.com/edit/bobbiegoede-nuxt-i18n-starter-w8n5eqto?file=pages%2Findex.vue\n\n### Describe the bug\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3268,3271],{"name":3269,"color":3270},"🍰 p2-nice-to-have","0e8a16",{"name":3272,"color":3273},"scope: components","B327C3",3402,"Double nested `NuxtLinkLocale`","2025-05-30T19:25:27Z","https://github.com/nuxt-modules/i18n/issues/3402",0.6839174,["Reactive",3280],{},["Set"],["ShallowReactive",3283],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fGsiX-LmdwoPsI7OQcN3u5_iAnoThNuPh1Zi-2OhtQaE":-1},"/nuxt-modules/i18n/3729"]