NextJS не может отключить перенаправление в домене

#next.js #internationalization #next-i18next

Вопрос:

У меня есть следующее next-i18next.config.js файл

  module.exports = {
  i18n: {
    locales: ["en", "de-DE", "fr"],
    defaultLocale: "en",
    localeDetection: false,
    domains: [
      {
        domain: "my-domain.com",
        defaultLocale: "en",
      },
      {
        domain: "my-domain.fr",
        defaultLocale: "fr",
        http: true,
      },
      {
        domain: "my-domain.de",
        defaultLocale: "de-DE",
        http: true,
      },
    ],
  },
};
 

Я установил localeDetection значение false , но когда я меняю язык с en на fr, мое приложение перенаправляется на http://my-domain.fr

Мой next.config.js заключается в следующем

 const { i18n } = require("./next-i18next.config");

module.exports = {
  i18n,
};
 

Я что-то упускаю?

Комментарии:

1. Как работает ваш next.config.js файл выглядит так?

2. я обновил свой вопрос. Спасибо вам за это

3. Что вы подразумеваете под тем, что меняете свой язык? Вы меняете язык в своем состоянии приложения?

Ответ №1:

Я думаю, что у вас нет правильного понимания того, что именно делает обнаружение локали.

Определение локали автоматически перенаправит пользователя на правильный веб-сайт/страницу локали в зависимости от его языковых предпочтений. Что вас, похоже, беспокоит, так это то, что ваша локаль настроена на определенный домен, поэтому ваш следующий маршрутизатор всегда перенаправит вас на домен, связанный с вашей локалью. Так что это ожидаемое поведение.

Если для определения локали установлено значение false, вы просто не перенаправляете пользователя изначально на его предпочтительный язык.

Комментарии:

1. В этом есть смысл, Марио. Так что это для начальной загрузки страницы. После этого, если я перенаправлю пользователя и изменю локальный, он также изменит домен. Правильно?

2. Должен ли i18n.changeLanguage(‘fr’) работать на NextJS? Потому что ничего не меняется. Я могу изменить язык только через маршрутизатор.замените

3. Если вы измените языковой стандарт через router.push или по ссылке, он должен изменить домен. Я не знаю, как должна работать библиотека i18next, поэтому не могу вам в этом помочь.