J'essaie de créer une application multilingue en utilisant Spring boot et Thymeleaf.
J'ai fait quelques fichiers de propriétés pour enregistrer les différents messages mais je ne peux que l'afficher dans la langue de mon navigateur (j'ai essayé des extensions pour changer les paramètres régionaux du navigateur mais elles ne semblent pas fonctionner), de toute façon je voulais mettre un bouton dans mon site web pour faire ce devoir (changer la langue), mais je ne sais pas comment ni où trouver comment gérer cela.
Je vais vous montrer ma config:
import 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;
}
}
<!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>
messages_en_US.properties
hello.world = Hello people
messages_es.properties
hello.world = Hola gente
En fait, le message s'affiche en espagnol, je ne sais pas comment changer cela, donc si vous pouviez m'aider, merci beaucoup.
Il y a une autre question qui me vient à l'esprit ... Comment puis-je obtenir les messages de la base de données à la place du fichier de propriétés?
Votre application doit s'étendre WebMvcConfigurerAdapter
@SpringBootApplication
public class NerveNetApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(NerveNetApplication.class, args);
}
@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());
}
}
Ensuite, sur le navigateur, vous pouvez changer de langue avec param lang Exemple: http: // localhost: 1111 /? lang = kh quels messages_kh.properites stockeront le contenu de la langue khmère.