#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, поэтому не могу вам в этом помочь.