summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ad524da)
In addition to having a proper list of installed languages again, we now also
have replaced the "<Original>" language by "Untranslated". Contrary to my intention
back when I first implemented this, "Original" means "C" means "en_US" rather than
untranslated.
Some users have expressed desire to not translate their UI; they can do so now.
QTranslator *qtTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QtTr");
QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QuasselTr");
QTranslator *qtTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QtTr");
QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QuasselTr");
- if(!qtTranslator) {
- qtTranslator = new QTranslator(qApp);
- qtTranslator->setObjectName("QtTr");
- qApp->installTranslator(qtTranslator);
- }
- if(!quasselTranslator) {
- quasselTranslator = new QTranslator(qApp);
- quasselTranslator->setObjectName("QuasselTr");
- qApp->installTranslator(quasselTranslator);
- }
-
- QLocale::setDefault(locale);
+ if(qtTranslator)
+ qApp->removeTranslator(qtTranslator);
+ if(quasselTranslator)
+ qApp->removeTranslator(quasselTranslator);
+ // We use QLocale::C to indicate that we don't want a translation
if(locale.language() == QLocale::C)
return;
if(locale.language() == QLocale::C)
return;
+ qtTranslator = new QTranslator(qApp);
+ qtTranslator->setObjectName("QtTr");
+ qApp->installTranslator(qtTranslator);
+
+ quasselTranslator = new QTranslator(qApp);
+ quasselTranslator->setObjectName("QuasselTr");
+ qApp->installTranslator(quasselTranslator);
+
+ QLocale::setDefault(locale);
+
bool success = qtTranslator->load(QString("qt_%1").arg(locale.name()), translationDirPath());
if(!success)
qtTranslator->load(QString("qt_%1").arg(locale.name()), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
bool success = qtTranslator->load(QString("qt_%1").arg(locale.name()), translationDirPath());
if(!success)
qtTranslator->load(QString("qt_%1").arg(locale.name()), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
void AppearanceSettingsPage::initLanguageComboBox() {
QDir i18nDir(Quassel::translationDirPath(), "*.qm");
void AppearanceSettingsPage::initLanguageComboBox() {
QDir i18nDir(Quassel::translationDirPath(), "*.qm");
+ QRegExp rx("(qt_)?([a-zA-Z_]+)\\.qm");
foreach(QString translationFile, i18nDir.entryList()) {
foreach(QString translationFile, i18nDir.entryList()) {
- QString localeName(translationFile.mid(8));
- localeName.chop(3);
- QLocale locale(localeName);
+ if(!rx.exactMatch(translationFile))
+ continue;
+ if(!rx.cap(1).isEmpty())
+ continue;
+ QLocale locale(rx.cap(2));
_locales << locale;
ui.languageComboBox->addItem(QLocale::languageToString(locale.language()));
}
_locales << locale;
ui.languageComboBox->addItem(QLocale::languageToString(locale.language()));
}
void AppearanceSettingsPage::defaults() {
ui.styleComboBox->setCurrentIndex(0);
void AppearanceSettingsPage::defaults() {
ui.styleComboBox->setCurrentIndex(0);
+ ui.languageComboBox->setCurrentIndex(1);
SettingsPage::defaults();
widgetHasChanged();
SettingsPage::defaults();
widgetHasChanged();
// Language
QLocale locale = uiSettings.value("Locale", QLocale::system()).value<QLocale>();
if(locale == QLocale::system())
// Language
QLocale locale = uiSettings.value("Locale", QLocale::system()).value<QLocale>();
if(locale == QLocale::system())
- ui.languageComboBox->setCurrentIndex(0);
- else if(locale.language() == QLocale::C)
ui.languageComboBox->setCurrentIndex(1);
ui.languageComboBox->setCurrentIndex(1);
+ else if(locale.language() == QLocale::C) // we use C for "untranslated"
+ ui.languageComboBox->setCurrentIndex(0);
else
ui.languageComboBox->setCurrentIndex(ui.languageComboBox->findText(QLocale::languageToString(locale.language()), Qt::MatchExactly));
ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex());
else
ui.languageComboBox->setCurrentIndex(ui.languageComboBox->findText(QLocale::languageToString(locale.language()), Qt::MatchExactly));
ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex());
uiSettings.setValue("Style", ui.styleComboBox->currentText());
QApplication::setStyle(ui.styleComboBox->currentText());
}
uiSettings.setValue("Style", ui.styleComboBox->currentText());
QApplication::setStyle(ui.styleComboBox->currentText());
}
+ ui.styleComboBox->setProperty("storedValue", ui.styleComboBox->currentIndex());
- if(ui.languageComboBox->currentIndex() == 0) {
+ if(ui.languageComboBox->currentIndex() == 1) {
uiSettings.remove("Locale"); // force the default (QLocale::system())
uiSettings.remove("Locale"); // force the default (QLocale::system())
+ qDebug() << "removing";
} else {
uiSettings.setValue("Locale", selectedLocale());
}
} else {
uiSettings.setValue("Locale", selectedLocale());
}
+ ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex());
bool needsStyleReload =
ui.useCustomStyleSheet->isChecked() != ui.useCustomStyleSheet->property("storedValue").toBool()
bool needsStyleReload =
ui.useCustomStyleSheet->isChecked() != ui.useCustomStyleSheet->property("storedValue").toBool()
QLocale AppearanceSettingsPage::selectedLocale() const {
QLocale locale;
int index = ui.languageComboBox->currentIndex();
QLocale AppearanceSettingsPage::selectedLocale() const {
QLocale locale;
int index = ui.languageComboBox->currentIndex();
locale = QLocale::system();
locale = QLocale::system();
locale = QLocale::c();
else if(index > 1)
locale = _locales[index - 2];
locale = QLocale::c();
else if(index > 1)
locale = _locales[index - 2];
bool AppearanceSettingsPage::testHasChanged() {
if(ui.styleComboBox->currentIndex() != ui.styleComboBox->property("storedValue").toInt()) return true;
bool AppearanceSettingsPage::testHasChanged() {
if(ui.styleComboBox->currentIndex() != ui.styleComboBox->property("storedValue").toInt()) return true;
-
- if(selectedLocale() != QLocale()) return true; // QLocale() returns the default locale (manipulated via loadTranslation())
+ if(ui.languageComboBox->currentIndex() != ui.languageComboBox->property("storedValue").toInt()) return true;
if(SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true;
if(SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true;
if(SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true;
if(SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true;
</property>
<item>
<property name="text">
</property>
<item>
<property name="text">
- <string><System Default></string>
+ <string><Untranslated></string>
</property>
</item>
<item>
<property name="text">
</property>
</item>
<item>
<property name="text">
- <string><Original></string>
+ <string><System Default></string>
</property>
</item>
</widget>
</property>
</item>
</widget>