Files
amnezia-client/client/ui/controllers/languageUiController.cpp
T
MrMirDan 52de1acebf refactoring: move tests to separate repo (#2550)
* fix: AUTOMOC and AUTOUIC added

* update: native exports test

* update: export test

* update: vless serialization/deserialization test added

* update: language model and controller test

* update: sites UiController and Model test

* update: sites test

* update: app ui model and controller test

* update: allowed dns ui model and controller test

* update: env vars and removed some lines

* update: news ui model and controller test (incomplete)

* update: api services ui model and controller test (incompleted)

* update: job for tests (Linux)

* update: job for tests (Windows)

* update: proper artifact names

* update: added envs

* update: added 'get sources' and changed steps order

* update: tests jobs remake

* update: 'get sources' step and windows shell

* update: using ctest

* search for exe files

* changed path to run tests

* update: 'Build' step

* update: changed path to deploy qt dependencies

* update: dependencies only for tests executables

* update: ctest dir

* update: include ctest

* update: set dir for tests exe

* update: qt path

* update: serialization test

* update: removed api tests from cmake

* update: changed tests dir

* added ctest to client cmake

* update: installing msvc and additional checks

* removed mcvs install

* update: path to ssh.dll

* fixed issue with ssh path

* update: removed unneccessary step and line

* update: linux job step 'Run tests'

* update: linux 'Install dependencies'

* update: modified qtest include

* update: changed QVERIFY to QVERIFY2

* update: some qverify2 messages

* update: linux additional dependencies

* update: offscreen for linux tests

* update: MacOS tests job

* update: Android tests job

* update: rewrited env's, qtest include and clear clients in some tests

* update: added local vars file for tests

* proper path for some vars

* some fixes due merge

* update: windows tests deploy

* python and conan installation to tests jobs

* chore: minor fixes after merge with dev

* chore: move selfhosted admin tests to separate folder

* refactor: some rename

* chore: fixes after merge

* refactor: moved tests to separate repo

* refactor: remove tests from core controller

* chore: add more protected getters to core controller

* chore: add more protected getters

* chore: remove ctest

* chore: return xray model default values

---------

Co-authored-by: vkamn <vk@amnezia.org>
2026-05-28 12:31:27 +08:00

125 lines
6.1 KiB
C++

#include "languageUiController.h"
LanguageUiController::LanguageUiController(SettingsController* settingsController,
LanguageModel* languageModel,
QObject *parent)
: QObject(parent),
m_settingsController(settingsController),
m_languageModel(languageModel)
{
}
void LanguageUiController::onAppLanguageChanged(const QLocale &locale)
{
emit updateTranslations(locale);
}
void LanguageUiController::changeLanguage(const LanguageSettings::AvailableLanguageEnum language)
{
QLocale locale = languageEnumToLocale(language);
m_settingsController->setAppLanguage(locale);
}
int LanguageUiController::getCurrentLanguageIndex() const
{
auto locale = m_settingsController->getAppLanguage();
switch (locale.language()) {
case QLocale::English: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::English); break;
case QLocale::Russian: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Russian); break;
case QLocale::Chinese: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::China_cn); break;
case QLocale::Ukrainian: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Ukrainian); break;
case QLocale::Persian: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Persian); break;
case QLocale::Arabic: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Arabic); break;
case QLocale::Burmese: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Burmese); break;
case QLocale::Urdu: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Urdu); break;
case QLocale::Hindi: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::Hindi); break;
default: return static_cast<int>(LanguageSettings::AvailableLanguageEnum::English); break;
}
}
int LanguageUiController::getLineHeightAppend() const
{
auto locale = m_settingsController->getAppLanguage();
switch (locale.language()) {
case QLocale::Burmese: return 10; break;
default: return 0; break;
}
}
QString LanguageUiController::getCurrentLanguageName() const
{
int index = getCurrentLanguageIndex();
return getLocalLanguageName(static_cast<LanguageSettings::AvailableLanguageEnum>(index));
}
LanguageSettings::AvailableLanguageEnum LanguageUiController::getSystemLanguageEnum() const
{
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 LanguageUiController::getCurrentSiteUrl(const QString &path) const
{
auto locale = m_settingsController->getAppLanguage();
if (locale.language() == QLocale::Russian) {
return "https://storage.googleapis.com/amnezia/amnezia.org" + (path.isEmpty() ? "" : (QString("?m-path=/%1").arg(path)));
}
return QString("https://amnezia.org") + (path.isEmpty() ? "" : (QString("/%1").arg(path)));
}
QString LanguageUiController::getCurrentDocsUrl(const QString &path) const
{
auto locale = m_settingsController->getAppLanguage();
if (locale.language() == QLocale::Russian) {
return "https://storage.googleapis.com/amnezia/docs" + (path.isEmpty() ? "" : (QString("?m-path=/%1").arg(path)));
}
return QString("https://docs.amnezia.org") + (path.isEmpty() ? "" : (QString("/%1").arg(path)));
}
QString LanguageUiController::getLocalLanguageName(const LanguageSettings::AvailableLanguageEnum language) const
{
QString strLanguage("");
switch (language) {
case LanguageSettings::AvailableLanguageEnum::English: strLanguage = "English"; break;
case LanguageSettings::AvailableLanguageEnum::Russian: strLanguage = "Русский"; break;
case LanguageSettings::AvailableLanguageEnum::Ukrainian: strLanguage = "Українська"; break;
case LanguageSettings::AvailableLanguageEnum::China_cn: strLanguage = "\347\256\200\344\275\223\344\270\255\346\226\207"; break;
case LanguageSettings::AvailableLanguageEnum::Persian: strLanguage = "فارسی"; break;
case LanguageSettings::AvailableLanguageEnum::Arabic: strLanguage = "العربية"; break;
case LanguageSettings::AvailableLanguageEnum::Burmese: strLanguage = "မြန်မာဘာသာ"; break;
case LanguageSettings::AvailableLanguageEnum::Urdu: strLanguage = "اُرْدُوْ"; break;
case LanguageSettings::AvailableLanguageEnum::Hindi: strLanguage = "हिन्दी"; break;
default: break;
}
return strLanguage;
}
QLocale LanguageUiController::languageEnumToLocale(const LanguageSettings::AvailableLanguageEnum language) const
{
switch (language) {
case LanguageSettings::AvailableLanguageEnum::English: return QLocale::English;
case LanguageSettings::AvailableLanguageEnum::Russian: return QLocale::Russian;
case LanguageSettings::AvailableLanguageEnum::China_cn: return QLocale::Chinese;
case LanguageSettings::AvailableLanguageEnum::Ukrainian: return QLocale::Ukrainian;
case LanguageSettings::AvailableLanguageEnum::Persian: return QLocale::Persian;
case LanguageSettings::AvailableLanguageEnum::Arabic: return QLocale::Arabic;
case LanguageSettings::AvailableLanguageEnum::Burmese: return QLocale::Burmese;
case LanguageSettings::AvailableLanguageEnum::Urdu: return QLocale::Urdu;
case LanguageSettings::AvailableLanguageEnum::Hindi: return QLocale::Hindi;
default: return QLocale::English;
}
}