mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-22 02:01:08 +07:00
52de1acebf
* 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>
125 lines
6.1 KiB
C++
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;
|
|
}
|
|
}
|
|
|