LocalResolver国际化语言转换
需求:页面实现中英文切换
需求分析:
-
1.创建i18n目录,在目录下我们需要几种语言切换就需要创建几种语言的配置文件
-
2.编写我们自定义的MyLocalResolver
-
3.注册为Bean由spring管理
实验步骤
1.创建i18n目录并创建配置文件
2.创建我们自己的MyLocalResolver并继承LocaleResolver,需要实现接口的两个方法
public class MyLocalResolver implements LocaleResolver { //解析请求 @Override public Locale resolveLocale(HttpServletRequest request) { //获取请求中的语言参数 String language = request.getParameter("l"); //如果没有就使用默认的 Locale locale = Locale.getDefault(); //如果参数中有语言我们就设置参数中的语言 if (!StringUtils.isEmpty(language)){ //解析参数语言 zh_CN String[] split = language.split("_"); //国家地区 locale = new Locale(split[0], split[1]); } return locale; } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { } }
3.注册为Bean由spring管理
/** * 如果,你想diy一些定制化的功能,只要写这个组件,然后将它交给springboot,springboot就会帮我们自动装配 * 官方建议我们需要扩展springmvc,这样做。 * */ @Configuration public class MyMvcConfig implements WebMvcConfigurer { //自定义国际化组件生效 @Bean public LocaleResolver localeResolver(){ return new MyLocalResolver(); } }
4.前端页面
<body class="text-center">
<form class="form-signin" action="dashboard.html">
<img class="mb-4" src="/static/asserts/img/bootstrap-solid.svg" alt="" width="72" height="72">
<h1 class="h3 mb-3 font-weight-normal">[[#{login.btn}]]</h1>
<label class="sr-only">Username</label>
<input type="text" class="form-control" th:placeholder="#{login.username}" required="" autofocus="">
<label class="sr-only">Password</label>
<input type="password" class="form-control" th:placeholder="#{login.password}" required="">
<div class="checkbox mb-3">
<label>
<input type="checkbox" value="remember-me" > [[#{login.remember}]]
</label>
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit"> [[#{login.btn}]]</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>
</form>
</body>
分析业务流程:
-
业务 后端逻辑
-
1.用户点击语言按钮======我们给对应的按钮设置了不同的l属性值。用来我们识别语言
-
2.后端接收请求== =======我们自定义语言切换组件生效,业务走到自定义语言切换
-
3.业务处理
-
3.1获取请求参数
-
3.2如果没有请求参数使用默认语言
-
3.3如果有参数我们就切换为指定语言
-
3.3.1对参数进行拆分,拆分为国家和地区
-
3.3.2创建我们自己的Locale对象
-
-
4.返回我们的Locale对象
-
业务完成
注意点:
-
1.我们需要配置i18n文件
-
我们如果需要在项目中进行按钮自动切换,我们需要定义一个组件LocalResolver
-
记得自己写的组件配置到spring容器中
@Bean
-
创建的配置文件必须按照格式命名