getLocaleName function

String getLocaleName(
  1. String locale, {
  2. String? defaultName,
  3. bool nativeName = false,
  4. String? nativeLocale,
  5. bool preserveLatinNames = true,
})

Returns the name of a locale code.

Implementation

String getLocaleName(String locale,
    {String? defaultName,
    bool nativeName = false,
    String? nativeLocale,
    bool preserveLatinNames = true}) {
  locale = Intl.canonicalizedLocale(locale);
  var localeShort = Intl.shortLocale(locale);

  var name = _allLocales[locale];

  name ??= _allLocales[localeShort];

  if (nativeName && name != null) {
    var nameGlobal = name;

    if (nativeLocale == '*') {
      if (_nativeLocalesNames.containsKey(locale)) {
        name = _nativeLocalesNames[locale];
      }
    } else {
      if (nativeLocale == null || nativeLocale == '.') {
        nativeLocale = getCurrentLocale();
      }
      var nativeLocaleShort = Intl.shortLocale(nativeLocale);

      if (nativeLocale == locale || localeShort == nativeLocaleShort) {
        name = _nativeLocalesNames[locale];
      }
    }

    if (name != nameGlobal && !_latinLanguages.contains(localeShort)) {
      var nameShort = _allLocales[localeShort];

      name = '$name -- $nameShort';
    }
  }

  return name ?? defaultName!;
}