什么是通用区域设置数据存储库 (CLDR) - JDK 9

Jok*_*ker 2 java localization java-8 java-9 cldr

我想了解 CLDR,因为它在 JDK-9 中得到了增强。

JDK 9 CLDR - 根据 JDK 文档

在 JDK 9 中,默认区域设置数据使用从 Unicode 联盟的公共区域设置数据存储库 (CLDR) 派生的数据。因此,用户可能会看到区域设置敏感服务行为和/或翻译的差异。

有人可以帮助我理解这一点并让我知道它在 JDK8 Date API 中的作用是什么吗?

Joa*_*uer 7

CLDR (通用区域设置数据存储库)是Unicode 联盟收集的一组数据,许多图书馆使用它来提供与国际化相关的数据。

它包含的内容如下:

  • 有关在给定区域设置中如何格式化日期/时间的信息。
  • 有关在给定区域设置中如何进行文本排序(排序规则)的信息
  • 有关数字在给定区域设置中如何表示的信息
  • 货币、单位和地理区域的名称
  • ...

注意:“语言环境”基本上是“给定地区使用的语言”。它比这更复杂一些,但这是一种很好的高级语言。例如,“en-US”代表美式英语,“de-DE”代表德国所说的德语。

JDK 传统上为此维护自己的数据集。这种情况在 Java 9 及更高版本中发生了变化,大多数 Java 实现现在默认使用 CLDR。请参阅JEP 252:默认使用 CLDR 区域设置数据

在使用过 JDK 数据和 CLDR 数据后,我可以说,平均而言 CLDR 数据要好得多,维护更积极,并且(可能最重要的是)它有一个指定的方式来提供改进或错误报告。

实际的区别在于,某些格式的行为可能与以前略有不同,在大多数情况下更正确,但可能以意想不到的方式。这在使用非英语语言时尤其适用(此类更改对英语语言环境的影响相当小)。