NextJS:覆盖 html lang

问题描述 投票:0回答:0

所以我最近将一个网站从 React 迁移到了 NextJs,该网站在瑞典和挪威很活跃,并且有 URL; domain.com/se 和 domain.com/no

当我们迁移网站时,我们认为使用

se
no
作为语言环境是个好主意。

(next-18next.config.js)

module.exports = {
  // https://www.i18next.com/overview/configuration-options#logging
  debug: false, //process.env.NODE_ENV === 'development',
  i18n: {
    defaultLocale: 'default',
    locales: ['default', 'se', 'no'],
  },
  localePath: path.resolve('./public/locales'),
  localeDetection: false,
  reloadOnPrerender: process.env.NODE_ENV === 'development',
};

直到现在发现Next自动将页面上的

lang
标签上的
<html>
标签设置为
se
no
时效果很好,但是我们想要
sv
nb

我们还没有找到覆盖 Next 的方法。

我们试过像这样在

_document.tsx
中设置lang标签:
<Html lang="sv">...</Html>
但它仅适用于第一个渲染(在服务器上),然后 Next 覆盖此值并将其设置为
se
。这意味着在服务器返回的 HTML 文件中我们得到了正确的值
<html lang="sv">...</html>
,但随后在客户端 Next 将其设置为
se
.

你知道有什么方法可以阻止 Next 覆盖我们的价值,或者我们是否需要将语言环境更改为

sv
nb
并使用 domain routing 或其他方法?

next.js localization lang
© www.soinside.com 2019 - 2024. All rights reserved.