Author: laplace Date: 2010-03-27 11:10:03 +0100 (Sat, 27 Mar 2010) New Revision: 35969 Changeset: http://dev.haiku-os.org/changeset/35969/haiku Modified: haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp Log: Sort languages alphabetically using collators. Modified: haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp =================================================================== --- haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp 2010-03-27 09:19:17 UTC (rev 35968) +++ haiku/trunk/src/apps/aboutsystem/AboutSystem.cpp 2010-03-27 10:10:03 UTC (rev 35969) @@ -156,6 +156,28 @@ #define kNumberOfTranslations (sizeof(gTranslations) / sizeof(Translation)) +static int +TranslationComparator(const void* left, const void* right) +{ + const Translation* leftTranslation = *(const Translation**)left; + const Translation* rightTranslation = *(const Translation**)right; + + BLanguage* language; + be_locale_roster->GetLanguage(&language, leftTranslation->languageCode); + BString leftName; + language->GetName(&leftName); + delete language; + + be_locale_roster->GetLanguage(&language, rightTranslation->languageCode); + BString rightName; + language->GetName(&rightName); + delete language; + + return be_locale->Collator()->Compare(leftName.String(), + rightName.String()); +} + + class AboutApp : public BApplication { public: AboutApp(); @@ -1014,13 +1036,20 @@ fCreditsView->SetFontAndColor(&font, B_FONT_ALL, &kHaikuOrange); fCreditsView->Insert(TR("Translations:\n")); - // TODO : sort languages alphabetically using collators BLanguage* lang; BString langName; + BList sortedTranslations; for (uint32 i = 0; i < kNumberOfTranslations; i ++) { - const Translation& translation = gTranslations[i]; + const Translation* translation = &gTranslations[i]; + sortedTranslations.AddItem((void*)translation); + } + sortedTranslations.SortItems(TranslationComparator); + for (uint32 i = 0; i < kNumberOfTranslations; i ++) { + const Translation& translation = + *(const Translation*)sortedTranslations.ItemAt(i); + be_locale_roster->GetLanguage(&lang, translation.languageCode); langName.Truncate(0); lang->GetName(&langName);