searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

SpringBoot应用支持国际化能力实践

2024-06-28 10:03:02
4
0

1、国际化

国际化(internationalization)也称作i18n,源于英文单词 internationalization的首末字符i和n,18为中间的字符数。由于应用发行在不同国家和地区,需要根据不同语言展示不同的提示文本。应用提供这种能力、实现这种能力的过程可称为国际化。

 

2、Spring国际化:

Spring框架通过MessageSource接口来实现国际化,允许在应用程序中通过配置文件管理多语言和本地化资源。

 

官方文档:

public interface MessageSource

Strategy interface for resolving messages, with support for the parameterization and internationalization of such messages.

Spring provides two out-of-the-box implementations for production:

· ResourceBundleMessageSource: built on top of the standard ResourceBundle, sharing its limitations.

· ReloadableResourceBundleMessageSource: highly configurable, in particular with respect to reloading message definitions.

 

 

Spring提供两种开箱即用的MessageSource实现:

ResourceBundleMessageSource

ResourceBundleMessageSource是标准实现,允许通过资源名加载国际化资源。因此可以将不同语言版本的资源存储在不同的Properties文件中,并根据对应语言加载对应的Properties文件。

 

ReloadableResourceBundleMessageSource

ReloadableResourceBundleMessageSource提供了一种运行时重载的能力,即定时刷新。允许在不重启应用程序的情况下更新资源信息。

 

 

 

 

3、SpringBoot国际化实践

3.1、创建资源文件

文件命名格式为 自定义名称_语言_国家.properties,比如messages_zh_CN记录的是中文的资源信息。

 

 

3.2、记录请求的locale信息

为了能够从网络请求中获取到地区语言信息,应用自定义约定的请求头,从头部获取对应的locale信息,从而加载对应地区语言的文本信息。

 

通过ThreadLocal缓存请求总获取的locale信息

 

通过拦截器,从请求头中,获取到locale信息

 

 

3.3、工具类封装与使用

编写MessageSource配置类

指定资源配置文件的路径

 

封装工具类,提供国际化能力

 

 

 

通过I18nMessageUtil.get(key)方法获取对应地区语言的文本信息

 

得到的返回结果类似这样:

 

0条评论
0 / 1000
1****m
3文章数
0粉丝数
1****m
3 文章 | 0 粉丝
1****m
3文章数
0粉丝数
1****m
3 文章 | 0 粉丝
原创

SpringBoot应用支持国际化能力实践

2024-06-28 10:03:02
4
0

1、国际化

国际化(internationalization)也称作i18n,源于英文单词 internationalization的首末字符i和n,18为中间的字符数。由于应用发行在不同国家和地区,需要根据不同语言展示不同的提示文本。应用提供这种能力、实现这种能力的过程可称为国际化。

 

2、Spring国际化:

Spring框架通过MessageSource接口来实现国际化,允许在应用程序中通过配置文件管理多语言和本地化资源。

 

官方文档:

public interface MessageSource

Strategy interface for resolving messages, with support for the parameterization and internationalization of such messages.

Spring provides two out-of-the-box implementations for production:

· ResourceBundleMessageSource: built on top of the standard ResourceBundle, sharing its limitations.

· ReloadableResourceBundleMessageSource: highly configurable, in particular with respect to reloading message definitions.

 

 

Spring提供两种开箱即用的MessageSource实现:

ResourceBundleMessageSource

ResourceBundleMessageSource是标准实现,允许通过资源名加载国际化资源。因此可以将不同语言版本的资源存储在不同的Properties文件中,并根据对应语言加载对应的Properties文件。

 

ReloadableResourceBundleMessageSource

ReloadableResourceBundleMessageSource提供了一种运行时重载的能力,即定时刷新。允许在不重启应用程序的情况下更新资源信息。

 

 

 

 

3、SpringBoot国际化实践

3.1、创建资源文件

文件命名格式为 自定义名称_语言_国家.properties,比如messages_zh_CN记录的是中文的资源信息。

 

 

3.2、记录请求的locale信息

为了能够从网络请求中获取到地区语言信息,应用自定义约定的请求头,从头部获取对应的locale信息,从而加载对应地区语言的文本信息。

 

通过ThreadLocal缓存请求总获取的locale信息

 

通过拦截器,从请求头中,获取到locale信息

 

 

3.3、工具类封装与使用

编写MessageSource配置类

指定资源配置文件的路径

 

封装工具类,提供国际化能力

 

 

 

通过I18nMessageUtil.get(key)方法获取对应地区语言的文本信息

 

得到的返回结果类似这样:

 

文章来自个人专栏
天翼云开发者社区
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0