LocalResolver国际化语言转换

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

  • 创建的配置文件必须按照格式命名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值