nuxt-modules / i18n

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

Tags rel="alternate" added for locale not specified in defineI18nRoute #2685

Closed DavidDeSloovere closed 9 months ago

DavidDeSloovere commented 10 months ago

Environment


Reproduction

Describe the bug

My main config has nl-be and fr-be. Some pages, which I get from a headless CMS, might only be available in one language.

I did not specify fr-be in the page with defineI18nRoute. But the fr/fr-be alternate links are added to the HTML.

<link id="i18n-alt-fr" rel="alternate" href="https://spuntini.be/fr-be/tendances-inspiration/broodkeuze-bepaalt-mee-ons-succes" hreflang="fr">
<link id="i18n-alt-fr-be" rel="alternate" href="https://spuntini.be/fr-be/tendances-inspiration/broodkeuze-bepaalt-mee-ons-succes" hreflang="fr-be">

Calling switchLocalePath('fr-be') returns /fr-be/tendances-inspiration/broodkeuze-bepaalt-mee-ons-succes (with the nl-be slug), I would expect null or /fr-be

Passing a null for the slug in fr-be changes the behaviour slightly, in that the tags are moved up a few lines, and switchLocalePath returning nothing.

Additional context

This is test in a /pages/trends/[slug].vue page.

Our config:

import type { ModuleOptions } from "@nuxtjs/i18n";

export const i18nConfig: ModuleOptions = {
  baseUrl: "https://spuntini.be",
  defaultLocale: "nl-be",
  locales: [
    {
      code: "nl-be",
      iso: "nl-be",
      name: "Nederlands",
    },
    {
      code: "fr-be",
      iso: "fr-be",
      name: "Français",
    },
  ],
  vueI18n: "./config/i18n-vue.config.ts",
  strategy: "prefix",

  experimental: {
    localeDetector: "./server/localeDetector.ts",
  },

  // https://i18n.nuxtjs.org/guide/custom-paths#example-3-dynamic-routes
  customRoutes: "config",
  pages: {
    "trends/[slug]": {
      "nl-be": "/trends-inspiratie/[slug]",
      "fr-be": "/tendances-inspiration/[slug]",
    },
  },
};

Pages that are available in both languages work as expected, including setLocale.

I read the docs, not sure if I missed something, but this does not seem right to me.

Logs

No response

github-actions[bot] commented 9 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)
BobbieGoede commented 9 months ago

Closing due to inactivity and lack of (a clear) reproduction, if you're still experiencing this issue please open a new issue with a (minimal) reproduction.