我将message.properties
用于i18n。我有以下属性文件。
message.properties
message_de.properties
当我做这样的事情时,这很好用:
Locale locale = new Locale("de")
def test = g.message(code:'some.code', locale: locale)
问题是当我使用Locale
时这样:
Locale locale = new Locale("de_DE")
在前一种情况下,Grails会搜索不存在的属性文件message_de_DE.properties
,因此它会回退到message.properties
。
如何强制Grails执行以下操作?
properties
文件与所请求的语言代码和区域设置的国家/地区代码相匹配。properties
文件message.properties
。答案 0 :(得分:1)
只需更改
Locale locale = new Locale("de_DE")
到
Locale locale = new Locale("de", "DE")
应该达到你想要的效果。
AFAIK Grails默认执行您在要点中提到的内容,不需要强制执行。
Locale
的单个参数构造函数要求参数为语言名称,但 de_DE 不是有效的语言名称(这可能是grails回退到{{1 }})。您必须使用构造函数的另一个变体,它将语言名称作为第一个参数,将国家/地区名称作为第二个参数。 doc。this library。