code: public static Language getLanguageForLocale(Locale locale) {
      Language language = getLanguageForLanguageNameAndCountry(locale);
      if (language != null) {
        return language;
      } else {
        Language firstFallbackLanguage = getLanguageForLanguageNameOnly(locale);
        if (firstFallbackLanguage != null) {
          return firstFallbackLanguage;
        }
      }
      for (Language aLanguage : languages) {
        if (aLanguage.getShortCodeWithCountryAndVariant().equals("en-US")) {
          return aLanguage;
        }
      }
      throw new RuntimeException("No appropriate language found, not even en-US. Supported languages: " + get());
    }
docs: Get the best match for a locale, using American English as the final fallback if nothing
  else fits. The returned language will be a country variant language (e.g. British English, not just English)
  if available.
  Note: this does not consider languages added dynamically
  @throws RuntimeException if no language was found and American English as a fallback is not available