\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```",[3207],{"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.6982287,{"description":3214,"labels":3215,"number":3217,"owner":3176,"repository":3177,"state":3178,"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.7100955,{"description":3223,"labels":3224,"number":3226,"owner":3176,"repository":3177,"state":3178,"title":3227,"updated_at":3228,"url":3229,"score":3230},"### 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```",[3225],{"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.7104344,{"description":3232,"labels":3233,"number":3236,"owner":3176,"repository":3177,"state":3237,"title":3238,"updated_at":3239,"url":3240,"score":3241},"### Environment\n\nStatic site generation, to build with Nuxt 3\n\n\n### Reproduction\n\nin nuxt.config.ts, i18n: {langDir: 'lang'}\n\nit creates HTMLs, when using SSG, that contains local paths in its configLocales objects\n\n### Describe the bug\n\nHTMLs, when generated using SSG, contains local paths in its configLocales objects, for example, \"users/user1/projectName/lang/en.json\"\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3234,3235],{"name":3173,"color":3174},{"name":3188,"color":3189},3789,"closed","Static site generation creates HTMLs that contain configLocales with local paths","2025-08-22T00:04:55Z","https://github.com/nuxt-modules/i18n/issues/3789",0.6574694,{"description":3243,"labels":3244,"number":3246,"owner":3176,"repository":3177,"state":3237,"title":3247,"updated_at":3248,"url":3249,"score":3250},"### 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```",[3245],{"name":3173,"color":3174},3742,"Absolute file paths included in production bundle","2025-07-21T08:55:25Z","https://github.com/nuxt-modules/i18n/issues/3742",0.6703449,{"description":3252,"labels":3253,"number":3259,"owner":3176,"repository":3177,"state":3237,"title":3260,"updated_at":3261,"url":3262,"score":3263},"### 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```",[3254,3257,3258],{"name":3255,"color":3256},"need more info","e295d6",{"name":3173,"color":3174},{"name":3188,"color":3189},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.6829642,{"description":3265,"labels":3266,"number":3269,"owner":3176,"repository":3177,"state":3237,"title":3270,"updated_at":3271,"url":3272,"score":3273},"### Environment\n\n- Operating System: Darwin\n- Node Version: v22.17.1\n- Nuxt Version: 4.1.0\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.5\n- Package Manager: pnpm@10.13.1\n- Builder: -\n- User Config: compatibilityDate, devtools, modules, i18n, ssr\n- Runtime Modules: @nuxtjs/i18n@10.0.6\n- Build Modules: -\n\n### Reproduction\n\n`\u003Cremoved link to zip file>`\n\n### Describe the bug\n\n执行 `pnpm generate` \n[intlify] Not found 'welcome' key in 'en' locale messages. \n\n\u003Cimg width=\"835\" height=\"546\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/caf8e9e8-ce41-4789-a6e4-478d2a55c24d\" />\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell\n\n```",[3267,3268],{"name":3173,"color":3174},{"name":3188,"color":3189},3807,"静态生成时,.output下 locales语言文件是空的","2025-09-05T01:23:11Z","https://github.com/nuxt-modules/i18n/issues/3807",0.6883327,["Reactive",3275],{},["Set"],["ShallowReactive",3278],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fgquTQymW-u5xVQalU2_tLzc6wPvHeRlWqhMYzTjfWjY":-1},"/nuxt-modules/i18n/2819"]