0

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

JDK 9 CLDR - 根据 JDK 文档

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

有人可以帮助我理解这一点,并让我知道它在 JDK8 Date API 中的影响。

4

2 回答 2

4

CLDR(通用语言环境数据存储库)是由Unicode 联盟收集的一组数据,许多图书馆使用这些数据来提供与国际化相关的数据。

它包含的东西是这样的:

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

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

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

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

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

于 2018-07-12T11:20:07.463 回答
1

CLDR 封装了用于对全世界的内容进行排序和格式化的规则(例如日期和货币格式)。这是一个与 Unicode 本身密切相关的大数据集。

CLDR 旨在成为这些定义的正式、稳定的集合。

由于 CLDR 规则在某些情况下与 Java 8 及之前版本中内置的某些语言环境不同,因此它们提供了该警告。

于 2018-07-12T11:16:35.407 回答