springboot⾃定义LocaleResolver实现切换语⾔我们在做项⽬的时候,往往有很多项⽬需要根据⽤户的需要来切换不同的语⾔,使⽤国际化就可以轻松解决。
我们可以⾃定义springboot中的LocaleResolver来进⾏简单的国际化处理,下⾯来通过简单Demo来简单的了解国际化。
在下⾯的Demo中,我⽤的是thymeleaf模板引擎标签的形式对国际化进⾏取值。
1、在pom中引⼊thymeleaf模板引擎
//引⼊thymeleaf
<dependency>
<groupId>org.springframework.boot</groupId>springboot中文
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
我这⾥是以登录界⾯为例
2、在resources下⾯创建⼀个i18n的⽂件夹,然后创建⼀个login.properties
login.propertie:默认显⽰的语⾔
login.button=登陆
login.password=密码
login.tip=请登陆
login.username=⽤户名
login_en_US.properties:美国(英语)
login.button=Sign In
login.password=PassWord
login.tip=Please sign in
login.username=UserName
login_zh_CN.properties:中⽂
login.button=登陆
login.password=密码
login.tip=请登陆
login.username=⽤户名
3、在登录页⾯通过thymeleaf标签引⼊国际化
注意:input标签需要⽤[[]]来进⾏取值
4、运⾏项⽬,将浏览器语⾔设置为英语(美国)或者中⽂,我们的页⾯就会切换语⾔。
但是这⾥必须要⼿动设置浏览器语⾔才可以实现中英⽂切换,最终的效果是点击页⾯上中⽂和English来进⾏切换语⾔,下⾯来实现这
个功能:
1、SpringBoot为我们⾃动配置了LocaleResolver组件,实现国际化我们需要⾃定义LocaleResolver才能起作⽤,代码如下:
**
* Describe: 国际化
* Copyright: ITfxsen
* Date: 2019/10/17
* Time: 16:18
* @author fu.qiang
* @version 1.0
*/
@Configuration
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
String l = Parameter("l");
if (StringUtils.isEmpty(l)){
Locale locale = Default();
return locale;
}else {
String[] split = l.split("_");
return new Locale(split[0],split[1]);
}
}
2、再将⾃定义LocaleResolver注⼊到spring容器中:
/**
* Describe: 注⼊⾃定义的LocaleResolver
* @param
* @return
* @Time: 2019/10/18 9:38
* @autho: fu.qiang
* @version 1.0
*/
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
3、在页⾯上使⽤Thymeleaf模板引擎,对中英⽂切换的a标签的href属性覆盖:
<a class="btn btn-sm" th:href="@{/login(l='zh_CN')}" rel="external nofollow" >中⽂</a>
<a class="btn btn-sm"th:href="@{/login(l='en_US')}" rel="external nofollow" >
English</a>
4、我们来看⼀下最终效果(注意左上⾓地址的变化):
总结
以上所述是⼩编给⼤家介绍的springboot ⾃定义LocaleResolver实现切换语⾔,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论