博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot国际化开发实战
阅读量:6871 次
发布时间:2019-06-26

本文共 1873 字,大约阅读时间需要 6 分钟。

hot3.png

本章将讲解如何在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模板文件中使用:

默认会读取英文的资源文件并显示:welcome

推荐:

扫描关注我们的微信公众号,干货每天更新。

image

转载于:https://my.oschina.net/javaroad/blog/1826455

你可能感兴趣的文章
我的友情链接
查看>>
nginx + tomcat 配置,静态资源直接使用nginx
查看>>
mysql 字符截取 实列
查看>>
linux中crontable的用法 附件二
查看>>
部署mysql高可用、读写分离集群
查看>>
jquery中下拉多选插件jquery.multiSelect的使用
查看>>
梦想与现实,你会选择什么——一个电子爱好者的迷茫
查看>>
用rabbitMQ实现生产者消费者
查看>>
GRADLE遇见“设备未就绪”
查看>>
正则表达式实现——匹配括号中的A 以及 匹配非括号中的A
查看>>
golang锁sync.Mutex
查看>>
定义自己的JSTL标签库
查看>>
JAVA 相关
查看>>
drbd的问题思路记录
查看>>
学习使用 iptables
查看>>
PowerDesigner导出数据结构到word
查看>>
多线程 NSOperation
查看>>
eclipse+maven+tomcat开发整理
查看>>
FPGA设计——图像处理(Tophat形态学滤波)
查看>>
酷客多与传正公司正式达成战略合作,携手开拓澳大利亚市场!
查看>>