根据 Grails 的国际化文档,i18n 由以下任一方式完成:
Accept-Language
在请求中设置标头;或者- 处理
lang
查询字符串参数
我选择前者,因为它更符合 HTTP,坦率地说,我只是不喜欢将它添加为查询参数。
但是我首先要如何设置Accept-Language
?!?
我希望我的应用程序的语言环境由请求的 TLD 确定。因此,请求http://myapp.example.com
将返回en_US
我的应用程序的版本,因为*.com
传统上与英语/美国相关联。如果http://myapp.example.fr
被请求,那么 Grails 应该返回fr_FR
我的应用程序的版本。等等。
所以我真正的问题是:
如何将请求的 URL/TLD 映射到 Grails 可以在服务器上设置的变量,然后注入 GSP,以便客户端请求始终具有Accept-Language
给定 URL/TLD 的匹配标头?
更新
我想在这里确认浏览器/Grails 的行为:假设当用户配置他们的浏览器时,浏览器相应地调整Accept-Language
标题是否安全?如果是这样,我是否还可以假设Grails默认使用的ifAccept-Language
未发送lang
且未指定为查询参数?en_US