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 -
创建的配置文件必须按照格式命名
该博客详细介绍了如何在Spring Boot应用中实现页面的国际化语言切换功能。首先,创建i18n目录并配置不同语言的文件,然后自定义`MyLocalResolver`类,继承`LocaleResolver`接口并实现其方法,最后通过`WebMvcConfigurer`注册自定义的国际化组件。前端页面使用Thymeleaf表达式动态显示语言,并提供中英文切换链接。整个流程包括用户点击语言按钮,后端接收请求,解析请求参数,设置语言并返回响应。
3342

被折叠的 条评论
为什么被折叠?



