Browse Source

Use the default system language and render en_US as English

pull/112/head
Duke Leto 2 years ago
parent
commit
ea1b0d75b0
  1. 12
      src/mainwindow.cpp
  2. 7
      src/settings.cpp

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

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

Loading…
Cancel
Save