Spring Boot国际化支持
来源:互联网 发布:ms8.0 linux安装教程 编辑:程序博客网 时间:2024/05/21 19:10
本章将讲解如何在Spring Boot和Thymeleaf中做页面模板国际化的支持,根据系统语言环境或者session中的语言来自动读取不同环境中的文字。
国际化自动配置
Spring Boot中已经对国际化这一块做了自动配置。
国际化自动配置类:
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration
查看自动配置源码有以下主要几个参数:
private String basename = "messages";private Charset encoding = Charset.forName("UTF-8");private int cacheSeconds = -1;private boolean fallbackToSystemLocale = true;
basename
:默认的扫描的国际化文件名为messages,即在resources建立messages_xx.properties文件,可以通过逗号指定多个,如果不指定包名默认从classpath下寻找。
encoding
:默认的编码为UTF-8。
cacheSeconds
:加载国际化文件的缓存时间,单位为秒,默认为永久缓存。
fallbackToSystemLocale
:当找不到当前语言的资源文件时,如果为true默认找当前系统的语言对应的资源文件如messages_zh_CN.properties,如果为false即加载系统默认的如messages.properties文件。
国际化实战
1、国际化配置
spring: messages: fallbackToSystemLocale: false basename: i18n/common, i18n/login, i18n/index
2、在i18n目录下创建以下几个文件
如index.properties,index_zh_CN.properties,index.properties作为找不到定义语言的资源文件时的默认配置文件。
创建对应的key/value,如:
index_zh_CN.properties
index.welcome=欢迎
index.properties
index.welcome=welcome
3、添加语言解析器,并设置默认语言为US英文
LocaleResolver接口有许多实现,如可以从session、cookie、Accept-Language header、或者一个固定的值来判断当前的语言环境,下面是使用session来判断。
@Beanpublic LocaleResolver localeResolver() { SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver(); sessionLocaleResolver.setDefaultLocale(Locale.US); return sessionLocaleResolver;}
4、添加切换语言过滤器
private LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("lang"); return localeChangeInterceptor;}
添加以上过滤器并注册到spring mvc中
@Overridepublic void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor());}
然后页面通过访问指定的url?lang=zh_CN进行切换。
5、通过#{}
来读取资源文件
如Thymeleaf模板文件中使用:
<label th:text="#{index.welcome}"></label>
默认会读取英文的资源文件并显示:welcome
推荐阅读
2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案
Spring面试题(70道,史上最全)
云栖大会100位顶级大咖演讲PPT+视频全分享!
17张图揭密支付宝系统架构
【推荐】阿里双11背后的技术:不一样的技术创新,阿里巴巴技术演进与超越
- Spring Boot国际化支持
- Spring boot 实现国际化
- spring boot 国际化
- Spring 国际化支持
- spring 国际化支持
- spring国际化支持
- Spring支持国际化
- Spring国际化支持
- spring(11)------spring国际化支持
- Spring Boot国际化(i18n)
- Spring Applicationcontext的国际化支持
- Spring Applicationcontext的国际化支持
- Spring对国际化的支持
- Spring学习之国际化支持
- Spring ApplicationContext的国际化支持
- 58. Spring Boot国际化(i18n)【从零开始学Spring Boot】
- Spring 国际化的支持:Spring MVC Velocity
- 58. Spring Boot国际化(i18n)
- Intellij Idea乱码解决方案都在这里了
- Spring Boot读取配置的5种方式
- Spring Boot Tomcat配置
- Spring Boot日志集成
- Spring Boot整合Thymeleaf模板引擎
- Spring Boot国际化支持
- JAVA IO源码学习系列之ByteArrayInputStream
- 阿里巴巴,排行前10的开源项目!
- 2017最流行的IDE之争,Eclipse夺冠
- angularjs遍历集合添加值表格进行删除
- Java多线程神器:join使用及原理
- 神奇,教你用随机数打印hello world
- Java管理Cookie增删改查操作。
- Java多线程sleep和wait的区别,总结得非常好。