Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}