springBoot有许多的自动化配置,其中就包括多语言的autoConfiguration,打开org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration可查看相关的配置。

关于多语言的配置文件,系统默认为项目根路径下的message.properties,当然,这个配置可以在yaml中修改,比如下面的配置信息就将国际化多语言的配置文件地址指向根路径下的i18n目录下的message文件。

spring:messages:basename: i18n.message

springBoot关于webMvc有关于域组件的默认配置,如果我们想要自定义页面语言信息的显示,就需要自定义一个LocaleResolver并加入到容器中才行。
下面通过简单的步骤来实现一个登陆也的多语言登录页。

  1. 创建多语言配置文件
    在resources目录下创建i18n目录,并新建message.properties,message_en_US.properties,message_zh_CN.properties。在创建过程中,idea会识别到这是国际化多语言配置文件,显示Resource Bundle。我们打开其中一个文件,点击页面左下角的Resource Bundle,切换到多语言文件的配置页面。

    点击左上角的加号可添加属性信息,在右侧,可以同时添加多个语言的信息,并且分别保存到对应的文件,非常方便。
  2. 配置message文件的位置
    由于我们没有使用默认的多语言文件路径,需要在配置文件中设置message的basename为对应的自定义路径。
  3. 使用#{ }表达式替换页面的字面量
    使用thymeleaf的#{xxx}表达式,动态替换标签体的内容。
<h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tips}">Please sign in</h1>

如果是input这种,则使用行内表达式:[[#{xxx}]]

<input type="checkbox" value="remember-me">[[#{login.remember}]]

在页面的底部,我们放置两个超链接,通过不同的参数信息来动态调整页面的语言信息。这里需要注意一下超链接的表达式写法和参数写法。

<a class="btn btn-sm" th:href="@{/index.html(lan=zh_CN)}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(lan=en_US)}">English</a>

步骤执行到这里,我们可以通过设置浏览器的语言配置,显示页面的语言类型,但是达不到在页面上就能动态切换。点击页面底部的超链接,我们的url是带有对应参数的,但是这个参数想要被系统解析为域对象,还需要我们自定义一个LocaleResolver组件,来替代springBoot默认的域组件。
4. 自定义LocaleResolver组件并加入容器
1)自定义LocaleResolver 组件

public class MyLocalResolver implements LocaleResolver {@Overridepublic Locale resolveLocale(HttpServletRequest httpServletRequest) {Locale locale = Locale.getDefault();String lan = httpServletRequest.getParameter("lan");if(!StringUtils.isEmpty(lan)){String [] params = lan.split("_");locale = new Locale(params[0],params[1]);}return locale;}@Overridepublic void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {}
}

2)加入容器中

    @Beanpublic LocaleResolver localeResolver(){return new MyLocalResolver();}

多提一嘴,在org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration中有下面这段代码,@ConditionalOnMissingBean注解表示在容器中没有LocaleResolver组件时才会注入默认的。所以将我们自定义的LocaleResolver组件加入容器后,这段代码就不会再添加默认的组件了。

5. 测试
登录后的默认首页:

点击English超链接:

点击中文超链接:

springBoot国际化多语言开发配置,中文OR英文支持一键切换相关推荐

  1. C语言:实现中文引号 → 英文引号的替换

    用C语言实现中文引号 -> 英文引号的替换. p.s. 你确定正常人会用C来做这种事情吗?替换引号有什么用吗?! p.s. 的 p.s. 嗯暂且还是补充一下, //汉字双引号:"→e2 ...

  2. c语言字符是英文还是中文,c语言中判断中文还是英文字符

    在处理套打程序时用到TextOut,但TextOut无法自动换行,只好动手写代码,可是处理到汉字部分时卡住了,搜索网上判断汉字的帖子,都语焉不详,经过一下午的研究,终于整理出一个简单的教程. 其实判断 ...

  3. Eclipse新建SpringBoot项目,application.properties配置中文乱码

    场景 解决 windows--preference-contnet Type--Java Properties File 将其编码格式修改为UTF-8,点击update, 同理将Spring Prop ...

  4. android国际化设置语言后不起作用,Android支持国际化多语言那点事(支持8.0+)

    起因 我们在开发app可能会拓展国外市场,那么对包含英语在内的其它语言支持就很有必要了. 效果 思路 一:添加相关资源文件,并引用. 二:设置configuration,configuration里面 ...

  5. 语言判断(中文、英文、韩文等)

    语言判断中文.日文等(langdetect和langid) 注:语言类型主要参考的是ISO 639-1语言编码标准,详见ISO 639-1百度百科 个人使用感受:langdetect主要是看首字符是什 ...

  6. 浏览器扩展开发 - i18n 国际化多语言配置

    原文地址:https://waynegong.cn/posts/954.html Chrome 浏览器扩展进行 i18n 国际化多语言适配需要进行三处修改: 在特定目录按照特定格式编写多语言配置的 m ...

  7. springboot+jsp中文乱码_【spring 国际化】springMVC、springboot国际化处理详解

    在web开发中我们常常会遇到国际化语言处理问题,那么如何来做到国际化呢? 你能get的知识点? 使用springgmvc与thymeleaf进行国际化处理. 使用springgmvc与jsp进行国际化 ...

  8. 一篇文章解决springboot+thymeleaf多语言国际化

    1.前言 博主最近在写一个多语言的项目,因为之前没实际接触过多语言的设计,所以写这篇文章记录下这次多语言开发的过程. 博主的开发环境是:Springboot1.5.6 + thymeleaf,需要注意 ...

  9. # 前后端国际化多语言配置

    前后端国际化多语言配置 前端(Vue ElementUI) 项目前端使用Vue+Elementui 编写 i18n.js 在这个js 中引入ElementUI的多语言资源,引入本地的多语言资源 // ...

最新文章

  1. 即时通讯有标准 IM的四种即时通讯协议简介
  2. 手把手教你安装OpenStack——Ocata安装指南(上)
  3. 谈谈基于机器学习的编程到底比传统编程强在哪里?
  4. MessagePack, Protocol Buffers和Thrift序列化框架原理和比较说明
  5. 联想杯 - Gentle Jena(单调栈)
  6. web表单设计:点石成金_设计复杂的用户表单:12个UX最佳实践
  7. istio 和 kong_如何启动和运行Istio
  8. 前端学习(2691):重读vue电商网站12之获取选中节点的keys:
  9. Understanding, Operating and Monitoring Apache Kafka
  10. SpringBoot缓存@Cacheable
  11. Linux常用指令/知识点
  12. 【整理】Makefile编写规则
  13. 《边缘云计算技术及标准化白皮书》
  14. tcpdump命令解析
  15. 基于Rasa框架搭建中文机器人对话系统
  16. Web初学-2022.10.28-11.5
  17. 计算机与游戏制作自我评价,游戏设计/开发简历中的自我评价怎么写
  18. H323plus的编译安装配置与使用:从头开始
  19. 完美解决ubuntu报错:ppa.launchpad与404 Not Found [IP: 91.189.95.85 80]
  20. 升级windows media player 到 wmp11

热门文章

  1. 如何在HTML中关闭自动换行?
  2. 生成0到9之间的随机整数
  3. The ‘state_publisher‘ executable is deprecated. Please use ‘robot_state_publisher‘ instead
  4. linux 内核参数分析,linux 内核参数VM调优 之 参数调节和场景分析
  5. 局域网ip冲突检测工具_软考网络工程师之局域网与城域网(无线局域网,网桥,VLAN)...
  6. class反编译成java_Java黑科技之源:JVMTI完全解读
  7. 快速生成CSS样式语法(HTML、CSS)
  8. 复合选择器-focus选择器(HTML、CSS)
  9. HoloLens1开发(三):Trilib插件动态加载模型-Part2
  10. 'React' must be in scope when using JSX react/react-in-jsx-scope报错: