Spring Boot国际化配置
国际化是一种处理机制,使得你的应用可以适配不同的语言和区域而无需更改源代码。换言之,国际化是为本地化而准备。本文将带你学习在 Spring Boot 中如何实现国际化的细节。
1.配置LocaleResolver
@Configuration
public class LocaleConfig extends WebMvcConfigurerAdapter{
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
// 默认语言
slr.setDefaultLocale(Locale.CHINA);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
// 参数名
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
super.addInterceptors(registry);
}
}
2.创建国际化文件
messages.properties
messages_zh_CN.properties
messages_en_US.properties
messages_ja_JP.properties
...
内容如下:
person.name="你好"
person.age=1
weclome="欢迎"
3.配置国际化文件路径
在application.yml 配置国际化文件所在位置
spring:
messages:
encoding: UTF-8
cache-seconds: 1
basename: static/i18n/messages //配置路径和名字,前面不可以加斜杠
4.前端页面调用国际化
在Thymeleaf模板中通过 th:text
与#{国际化文件的KEY}
即可使用国际化
前端需要传的语言参数为lang
示例如下:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="?lang=zh_CN">简体中文</a>
<a href="?lang=en_US">English(US)</a><br>
<h2 th:text="#{person.age}"></h2>
<h2 th:text="#{person.name}"></h2>
<h2 th:text="#{welcome}"></h2>
</body>
</html>
5.效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XQfVqilt-1605520762132)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201110094600978.png)]
}">
```5.效果
[外链图片转存中…(img-XQfVqilt-1605520762132)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fsxq8NYl-1605520762133)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201110094609121.png)]