I18n au Printemps de démarrage + Thymeleaf
Je suis en train de faire une application multilingue à l'aide de Printemps de démarrage et Thymeleaf.
J'ai fait quelques propriétés des fichiers à enregistrer les différents messages, mais je suis seulement en mesure de l'afficher dans mon navigateur, la langue (j'ai essayé les extensions pour modifier les paramètres régionaux du navigateur, mais ils semblent ne pas fonctionner), de toute façon je voulais mettre un bouton dans mon site web pour faire ce devoir (changement de la langue), mais je ne sais pas comment ni où les trouver, comment les gérer.
Va vous montrer ma config:
De la Structure du projet
I18n classe de configuration
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;
}
}
Thymleaf page HTML
<!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 (des fichiers de Propriétés)
messages_en_US.propriétés
hello.world = Hello people
messages_es.propriétés
hello.world = Hola gente
En fait le message est afficher en espagnol, vous ne savez pas comment changer cela, donc si vous pouviez m'aider je vous remercie beaucoup.
Il y a une autre question qui me vient à l'esprit... Comment vais-je recevoir des messages à partir de la Base de données au lieu du fichier de propriétés?
Locale
? Avez-vous configuré une LocaleResolver
? Comment êtes-vous en lui passant les paramètres régionaux que vous voulez?Je ne suis pas, je suppose que le Printemps est de le prendre à partir de la configuration de votre navigateur. Je vous définissez les paramètres régionaux en fonction d'appuyer sur un bouton? Vous ne savez pas si cela fonctionnerait de cette façon.
Commencer à haut et de continuer. Il y a 3 choses que vous devez 1) un
MessageSource
, 2) un LocaleResolver
afin de déterminer, pour une demande particulière, ce jeu à utiliser, et (en option) 3) un LocaleChangeInterceptor
de sorte que vous pouvez, à partir d'une demande, définissez les paramètres régionaux dans le LocaleResolver
.Vous pouvez également envisager de
AcceptHeaderLocaleResolver
qui permet de ne pas stocker les Locale
mais au lieu de cela, il lit à partir de la Request
. Jusqu'à vous...Le moteur de template n'a pas d'importance - le
MessageSource
. Il décide, à l'aide d'un LocaleResolver
paramètres régionaux à utiliser. Êtes-vous sûr que vous avez défini ThymeLeaf
utiliser au Printemps MessageSource
plutôt que son propre?
OriginalL'auteur No One | 2016-04-10
Vous devez vous connecter pour publier un commentaire.
Votre application doit s'étend WebMvcConfigurerAdapter
Puis sur navigateur, vous pouvez changer de langue avec des param lang
Exemple: http://localhost:1111/?lang=kh qui messages_kh.properites va stocker le contenu de la langue Khmère.
OriginalL'auteur Lay Leangsros