I18n en bota de primavera + Thymeleaf
Estoy tratando de hacer una aplicación multilenguaje usando Spring boot y Thymeleaf.
Hice algunos archivos de propiedades para guardar los diferentes mensajes, pero solo puedo mostrarlo en el idioma de mi navegador (intenté extensiones para cambiar la configuración regional del navegador pero parece que no funcionan), de todos modos quería poner un botón en mi sitio web para cumplir con este deber (cambiar el idioma), pero no sé cómo ni dónde encontrar cómo manejar esto.
Te voy a mostrar mi configuración:
Estructura del proyectoClase de configuración I18nimport org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class I18nConfiguration extends WebMvcConfigurerAdapter {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
Página HTML de Thymleaf<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
th:with="lang=${#locale.language}" th:lang="${lang}">
<head>
<title>Spring Boot and Thymeleaf example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h3>Spring Boot and Thymeleaf</h3>
<p>Hello World!</p>
<p th:text="${nombre}"></p>
<h1 th:text="#{hello.world}">FooBar</h1>
</body>
</html>
Mensajes (archivos de propiedades)messages_en_US.properties
hello.world = Hello people
messages_es.properties
hello.world = Hola gente
En realidad, el mensaje se muestra en español, no estoy seguro de cómo cambiaría esto, así que si pudieran ayudarme, muchas gracias.
Hay otra pregunta que me viene a la mente ... ¿Cómo obtendría los mensajes de la Base de datos en lugar del archivo de propiedades?