最近在做项目的过程中,提到了页面国际化的需求。
故此总结,以备温习和帮助大家。
一:环境
IDEA开发工具
SpringBoot开发框架
Thymeleaf模板引擎
二:目录结构
1)java目录下新建internation包,
新建MyLocaleResolver.java
2)在resource文件下新建i18n文件夹
新建login.properties(国际化配置文件)
中文:login_ch_CN.properties
英文:login_en_US.properties
三:编写国际化配置文件
IDEA对于编写国际化配置文件十分友好,
直接在resource bundle中添加property key即可
添加后效果如下
login.btn=登录
login.password=密码
login.remember=记住我
login.tip=请登录
login.username=用户名
四:Thymeleaf页面
1)直接替换
<label class="sr-only" th:text="#{login.username}">Username</label>
2)替换placeholder内容
<input type="text" class="form-control" placeholder="Username" th:placeholder="#{login.username}" required="" autofocus="">
3)替换checkbox
<input type="checkbox" value="remember-me">
[[#{login.remember}]]
input标签是自结束,所以不能用 th:text
4)中英文切换按钮
<a class="btn btn-sm" th:href="@{/index.html(l='zn_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>
默认使用操作系统语言
如果点击切换语言
在链接上携带国际化区域信息(括号传值)
五:自定义区域信息解析器
1) MyLocalResolver implements LocaleResolver,
重写resolveLocale方法
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取参数l的值
String l = request.getParameter("l");
//最终返回的local对象
Locale local = Locale.getDefault();
if (!StringUtils.isEmpty(l)) {
String[] split = l.split("_");
//0是语言代码,1是国家代码
local = new Locale(split[0], split[1]);
}
return local;
}
注意:Local导包:java.util.Locale;
2)使用自己的LocaleResolver并加入容器
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
六:设置国际化资源文件的基础名
默认设置是message,根路径下
在application.xml中指定包名+文件名
spring.messages.basename=i18n.login
tips
为避免修改页面后频繁重启服务
#禁用缓存
spring.thymeleaf.cache=false
thymeleaf修改后:ctrl+F9(重新编译)