所以我最近将一个网站从 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 或其他方法?