微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Next.js 与 i18n 错误:警告:文本内容不匹配服务器:“”客户端:“fr”

如何解决Next.js 与 i18n 错误:警告:文本内容不匹配服务器:“”客户端:“fr”

我们在加载时遇到此错误

应用程序首先在 URL http://localhost:3000/ 加载,然后当我们切换到 ex: french 我们得到 http://localhost:3000/fr 但是当我们再次将语言切换到 ex: deutsch 我们得到 http://localhost:3000/de/fr 等等。新选择的语言路径插入在第一个选择的语言和根 URL 之间。

此外,如果我们直接转到 ex: http://localhost:3000/fr,我们会以正确的语言登陆正确的页面

//i18n.js
const NextI18Next = require('next-i18next').default;

module.exports = new NextI18Next({
  defaultLanguage: 'en',otherLanguages: ['fr','de','nl','it','pt','es'],localeSubpaths: {
    en: 'en',fr: 'fr',de: 'de',nl: 'nl',it: 'it',es: 'es',pt: 'pt',},});
//next.config.js

const isProd = process.env.NODE_ENV === 'production';

module.exports = {
  exportPathMap: async function (defaultPathMap,{ dev,dir,outDir,distDir,buildId }) {
    return {
      '/': { page: '/' },};
  },env: {
    GLOBAL_URL: isProd ? 'https://siteurl' : 'http://localhost:3000',assetPrefix: isProd ? 'https://siteurl' : '',};
// languageDropdown.js
class LanguageDropdown extends Component {
  render() {
    const changeLanguage = (lng) => {
      i18n.changeLanguage(lng);
      console.log(lng);
    };
    return (
      <MenuNetwork>
        <ListMenu>
          <ListItemmenu>
            <CurrentLanguage>{i18n.language}</CurrentLanguage>
            <HoverChevron>
              <CustomizeChevronDown size="25" />
            </HoverChevron>
            <SubListMenu>
              <SubListMenuItem onClick={() => changeLanguage('en')}>
                <button>English</button>
              </SubListMenuItem>
              <SubListMenuItem onClick={() => changeLanguage('fr')}>
                <button>Français</button>
              </SubListMenuItem>
              <SubListMenuItem onClick={() => changeLanguage('de')}>
                <button>Deutsch</button>
              </SubListMenuItem>
              <SubListMenuItem onClick={() => changeLanguage('nl')}>
                <button>Nederlands</button>
              </SubListMenuItem>
              <SubListMenuItem onClick={() => changeLanguage('it')}>
                <button>Italiano</button>
              </SubListMenuItem>
              <SubListMenuItem onClick={() => changeLanguage('pt')}>
                <button>Português</button>
              </SubListMenuItem>
              <SubListMenuItem onClick={() => changeLanguage('es')}>
                <button>Español</button>
              </SubListMenuItem>
            </SubListMenu>
          </ListItemmenu>
        </ListMenu>
      </MenuNetwork>
    );
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?