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

Php 使用cookie进行语言切换,但仅在手动页面刷新后可见,php,codeigniter,cookies,codeigniter-2,multilingual,Php,Codeigniter,Cookies,Codeigniter 2,Multilingual,因此,我使用语言检测/cookie方法设置用户语言: 用户到达页面 检查用户是否有cookie用户\语言集 如果设置了,请使用该语言 如果未设置,则使用语言检测功能并设置cookie 语言开关: 用户转到/change/language/[languageshortcode] 验证语言快捷码是否有效,删除/更改以前的cookie并使用新语言更新 加载页 问题是,我可以看到用户_lang cookie确实已从EN更改为FR,但实际的语言切换只有在我手动刷新页面时才会发生 在我的本地设置上,更改是立

因此,我使用语言检测/cookie方法设置用户语言:

  • 用户到达页面
  • 检查用户是否有cookie用户\语言集
  • 如果设置了,请使用该语言
  • 如果未设置,则使用语言检测功能并设置cookie
  • 语言开关:

  • 用户转到/change/language/[languageshortcode]

  • 验证语言快捷码是否有效,删除/更改以前的cookie并使用新语言更新

  • 加载页

  • 问题是,我可以看到用户_lang cookie确实已从EN更改为FR,但实际的语言切换只有在我手动刷新页面时才会发生

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

    我认为我已经改变了,我认为这是造成的:

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

    有什么建议吗?

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

    奇怪的是,它在我的本地机器上工作得非常好。这解决了问题吗?如果不发布一些代码,将允许更多的帮助。