diff --git a/src/kits/locale/Language.cpp b/src/kits/locale/Language.cpp index 8ac5661b7f..64f8e65775 100644 --- a/src/kits/locale/Language.cpp +++ b/src/kits/locale/Language.cpp @@ -6,6 +6,8 @@ #include +#include + #include #include #include @@ -135,7 +137,7 @@ BLanguage::GetName(BString* name) // TODO: This will return the language not in the current be_app_catalog, // but in the current system wide language! Don't know the exact reason. UnicodeString s; - fICULocale->getDisplayLanguage(s); + fICULocale->getDisplayName(s); BStringByteSink converter(name); s.toUTF8(converter); return B_OK; @@ -146,3 +148,10 @@ BLanguage::Code() { return fICULocale->getLanguage(); } + + +bool +BLanguage::IsCountry() +{ + return *(fICULocale->getCountry()) != '\0'; +} diff --git a/src/kits/locale/LocaleRoster.cpp b/src/kits/locale/LocaleRoster.cpp index 1bb63bf868..a1c6debffe 100644 --- a/src/kits/locale/LocaleRoster.cpp +++ b/src/kits/locale/LocaleRoster.cpp @@ -509,31 +509,14 @@ BLocaleRoster::GetInstalledLanguages(BMessage *languages) const int32 i; UnicodeString icuLanguageName; BString languageName; - std::set languageSet; -#undef REALLY_ALL_LANGUAGES -#ifdef REALLY_ALL_LANGUAGES - const char* const* icuLocaleList = Locale::getISOLanguages(); - - // Loop over the strings and add them to an std::set to remove duplicates - for (i = 0; icuLocaleList[i]; i++) { - languageSet.insert(BString(icuLocaleList[i])); - } -#else int32_t localeCount; const Locale* icuLocaleList = Locale::getAvailableLocales(localeCount); // Loop over the strings and add them to an std::set to remove duplicates for (i = 0; i < localeCount; i++) { - languageSet.insert(icuLocaleList[i].getLanguage()); - } -#endif - - std::set::const_iterator lastLang = languageSet.end(); - for (std::set::const_iterator setIterator = languageSet.begin(); - setIterator != lastLang; setIterator++) { - languages->AddString("langs", *setIterator); + languages->AddString("langs", icuLocaleList[i].getName()); } return B_OK;