void GeneralSettingsPage::updateLanguageBox(QVariant language) { LanguageCollection language_map = TranslationUtil::getAvailableLanguages(); // If there is an explicit translation file, use its locale QString locale_name = TranslationUtil::localeNameForFile(translation_file); if (!locale_name.isEmpty()) { QLocale file_locale(locale_name); QString language_name = file_locale.nativeLanguageName(); if (!language_map.contains(language_name)) language_map.insert(language_name, file_locale.language()); } // Update the language box const QSignalBlocker block(language_box); language_box->clear(); for (auto it = language_map.constBegin(),end = language_map.constEnd(); it != end; ++it) language_box->addItem(it.key(), (int)it.value()); // Select current language int index = language_box->findData(language); if (index < 0) { language = QLocale::English; index = language_box->findData(language); } language_box->setCurrentIndex(index); }
void GeneralPage::updateLanguageBox() { const Settings& settings = Settings::getInstance(); const QString translation_file_key(settings.getSettingPath(Settings::General_TranslationFile)); const QString language_key(settings.getSettingPath(Settings::General_Language)); LanguageCollection language_map = TranslationUtil::getAvailableLanguages(); // Add the locale of the explicit translation file QString translation_file; if (changes.contains(translation_file_key)) translation_file = changes[translation_file_key].toString(); else translation_file = settings.getSetting(Settings::General_TranslationFile).toString(); QString locale_name = TranslationUtil::localeNameForFile(translation_file); if (!locale_name.isEmpty()) { QLocale file_locale(locale_name); QString language_name = file_locale.nativeLanguageName(); if (!language_map.contains(language_name)) language_map.insert(language_name, file_locale.language()); } // Update the language box const QSignalBlocker block(language_box); language_box->clear(); LanguageCollection::const_iterator end = language_map.constEnd(); for (LanguageCollection::const_iterator it = language_map.constBegin(); it != end; ++it) language_box->addItem(it.key(), (int)it.value()); language_box->addItem(tr("Use translation file..."), TranslationFromFile); // Select current language int index = language_box->findData(changes.contains(language_key) ? changes[language_key].toInt() : settings.getSetting(Settings::General_Language).toInt() ); if (index < 0) index = language_box->findData((int)QLocale::English); language_box->setCurrentIndex(index); }