仅用户同意cookie时启用react-i18next cookie功能的相关问题
该现象属于正常情况。
你修改的detection.order配置仅控制语言检测时的读取来源优先级,而i18next-browser-languagedetector插件默认开启了自动缓存逻辑:默认的detection.caches配置值为['cookie', 'localStorage'],会自动将当前识别到的语言写入配置的缓存介质中。你仅移除了读取逻辑中的cookie项,没有修改缓存配置,因此插件仍会自动生成cookie存储语言数据。
如果需要初始阶段完全不使用cookie,调整你的detection配置即可:
detection: { order: ['querystring'], lookupQuerystring: 'lng', caches: [] // 初始状态不做任何缓存,若允许使用localStorage可改为['localStorage'] }
不需要再次调用init方法,不会触发重置用户已选语言的副作用,直接动态修改语言检测器的运行时配置即可,参考实现代码:
// 用户同意cookie后的回调函数 const onCookieConsentApproved = () => { // 获取当前i18n实例的语言检测器 const languageDetector = i18n.services.languageDetector; // 将cookie加入语言检测的优先级列表,可根据需要调整它在数组中的位置 languageDetector.options.order.push('cookie'); // 将cookie加入缓存列表,后续语言变更会自动同步写入cookie languageDetector.options.caches.push('cookie'); // 可选操作:将当前用户正在使用的语言立刻写入cookie languageDetector.cacheUserLanguage(i18n.language); }
修改配置后会即时生效,不会影响当前已经加载的语言资源和用户已选择的语言状态。
内容的提问来源于stack exchange,提问作者Javier Guzmán
相关产品推荐
相关产品推荐

