spring - www - thymeleaf th:insert
¿Cómo mostrar mensajes en Thymeleaf y Spring Boot? (5)
¿Hay un archivo messages.properties
(no _de
) presente para permitir el repliegue? ¿Funciona? ¿Está su navegador configurado para la configuración regional DE_de
?
Creé una aplicación web Spring Boot que utiliza Thymeleaf como motor de plantillas. Configuré el MessageSource
para buscar mensajes en una subcarpeta:
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setFallbackToSystemLocale(false);
messageSource.setCacheSeconds(0);
return messageSource;
}
En esta carpeta, creé el archivo messages_de.properties
con el contenido ticket.type.BUG=Fehler
. En mi plantilla intento mostrar el texto así:
<p th:text="#{ticket.type.BUG}">BUG</p>
Pero cuando la página está renderizada, obtengo lo siguiente:
<p>??ticket.type.BUG_de_DE??</p>
¿Qué me estoy perdiendo? ¿Tengo que configurar algún bean adicional?
PD:
En el ''lado del servidor'' puedo obtener el mensaje usando MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
.
Debido a que estoy usando Spring Boot, MessageSource
está configurado con MessageSourceAutoConfiguration
. Estas configuraciones se pueden cambiar fácilmente en el archivo application.properties
. En mi caso tuve que agregar lo siguiente a este archivo:
spring.messages.basename=i18n/messages
La forma en que resolví la mensajería i18n fue definir el bean MessagesSource
como tú. Además, tuve que anular el método getValidator()
de WebMvcConfigurerAdapter
.
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource( messageSource() );
return validator;
}
Después de esto, funcionó para mí.
La fuente del mensaje será relativa a classpath:
messageSource.setBasename(" classpath:i18n/messages");
Aquí hay un tutorial al que hice referencia para thymeleaf y spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html
Y agregue esto a su archivo application.properties
#messages
spring.messages.basename=i18n/messages
y almacene el archivo n en la carpeta correcta como se especifica anteriormente.
no necesita messageSource
bean de origen de messageSource