【问题标题】:NextJS i18n - Locale getting undefinedNextJS i18n - 语言环境变得未定义
【发布时间】:2022-10-03 07:37:26
【问题描述】:

我正在尝试将我的网站迁移到 NextJS,但在进行一些国际化时遇到了麻烦。

我正在关注Documentation 本身的教程,但我在检查器中的语言环境即将出现不明确的.

我做错了什么? 我正在使用最新版本的 nextJS。

我试图从 console.log 获取一些信息。

console.log(\"Locale: \" + locale);
console.log(router);

它打印:

next.config.js

module.exports = {
    i18n: {
        locales: [\'en-US\', \'pt-BR\'],
        defaultLocale: \'pt-BR\',
    },
}

/pages/index.js

import Head from \'next/head\'
import { useRouter } from \'next/router\'

import pt from \'../locale/index/pt\'
import en from \'../locale/index/en\'

export default function Home() {

    const router = useRouter();
    const { locale } = router;
    const t = locale === \'pt\' ? pt : en;

    return (
        <div className=\"container\">
            <Head>
                <title>{t.title}</title>
            </Head>
        </div>
    )
}

/locale/pt.js

export default {
    title: \"Teste Portugues.\"
}

/locale/en.js

export default {
    title: \"Test English\"
}

一些随机信息: NextJS 版本:12.0.4 铬版本:96.0.4664.55 节点版本:17.0.1

  • locale === \'pt\' 不应该是 locale === \'pt-BR\' 吗?
  • 你也可以const locale = router.locale
  • 这是您的next.config.js 中唯一的东西吗?更改配置文件后是否重新启动了开发服务器?
  • @thegman1001 我也试过 pt-BR。什么都没发生
  • @illiachill 生病尝试

标签: javascript next.js


【解决方案1】:

这似乎是旧版本 Next.js 中的错误。昨天,我遇到了类似的问题,在将 Next、React 和 React-dom 升级到最新版本后,它就像魅力一样!

【讨论】:

  • 我用的是最新版本!我已经安装了三四天
  • 我的坏我没有注意到这一点。
  • 是否尝试利用getStaticPaths 并查看它是否在服务器端也未定义?因为配置的语言环境是在语言环境下函数的上下文参数中提供的。
【解决方案2】:

更新:我重新启动了我的计算机,在此之后,3 天后,当我使用 console.log({locale}) 时,它会正常获取我的 pt-BR 语言环境。

(我什么也没做)

所以,我会关闭线程。不管怎么说,还是要谢谢你!

【讨论】:

    【解决方案3】:

    只需重新启动服务器。如果 next.config.js 文件被修改,您必须重新启动服务器才能使更改生效

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 2021-01-26
      相关资源
      最近更新 更多