24-octubre-2016
admin

i18n con Spring Boot

Paso 1: Añadir los properties con las keys en src/main/resources/ uno por cada idioma tal que así:
messages.properties (este será el de por defecto)
messages_es.properties

Paso 2: Hay que configurar la aplicación para que la request obtenga el locale. Para ello se pueden añadir estos beans:

	@Bean
	public LocaleResolver localeResolver() {
	    return new CookieLocaleResolver();
	}
	@Bean
	public LocaleChangeInterceptor localeChangeInterceptor() {
		LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
		lci.setParamName("lang");
		return lci;
	}
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(localeChangeInterceptor());
	}

Paso 3: Modo de uso.
Desde un controller de Spring basta con inyectar un MessageSource y ya podríamos usarlo.

        .....
	@Autowired
	private MessageSource messageSource;

	@RequestMapping(value = "/list", method = RequestMethod.GET)
        public String listItems(Model uiModel, Pageable page, HttpServletRequest request){
             String msg = messageSource.getMessage(request.getParameter("key.successMessage")
                                                     .toString(),null,LocaleContextHolder.getLocale());
             ....
        }
        ....

Desde el front-end con thymeleaf bastaria con usar el #{key.successMessage}

< html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
	xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
>
....
< span th:text="#{key.successMessage}">
....

Comentarios cerrados.

Categorias

Linkedin