在我的多语言 Symfony (2.8) 应用程序中,我有许多使用 ajax 注入到主页中的视图。基于这篇文章,我实现了一个语言环境监听器,所以语言环境是粘性的。
我发现在主页面打开时退出并重新启动浏览器(Safari) - 而当前语言环境不是默认设置 - 下一个当前语言环境request
会丢失,因为现在没有以前的会话。当返回来自 ajax 链接的视图时,语言环境设置为默认值,从而产生混合语言的页面。
作为一种解决方法,我将当前语言环境作为所有 ajax 链接的查询包括在内,并且我劫持了语言环境侦听器request
,即使在上述情况下,它现在也可以在查询中设置语言环境。
它似乎完成了这项工作。但是,缺点是我现在留下了包含查询字符串的丑陋网址,例如www.domain.co.uk/es/moreinfo?_locale=es
.
我一直在尝试实现另一个侦听器,以从 uri 中删除查询。侦听器检测到查询并可以将其从request->query
参数和$_SERVER
全局变量中删除,但是当视图返回浏览器时,我没有尝试使其更改。
我也尝试过使用新路由,这些路由解析并转发或重定向到不同的路由/路径,但浏览器中的 url 仍然保持不变。
有什么想法或建议吗?
我是否从错误的角度来解决这个问题 - 即我应该尝试在客户端而不是服务器端进行操作吗?