强制Grails使用带有正确语言代码的message.properties?

时间:2015-09-29 00:15:25

标签: grails internationalization

我将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执行以下操作?

  1. 检查是否有properties文件与所请求的语言代码和区域设置的国家/地区代码相匹配。
  2. 检查是否有与所请求的语言代码匹配的properties文件
  3. 如果1.和2.失败则回退到message.properties

1 个答案:

答案 0 :(得分:1)

只需更改

    Locale locale = new Locale("de_DE")

    Locale locale = new Locale("de", "DE")

应该达到你想要的效果。

AFAIK Grails默认执行您在要点中提到的内容,不需要强制执行。

Locale的单个参数构造函数要求参数为语言名称,但 de_DE 不是有效的语言名称(这可能是grails回退到{{1 }})。您必须使用构造函数的另一个变体,它将语言名称作为第一个参数,将国家/地区名称作为第二个参数。 docthis library