首先我是以一个简单的一个国际化为例子,其他的都大同小异。只要学会了就能很容易理解。
首先第一步
在application.properties 加入一些配置
spring.mvc.hiddenmethod.filter.enabled=true
spring.thymeleaf.cache=false
spring.messages.basename=i18n.login
这里的i18n.login是我自己起的名字,如图第二步编写国际化
先在resources文件夹下建立i18n文件夹然后建立如上图对应的文件,文件内部是你要进行国际化的语句我的如下:
在需要进行国际化的地方添加按钮。我的如下
<a class="btn btn-sm" th:href="@{/login.html(l=zh_CN)}">中文</a>
<a class="btn btn-sm" th:href="@{/login.html(l=en_US)}">English</a>
第三步编写解析类
实现LocaleResolver接口实现里面的方法获得国际化信息如下:
public class MyLocale implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
String l = request.getParameter("l");System.out.println("as");
Locale aDefault = Locale.getDefault();//默认的
if(!StringUtils.isEmpty(l)){
String[] s = l.split("_");
aDefault=new Locale(s[0],s[1]);
}
return aDefault;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}``
``在配置类中注册为bean即可如图:
切记我标出的一号类名。我当初记得不清楚,这里的类名必须是这个,否则会没有反应。
如果找不到或者报404,是没有重定向导致的。我上面的a标签是访问login.html,在我的配置文件中我已经重定向。重定向代码如下:
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login.html").setViewName("login");
}