Gui: Default Translator::SetLocale to OS locale + simplify code

This commit is contained in:
0penBrain
2022-03-28 19:15:04 +02:00
committed by wwmayer
parent ec3c905b6b
commit c22d37a82c
3 changed files with 13 additions and 17 deletions

View File

@@ -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();

View File

@@ -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

View File

@@ -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. */