java如何使用thymeleaf和spring国际化动态更改语言选择链接
我正在开发一个必须具有国际化的网站,我正在尝试更改语言选择文本,使其根据用户当前使用的语言动态呈现
假设网站现在是葡萄牙语的,则语言选择文本应为“英语”,值应相应更改,反之亦然
当前的代码:
<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);
}
});
});
下面是我试图实现的一个例子:
<a th:href="#{langURL}" th:text="#{lang}"></a>
其中langURL
和lang
将在消息中设置。每种语言的属性
编辑:
使用以下代码解决了我的问题:
<a th:href="@{/?lang=}+#{lang.url}" th:text=#{lang.text}></a>
# 1 楼答案
我不确定您是否已经创建了实现这一目标所需的所有bean,因此我将提供尽可能多的帮助,以便有人可以从头开始配置Spring+Thymeleaf
首先设置localResolver bean并设置默认区域设置:
然后,在@Configuration类(应该实现WebMVCConfiguer接口)中设置localeChangeInterceptor,以便它根据每个请求的
lang
参数更改语言:并在应用程序的拦截器注册表中设置拦截器:
这就是Spring配置的全部内容。现在你需要添加消息。属性文件保存到src/main/resources文件夹中。语言在消息中设置。属性文件名使用以下格式:messages_??。房产,在哪里??是语言代码,例如:messages_en。属性或消息\u fr.properties
还请注意,如果语言代码(lang参数)不作为现有语言环境存在,那么应用程序将返回默认语言环境。价值观
最后,确保URL包含参数
lang=<language>
,即http://example.com/page?lang=fr