跳到主要内容

JEP 252:默认使用 CLDR 区域设置数据

概括

默认情况下,使用 Unicode 联盟的公共区域设置数据存储库 (CLDR)中的区域设置数据。

动机

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

java.locale.providers=JRE,CLDR

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

描述

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

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

测试

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

风险和假设

我们无法对来自 CLDR 的数据的有效性负责;我们假设这是“好数据”。