From ea1b0d75b0307570ac7e6e0e0d1c62895df9f645 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 28 Nov 2021 23:35:36 -0500 Subject: [PATCH] Use the default system language and render en_US as English --- src/mainwindow.cpp | 12 +++++++++++- src/settings.cpp | 7 +++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 625762b..1b81c62 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -222,7 +222,7 @@ void MainWindow::loadLanguage(QString& rLanguage) { QString lang = rLanguage; // this allows us to call this function with just a locale such as "zh" - if(lang.size() > 3) { + if(lang.right(1) == ")") { lang.chop(1); // remove trailing ) } @@ -251,6 +251,9 @@ void MainWindow::loadLanguage(QString& rLanguage) { // TODO: this likely wont work for RTL languages like Arabic auto first = QString(languageName.at(0)).toUpper(); languageName = first + languageName.right(languageName.size()-1); + if( lang == "en" ) { + languageName.replace("American ",""); + } ui->statusBar->showMessage(tr("Language changed to") + " " + languageName + " (" + lang + ")"); } } @@ -577,6 +580,13 @@ void MainWindow::setupSettingsModal() { auto first = QString(lang.at(0)).toUpper(); lang = first + lang.right(lang.size()-1); + + if (m_currLang == "en") { + // we have just 1 English translation + // en_US will render as "American English", so fix that + lang.replace("American ",""); + } + qDebug() << __func__ << ": looking for " << lang + " (" + m_currLang + ")"; //qDebug() << __func__ << ": looking for " << m_currLang; int lang_index = settings.comboBoxLanguage->findText(lang + " (" + m_currLang + ")", Qt::MatchExactly); diff --git a/src/settings.cpp b/src/settings.cpp index c408a5e..95f2fba 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -366,8 +366,11 @@ void Settings::set_currency_name(QString currency_name) { } QString Settings::get_language() { - // TODO: use the default system language if none is set - auto lang = QSettings().value("options/language", "en").toString(); + // use the default system language if none is set + QString locale = QLocale::system().name(); + // remove country data, i.e. en_US => en + locale.truncate( locale.lastIndexOf("_")); + auto lang = QSettings().value("options/language", locale).toString(); qDebug() << __func__ << ": found lang=" << lang << " in config file"; return lang; }