页面国际化

有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化!

1、配置文件编写

  1. 首先在resources资源文件下新建一个i18n目录,存放国际化配置文件
  2. 新建一个login.properties文件,还有一个login_zh_CN.properties;
  3. 新建好这些文件之后,编写配置,idea下面由另外一个视图

    这样就是配置好了
  4. 接下来我们要在application.yml中配置指定的路径(这里涉及到MessageSourceAutoConfiguration这个类)
  1. spring:
  2. messages:
  3. basename: i18n/login
  1. 配置页面国际化值
    这里我们要获取国际化的值,需要用到thymeleaf中的#{…}
  2. 实现点击按钮进行自动切换中英文
    在spring中有一个国际化的Locale(区域信息对象);里面有一个叫做LocaleResolver(获取区域信息对象)的解析器
    在AcceptHeaderLocaleResolver 这个类中有一个方法
  1. public Locale resolveLocale(HttpServletRequest request) {
  2. Locale defaultLocale = getDefaultLocale();
  3. if (defaultLocale != null && request.getHeader("Accept-Language") == null) {
  4. return defaultLocale;
  5. }
  6. Locale requestLocale = request.getLocale();
  7. List<Locale> supportedLocales = getSupportedLocales();
  8. if (supportedLocales.isEmpty() || supportedLocales.contains(requestLocale)) {
  9. return requestLocale;
  10. }
  11. Locale supportedLocale = findSupportedLocale(request, supportedLocales);
  12. if (supportedLocale != null) {
  13. return supportedLocale;
  14. }
  15. return (defaultLocale != null ? defaultLocale : requestLocale);
  16. }

这样的话,我们也可以自己去写一个自己的视图解析
首先修改一下前端页面的跳转链接

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

然后再去编写一个自己的组件类

  1. package com.example.config;
  2. import org.springframework.lang.Nullable;
  3. import org.springframework.web.servlet.LocaleResolver;
  4. import org.thymeleaf.util.StringUtils;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.util.Locale;
  8. public class MyLocaleResolver implements LocaleResolver {
  9. private Locale defaultLocale;
  10. //解析请求
  11. @Override
  12. public Locale resolveLocale(HttpServletRequest request) {
  13. //获取请求中的语言参数
  14. String l = request.getParameter("l");
  15. //默认的
  16. Locale locale = getDefaultLocale();
  17. if(!StringUtils.isEmpty(l)){
  18. //zh_CN
  19. String[] split = l.split("_");
  20. //国家,地区
  21. locale = new Locale(split[0],split[1]);
  22. }
  23. return locale;
  24. }
  25. @Override
  26. public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
  27. }
  28. public Locale getDefaultLocale() {
  29. return this.defaultLocale;
  30. }
  31. public void setDefaultLocale(@Nullable Locale defaultLocale) {
  32. this.defaultLocale = defaultLocale;
  33. }
  34. }

最后在MyMvcConfig下进行配置

  1. //激活自定义组件
  2. @Bean
  3. public LocaleResolver localeResolver(){
  4. return new MyLocaleResolver();
  5. }
  1. 运行项目测试成果!

SpringBoot03:首页国际化的更多相关文章

  1. SpringMVC实现国际化过程中所遇问题

    前言:在利用SpringMVC实现国际化的过程中,看似简单,实则还是遇到了一些小问题,现在笔者对所遇问题总结如下. 注:笔者所用的编辑器为Intellij IEDA 14.1.7版本 1.国际化资源文 ...

  2. Springboot:员工管理之国际化(十(3))

    1:IDEA编码设置UTF-8 2:创建国际化文件 i18n\login.properties #默认语言 i18n\login_en_US.properties #英文语言 i18n\login_z ...

  3. Jsp 国际化访问首页选择展示不同字体小例子

    要求:创建一个首页,默然显示英文信息,但可以让用户选择使用英文,繁体中文或简体中文. 1.编写hello_en_US.txt,内容如下: cc.openhome.welcome=welcomecc.o ...

  4. 4_3.springboot2.x之默认访问首页和国际化

    1.默认访问首页 1.引入thymeleaf和引入bootstrap <!--引入thymeleaf--> <dependency> <groupId>org.sp ...

  5. SpringBoot:扩展SpringMVC、定制首页、国际化

    目录 扩展使用SpringMVC 如何扩展SpringMVC 为何这么做会生效(原理) 全面接管SpringMVC 首页实现 页面国际化 SpringBoot扩展使用SpringMVC.使用模板引擎定 ...

  6. jeecms3.0.4版本 详解请求如何找到首页(转)

    第一步:发送http://localhost:8080/emisstrade/ 请求 第二步:首先进入配置文件web.xml, <context-param> <param-name ...

  7. ASP.NET系统国际化总结

    引言 系统要求同时支持中英文,以前对国际化这块只是听说过,从来没有自己动手过,提到国际化那么首先肯定想到的就是资源文件,也确实是这样,于是乎我从开始着手系统国际化功能时前前后后共投入了4次时间段,每次 ...

  8. Django分析之国际化处理

    最近在公司终于开始做web开发了,本以为会是简单的首页之类的小规模项目,结果上来就是一个处理大数据分析的项目,一个关于油品分析的系统,不过我接到的第一个任务是做这个网站的国际化处理,虽然项目还没有上线 ...

  9. Java SpringMVC实现国际化整合案例分析(i18n)

    所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Javaweb项目,并导入几个SpringMVC必需的 ...

  10. 详述iOS国际化

    在真正将国际化实践前,只知道通过NSLocalizedString方法将相应语言的字符串加载进来即可.但最近公司项目的新需求增加英文版本,并支持应用内无死角切换~,这才跳过各种坑实现了应用内切换语言, ...

随机推荐

  1. 支付宝 v3 验签如何实现

    上次给大家介绍了 支付宝 v3 自签名如何实现,这次顺便再把验签也写一下. 为什么要验签 说起为什么要验签,如果要详细一点解释的话,可以写很多很多...... 我们就简单一点来解释:验签可以证明接收到 ...

  2. STM32CubeMX教程4 EXTI 按键外部中断

    1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 2 ...

  3. 丝丝入扣,毫不违和,AI一键换脸和微调,基于Rope-Ruby,2024最新整合包

    AI换脸已经不是什么时新的技术了,从DeepFace到Facesweap,再到Roop.AI换脸技术中出现了一种名为"一键换脸"的方法,它不需要训练模型.这种方法利用了名为&quo ...

  4. 微信小程序本地测试报错 IllegalArgumentException

    在微信小程序本地测试时出现 IllegalArgumentException 错误,解决方法将https换成http Note: further occurrences of HTTP request ...

  5. Quartz.Net系列(八):Trigger之CalendarIntervalScheduleBuilder详解

    所有方法图 CalendarIntervalScheduleBuilder方法 在SimpleScheduleBuilder基础上实现了日.周.月.年 WithInterval:指定要生成触发器的时间 ...

  6. 牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02

    书接上回,Go lang1.18首个程序的运行犹如一声悠扬的长笛,标志着并发编程的Go lang巨轮正式开始起航.那么,在这艘巨轮之上,我们首先该做些什么呢?当然需要了解最基本的语法,那就是基础变量的 ...

  7. 神经网络基础篇:详解二分类(Binary Classification)

    二分类 注:当实现一个神经网络的时候,通常不直接使用for循环来遍历整个训练集(编程tips) 举例逻辑回归 逻辑回归是一个用于二分类(binary classification)的算法.首先从一个问 ...

  8. CNCF首个云原生多云容器编排项目Karmada正式晋级孵化

    文分享自华为云社区<CNCF首个云原生多云容器编排项目Karmada正式晋级孵化]>,作者:云容器大未来. 近日,云原生计算基金会(CNCF)宣布,CNCF技术监督委员会(TOC)已投票通 ...

  9. 从此告别写 SQL!DataLeap 帮你零门槛完成“数据探查”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在日常数据处理工作中,产品.运营.研发或数据分析师经常会面临数据量大且混乱.质量参差不齐的问题,需要花费大量时间和 ...

  10. 使用 docker-compose 部署 folkmq 消息中间件

    仓库拉取 docker-compose.yml 文件: https://github.com/noear/folkmq/tree/main/deploy version: '3.5' services ...