1.首先创建一个SpringBoot项目。
2.在resources目录下创建i18n目录。
3.在i18目录下创建三个文件:"login.properties"、"login_en_US.properties"、"login_zh_CN.properties"。
每个文件内容如下:
login.properties <默认语言>
login.btn = 登录
login.username = 账号
login.password = 密码
login.enterUserName = 输入账号
login.enterPassword = 输入密码
login_en_US.propertoes <英文>
login.btn = login
login.username = username
login.password = password
login.enterUserName = enter username
login.enterPassword = enter password
login_zh_CN.propertes <中文>
login.btn = 登录
login.username = 账号
login.password = 密码
login.enterUserName = 输入账号
login.enterPassword = 输入密码
4.在application.properties文件中配置国际化文件名称。
spring.messages.basename= i18n/login
5.在java目录下,创建resolver目录,在当前目录下创建"MyLocaleResolver"类,当前类需要继承"LocaleResolver"接口。
@Configuration
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
// 获取标识
String flag = httpServletRequest.getParameter("flag");
// 配置特定的语言
// Locale.setDefault(Locale.CHINA);
// 配置默认语言
Locale locale = Locale.getDefault();
// 如果不为空
if (!StringUtils.isEmpty(flag)) {
// 对标识通过_进行分割
String[] splits = flag.split("_");
// 创建Locale对象
locale = new Locale(splits[0], splits[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
/**
* 将 MyLocaleResolver 交由Spring进行管理
* @return
*/
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
6.在resources目录下的templates目录创建"login.html"文件。
当前链接中的flag='zh_CN',代表的就是语言。
<a th:href="@{/login(flag='zh_CN')}">中文</a>
将xxx.properties中定义好的数据渲染到页面中
th:placeholder="#{login.enterUserName}"
这里我使用了Bootstrap样式库,我们可以自行引入。
<link th:href="@{/webjars/bootstrap/css/bootstrap.min.css}" rel="stylesheet"/>
<script th:src="@{/webjars/jquery/jquery.min.js}"></script>
在pom文件中进行引入
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.5.1</version>
</dependency>
login.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>login</title>
<link th:href="@{/webjars/bootstrap/css/bootstrap.min.css}" rel="stylesheet"/>
<script th:src="@{/webjars/jquery/jquery.min.js}"></script>
<style>
form{
width: 300px;
height: 300px;
margin: 170px auto;
padding: 10px 20px;
text-align: center;
border: 1px solid #e8e8e8;
border-radius: 8px;
}
</style>
</head>
<body>
<form>
<div class="form-group">
<h5 class="text-area">后台登录</h5>
</div>
<div class="form-group">
<label for="exampleInputEmail1" th:text="#{login.username}"></label>
<input type="email" class="form-control" id="exampleInputEmail1" th:placeholder="#{login.enterUserName}">
</div>
<div class="form-group">
<label for="exampleInputPassword1" th:text="#{login.password}"></label>
<input type="password" class="form-control" id="exampleInputPassword1" th:placeholder="#{login.enterPassword}">
</div>
<div class="button">
<input type="submit" class="btn btn-primary form-control" th:value="#{login.btn}"/>
</div>
<div class="form-group">
<a th:href="@{/login(flag='zh_CN')}">中文</a>
<a th:href="@{/login(flag='en_US')}">英文</a>
</div>
</form>
</body>
</html>
7.在java目录下创建controller目录,创建"ViewController"类
@Controller
public class ViewController {
/**
* 登录页面
* @param model
* @return
*/
@GetMapping("login")
public String getLogin(){
return "login";
}
}
这样我们的国际化就配置完成了。
需要源代码可以关注"SayCode",公众号回复"java国际化",即可领取源代码。