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 au Printemps de démarrage + Thymeleaf


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?

Question bête: comment faites-vous la définition de la 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