如何保持设置的语言
来源:11-11 【redux-persist】登录持久化

幕布斯8089534
2021-12-04
老师,我想尝试实现刷新页面或者重新打开页面能记住之前设置的语言
我在 store.ts 的 persistConfig 的 whitelist 里面加入了 language:
把语言选成 英文 后刷新页面,看到 localStorage 里面记录的是 en,button 的文字是 English,但是页面的文字是中文:
我想了一下,感觉是 i8n 默认配置是 ‘zh’,i18n.changeLanguage(action.payload); 放在一个自定义的中间件里面,只有在 dispatch action 时才有可能被调用,但是 changeLanguage 的 action 只有点击 Menu.item 才会被触发。导致刷新页面时虽然 language 被记住但是没有 i18n 的语言配置还留在 'zh‘。
我看 doc 上写如果有 language detector,语言的配置可以省略,所以这个功能需要借由其他的插件实现吗?
写回答
2回答
-
王鹳厶
2022-11-30
// 使用 @reduxjs/toolkit 语法糖, 转换过程中页面会闪一下, 因为走生命周期 useEffect(() => { dispatch(languageSlice.actions.changeLanguage(language)) }, [])
00 -
阿莱克斯刘
2021-12-07
启用language detector需要安装相关的插件,可以试试
i18next-browser-languagedetector
https://github.com/i18next/i18next-browser-languageDetector
但我不是很确定你的问题是不是language detector所引发的,我感觉更像是redux的问题,似乎是redux没有处理i8next的副作用所造成的,这个部分可能需要进一步研究一下。
00
相似问题