我想了解 CLDR,因为它在 JDK-9 中得到了增强。
JDK 9 CLDR - 根据 JDK 文档
在 JDK 9 中,默认语言环境数据使用从 Unicode 联盟的通用语言环境数据存储库 (CLDR) 派生的数据。因此,用户可能会看到区域敏感服务行为和/或翻译的差异。
有人可以帮助我理解这一点,并让我知道它在 JDK8 Date API 中的影响。
我想了解 CLDR,因为它在 JDK-9 中得到了增强。
JDK 9 CLDR - 根据 JDK 文档
在 JDK 9 中,默认语言环境数据使用从 Unicode 联盟的通用语言环境数据存储库 (CLDR) 派生的数据。因此,用户可能会看到区域敏感服务行为和/或翻译的差异。
有人可以帮助我理解这一点,并让我知道它在 JDK8 Date API 中的影响。
CLDR(通用语言环境数据存储库)是由Unicode 联盟收集的一组数据,许多图书馆使用这些数据来提供与国际化相关的数据。
它包含的东西是这样的:
注意:“语言环境”基本上是“在给定地区使用的语言”。它比这更复杂一些,但这是一种很好的高级语言。例如,“en-US”代表美式英语,“de-DE”是在德国使用的德语。
JDK 历来为此维护自己的数据集。这在 Java 9 及更高版本中发生了变化,大多数 Java 实现现在默认使用 CLDR。请参阅JEP 252:默认使用 CLDR 区域设置数据。
在使用过 JDK 数据和 CLDR 数据之后,我可以说平均而言 CLDR 数据要好得多,维护得更积极,并且(可能最重要的是)它有一个指定的方式来提供改进或错误报告。
实际区别在于,某些格式的行为可能与以前略有不同,在大多数情况下更正确,但可能以意想不到的方式。这在使用非英语语言时尤其适用(这种更改对英语语言环境的影响很小)。
CLDR 封装了用于对全世界的内容进行排序和格式化的规则(例如日期和货币格式)。这是一个与 Unicode 本身密切相关的大数据集。
CLDR 旨在成为这些定义的正式、稳定的集合。
由于 CLDR 规则在某些情况下与 Java 8 及之前版本中内置的某些语言环境不同,因此它们提供了该警告。