语言切换使用cookie但仅在手动页面刷新后可见

时间:2012-05-17 17:31:52

标签: php codeigniter cookies codeigniter-2 multilingual

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

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

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

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

    3. 加载页面

    4. 问题是我可以看到user_lang cookie确实已经从例如EN到FR但只有在我手动刷新页面时才会发生实际的语言切换。

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

      认为我已经改变了我认为造成了这个:

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

      有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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