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

标签 java java-8 localization java-9 cldr

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

JDK 9 CLDR - 根据 JDK 文档

In JDK 9, the default locale data uses data derived from the Unicode Consortium's Common Locale Data Repository (CLDR). As a result, users may see differences in locale sensitive services behavior and/or translations.

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

最佳答案

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 数据要好得多,维护更积极,而且(可能最重要的是)它有一种指定的方式来提供改进或错误报告。

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

关于java - 什么是通用区域设置数据存储库 (CLDR) - JDK 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51304126/

相关文章:

java - Eclipse 中的 ObservableList<Node> 方法引用错误

JavaFX TableView 事件只触发一次?

java - 从 Java Locale 信息中检测 AM/PM 与 24 小时时钟偏好?

spring - 如何在 freemarker 中替换本地化字符串

java - 动态添加按钮到 fingerpaint android api 演示

java - Spark Java 中的映射分区

java - 编译器不推断 System.out::println 功能接口(interface)

localization - gettext 如何处理 a/an 或 d'/de?

java - 链接组合框 JTable 单元格编辑器

java - 在 Linux (Red Hat) 中为 Tomcat 中的 Java Web 应用程序设置全局环境变量