栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot实现登录页面国际化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot实现登录页面国际化

国际化:
以前springmvc时:
1),编写国际化配置文件
2),使用ResourceBundleMessageSource管理国际化资源文件
3),在页面使用fmt:message取出国际化内容

springboot国际化步骤
1),编写国际化配置文件,抽取页面需要的国际化消息

三个国际化配置文件:
login.properties 没有指定语言信息的时候默认的
login_en_US.properties 英文
login_zh_CN.properties 中文

2),springboot自动配置好了管理国际化资源文件的组件在MessageSourceAutoConfiguration类中
用@Bean给容器中添加了一个:管理国际化资源文件的组件:MessageSource(ResourceBundleMessageSource)
ResourceBundleMessageSource需要调用一个方法是.setbasenames
.setbasenames:设置国际化资源文件的基础名(去掉语言国家代码)
3)页面获取国际化的值:
#{…}:取国际化信息

设置完访问时出现乱码

解决:File–>Other Settinfs–>Default Settings把Detault:encoding for properties files改成UTF-8勾选
后面的默认框全局默认设置

效果:根据浏览器语言信息切换国际化

怎么实现点按钮切换语言?

原理:
国际化之所以有效果是因为有一个对象Locale(区域信息对象);springmvc里所有要获取区域对象的时候有一个组件Resolver(获取区域信息对象)

springboot默认配置区域信息解析器在WebMvcAutoConfiguration类中
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(
prefix = “spring.mvc”,
name = {“locale”}
)
public LocaleResolver localeResolver() {
if (this.mvcProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.WebMvcProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.mvcProperties.getLocale());
} else {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
return localeResolver;
}
}

默认的区域信息解析器就是根据请求头带来的区域信息获取Locale进行国际化

点击链接切换国际化

写一个LocaleResolver

public class MyLocaleResolver implements LocaleResolver{
@Override
public Locale resolveLocale(HttpServletRequest request) {
String l= request.getParameter(“l”);
Locale locale=Locale.getDefault();
if (!StringUtils.isEmpty(l)){
String[] split= l.split("_");
locale = new Locale(split[0],split[1]);
}
return locale;
}

@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

}
}

点击链接切换国际化怎么知道?
可以在链接上携带国际化的区域信息比如在login.html里

这样就是点链接就发送这个请求发请求的时候就会带上这个国际化的值
自己在MyLocaleResolver里面写一个区域信息解析器
然后在MyMvcConfig配置类里添加组件LocaleResolver
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}

登录
模板引擎页面修改以后,要实时生效
1)在配置文件里禁用模板引擎缓存

2)页面修改完成后Ctrl+F9:重新编译

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682493.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号