LocalResolver国际化语言转换

需求:页面实现中英文切换

需求分析:

  • 1.创建i18n目录,在目录下我们需要几种语言切换就需要创建几种语言的配置文件

  • 2.编写我们自定义的MyLocalResolver

  • 3.注册为Bean由spring管理

实验步骤

1.创建i18n目录并创建配置文件

2.创建我们自己的MyLocalResolver并继承LocaleResolver,需要实现接口的两个方法

public class MyLocalResolver implements LocaleResolver {//解析请求@Overridepublic Locale resolveLocale(HttpServletRequest request) {//获取请求中的语言参数String language = request.getParameter("l");//如果没有就使用默认的Locale locale = Locale.getDefault();//如果参数中有语言我们就设置参数中的语言if (!StringUtils.isEmpty(language)){//解析参数语言   zh_CNString[] split = language.split("_");//国家地区locale = new Locale(split[0], split[1]);}return locale;}
​@Overridepublic void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
​}
}

3.注册为Bean由spring管理

    /*** 如果,你想diy一些定制化的功能,只要写这个组件,然后将它交给springboot,springboot就会帮我们自动装配* 官方建议我们需要扩展springmvc,这样做。* */
@Configuration
​
public class MyMvcConfig implements WebMvcConfigurer {
//自定义国际化组件生效@Beanpublic 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

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

LocalResolver国际化语言转换相关推荐

  1. PostgreSQL数据库之国际化语言支持学习总结

    目 录 学习参考书籍.网站或博文: PostgreSQL本国语言支持 官方文档,点击前往 GNU gettext官方文档 GNU gettext简介 PostgreSQL数据库之国际化语言支持学习总结 ...

  2. Spring MVC 第四章:Form表单验证-JSR303和Spring框架验证以及国际化语言、Filter过滤器

    Form表单的验证验证,就是在提交表单的时候进行验证是否为空,是否满足特定条件才可以创建.常见的表单有前端验证和后端验证. 其中,前端验证有:HTML验证,JS验证,Jquery验证. 后端验证有:J ...

  3. Android学习----自适应国际化语言

    [前言] 自适应的知识与编程无关,关键在于配置文件的修改.自适应的内容包括:语言.屏幕.平台.今天就来说一下如何自适应国际化言. internationalization (国际化)简称:i18n,因 ...

  4. c语言uppercase恢复小写,C语言转换字符串为大写和小写

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #include /* * Convert a string to lowercase * ...

  5. flutter 国际化_从0开始设计Flutter独立APP | 第二篇: 完整的国际化语言支持

    鉴于Flutter高性能渲染和跨平台的优势,闪点清单在移动端APP上,使用了完整的Flutter框架来开发.既然是完整APP,架构搭建完全不受历史Native APP的影响,没有历史包袱的沉淀,设计也 ...

  6. R语言转换并保存json文件--使用jsonlite包

    R语言转换并保存json文件--使用jsonlite包 钱亦欣 发表于 2017-07-03 00:10   2477 阅读 http://www.ituring.com.cn/article/468 ...

  7. Pandoc —— 标记语言转换工具(中文乱码问题)

    今次毕业设计,来个逼格高的,用 latex 编写.谁曾想,学院首先要收一份 word 版的.辣么多的 latex 公式如何转呀. Pandoc 是由 John MacFarlane 开发的标记语言转换 ...

  8. android国际化语言编码对照表

    android国际化语言编码对照表 (查询整理以备不时之需,以下内容均已附原文连接) 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-z ...

  9. 微信小程序国际化语言包实现方式(di18n-translate)

    首先需要一个工具类:languageBox.js // Time 为事例值 export default {//英文"en": {"test":"te ...

最新文章

  1. image控件显示图片_Unity之Image amp; Raw Image
  2. cisco 2960 VLAN MAC_思科交换机交换机中ip、mac地址绑定
  3. ConfigurationClassPostProcessor设计与实现
  4. 【杂谈】万万没想到,有三还有个保密的‘朋友圈’,那里面都在弄啥!
  5. mysql基础(全,必看)
  6. 使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow)
  7. 第四十七期:漫画:什么是公有云、私有云和混合云?
  8. leetcode 96. 不同的二叉搜索树(Unique Binary Search Trees)
  9. 发布会后库克接受采访:对AR感到无比兴奋
  10. 如何更高效地学习3D视觉?
  11. c语言中按字节运算,C语言中位运算的巧用
  12. Bootstrap系列---按钮
  13. 马拉车算法详解, C++代码实现
  14. Laya1.0Matter.js案例之牛顿摆
  15. 163个人邮箱如何注册申请?vip邮箱有哪些优点?
  16. 题目:输入一个8bit数,输出其中1的个数。如果只能使用1bit全加 器,最少需要几个?
  17. 【数据挖掘与商务智能决策】第十七章 神经网络
  18. 【python数据类型】
  19. 关于_map文件的全面解析
  20. js的exports

热门文章

  1. 51单片机的超声波测距系统【proteus仿真+程序+报告+原理图】
  2. Codeforces Round #702 (Div. 3)——A. Dense Array
  3. vps服务技术的5大优势
  4. VVC码率控制中的质量依赖因子QDF
  5. ReadProcessMemory函数的用法
  6. App常用图标素材分享 icon 素材网站
  7. 电话号码正则表达式!
  8. 视频剪辑 之 十个不可不知的常用素材网站,你值得拥有
  9. 利用计算机课堂导入的好处,多媒体教学的好处
  10. Html文本学习内容-2