我正在使用Nextjs并尝试制作多语言应用程序。多国语言工作正常,但是当我尝试使用Cookie(例如“ en”)获取语言代码时,出现错误。
以这种方式工作;
initialLang = 'en';
setDefaultTranslations({en, fr});
setLanguage('en');
但是当我尝试设置带有cookie的initialLang无效时。
这种方式不起作用
initialLang = Cookies.get('lang');
setDefaultTranslations({en, fr});
setLanguage(initialLang);
答案 0 :(得分:0)
可能您没有在componentDidMount挂钩中使用它们:
componentDidMount() {
// get cookie
// set state to update the language
}
答案 1 :(得分:0)
要解决您的问题,您需要退后一步并理解问题。关于cookie的主要问题是您需要拆分代码以读取和写入服务器和客户端的cookie。 js-cookie仅适用于客户端。基本上,它可以在客户端上使用,因为它可以与document.cookie
一起使用。当它在next.js SSR中调用document
时,后端代码无法读取document
,因为它不存在。如果您想在SSR中读取cookie,则需要从expressjs request
捕获cookie并进入react状态。我建议您使用https://github.com/andreizanik/cookies-next,它已经解决了这个问题(实现)