什么是通用语言环境数据存储库(CLDR)-JDK 9 [关闭]

Posted

技术标签:

【中文标题】什么是通用语言环境数据存储库(CLDR)-JDK 9 [关闭]【英文标题】:What is Common Locale Data Repository (CLDR) - JDK 9 [closed] 【发布时间】:2018-07-12 11:10:32 【问题描述】:

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

JDK 9 CLDR - 根据 JDK 文档

在 JDK 9 中,默认语言环境数据使用从 Unicode 派生的数据 联盟的通用区域设置数据存储库 (CLDR)。结果,用户 可能会发现区域敏感服务行为和/或 翻译。

谁能帮我理解这一点,让我知道它在 JDK8 Date API 中的影响。

【问题讨论】:

将“Unicode Consortium's Common Locale Data Repository (CLDR)”输入/复制到 Google 并点击第一个结果链接。 @Holger-- 不错的答案,实际上这就是我要找的。​​span> 我投了反对票,因为这个问题似乎没有得到很好的研究。 有关使用Unicode CLDR 影响的真实示例(请参阅Wikipedia),请参阅问题Java's MessageFormat Not Localizing Portuguese Months in Dates in Lowercase。 CLDR 定义了体现本地化问题的文化规范的规则,例如如何将月份的名称大写。 【参考方案1】:

CLDR (Common Locale Data Repository) 是一组由the Unicode Consortium 收集的数据,许多图书馆使用它来提供与国际化相关的数据。

它包含的东西是这样的:

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

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

JDK 历来为此维护自己的数据集。这在 Java 9 及更高版本中发生了变化,大多数 Java 实现现在默认使用 CLDR。见JEP 252: Use CLDR Locale Data by Default

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

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

【讨论】:

好答案。 CLDR 的另一个优点是它拥有丰富的亚文化变体集合,这些变体缺乏旧的 Java 特定本地化规则。【参考方案2】:

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

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

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

【讨论】:

以上是关于什么是通用语言环境数据存储库(CLDR)-JDK 9 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

CLDR 时区 xml 中英语示范城市的完整列表在哪里?

如何在 CLDR 中提交数据

5.JAVA基础回顾

jdk和java虚拟机的区别

如何将 cldrdata.jar 更新到最新版本的 CLDR (v31)?

Mongodb,Typegoose - 通用存储库模式