This PR is to implement the `nonlikelyScript` feature that went into CLDR 
version 45 for migration purposes. In its release note, it states 
(https://cldr.unicode.org/index/downloads/cldr-45):

Migration
Changes to parentLocales require upgrading implementations that use that 
element. In particular, they need to support the new nonlikelyScript value, and 
use the appropriate explicit inheritance for each type of inheritance. The v44 
list of locales that inherit directly from root is retained for this release, 
but will disappear in the future. So implementations should move as quickly as 
possible to support the new value

For example in `Russian` locales fallback, its likely script is `Cyrl` 
(Cyrillic). Thus Russian locales with non-likely script, such as 'ru-Latn' 
(Russian in Latin script) should fallback directly to `root`, bypassing `ru` 
(Russian). CLDR has explicit parent locales for this nonlikely scripts, such as 
`zh-Hant` -> `root` already, but the release note suggests this will go away, 
and JDK needs to logically handle these non-likely script inheritance cases.

To implement this behavior, CLDRConverter build tool now generates the 
`LocaleDataMetaInfo` for java.base module with the new `likelyScriptMap`, which 
maps the script to its likely languages. Since the map is big, it is lazily 
initialized when needed. The map is used at runtime to determine the parent 
locale fallback based on implicit/explicit nonlikely Script inheritance.

-------------

Commit messages:
 - cleanup
 - added tests
 - static AVAILABLE_LOCALES
 - initial commit

Changes: https://git.openjdk.org/jdk/pull/19108/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19108&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8329691
  Stats: 287 lines in 5 files changed: 211 ins; 31 del; 45 mod
  Patch: https://git.openjdk.org/jdk/pull/19108.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19108/head:pull/19108

PR: https://git.openjdk.org/jdk/pull/19108

Reply via email to