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:重新编译

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值