1

我在我的项目中使用 Grails 2.0.3。我想对我的应用程序实施国际化。据我从文档中阅读的内容,我了解 Grails 具有对国际化的外箱支持。但是我想覆盖浏览器Accept-Header设置并想设置用户的语言偏好。

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

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

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

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

4

1 回答 1

5

Grails的默认LocaleResolver值为SessionLocaleResolver. 如果您想始终使用es_ES,可以将其更改为FixedLocaleResolver.

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

如果您想限制一组语言环境,那么您将需要一个过滤器,并使用该SessionLocaleResolver#setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)方法。

于 2013-05-20T15:52:44.523 回答