huzeyfe
huzeyfe

Reputation: 3704

Grails setting locale does not change language

I am using Grails 2.0.3 in my project. I would like to implement internationalization to my application. As far as I read from this documentation I understand Grails have an out box support for internationalization. However I would like to override browsers Accept-Header setting and would like to set users language preference.

First I've created a filter in order to catch requests and check the language preferences. But it did not help. In filter I can get localized messages but when page is rendered I am getting English page. Here is the code that I use for setting locale.

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

Then I've created custom LocaleResolver and injected that in spring configuration as localeResolver. Again in filter I can see localized messages however in pages still no luck?

Is there a way to override or bypass browsers setting in Grails i18n support?

Upvotes: 1

Views: 2263

Answers (1)

user800014
user800014

Reputation:

The default LocaleResolver of Grails is SessionLocaleResolver. If you want to always use es_ES you can change this to FixedLocaleResolver.

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

If you want to restrict to a set of locales, then you will need a filter, and use the SessionLocaleResolver#setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) method.

Upvotes: 5

Related Questions