Browse Source

Write the selected language to our config file and read it in and use it when SD starts

pull/112/head
Duke Leto 2 years ago
parent
commit
e889668d4e
  1. 21
      src/mainwindow.cpp
  2. 4
      src/mainwindow.h
  3. 6
      src/rpc.cpp
  4. 12
      src/settings.cpp
  5. 3
      src/settings.h

21
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;

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

6
src/rpc.cpp

@ -63,6 +63,12 @@ RPC::RPC(MainWindow* main) {
qDebug() << __func__ << "Done settings up all timers";
usedAddresses = new QMap<QString, bool>();
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() {

12
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())

3
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; }

Loading…
Cancel
Save