diff --git a/client/ui/controllers/settingsController.cpp b/client/ui/controllers/settingsController.cpp index f8e97a1f8..1d69315a8 100644 --- a/client/ui/controllers/settingsController.cpp +++ b/client/ui/controllers/settingsController.cpp @@ -185,8 +185,7 @@ void SettingsController::clearSettings() { m_settings->clearSettings(); m_serversModel->resetModel(); - m_languageModel->changeLanguage( - static_cast(m_languageModel->getCurrentLanguageIndex())); + m_languageModel->changeLanguage(m_languageModel->getSystemLanguageEnum()); m_sitesModel->setRouteMode(Settings::RouteMode::VpnOnlyForwardSites); m_sitesModel->toggleSplitTunneling(false); diff --git a/client/ui/models/languageModel.cpp b/client/ui/models/languageModel.cpp index 1f9fa678a..f1c9ebc23 100644 --- a/client/ui/models/languageModel.cpp +++ b/client/ui/models/languageModel.cpp @@ -101,6 +101,23 @@ QString LanguageModel::getCurrentLanguageName() return m_availableLanguages[getCurrentLanguageIndex()].name; } +LanguageSettings::AvailableLanguageEnum LanguageModel::getSystemLanguageEnum() +{ + QLocale locale = QLocale::system(); + switch (locale.language()) { + case QLocale::Russian: return LanguageSettings::AvailableLanguageEnum::Russian; + case QLocale::Chinese: return LanguageSettings::AvailableLanguageEnum::China_cn; + case QLocale::Ukrainian: return LanguageSettings::AvailableLanguageEnum::Ukrainian; + case QLocale::Persian: return LanguageSettings::AvailableLanguageEnum::Persian; + case QLocale::Arabic: return LanguageSettings::AvailableLanguageEnum::Arabic; + case QLocale::Burmese: return LanguageSettings::AvailableLanguageEnum::Burmese; + case QLocale::Urdu: return LanguageSettings::AvailableLanguageEnum::Urdu; + case QLocale::Hindi: return LanguageSettings::AvailableLanguageEnum::Hindi; + case QLocale::English: return LanguageSettings::AvailableLanguageEnum::English; + default: return LanguageSettings::AvailableLanguageEnum::English; + } +} + QString LanguageModel::getCurrentSiteUrl(const QString &path) { auto language = static_cast(getCurrentLanguageIndex()); diff --git a/client/ui/models/languageModel.h b/client/ui/models/languageModel.h index 4cd68ca69..6c3241d81 100644 --- a/client/ui/models/languageModel.h +++ b/client/ui/models/languageModel.h @@ -46,6 +46,7 @@ public: }; LanguageModel(std::shared_ptr settings, QObject *parent = nullptr); + LanguageSettings::AvailableLanguageEnum getSystemLanguageEnum(); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;