diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 43a55aa..625762b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -220,11 +220,18 @@ void MainWindow::loadLanguage(QString& rLanguage) { qDebug() << __func__ << ": currLang=" << m_currLang << " rLanguage=" << rLanguage; QString lang = rLanguage; - lang.chop(1); // remove trailing ) + + // this allows us to call this function with just a locale such as "zh" + if(lang.size() > 3) { + lang.chop(1); // remove trailing ) + } // remove everything up to and including the first ( lang = lang.remove(0, lang.indexOf("(") + 1); + // write this language (the locale shortcode) out to config file + Settings::getInstance()->set_language(lang); + // NOTE: language codes can be 2 or 3 letters // https://www.loc.gov/standards/iso639-2/php/code_list.php @@ -518,6 +525,9 @@ void MainWindow::setupSettingsModal() { //m_currLang = defaultLocale; //qDebug() << __func__ << ": changed m_currLang to " << defaultLocale; + m_currLang = Settings::getInstance()->get_language(); + qDebug() << __func__ << ": got a currLang=" << m_currLang << " from config file"; + //QString defaultLang = QLocale::languageToString(QLocale("en").language()); settings.comboBoxLanguage->addItem("English (en)"); @@ -550,7 +560,7 @@ void MainWindow::setupSettingsModal() { //settings.comboBoxLanguage->addItem(action); settings.comboBoxLanguage->addItem(lang + " (" + locale + ")"); qDebug() << __func__ << ": added lang=" << lang << " locale=" << locale << " defaultLocale=" << defaultLocale << " m_currLang=" << m_currLang; - //qDebug() << __func__ << ": " << m_currLang << " ?= " << locale; + qDebug() << __func__ << ": m_currLang=" << m_currLang << " ?= locale=" << locale; //if (defaultLocale == locale) { if (m_currLang == locale) { @@ -562,8 +572,13 @@ void MainWindow::setupSettingsModal() { settings.comboBoxLanguage->model()->sort(0,Qt::AscendingOrder); qDebug() << __func__ <<": sorted translations"; - QString lang = QLocale::languageToString(QLocale(m_currLang).language()); + //QString lang = QLocale::languageToString(QLocale(m_currLang).language()); + QString lang = QLocale(m_currLang).nativeLanguageName(); //locale.language()); + + auto first = QString(lang.at(0)).toUpper(); + lang = first + lang.right(lang.size()-1); qDebug() << __func__ << ": looking for " << lang + " (" + m_currLang + ")"; + //qDebug() << __func__ << ": looking for " << m_currLang; int lang_index = settings.comboBoxLanguage->findText(lang + " (" + m_currLang + ")", Qt::MatchExactly); qDebug() << __func__ << ": setting comboBoxLanguage index to " << lang_index; diff --git a/src/mainwindow.h b/src/mainwindow.h index c48dd62..135233f 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -74,6 +74,8 @@ public: Logger* logger; void doClose(); + // loads a language by the given language shortcode (e.g. de, en) + void loadLanguage(QString& rLanguage); protected: // this event is called, when a new translator is loaded or the system language is changed @@ -86,8 +88,6 @@ protected slots: private: void closeEvent(QCloseEvent* event); - // loads a language by the given language shortcode (e.g. de, en) - void loadLanguage(QString& rLanguage); void setupSendTab(); void setupPeersTab(); diff --git a/src/rpc.cpp b/src/rpc.cpp index 378c755..cbd7216 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -63,6 +63,12 @@ RPC::RPC(MainWindow* main) { qDebug() << __func__ << "Done settings up all timers"; usedAddresses = new QMap(); + + auto lang = Settings::getInstance()->get_language(); + qDebug() << __func__ << ": found lang="<< lang << " in config file"; + + main->loadLanguage(lang); + qDebug() << __func__ << ": setting UI to lang="<< lang << " found in config file"; } RPC::~RPC() { diff --git a/src/settings.cpp b/src/settings.cpp index eb57ff3..c408a5e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -365,6 +365,18 @@ void Settings::set_currency_name(QString currency_name) { QSettings().setValue("options/currency_name", currency_name); } +QString Settings::get_language() { + // TODO: use the default system language if none is set + auto lang = QSettings().value("options/language", "en").toString(); + qDebug() << __func__ << ": found lang=" << lang << " in config file"; + return lang; +} + +void Settings::set_language(QString lang) { + qDebug() << __func__ << ": setting lang=" << lang << " in config file"; + QSettings().setValue("options/language", lang); +} + bool Settings::removeFromHushConf(QString confLocation, QString option) { if (confLocation.isEmpty()) diff --git a/src/settings.h b/src/settings.h index d788c7d..32909d5 100644 --- a/src/settings.h +++ b/src/settings.h @@ -89,6 +89,9 @@ public: QString get_currency_name(); void set_currency_name(QString currency_name); + QString get_language(); + void set_language(QString lang); + void setUsingHushConf(QString confLocation); const QString& getHushdConfLocation() { return _confLocation; }