做爰网站視屏,企业管理类的网站,大数据适合什么人学,开发php网站开发转载自 Spring Boot国际化支持本章将讲解如何在Spring Boot和Thymeleaf中做页面模板国际化的支持#xff0c;根据系统语言环境或者session中的语言来自动读取不同环境中的文字。
国际化自动配置
Spring Boot中已经对国际化这一块做了自动配置。
国际化自动配置类#xff1a;o…转载自 Spring Boot国际化支持本章将讲解如何在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默认找当前系统的语言对应的资源文件如messageszhCN.properties如果为false即加载系统默认的如messages.properties文件。
国际化实战
1、国际化配置
spring:messages:fallbackToSystemLocale: falsebasename: i18n/common, i18n/login, i18n/index
2、在i18n目录下创建以下几个文件
如index.properties,indexzhCN.propertiesindex.properties作为找不到定义语言的资源文件时的默认配置文件。
创建对应的key/value如
indexzhCN.properties
index.welcome欢迎
index.properties
index.welcomewelcome
3、添加语言解析器并设置默认语言为US英文
LocaleResolver接口有许多实现如可以从session、cookie、Accept-Language header、或者一个固定的值来判断当前的语言环境下面是使用session来判断。
Bean
public 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中
Override
public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(localeChangeInterceptor());
}
然后页面通过访问指定的url?langzh_CN进行切换。
5、通过 #{}来读取资源文件
如Thymeleaf模板文件中使用
label th:text#{index.welcome}/label
默认会读取英文的资源文件并显示welcome