Moritz Halbritter's Personal Blog
I had to implement locale awareness in a Spring Boot application. The client
would send its preferred languages in the Accept-Language header
and the application should respect that.
You can inject a Locale in your Spring MVC controller, which then should contain
the locale the client has chosen.
To get Spring Boot to inject the locale from the Accept-Language header in the Locale controller parameter, install the following bean:
// Do not rename that bean, otherwise Spring MVC won't pick it up!
@Bean("localeResolver")
public LocaleResolver acceptHeaderLocaleResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(Locale.GERMAN);
resolver.setSupportedLocales(Arrays.asList(
Locale.GERMAN,
Locale.US,
Locale.FRENCH
));
return resolver;
}
setDefaultLocale sets the default locale, if the client doesn’t provide one.
setSupportedLocales sets the supported locales. If the client sends one which isn’t supported, the default locale is used.