Default locale configured in `i18n.config` not used as project `defaultLocale`
Environment
- Operating System: Darwin
- Node Version: v20.11.0
- Nuxt Version: 3.11.2
- CLI Version: 3.11.1
- Nitro Version: 2.9.6
- Package Manager: [email protected]
- Builder: -
- User Config: app, ssr, devtools, modules, tailwindcss, colorMode, components, primevue, i18n, runtimeConfig, vite
- Runtime Modules: @nuxtjs/[email protected], @nuxtjs/[email protected], @nuxtjs/[email protected], @nuxtjs/[email protected], @nuxt/[email protected], @vueuse/[email protected], @pinia/[email protected], @pinia-plugin-persistedstate/[email protected], [email protected], @nuxtjs/[email protected]
- Build Modules: -
Reproduction
i18n.config.ts configuration
nuxt.config.ts configuration
Describe the bug
After updating to version 8.3.0, when the page is reloaded, plugin always sets the default locale, cookie i18n_redirected are also overwritten
Additional context
With version 8.1.1 everything works correctly
Logs
No response
Would you be able to provide a reproduction? 🙏
More info
Why do I need to provide a reproduction?
Reproductions make it possible for us to triage and fix issues quickly with a relatively small team. It helps us discover the source of the problem, and also can reveal assumptions you or we might be making.
What will happen?
If you've provided a reproduction, we'll remove the label and try to reproduce the issue. If we can, we'll mark it as a bug and prioritise it based on its severity and how many people we think it might affect.
If needs reproduction labeled issues don't receive any substantial activity (e.g., new comments featuring a reproduction link), we'll close them. That's not because we don't care! At any point, feel free to comment with a reproduction and we'll reopen it.
How can I create a reproduction?
We have a couple of templates for starting with a minimal reproduction:
👉 Reproduction starter (v8 and higher) 👉 Reproduction starter (edge)
A public GitHub repository is also perfect. 👌
Please ensure that the reproduction is as minimal as possible. See more details in our guide.
You might also find these other articles interesting and/or helpful:
Hi @BobbieGoede. I have made a minimal reproduction at https://github.com/MikeBellika/nuxti18nrepro/. Let me know if there's more I can do to help. Note that the bug doesn't seem to reproduce on stackblitz. I had to run it on my machine to get it to fail.
PS. As @AliakseiMatsuk said 3.1.1 seems to work and 3.2.0 also works
Started a new project still not working
I can confirm that it is not working on 8.3.0 and on 8.1.1 it works just fine, this issue took me like 2 hours to solve before I found this.
I think I've found a fix. Setting the locales option in nuxt.config seems to be required. I've made a branch on my reproduction repo, where you can see the fix: https://github.com/MikeBellika/nuxti18nrepro/blob/3d4615be16322a356e8d6f86fae5e1e4d8682338/nuxt.config.ts#L8
export default defineNuxtConfig({
devtools: { enabled: true },
modules: ["@nuxtjs/i18n"],
i18n: {
vueI18n: "./i18n.config.ts",
strategy: "no_prefix",
locales: ["en", "fr"], // <--- Important
},
});
I think it's probably caused by this line: https://github.com/nuxt-modules/i18n/blob/622369645a951f7dc924bfad0d7eb57e145844f3/src/runtime/internal.ts#L132
There's mention in the docs about setting the locales option, but it's "hidden" under link localizing, so I missed it. There's also no mention in the changelog that I can see.
@BobbieGoede is this a bug or a docs issue? And let me know if there's something I can do :)
@MikeBellika Thanks you so much, I take hours to try to fix this. It's not clear in the docs that locales property should be only lie on nuxt.config and not i18n.config. I configured i18n module only in i18n.config and don't put anything in nuxt.config... It could help to improve docs with a dedicated page for no_prefix strategy.