3

我正在使用 Nextjs 并尝试制作多语言应用程序。多语言工作正常,但是当我尝试使用像“en”这样的 cookie 获取语言代码时,出现错误。

这种方式工作;

initialLang = 'en';
setDefaultTranslations({en, fr});
setLanguage('en');

但是当我试图用 cookie 设置 initialLang 时不起作用。

这种方式不起作用

initialLang = Cookies.get('lang');
setDefaultTranslations({en, fr});
setLanguage(initialLang);
4

2 回答 2

0

要解决您的问题,您需要退后一步并了解问题。关于 cookie 的主要问题是您需要拆分代码以读取和写入服务器和客户端的 cookie。js-cookie 仅适用于客户端。基本上,它适用于客户端,因为它适用于document.cookie. 当它调用documentnext.js SSR 时,后端代码无法读取,document因为它不存在。如果您想在 SSR 中读取 cookie,您需要从 expressjs 中捕获它request并传递到反应状态。我建议您使用https://github.com/andreizanik/cookies-next已经解决了这个问题(实现)

于 2019-08-18T22:56:01.890 回答
-1

可能,您没有在 componentDidMount 挂钩中使用它们:

componentDidMount() {
  // get cookie
  // set state to update the language
}
于 2019-08-18T22:32:58.207 回答