Skip to content

JEP 252: Use CLDR Locale Data by Default | 默认使用 CLDR 区域设置数据

摘要

默认使用 Unicode Consortium 的 “通用区域数据存储库(CLDR)” 中的区域设置数据。

动机

Unicode Consortium 的通用区域数据存储库是许多平台上的事实标准区域设置数据。虽然 CLDR 区域设置数据已经从 JDK 8 开始与 JRE 捆绑在一起,但默认情况下未启用。要启用它,最终用户必须显式设置系统属性 java.locale.providers ,例如:

ini
java.locale.providers=JRE, CLDR

通过默认启用 CLDR 数据的使用,将为用户提供事实标准的区域设置数据,而无需采取任何进一步的操作。

描述

在默认隐式 LocaleProviderAdapter 首选项列表的前面插入 CLDR。

默认查找顺序将是 CLDR、COMPAT、SPI,其中 COMPAT 表示 JDK 9 中 JRE 的区域设置数据。如果某个特定提供程序无法提供所请求的区域设置数据,则搜索将继续按顺序查找下一个提供程序。对于格式化和翻译显示字符串(例如区域设置名称)的本地化模式,在某些区域设置中可能不同。为了使行为与 JDK 8 兼容,请将系统属性 java.locale.providers 设置为具有 COMPAT 在 CLDR 之前的值。

测试

对于 JDK 8 不支持的区域设置,日期、时间和数字格式化等区域敏感服务可能会有不同的行为。现有的测试和应用程序需要进行修改。

风险和假设

我们不能对来自 CLDR 的数据的有效性负责;我们假设它是 “好的数据”。