Comment changer la langue lien sélectionnez dinamically en utilisant thymeleaf et au printemps internacionalization

Gustavo Delgado:

Je développe un site Web qui doit avoir l'internationalisation et je suis en train de changer la langue Sélectionnez Texte pour le faire rendre dynamiquement en fonction de la langue que l'utilisateur utilise en ce moment.

Disons que le site est en portugais en ce moment, la langue Sélectionnez texte devrait lire « anglais » et la valeur devrait changer en conséquence et vice-versa.

Le code tel qu'il est en ce moment:

<select class="form-control dropdown2 col-lg-2 col-10 text-white" id="locales">
      <option>Idioma/Language</option>
      <option value="en" th:text="#{langEN}"></option>
      <option value="pt_BR" th:text="#{langPT}"></option>
</select>

$(document).ready(function() {
    $("#locales").change(function() {
        var selectedOption = $('#locales').val();
        if (selectedOption != '') {
            window.location.replace('?lang=' + selectedOption);
        }
        if(document.getElementById("clientPage")){
            window.location.replace(window.location.href + '&lang=' + selectedOption);
        }
    });
});

Et voici un exemple de ce que je suis en train de réaliser:

<a th:href="#{langURL}" th:text="#{lang}"></a>

où les deux langURLet langsera fixé à message.properties dans chaque langue.

ÉDITER:

Mon problème a été résolu en utilisant le code suivant:

<a th:href="@{/?lang=}+#{lang.url}" th:text=#{lang.text}></a>
Ioannis Barakos:

Je ne sais pas si vous avez créé tous les haricots qui devraient être créés pour y parvenir, je vais donc fournir autant d'aide que je peux pour que quelqu'un puisse configurer Spring + thymeleaf à partir de zéro.

Réglez d'abord le grain de localResolver et définir un lieu par défaut:

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver slr = new SessionLocaleResolver();
    slr.setDefaultLocale(Locale.ENGLISH);
    return slr;
}

Ensuite, dans votre classe @Configuration (qui devrait implémenter l'interface WebMvcConfigurer) définir le localeChangeInterceptor il change la langue en fonction du langparamètre de chaque demande:

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
    lci.setParamName("lang");
    return lci;
}

Et mettre l'intercepteur dans le registre des intercepteurs de l'application:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

C'est tout pour la configuration Spring. Maintenant, vous devez ajouter des fichiers messages.properties dans votre src / dossier principal des ressources /. La langue est définie dans le nom de fichier messages.properties en utilisant le format suivant: messages _ ?? propriétés, où ??. est le code de langue, par exemple: messages_en.properties ou messages_fr.properties.

Notez également que si un code de langue (paramètre lang) n'existe pas comme un lieu existant, l'application retombera à l'environnement local par défaut. valeur.

Enfin, assurez - vous que vos URL comprennent le paramètre -à- lang=<language>direhttp://example.com/page?lang=fr

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=362175&siteId=1
conseillé
Classement