跳到主要内容

JEP 252: Use CLDR Locale Data by Default

Summary

Use locale data from the Unicode Consortium's Common Locale Data Repository (CLDR) by default.

Motivation

The Unicode Consortium's Common Locale Data Repository is the de-facto standard for locale data on many platforms. Although CLDR locale data is bundled with the JRE as of JDK 8, it is not enabled by default. To turn it on, the end user must explicitly set the system property java.locale.providers, e.g.:

java.locale.providers=JRE,CLDR

By enabling the use of CLDR data by default, de-facto standard locale data will be provided to users without any further action on their part.

Description

Insert CLDR at the front of the default implicit LocaleProviderAdapter preference list.

The default lookup order will be CLDR, COMPAT, SPI, where COMPAT designates the JRE's locale data in JDK 9. If a particular provider cannot offer the requested locale data, the search will proceed to the next provider in order. Localized patterns for the formatting and translation of display strings, such as the locale name, may be different in some locales. To enable behavior compatible with JDK 8, set the system property java.locale.providers to a value with COMPAT ahead of CLDR.

Testing

Locale-sensitive services such as date, time, and number formatting may behave differently for locales not supported in JDK 8. Existing tests and applications will need to be modified.

Risks and Assumptions

We cannot be responsible for the validity of the data coming from CLDR; we assume that it is "good data".