所以我使用语言检测/cookie方法来设置用户语言:
- 用户到达页面
- 检查用户是否设置了 Cookie user_lang
- 如果设置,请使用该语言
- 如果未设置,请使用语言检测功能并设置cookie
语言切换:
-
用户转到/change/language/[languageshortcode]
-
验证语言简码是否有效,删除/更改以前的cookie并使用新语言进行更新
-
加载页面
问题是我可以看到 cookie user_lang确实已从例如 EN 更改为 FR,但实际的语言切换仅在我手动刷新页面时才会发生。
在我的本地设置上,更改是立即的,在我的远程服务器上,我必须刷新。
认为我已经改变了我认为导致这种情况:
- 禁用了所有形式的页面缓存
- 使用 htaccess 禁用清漆缓存服务器端
- 实际上删除cookie并设置一个新的cookie,而不仅仅是更改cookie
有什么建议吗?
由于没有发布代码,我将只提供一些想法。 一种解决方案是添加JS页面重新加载,但前提是某些条件为真。 但是,更好的解决方案是确保如果用户对语言进行了更改,请不要读取cookie来检测该页面加载的语言(因为它在脚本完成之前不会完全设置(。 如果用户进行了更改,请使用用于设置 cookie 的值并忽略 cookie,如果未进行任何更改,只需检测 cookie。 这有意义吗?