【发布时间】:2015-10-21 08:50:11
【问题描述】:
我遇到了一个奇怪的问题,或者我无法理解 Grails i18n 机制的工作原理。
我将以下内容插入到我的 index.gsp 文件中:
LocaleContextHolder.locale: '${org.springframework.context.i18n.LocaleContextHolder.locale}'
java.util.Locale.getDefault(): '${java.util.Locale.getDefault()}'
RequestContextUtils.getLocale(request): '${org.springframework.web.servlet.support.RequestContextUtils.getLocale(request)}'
session['SessionLocaleResolver.LOCALE']: '${session['org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE']}'
这段代码 sn-p 应该打印语言环境,它是这样的:
LocaleContextHolder.locale: 'iw'
java.util.Locale.getDefault(): 'en_US'
RequestContextUtils.getLocale(request): 'iw'
会话['SessionLocaleResolver.LOCALE']: ''
以上是我运行给定代码 sn-p 时的默认输出。
我试图了解究竟是什么影响了这个变量,所以我做了接下来的步骤:
-
我更改了 Chrome 的语言环境
设置 --> 显示高级设置 --> 语言和输入设置)
-
我更改了操作系统的区域设置 (Windows 7)
控制面板 --> 地区和语言 --> 格式 + 位置 + 系统区域设置
在这些更改之后,我重新启动了计算机,并预计语言环境变量的值会发生变化,但它们仍然保持不变。
我知道我可以使用 ?lang 参数和一些代码更改语言环境,但我有兴趣让 Grails 决定选择哪个语言环境。
究竟是什么影响了这些变量? Grails 如何决定机器的语言环境?
【问题讨论】:
标签: grails browser internationalization operating-system locale