Spring Boot国际化支持

简介: 本章将讲解如何在Spring Boot和Thymeleaf中做页面模板国际化的支持,根据系统语言环境或者session中的语言来自动读取不同环境中的文字。国际化自动配置Spring Boot中已经对国际化这一块做了自动配置。国际化自动配置类:org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration查看自动配置源码有以下主要几个参数:

本章将讲解如何在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来判断。

@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?lang=zh_CN进行切换。

5、通过#{}来读取资源文件

如Thymeleaf模板文件中使用:

<label th:text="#{index.welcome}"></label>

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

相关文章
|
2月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
501 17
Spring Boot 两种部署到服务器的方式
|
4月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
108 2
|
5月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
152 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
4月前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
115 2
|
5月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
135 2
|
7月前
|
Java Spring 自然语言处理
Spring 框架里竟藏着神秘魔法?国际化与本地化的奇妙之旅等你来揭开谜底!
【8月更文挑战第31天】在软件开发中,国际化(I18N)与本地化(L10N)对于满足不同地区用户需求至关重要。Spring框架提供了强大支持,利用资源文件和`MessageSource`实现多语言文本管理。通过配置日期格式和货币符号,进一步完善本地化功能。合理应用这些特性,可显著提升应用的多地区适应性和用户体验。
70 0
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的北工国际健身俱乐部的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的北工国际健身俱乐部的详细设计和实现(源码+lw+部署文档+讲解等)
|
8月前
|
存储 Java UED
Spring Boot中的国际化处理
Spring Boot中的国际化处理
|
8月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的北工国际健身俱乐部附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的北工国际健身俱乐部附带文章源码部署视频讲解等
38 0
|
9月前
|
自然语言处理 Java UED
Spring Boot中的国际化配置
Spring Boot中的国际化配置