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 langURL
et lang
sera 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>
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 lang
paramè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