java i18n 实现_Spring Boot i18n(国际化)实现

1. 场景需求

首先,我们要清楚理解自己的需求。在服务国际化场景中一般有两种类型的需求:

产品是 web 项目,在浏览器中访问时能够支持多语言。

服务输出 Api,需要返回的数据支持多语言。

2. 实现原理

i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称

首先我们了解一下 java.util.Locale 类,这是 java 中专门适用于国际化的一个类。代表了一个特定的地理、政治和文化地区。

一般用语言_地区(如 zh-CN 表示中文,中国大陆) 可以确定一个特定类型的本地化信息。

Locale 的获取,会通过请求头中 Accept-Language 的字段来得到的。Accept-Language 表示请求者(如浏览器)期望接收的语言。

Accept-Language: en-US,en;q=0.5 // 英文,美国;q 表示期望值

当请求头中 Accept-Language 字段为空时 locale 的则回获取一个默认值,下面会有介绍 Locale 如何通过代码来获取。

Locale 类中部分属性有很多已知的国家常量。

/** Useful constant for language.

*/

static public final Locale JAPANESE = createConstant("ja", "");

/** Useful constant for language.

*/

static public final Locale SIMPLIFIED_CHINESE = createConstant("zh", "CN");

注意事项:

在配置 zh-CN 资源文件,即中文时,需要 idea 设置中勾选如下配置,不然会出现乱码问题。

6548a2cccc9fdcec4d383524b6347cb9.png

3. 实现步骤

在 resources 目录下添加多语言配置文件。

国际化资源文件,前缀相同时自动生成 Resource Bundle 'messages'

5c60e6ba9bddbf95a90edcc92f6e4531.png

例 messagesenUS.properties 文件中

10000 = system error!

10001 = information empty!

10000 是 key 值,"system error!" 是 value 值。在其他文件中 key = 相应的语言翻译。

配置解析器,用于收集资源文件并提取属性。

这里可能会有多种实现方式,笔者这里只介绍常用的一种方案。

利用 spring 自动注入资源读取配置类

@Configuration

public class I18nCon

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值