From b16ae3a9ee87291e53cff469d4bb8c7bcb52a8c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Mon, 20 Oct 2025 21:29:59 +0200 Subject: [PATCH] Add language setting --- libXISF | 2 +- src/main.cpp | 16 ++++++++++++++-- src/settingsdialog.cpp | 30 +++++++++++++++++++++++++++++- src/settingsdialog.h | 1 + 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/libXISF b/libXISF index 556bb22..2e74d94 160000 --- a/libXISF +++ b/libXISF @@ -1 +1 @@ -Subproject commit 556bb22d2675ee6072c6224fef3da0fb5d93db41 +Subproject commit 2e74d94641acef44f1ce9d374c96114838bf8ae4 diff --git a/src/main.cpp b/src/main.cpp index 285ce33..af42213 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "../thumbnailer/genthumbnail.h" @@ -76,8 +77,19 @@ int main(int argc, char *argv[]) QTranslator translator; QTranslator translator2; - if(translator.load(QLocale(), "tenmon", "_", ":/translations")) - a.installTranslator(&translator); + QSettings settings; + QString lang = settings.value("settings/lang").toString(); + if(lang.isEmpty()) + { + if(translator.load(QLocale(), "tenmon", "_", ":/translations")) + a.installTranslator(&translator); + } + else + { + if(translator.load("tenmon_" + lang, ":/translations")) + a.installTranslator(&translator); + } + if(translator2.load(QLocale(), "tenmon", "_", a.applicationDirPath())) a.installTranslator(&translator2); diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 89c1efd..ea31c85 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -129,11 +129,30 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) delete item; }); + m_lang = new QComboBox(this); + m_lang->addItems({"English", "Français", "Slovenčina", "Português"}); + QString lang; + switch(QLocale().language()) + { + default: + case QLocale::English: lang = "en"; break; + case QLocale::French: lang = "fr"; break; + case QLocale::Slovak: lang = "sk"; break; + case QLocale::Portuguese: lang = "pt_BR"; break; + } + + lang = settings.value("settings/lang", lang).toString(); + if(lang == "en")m_lang->setCurrentIndex(0); + else if(lang == "fr")m_lang->setCurrentIndex(1); + else if(lang == "sk")m_lang->setCurrentIndex(2); + else if(lang == "pt_BR")m_lang->setCurrentIndex(3); + layout->addRow(tr("Image preload count"), m_preloadImages); layout->addRow(tr("Thumbnails size"), m_thumSize); layout->addRow(tr("Saturation"), m_saturation); layout->addRow(tr("Slideshow interval"), m_slideShowTime); layout->addRow(tr("Image interpolation"), m_filtering); + layout->addRow(tr("Language"), m_lang); layout->addRow(m_qualityThumbnail); layout->addRow(m_useNativeDialog); layout->addRow(m_bestFit); @@ -150,7 +169,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) #endif //layout->addRow(new QLabel(tr("Changes in settings will take effect after program restart."))); - QDialogButtonBox *buttonBox = new QDialogButtonBox(this); buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); @@ -237,4 +255,14 @@ void SettingsDialog::saveSettings() } settings.setValue("settings/headerhighlightkeywords", headerHighlight.keys()); settings.setValue("settings/headerhighlightcolors", colors); + QString lang; + int langIdx = m_lang->currentIndex(); + switch(langIdx) + { + case 0: lang = "en"; break; + case 1: lang = "fr"; break; + case 2: lang = "sk"; break; + case 3: lang = "pt_BR"; break; + } + settings.setValue("settings/lang", lang); } diff --git a/src/settingsdialog.h b/src/settingsdialog.h index dd7aeaa..23acc4f 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -32,6 +32,7 @@ private: QListWidget *m_headerHighlight; QColor m_color = Qt::yellow; QLineEdit *m_keyword; + QComboBox *m_lang; }; #endif // SETTINGSDIALOG_H