Locales configuration in Cldr

The locales available to ex_cldr are those in the available_locales.json file in the ex_cldr repository. Or you can see the local files in json format in the priv/cldr/locales directory.

You can also see the available locales as follows:

iex> Cldr.Config.all_locale_names()
["af", "af-NA", "agq", "ak", "am", "ar", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ",
 "ar-EG", "ar-EH", "ar-ER", "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW",
 "ar-LB", "ar-LY", "ar-MA", "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA",
 "ar-SD", "ar-SO", "ar-SS", "ar-SY", "ar-TD", "ar-TN", "ar-YE", "as", "asa",
 "ast", "az", "az-Cyrl", "az-Latn", "bas", "be", "be-tarask", "bem", "bez",
 "bg", "bm", "bn", "bn-IN", "bo", "bo-IN", ...]

If you look inside the CLDR repo in common/main/de_DE.xml file you’ll see it actually has no locale content and therefore not an available locale. As noted in the issue you raised, the locale de is already “German as spoke in Germany” and therefore de-DE isn’t populated. The same is true for en-US - in CLDR its an empty locale file because en is already “English as spoken in the US”.