[Java中实现国际化] - 配合thymeleaf实现中英文自动切换(多语言)
尚硅谷SpringBoot全集 web开发国际化 xjbo (7天,过期可以留言索取)


resources下建立文件
上到下为: 默认的,英语(美国),中文(中国)
en
login.btn=Sign In
login.password=PassWord
login.remember=Remember Me
login.tip=Please sign in
login.username=UserName
zh
login.btn=登录
login.password=密码
login.remember=记住我
login.tip=请登录
login.username=用户名
页面:
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content=""> <title>登录页面</title> <!-- Bootstrap Core CSS -->
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- MetisMenu CSS -->
<link href="/vendor/metisMenu/metisMenu.min.css" rel="stylesheet"> <!-- Custom CSS -->
<link href="/dist/css/sb-admin-2.css" rel="stylesheet"> <!-- Custom Fonts -->
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]--> </head> <body> <div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading">
<h3 class="panel-title" th:text="#{login.tip}">Please sign in</h3>
</div>
<div class="panel-body">
<form role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="UserName" name="UserName" type="text"
th:placeholder="#{login.username}" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="PassWord" name="PassWord" type="password"
th:placeholder="#{login.password}">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">[[#{login.remember}]]
</label>
</div>
<!-- Change this to a button or input when using this as a form -->
<a href="index.html" class="btn btn-lg btn-success btn-block" th:text="#{login.btn}">Login</a>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div> <!-- jQuery -->
<script src="/vendor/jquery/jquery.min.js"></script> <!-- Bootstrap Core JavaScript -->
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script> <!-- Metis Menu Plugin JavaScript -->
<script src="/vendor/metisMenu/metisMenu.min.js"></script> <!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script> </body> </html>
别忘记引入thymeleaf依赖以及配置它
pom
<!--thymeleaf依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
properties
#thymeleaf
spring.thymeleaf.prefix=/views/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.cache=false
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/** spring.messages.basename=i18n.login
spring.messages.basename=i18n.register
spring.messages.basename=i18n.other
实现点击中文/English切换语言版本
package com.tansuo365.test1.resolver; import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale; /**
* 可以在连接上携带区域信息
*/
public class MyLocaleResolver implements LocaleResolver { /**
* 解析区域信息
* @param request
* @return
*/
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取连接路径上的l后的值 l=zh_CN or en_US
String l = request.getParameter("l");
//如果没有值则使用默认语言版本
Locale locale = Locale.getDefault();
//如果有值则进行语言切换
if(!StringUtils.isEmpty(l)){
String[] split = l.split("_");
locale = new Locale(split[0],split[1]);
}
return locale;
} @Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { }
}
注入配置到bean
package com.tansuo365.test1.config; import com.tansuo365.test1.resolver.MyLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver; @Configuration
public class MyAppConfig { @Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
[Java中实现国际化] - 配合thymeleaf实现中英文自动切换(多语言)的更多相关文章
- [Java 进阶]Java中的国际化
		背景知识 现代软件开发,往往做出的应用程序不止给一个国家的人去使用.不同国家的人往往存在语言文字不通的问题.由此产生了国际化(internationalization).多语言(multi-langu ... 
- Java中的国际化
		一.什么是国际化? 国际化是指应用程序运行时,可根据客户端请求来自的国家/地区.语言的不同而显示不同的界面. 二.Java如何实现国际化? Java程序的国际化思路是将程序中的标签.提示等信息放在资源 ... 
- Java 中的国际化
		国际化 ,英文叫 internationalization 单词太长 ,又被简称为 i18n(取头取尾中间有18个字母)不经大声呼喊 ,这都行 !接着看什么是国际化 , 国际化是指让产品或是程序在无需 ... 
- 在Vue中加入国际化(i18n)中英文功能
		1.npm安装方法 npm install vue-i18n --save 2.在src资源文件下创建文件夹i18n,i18n下面创建index.js文件,引入VueI18n和导入语言包(按开发需求可 ... 
- Java中 Character方法练习:字符串中英文字母个数 5435abc54abc3AHJ5 正则:matches("[a-zA-Z0-9]{1}")
		package com.swift; public class String_Letter_Number_Test { public static void main(String[] args) { ... 
- Vue国际化处理 vue-i18n 以及项目自动切换中英文
		1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lang ... 
- JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率
		大家好,又见面了. 在JAVA做前后端分离的项目开发的时候,服务端需要提供接口文档供周边人员做接口的对接指导.越来越多的项目都在尝试使用一些基于代码自动生成接口文档的工具来替代由开发人员手动编写接口文 ... 
- 在Service Fabric上部署Java应用,体验一把微服务的自动切换
		虽然Service Fabric的Java支持版本还没有正式发布,但是Service Fabric本身的服务管理.部署.升级等功能是非常好用的,那么Java的开发者可以如何利用上Service Fab ... 
- JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容
		大家好,又见面啦. 在前一篇文档<JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率>中,我们探讨了如何通过自定义注解的方式扩展swagger的能力让Swag ... 
随机推荐
- oracle(二)V$lock 视图中ID1 , ID2 列的含义
			1.在Table Locks(TM)中 ID1为对象的id, ID2为0 在Row Locks(TX)中 ID1为Undo Segmen Number与该事务在该回滚段的事务表(Transaction ... 
- Java学习之路-RMI学习
			Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ... 
- 前端 html input标签 disable 属性
			该属性只要出现在标签中,表示禁用该控件 <!DOCTYPE html> <html lang="en"> <head> <meta cha ... 
- 1分钟了解协同过滤,pm都懂了
			版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/z50L2O08e2u4afToR9A/article/details/79565720 projec ... 
- Java-小技巧-002-String 转 long
			1.转化 long l = Long.parseLong([String]); 相当于 long l = Long.parseLong([String],10); long l = Long.valu ... 
- 多线程下载文件,ftp文件服务器
			1: 多线程下载文件 package com.li.multiplyThread; import org.apache.commons.lang3.exception.ExceptionUtils; ... 
- Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子(转载)
			1. 究竟是怎么运行的? 很多的博客里大量的讲了什么是RDD, Dependency, Shuffle.......但是究竟那些Executor是怎么运行你提交的代码段的? 下面是一个日志分析的例子, ... 
- switch语句语法
			switch case语句适用于从一组互斥的分支中选择一个执行分支. int day = 0;switch (day) { : dayName = "Sunday"; break ... 
- 20180531-Postman 常用测试结果验证及使用技巧
- 基于comet服务器推送技术(web实时聊天)
			http://www.cnblogs.com/zengqinglei/archive/2013/03/31/2991189.html Comet 也称反向 Ajax 或服务器端推技术.其思想很简单:将 ... 
