diff --git a/src/Gui/DlgGeneralImp.cpp b/src/Gui/DlgGeneralImp.cpp index 6b1321ca12..80df23edae 100644 --- a/src/Gui/DlgGeneralImp.cpp +++ b/src/Gui/DlgGeneralImp.cpp @@ -144,7 +144,7 @@ void DlgGeneralImp::setNumberLocale(bool force/* = false*/) return; if (localeFormat == 0) { - Translator::instance()->setSystemLocale(); + Translator::instance()->setLocale(); // Defaults to system locale } else if (localeFormat == 1) { QByteArray current = ui->Languages->itemData(ui->Languages->currentIndex()).toByteArray(); diff --git a/src/Gui/Language/Translator.cpp b/src/Gui/Language/Translator.cpp index ec91bff293..3e40fe3341 100644 --- a/src/Gui/Language/Translator.cpp +++ b/src/Gui/Language/Translator.cpp @@ -252,26 +252,23 @@ std::string Translator::locale(const std::string& lang) const return loc; } -bool Translator::setLocale(const std::string& language) const +void Translator::setLocale(const std::string& language) const { - auto loc = QLocale::c(); //Defaulting to POSIX locale - auto bcp47 = locale(language); - if (!bcp47.empty()) - loc = QLocale(QString::fromStdString(bcp47)); + auto loc = QLocale::system(); //Defaulting to OS locale + if (language == "C" || language == "c") { + loc = QLocale::c(); + } + else { + auto bcp47 = locale(language); + if (!bcp47.empty()) + loc = QLocale(QString::fromStdString(bcp47)); + } QLocale::setDefault(loc); updateLocaleChange(); #ifdef FC_DEBUG Base::Console().Log("Locale changed to %s => %s\n", qPrintable(loc.bcp47Name()), qPrintable(loc.name())); #endif - - return (loc.language() != loc.C); -} - -void Translator::setSystemLocale() const -{ - QLocale::setDefault(QLocale::system()); - updateLocaleChange(); } void Translator::updateLocaleChange() const diff --git a/src/Gui/Language/Translator.h b/src/Gui/Language/Translator.h index 982fd15ce0..0ec3f2e516 100644 --- a/src/Gui/Language/Translator.h +++ b/src/Gui/Language/Translator.h @@ -66,9 +66,8 @@ public: std::string activeLanguage() const; /** Returns the locale (e.g. "de") to the given language name. */ std::string locale(const std::string&) const; - /** Sets default Qt locale based on given language name. Returns true if matching QLocale found**/ - bool setLocale(const std::string&) const; - void setSystemLocale() const; + /** Sets default Qt locale based on given language name **/ + void setLocale(const std::string& = "") const; /** Returns a list of supported languages. */ TStringList supportedLanguages() const; /** Returns a map of supported languages/locales. */