nuxt-modules / i18n

I18n module for Nuxt
https://i18n.nuxtjs.org
MIT License
1.71k stars 478 forks source link

Cached version (swr, ssg...) is saved with one locale only #2872

Closed xelab closed 5 months ago

xelab commented 6 months ago

Environment

Reproduction

Set this config in you nuxt.config.ts to reproduce the mistake :

i18n: {
        compilation: {
            strictMessage: false
        },
        locales: [
            {
                code: "es-ES",
                file: "es-ES.ts",
                domain: "mydomain.es",
                iso: "es-ES"
            },
            {
                code: "fr-FR",
                file: "fr-FR.ts",
                domain: "mydomain.fr",
                iso: "fr-FR"
            }
        ],
        detectBrowserLanguage: false,
        differentDomains: true,
        defaultLocale: "fr-FR",
        lazy: true,
        langDir: "./locales",
        vueI18n: "./i18n.config.ts" // if you are using custom path, default
    },
routeRules: {
        "/": { swr: 3600 }

Describe the bug

Hello, I have a page (my index page) which I want to cache with swr settings (swr: 3600 in routeRoules, see my config). But here is the problem : we have different domains for each language on our website and it appears the cached page is only saved with the default locale (fr-FR), not all the locales we set in our nuxt.config! So when we load the page with a different locale, the i18n stuff is active only on the client side (we can see the other language for a second before the i18n do translations) and the v-if blocks are not properly working (for instance, if we have a "v-if="i18n.locale === 'fr'" and display the page from the spanish domain, that's doesn't work, we see the wrong block).

Additional context

No response

Logs

No response

github-actions[bot] commented 6 months ago

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)](https://stackblitz.com/fork/github/BobbieGoede/nuxt-i18n-starter/tree/v8) 👉 [Reproduction starter (edge)](https://stackblitz.com/fork/github/BobbieGoede/nuxt-i18n-starter/tree/edge) A public GitHub repository is also perfect. 👌 Please ensure that the reproduction is as **minimal** as possible. See more details [in our guide](https://nuxt.com/docs/community/reporting-bugs/#create-a-minimal-reproduction). You might also find these other articles interesting and/or helpful: - [The Importance of Reproductions](https://antfu.me/posts/why-reproductions-are-required) - [How to Generate a Minimal, Complete, and Verifiable Example](https://stackoverflow.com/help/mcve)
kazupon commented 5 months ago

Closing due to inactivity. Please open a new issue with a reference to this one if you can follow up with more information.

Thanks!