Some 'legacy' locales have short variants: ja_JP_JP, th_TH_TH, no_NO_NY.
These variants cannot be represented in BCP47, since variants have to be either digit+3alpha or 5-8 alphanum.
They have defined meanings that can be expressed using the locale extension.
Should we make it possible to use these legacy locales with the new APIs, or require clients to manually convert to new locales?
If we convert them, then the new APIs could treat them like their 'canonical' new forms. For example:
new Locale("ja", "JP", "JP).toLanguageTag() -> "ja-jp-u-ca-japanese"
new Locale.Builder().setLocale(new Locale("ja", "JP", "JP").create().getLocaleKeyword("ca") -> "japanese" // also, setLocale does not throw exception