国际化组件
用于将页面的语言,切换为多国语言。
使用步骤
将项目设置为utf-8的编码格式
在根目录下建立名为i18n的文件夹,文件夹下建立配置文件
注意:
- 当创建第二文件时,idea会自动创建资源包
- 在资源包右键创建后面的配置文件
编写配置文件(点击资源包即可)Resource Bundle
在配置文件中添加:将资源文件配置进去
spring.messages.basename=i18n/login
自定义本地解析器 实现LocaleResolver接口
public class MyLocalResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
// 获取请求
String localName = request.getParameter("localName");
// 没有指定则使用默认设置
Locale aDefault = Locale.getDefault();
if (localName!=null){
String[] s = localName.split("_");
//zh_CN 国家_地区
aDefault=new Locale(s[0],s[1]);
}
return aDefault;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
将自定义本地解析器交给spring管理(使用@Bean即可)
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//添加视图解析器
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/login.html").setViewName("login");
}
// 方法名称不能改变
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResolver();
}
}
注意:方法名localeResolver是不可以改变的,springboot会自动检测该方法存不存在,如果存在就会修改国际化组件
前端代码
使用的是thymeleaf语法:
- url需要’@{}‘的格式,国际消息需要使用’#{}‘这个格式
<script th:src="@{js/vendor/modernizr-2.8.3.min.js}"></script>
<div class="form-group">
<label class="control-label" for="username">[[#{login.username}]]</label>
<input type="text" th:placeholder="#{login.username}" title="Please enter you username" required="" value="" name="username" id="username" class="form-control">
</div>
调试结果:
中文版
英文版