国际化

  • 1、编码格式
  • 2、编写配置文件
  • 3、配置国际化资源文件
  • 4、中英文切换

国际化,也就是页面可以进行中英文切换

1、编码格式

首先需要保证项目所有的编码格式都是UTF-8

2、编写配置文件

src\main\resources目录下面创建文件夹i18n,并创建下面三个配置文件,用来配置语言:

  • login.properties:无语言配置时候生效
  • login_en_US.properties:英文生效
  • login_zh_CN.properties:中文生效

命名方式是下划线的组合:文件名_语言_国家.properties

以此方式命名,IDEA会帮我们识别这是个国际化配置包,因此自动将他们合并到Resources Bundle 'login'

点击Resources Bundle可以快速配置中英文对应


配置完成之后,我们首页中所有元素的配置如下

然后打开三个配置文件的查看其中的文本内容,可以看到已经做好了全部的配置

login.properties

login.tip=请登录
login.password=密码
login.remember=记住我
login.btn=登录
login.username=用户名

login_en_US.properties

login.tip=Please sign in
login.password=password
login.remember=remember me
login.btn=login
login.username=username

login_zh_CN.properties

login.tip=请登录
login.password=密码
login.remember=记住我
login.btn=登录
login.username=用户名

3、配置国际化资源文件

怎么让我们的配置文件生效呢?在application.properties文件中添加下面这行来绑定配置文件的位置。

# 我们的配置文件的真实位置
spring.messages.basename=i18n.login

我们还需要修改index.html从而支持Thymeleaf模板引擎,Thymeleaf语法中消息表达式是用#{...}来表示,因此我们修改index.html相关代码,注意元素值的位置。

......<body class="text-center"><form class="form-signin" action="dashboard.html"><img class="mb-4" th:src="@{/img/bootstrap-solid.svg}" alt="" width="72" height="72"><h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h1><input type="text" class="form-control" th:placeholder="#{login.username}" required="" autofocus=""><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">中文</a><a class="btn btn-sm">English</a></form></body>......

重启项目,我们再访问http://localhost:8080/kuang/,可以发现我们定制的首页成中文的了

4、中英文切换

我们想要实现自定义的国际化资源生效,只需要编写一个自己的地区解析器,继承LocaleResolver接口,重写其方法即可。

com.kuang.config包下创建一个组件MyLocaleResolver.java,作为自己的国际化地区解析器。在我们自定义的地区解析器MyLocaleResolver中,需要处理点击中英文切换按钮时的带参数链接请求

package com.kuang.controller;import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;public class MyLocaleResolver implements LocaleResolver {//解析请求@Overridepublic Locale resolveLocale(HttpServletRequest httpServletRequest) {//获取请求中的语言参数String language = httpServletRequest.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;}@Overridepublic void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {}
}

然后我们需要把国际化组件MyLocaleResolver放到Spring容器中@Bean里面,也就是在com.kuang.config包下的MyMvcConfig.java中添加下面代码,就可以使我们自定义的国际化组件生效

 //自定义国际化组件生效@Beanpublic LocaleResolver localeResolver(){return new MyLocaleResolver();}

同时,index.html编写了对应的请求跳转

  • 如果点击中文按钮,则跳转到/index.html(l='zh_CN')页面
    如果点击English按钮,则跳转到/index.html(l='en_US')页面
<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>

我们重启项目,访问首页时点击中文和English按钮就可以进行中英文切换了

点击中文按钮,跳转到http://localhost:8080/kuang/index.html?l=zh_CN,显示为中文

点击English按钮,跳转到http://localhost:8080/kuang/index.html?l=en_US,显示为英文

Spring Boot开发简单网页(员工管理系统)(四):国际化相关推荐

  1. Spring Boot 开发web网页(helloworld为例)

    Spring Boot 开发入门--- helloworld web 一.使用IntellijIDEA建立第一个spring boot 项目(helloworld) 1.创建一个spring boot ...

  2. mysql员工管理系统_简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    java java8 java开发 简单的员工管理系统(Mysql+jdbc+Servlet+JSP) 员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用my ...

  3. 真的简单,单手用Spring Boot 开发一个微信小程序

    前言   嗨,大家好,现在微信使用的用户很多,作为开发人员也可以建立一个自己的微信小程序,本期与大家分享一下作者建立微信小程序的开发流程. 申请   百度搜索微信公众号平台,然后扫码登录注册一个微信公 ...

  4. 基于Spring boot的图书馆图书借阅管理系统的设计与实现

    作者主页:编程千纸鹤 作者简介:Java.前端.Python开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好处 ...

  5. 学习笔记-Spring Boot 开发 RESTful Web API(一)

    题记: 本篇是Spring Boot 开发学习系列中基础知识学习的一部分,为 RESTful Web API 相关基础知识,为实践操作奠定理论基础. REST不是一个标准,而是一种软件应用架构风格.基 ...

  6. 从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建

    从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建 本文简介 为什么使用Spring Boot 搭建怎样一个环境 开发环境 导入快速启动 ...

  7. 前后端分离 -- 深入浅出 Spring Boot + Vue + ElementUI 实现相册管理系统【文件上传 分页 】 文件上传也不过如此~

    前后端分离 – 深入浅出系列 Spring Boot + Vue + ElementUI 实现相册管理系统[文件上传 分页 ] 文件上传也不过如此~ 引言 Hello,我是Bug终结者,一名热爱后端J ...

  8. 2022 年学习 Spring Boot 开发的最佳书籍

    在我们之前的文章中,我们查看了学习 Java 编程的必读书籍我们在其中探索了一些您可以利用的资源来加快 Java 开发的速度.在此基础上,在用 vanilla Java 编写一段时间后,您将意识到组织 ...

  9. 如何使用 Spring Boot 开发邮件系统?

    本文来自作者在 GitChat 上的精彩分享<使用 Spring Boot 开发邮件系统> 1. 前言 互联网发展到现在,邮件服务已经成为互联网企业中必备功能之一,应用场景非常广泛,比较常 ...

最新文章

  1. python stm32-尝试一下使用Python来开发STM32
  2. CentOs7下lnmp环境安装
  3. 动态给div追加html代码,javascript – 动态添加/删除div到html
  4. java中方法的具体化_我为什么要关心Java没有具体化的泛型?
  5. 学习使用RIA Framework Flex创建MySQL管理UI(初学Flex实例教程)
  6. Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构
  7. PetaPoco初体验(转)
  8. 2015/8/29 Python基础(3):数值
  9. Oracle触发器4-数据库事件触发器
  10. UVa834 Continued Fractions【连分数】
  11. linux mint php mysql_Installing LAMP (Linux, Apache, MySQL and PHP) On Linux Mint
  12. iTween介绍和用法
  13. Summarization 文本摘要进展
  14. html如何设置打印分页打印出来,网页中如何用 CSS 设置打印分页符
  15. Java 设置Word页边距、页面大小、页面方向、页面边框
  16. 使用Pyqt5制作GUI界面,并使用pyinstaller打包成exe文件
  17. 图解研发团队架构、流程和绩效管理
  18. win10 ubuntu双系统安装与卸载
  19. word中如何美观插入代码?
  20. 开年后找工作,越找越迷茫?弄懂这3点,让你少奋斗10年

热门文章

  1. U盘制作启动盘之后出现了两个分区,还原成普通盘,以及U盘不能格式化的解决办法
  2. VBOX安装KALI LINUX亲测可用版
  3. PN外加电场后电场变化
  4. 前端路由模式详解(hash和history)
  5. Attempt to set a non-property-list object 报错问题
  6. Ubuntu18安装戴尔硬件管理软件 OMSA
  7. 【笔记】HDR 成像技术学习(二)
  8. 常用的DNS列表(亲测可用)
  9. 计算机运行程序时声音特别大,为什么我的电脑在运行程序的时候机箱的声音非常大?...
  10. js设计模式之观察者模式