Grails设置区域设置不会更改语言

时间:2013-05-20 15:36:25

标签: grails internationalization locale grails-2.0

我在我的项目中使用Grails 2.0.3。我想在我的应用程序中实现国际化。据我所读的this文档,我了解Grails对国际化的支持。但是,我想覆盖浏览器Accept-Header设置,并希望设置用户语言首选项。

首先,我创建了一个过滤器,以便捕获请求并检查语言首选项。但它没有帮助。在过滤器中我可以获得本地化的消息,但是当呈现页面时,我正在获取英文页面。这是我用于设置区域设置的代码。

def locale = new Locale("es", "ES")
java.util.Locale.setDefault(locale)

然后我创建了自定义LocaleResolver并在spring配置中将其注入localeResolver。再次在过滤器中,我可以看到本地化的消息,但在页面中仍然没有运气?

有没有办法在Grails i18n支持中覆盖或绕过浏览器设置?

1 个答案:

答案 0 :(得分:4)

Grails的默认LocaleResolverSessionLocaleResolver。如果您想始终使用es_ES,可以将其更改为FixedLocaleResolver

beans {
  localeResolver(FixedLocaleResolver) {
    locale = new Locale("es", "ES")
  }
}

如果要限制为一组区域设置,则需要使用过滤器,并使用SessionLocaleResolver#setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)方法。