使用 Cookie 进行语言切换,但仅在手动页面刷新后可见


Language switch using cookie but only visible after manual page refresh

所以我使用语言检测/cookie方法来设置用户语言:

  1. 用户到达页面
  2. 检查用户是否设置了 Cookie user_lang
  3. 如果设置,请使用该语言
  4. 如果未设置,请使用语言检测功能并设置cookie

语言切换:

  1. 用户转到/change/language/[languageshortcode]

  2. 验证语言简码是否有效,删除/更改以前的cookie并使用新语言进行更新

  3. 加载页面

问题是我可以看到 cookie user_lang确实已从例如 EN 更改为 FR,但实际的语言切换仅在我手动刷新页面时才会发生。

在我的本地设置上,更改是立即的,在我的远程服务器上,我必须刷新。

认为我已经改变了我认为导致这种情况:

  • 禁用了所有形式的页面缓存
  • 使用 htaccess 禁用清漆缓存服务器端
  • 实际上删除cookie并设置一个新的cookie,而不仅仅是更改cookie

有什么建议吗?

由于没有发布代码,我将只提供一些想法。 一种解决方案是添加JS页面重新加载,但前提是某些条件为真。 但是,更好的解决方案是确保如果用户对语言进行了更改,请不要读取cookie来检测该页面加载的语言(因为它在脚本完成之前不会完全设置(。 如果用户进行了更改,请使用用于设置 cookie 的值并忽略 cookie,如果未进行任何更改,只需检测 cookie。 这有意义吗?