From 929d341826f3813c00576767dba82289a1f5bdbf Mon Sep 17 00:00:00 2001 From: Syping Date: Fri, 29 Jan 2021 19:46:01 +0100 Subject: [PATCH] code cleanup, remove first start prompt --- AppEnv.cpp | 237 +++++++++++------------------------ AppEnv.h | 4 +- DatabaseThread.cpp | 84 +++++-------- GlobalString.cpp | 15 +-- TranslationClass.cpp | 284 ++++++++++++++++-------------------------- main.cpp | 69 ++++------ res/gta5sync.ts | 16 +-- res/gta5sync_de.qm | Bin 49237 -> 48982 bytes res/gta5sync_de.ts | 11 +- res/gta5sync_en_US.ts | 16 +-- res/gta5sync_fr.qm | Bin 47995 -> 47732 bytes res/gta5sync_fr.ts | 11 +- res/gta5sync_ko.qm | Bin 38868 -> 38653 bytes res/gta5sync_ko.ts | 11 +- res/gta5sync_ru.qm | Bin 47364 -> 47087 bytes res/gta5sync_ru.ts | 11 +- res/gta5sync_uk.qm | Bin 48612 -> 48345 bytes res/gta5sync_uk.ts | 11 +- res/gta5sync_zh_TW.qm | Bin 36212 -> 36031 bytes res/gta5sync_zh_TW.ts | 11 +- 20 files changed, 279 insertions(+), 512 deletions(-) diff --git a/AppEnv.cpp b/AppEnv.cpp index bee9b28..8d118cd 100644 --- a/AppEnv.cpp +++ b/AppEnv.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2020 Syping +* Copyright (C) 2016-2021 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,12 +33,8 @@ #include #endif -#include -using namespace std; - AppEnv::AppEnv() { - } // Build Stuff @@ -59,12 +55,11 @@ QString AppEnv::getGameFolder(bool *ok) { QDir dir; QString GTAV_FOLDER = QString::fromUtf8(qgetenv("GTAV_FOLDER")); - if (GTAV_FOLDER != "") - { + if (GTAV_FOLDER != "") { dir.setPath(GTAV_FOLDER); - if (dir.exists()) - { - if (ok != NULL) *ok = true; + if (dir.exists()) { + if (ok != NULL) + *ok = true; qputenv("GTAV_FOLDER", dir.absolutePath().toUtf8()); return dir.absolutePath(); } @@ -79,46 +74,44 @@ QString AppEnv::getGameFolder(bool *ok) GTAV_returnFolder = settings.value("dir", GTAV_defaultFolder).toString(); settings.endGroup(); - if (forceDir) - { + if (forceDir) { dir.setPath(GTAV_returnFolder); - if (dir.exists()) - { - if (ok != 0) *ok = true; + if (dir.exists()) { + if (ok != 0) + *ok = true; qputenv("GTAV_FOLDER", dir.absolutePath().toUtf8()); return dir.absolutePath(); } } dir.setPath(GTAV_defaultFolder); - if (dir.exists()) - { - if (ok != 0) *ok = true; + if (dir.exists()) { + if (ok != 0) + *ok = true; qputenv("GTAV_FOLDER", dir.absolutePath().toUtf8()); return dir.absolutePath(); } - if (!forceDir) - { + if (!forceDir) { dir.setPath(GTAV_returnFolder); - if (dir.exists()) - { - if (ok != 0) *ok = true; + if (dir.exists()) { + if (ok != 0) + *ok = true; qputenv("GTAV_FOLDER", dir.absolutePath().toUtf8()); return dir.absolutePath(); } } - if (ok != 0) *ok = false; - return ""; + if (ok != 0) + *ok = false; + return QString(); } bool AppEnv::setGameFolder(QString gameFolder) { QDir dir; dir.setPath(gameFolder); - if (dir.exists()) - { + if (dir.exists()) { qputenv("GTAV_FOLDER", dir.absolutePath().toUtf8()); return true; } @@ -160,24 +153,19 @@ QByteArray AppEnv::getUserAgent() #ifdef Q_OS_WIN QString kernelVersion = QSysInfo::kernelVersion(); const QStringList &kernelVersionList = kernelVersion.split("."); - if (kernelVersionList.length() > 2) - { + if (kernelVersionList.length() > 2) { kernelVersion = kernelVersionList.at(0) % "." % kernelVersionList.at(1); } QString runArch = QSysInfo::buildCpuArchitecture(); - if (runArch == "x86_64") - { + if (runArch == "x86_64") { runArch = "Win64; x64"; } - else if (runArch == "i686") - { + else if (runArch == "i686") { const QString &curArch = QSysInfo::currentCpuArchitecture(); - if (curArch == "x86_64") - { + if (curArch == "x86_64") { runArch = "WOW64"; } - else if (curArch == "i686") - { + else if (curArch == "i686") { runArch = "Win32; x86"; } } @@ -190,11 +178,6 @@ QByteArray AppEnv::getUserAgent() #endif } -// QUrl AppEnv::getCrewFetchingUrl(QString crewID) -// { -// return QUrl(QString("https://socialclub.rockstargames.com/reference/crewfeed/%1").arg(crewID)); -// } - QUrl AppEnv::getCrewFetchingUrl(QString crewID) { return QUrl(QString("https://socialclub.rockstargames.com/crew/%1/%1").arg(crewID)); @@ -223,8 +206,7 @@ GameVersion AppEnv::getGameVersion() QString installFolderSc = registrySettingsSc.value("InstallFolder", "").toString(); QDir installFolderScDir(installFolderSc); bool scVersionInstalled = false; - if (!installFolderSc.isEmpty() && installFolderScDir.exists()) - { + if (!installFolderSc.isEmpty() && installFolderScDir.exists()) { #ifdef GTA5SYNC_DEBUG qDebug() << "gameVersionFoundSocialClubVersion"; #endif @@ -233,34 +215,28 @@ GameVersion AppEnv::getGameVersion() QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\GTAV").arg(argumentValue), QSettings::NativeFormat); QString installFolderSteam = registrySettingsSteam.value("installfoldersteam", "").toString(); - if (installFolderSteam.right(5) == "\\GTAV") - { + if (installFolderSteam.right(5) == "\\GTAV") { installFolderSteam = installFolderSteam.remove(installFolderSteam.length() - 5, 5); } QDir installFolderSteamDir(installFolderSteam); bool steamVersionInstalled = false; - if (!installFolderSteam.isEmpty() && installFolderSteamDir.exists()) - { + if (!installFolderSteam.isEmpty() && installFolderSteamDir.exists()) { #ifdef GTA5SYNC_DEBUG qDebug() << "gameVersionFoundSteamVersion"; #endif steamVersionInstalled = true; } - if (scVersionInstalled && steamVersionInstalled) - { + if (scVersionInstalled && steamVersionInstalled) { return GameVersion::BothVersions; } - else if (scVersionInstalled) - { + else if (scVersionInstalled) { return GameVersion::SocialClubVersion; } - else if (steamVersionInstalled) - { + else if (steamVersionInstalled) { return GameVersion::SteamVersion; } - else - { + else { return GameVersion::NoVersion; } #else @@ -270,8 +246,7 @@ GameVersion AppEnv::getGameVersion() GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion) { - if (gameVersion == GameVersion::SocialClubVersion) - { + if (gameVersion == GameVersion::SocialClubVersion) { #ifdef Q_OS_WIN QString argumentValue; #ifdef _WIN64 @@ -284,8 +259,7 @@ GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion) return GameLanguage::Undefined; #endif } - else if (gameVersion == GameVersion::SteamVersion) - { + else if (gameVersion == GameVersion::SteamVersion) { #ifdef Q_OS_WIN QString argumentValue; #ifdef _WIN64 @@ -298,128 +272,81 @@ GameLanguage AppEnv::getGameLanguage(GameVersion gameVersion) return GameLanguage::Undefined; #endif } - else - { - return GameLanguage::Undefined; - } + return GameLanguage::Undefined; } GameLanguage AppEnv::gameLanguageFromString(QString gameLanguage) { - if (gameLanguage == "en-US") - { + if (gameLanguage == "en-US") { return GameLanguage::English; } - else if (gameLanguage == "fr-FR") - { + else if (gameLanguage == "fr-FR") { return GameLanguage::French; } - else if (gameLanguage == "it-IT") - { + else if (gameLanguage == "it-IT") { return GameLanguage::Italian; } - else if (gameLanguage == "de-DE") - { + else if (gameLanguage == "de-DE") { return GameLanguage::German; } - else if (gameLanguage == "es-ES") - { + else if (gameLanguage == "es-ES") { return GameLanguage::Spanish; } - else if (gameLanguage == "es-MX") - { + else if (gameLanguage == "es-MX") { return GameLanguage::Mexican; } - else if (gameLanguage == "pt-BR") - { + else if (gameLanguage == "pt-BR") { return GameLanguage::Brasilian; } - else if (gameLanguage == "ru-RU") - { + else if (gameLanguage == "ru-RU") { return GameLanguage::Russian; } - else if (gameLanguage == "pl-PL") - { + else if (gameLanguage == "pl-PL") { return GameLanguage::Polish; } - else if (gameLanguage == "ja-JP") - { + else if (gameLanguage == "ja-JP") { return GameLanguage::Japanese; } - else if (gameLanguage == "zh-CHS") - { + else if (gameLanguage == "zh-CHS") { return GameLanguage::SChinese; } - else if (gameLanguage == "zh-CHT") - { + else if (gameLanguage == "zh-CHT") { return GameLanguage::TChinese; } - else if (gameLanguage == "ko-KR") - { - return GameLanguage::Koreana; - } - else - { - return GameLanguage::Undefined; + else if (gameLanguage == "ko-KR") { + return GameLanguage::Korean; } + return GameLanguage::Undefined; } QString AppEnv::gameLanguageToString(GameLanguage gameLanguage) { - if (gameLanguage == GameLanguage::English) - { + switch (gameLanguage) { + case GameLanguage::English: return "en-US"; - } - else if (gameLanguage == GameLanguage::French) - { + case GameLanguage::French: return "fr-FR"; - } - else if (gameLanguage == GameLanguage::Italian) - { + case GameLanguage::Italian: return "it-IT"; - } - else if (gameLanguage == GameLanguage::German) - { + case GameLanguage::German: return "de-DE"; - } - else if (gameLanguage == GameLanguage::Spanish) - { + case GameLanguage::Spanish: return "es-ES"; - } - else if (gameLanguage == GameLanguage::Mexican) - { + case GameLanguage::Mexican: return "es-MX"; - } - else if (gameLanguage == GameLanguage::Brasilian) - { + case GameLanguage::Brasilian: return "pt-BR"; - } - else if (gameLanguage == GameLanguage::Russian) - { - return "ru-RU"; - } - else if (gameLanguage == GameLanguage::Polish) - { + case GameLanguage::Polish: return "pl-PL"; - } - else if (gameLanguage == GameLanguage::Japanese) - { + case GameLanguage::Japanese: return "ja-JP"; - } - else if (gameLanguage == GameLanguage::SChinese) - { + case GameLanguage::SChinese: return "zh-CHS"; - } - else if (gameLanguage == GameLanguage::TChinese) - { + case GameLanguage::TChinese: return "zh-CHT"; - } - else if (gameLanguage == GameLanguage::Koreana) - { + case GameLanguage::Korean: return "ko-KR"; - } - else - { + default: return "Undefinied"; } } @@ -428,67 +355,55 @@ bool AppEnv::setGameLanguage(GameVersion gameVersion, GameLanguage gameLanguage) { bool socialClubVersion = false; bool steamVersion = false; - if (gameVersion == GameVersion::SocialClubVersion) - { + if (gameVersion == GameVersion::SocialClubVersion) { socialClubVersion = true; } - else if (gameVersion == GameVersion::SteamVersion) - { + else if (gameVersion == GameVersion::SteamVersion) { steamVersion = true; } - else if (gameVersion == GameVersion::BothVersions) - { + else if (gameVersion == GameVersion::BothVersions) { socialClubVersion = true; steamVersion = true; } - else - { + else { return false; } - if (socialClubVersion) - { + if (socialClubVersion) { #ifdef Q_OS_WIN QString argumentValue; #ifdef _WIN64 argumentValue = "\\WOW6432Node"; #endif QSettings registrySettingsSc(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V").arg(argumentValue), QSettings::NativeFormat); - if (gameLanguage != GameLanguage::Undefined) - { + if (gameLanguage != GameLanguage::Undefined) { registrySettingsSc.setValue("Language", gameLanguageToString(gameLanguage)); } - else - { + else { registrySettingsSc.remove("Language"); } registrySettingsSc.sync(); - if (registrySettingsSc.status() != QSettings::NoError) - { + if (registrySettingsSc.status() != QSettings::NoError) { return false; } #else Q_UNUSED(gameLanguage) #endif } - if (steamVersion) - { + if (steamVersion) { #ifdef Q_OS_WIN QString argumentValue; #ifdef _WIN64 argumentValue = "\\WOW6432Node"; #endif QSettings registrySettingsSteam(QString("HKEY_LOCAL_MACHINE\\SOFTWARE%1\\Rockstar Games\\Grand Theft Auto V Steam").arg(argumentValue), QSettings::NativeFormat); - if (gameLanguage != GameLanguage::Undefined) - { + if (gameLanguage != GameLanguage::Undefined) { registrySettingsSteam.setValue("Language", gameLanguageToString(gameLanguage)); } - else - { + else { registrySettingsSteam.remove("Language"); } registrySettingsSteam.sync(); - if (registrySettingsSteam.status() != QSettings::NoError) - { + if (registrySettingsSteam.status() != QSettings::NoError) { return false; } #else diff --git a/AppEnv.h b/AppEnv.h index 1575e09..202d5fb 100644 --- a/AppEnv.h +++ b/AppEnv.h @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2018 Syping +* Copyright (C) 2016-2021 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ #include enum class GameVersion : int { NoVersion = 0, SocialClubVersion = 1, SteamVersion = 2, BothVersions = 3 }; -enum class GameLanguage : int { Undefined = 0, English = 1, French = 2, Italian = 3, German = 4, Spanish = 5, Mexican = 6, Brasilian = 7, Russian = 8, Polish = 9, Japanese = 10, SChinese = 11, TChinese = 12, Koreana = 13 }; +enum class GameLanguage : int { Undefined = 0, English = 1, French = 2, Italian = 3, German = 4, Spanish = 5, Mexican = 6, Brasilian = 7, Russian = 8, Polish = 9, Japanese = 10, SChinese = 11, TChinese = 12, Korean = 13 }; class AppEnv { diff --git a/DatabaseThread.cpp b/DatabaseThread.cpp index 1d0e45b..9173eac 100644 --- a/DatabaseThread.cpp +++ b/DatabaseThread.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2020 Syping +* Copyright (C) 2016-2021 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,8 +46,7 @@ void DatabaseThread::run() QObject::connect(this, SIGNAL(threadTerminated()), &threadLoop, SLOT(quit())); - while (threadRunning) - { + while (threadRunning) { QTimer::singleShot(300000, &threadLoop, SLOT(quit())); threadLoop.exec(); } @@ -55,10 +54,8 @@ void DatabaseThread::run() void DatabaseThread::scanCrewReference(const QStringList &crewList, const int &requestDelay) { - for (QString crewID : crewList) - { - if (threadRunning && crewID != QLatin1String("0")) - { + for (const QString &crewID : crewList) { + if (threadRunning && crewID != QLatin1String("0")) { QNetworkAccessManager *netManager = new QNetworkAccessManager(); QNetworkRequest netRequest(AppEnv::getCrewFetchingUrl(crewID)); #if QT_VERSION >= 0x050600 @@ -76,40 +73,36 @@ void DatabaseThread::scanCrewReference(const QStringList &crewList, const int &r QEventLoop *downloadLoop = new QEventLoop(); QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); - if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), downloadLoop, SLOT(quit())); } + if (!continueLastCrew) + QObject::connect(this, SIGNAL(threadTerminated()), downloadLoop, SLOT(quit())); QTimer::singleShot(30000, downloadLoop, SLOT(quit())); downloadLoop->exec(); downloadLoop->disconnect(); delete downloadLoop; - if (netReply->isFinished()) - { + if (netReply->isFinished()) { QString crewName; QByteArray crewHtml = netReply->readAll(); QStringList crewHtmlSplit1 = QString::fromUtf8(crewHtml).split("Rockstar Games Social Club - Crew : "); - if (crewHtmlSplit1.length() >= 2) - { + if (crewHtmlSplit1.length() >= 2) { QStringList crewHtmlSplit2 = QString(crewHtmlSplit1.at(1)).split(""); - if (crewHtmlSplit2.length() >= 1) - { + if (crewHtmlSplit2.length() >= 1) { crewName = crewHtmlSplit2.at(0); } } - if (!crewName.isEmpty()) - { + if (!crewName.isEmpty()) { emit crewNameFound(crewID.toInt(), crewName); } } - else - { + else { netReply->abort(); } - if (threadRunning) - { + if (threadRunning) { QEventLoop *waitingLoop = new QEventLoop(); QTimer::singleShot(requestDelay, waitingLoop, SLOT(quit())); - if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), waitingLoop, SLOT(quit())); } + if (!continueLastCrew) + QObject::connect(this, SIGNAL(threadTerminated()), waitingLoop, SLOT(quit())); waitingLoop->exec(); waitingLoop->disconnect(); delete waitingLoop; @@ -123,17 +116,14 @@ void DatabaseThread::scanCrewReference(const QStringList &crewList, const int &r void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int &maxPages, const int &requestDelay) { - for (QString crewID : crewList) - { - if (threadRunning && crewID != QLatin1String("0")) - { + for (const QString &crewID : crewList) { + if (threadRunning && crewID != QLatin1String("0")) { int currentFail = 0; int currentPage = 0; int foundPlayers = 0; int totalPlayers = 1000; - while(foundPlayers < totalPlayers && currentPage < maxPages && (continueLastCrew ? true : threadRunning)) - { + while(foundPlayers < totalPlayers && currentPage < maxPages && (continueLastCrew ? true : threadRunning)) { QNetworkAccessManager *netManager = new QNetworkAccessManager(); QNetworkRequest netRequest(AppEnv::getPlayerFetchingUrl(crewID, currentPage)); #if QT_VERSION >= 0x050600 @@ -151,14 +141,14 @@ void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int QEventLoop *downloadLoop = new QEventLoop(); QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); - if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), downloadLoop, SLOT(quit())); } + if (!continueLastCrew) + QObject::connect(this, SIGNAL(threadTerminated()), downloadLoop, SLOT(quit())); QTimer::singleShot(30000, downloadLoop, SLOT(quit())); downloadLoop->exec(); downloadLoop->disconnect(); delete downloadLoop; - if (netReply->isFinished()) - { + if (netReply->isFinished()) { QByteArray crewJson = netReply->readAll(); QJsonDocument crewDocument = QJsonDocument::fromJson(crewJson); QJsonObject crewObject = crewDocument.object(); @@ -166,32 +156,25 @@ void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int if (crewMap.contains("Total")) { totalPlayers = crewMap["Total"].toInt(); } - if (crewMap.contains("Members")) - { + if (crewMap.contains("Members")) { const QList memberList = crewMap["Members"].toList(); - for (QVariant memberVariant : memberList) - { + for (const QVariant &memberVariant : memberList) { QMap memberMap = memberVariant.toMap(); - if (memberMap.contains("RockstarId") && memberMap.contains("Name")) - { + if (memberMap.contains("RockstarId") && memberMap.contains("Name")) { int RockstarId = memberMap["RockstarId"].toInt(); QString memberName = memberMap["Name"].toString(); - if (!memberName.isEmpty() && RockstarId != 0) - { + if (!memberName.isEmpty() && RockstarId != 0) { foundPlayers++; emit playerNameFound(RockstarId, memberName); } } } } - currentPage++; } - else - { + else { currentFail++; - if (currentFail == maxLoadFails) - { + if (currentFail == maxLoadFails) { currentFail = 0; currentPage++; } @@ -200,8 +183,7 @@ void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int delete netReply; delete netManager; - if (foundPlayers < totalPlayers && currentPage < maxPages && (continueLastCrew ? true : threadRunning)) - { + if (foundPlayers < totalPlayers && currentPage < maxPages && (continueLastCrew ? true : threadRunning)) { QEventLoop *waitingLoop = new QEventLoop(); QTimer::singleShot(requestDelay, waitingLoop, SLOT(quit())); if (!continueLastCrew) { QObject::connect(this, SIGNAL(threadTerminated()), waitingLoop, SLOT(quit())); } @@ -216,10 +198,8 @@ void DatabaseThread::scanCrewMembersList(const QStringList &crewList, const int void DatabaseThread::deleteCompatibleCrews(QStringList *crewList) { - for (QString crewNID : *crewList) - { - if (crewDB->isCompatibleCrew(crewNID)) - { + for (const QString &crewNID : *crewList) { + if (crewDB->isCompatibleCrew(crewNID)) { crewList->removeAll(crewNID); } } @@ -228,10 +208,8 @@ void DatabaseThread::deleteCompatibleCrews(QStringList *crewList) QStringList DatabaseThread::deleteCompatibleCrews(const QStringList &crewList) { QStringList crewListR = crewList; - for (QString crewNID : crewListR) - { - if (crewDB->isCompatibleCrew(crewNID)) - { + for (const QString &crewNID : crewListR) { + if (crewDB->isCompatibleCrew(crewNID)) { crewListR.removeAll(crewNID); } } diff --git a/GlobalString.cpp b/GlobalString.cpp index 9cc53e1..72c3238 100644 --- a/GlobalString.cpp +++ b/GlobalString.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2020 Syping +* Copyright (C) 2016-2021 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,7 +28,6 @@ GlobalString::GlobalString() { - } QMap GlobalString::getGlobalMap() @@ -39,8 +38,7 @@ QMap GlobalString::getGlobalMap() globalFile.setIniCodec("UTF-8"); #endif globalFile.beginGroup("Global"); - for (const QString &globalStr : globalFile.childKeys()) - { + for (const QString &globalStr : globalFile.childKeys()) { globalMap[globalStr] = globalFile.value(globalStr, globalStr).toString(); } globalFile.endGroup(); @@ -56,9 +54,9 @@ QString GlobalString::getString(QString valueStr, bool *ok) #endif globalFile.beginGroup("Global"); QStringList globalStrList = globalFile.childKeys(); - if (globalStrList.contains(valueStr)) - { - if (ok != nullptr) *ok = true; + if (globalStrList.contains(valueStr)) { + if (ok != nullptr) + *ok = true; globalString = globalFile.value(valueStr, valueStr).toString(); } globalFile.endGroup(); @@ -69,8 +67,7 @@ QString GlobalString::getLanguageFile() { QString language = getLanguage(); QString languageFile = ":/global/global." % language % ".ini"; - if (!QFileInfo(languageFile).exists()) - { + if (!QFileInfo::exists(languageFile)) { languageFile = ":/global/global.en.ini"; } return languageFile; diff --git a/TranslationClass.cpp b/TranslationClass.cpp index ade4bbb..06450d1 100644 --- a/TranslationClass.cpp +++ b/TranslationClass.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2017 Syping +* Copyright (C) 2017-2021 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -48,19 +48,20 @@ void TranslationClass::initUserLanguage() void TranslationClass::loadTranslation(QApplication *app) { - if (isLangLoaded) { unloadTranslation(app); } - else { currentLangIndex = 0; } - QString exLangPath = AppEnv::getExLangFolder(); - QString inLangPath = AppEnv::getInLangFolder(); - if (userLanguage == "en" || userLanguage == "en_GB") - { + if (isLangLoaded) { + unloadTranslation(app); + } + else { + currentLangIndex = 0; + } + const QString exLangPath = AppEnv::getExLangFolder(); + const QString inLangPath = AppEnv::getInLangFolder(); + if (userLanguage == "en" || userLanguage == "en_GB") { currentLanguage = "en_GB"; - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -77,33 +78,28 @@ void TranslationClass::loadTranslation(QApplication *app) bool externalEnglishMode = false; bool loadInternalLang = false; bool trLoadSuccess = false; - if (isUserLanguageSystem_p()) - { + if (isUserLanguageSystem_p()) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadExSystemLanguage"; #endif trLoadSuccess = loadSystemTranslation_p(exLangPath, &exAppTranslator); } - else - { + else { #ifdef GTA5SYNC_DEBUG qDebug() << "loadExUserLanguage"; #endif trLoadSuccess = loadUserTranslation_p(exLangPath, &exAppTranslator); - if (!trLoadSuccess) - { + if (!trLoadSuccess) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadInUserLanguage"; #endif trLoadSuccess = loadUserTranslation_p(inLangPath, &inAppTranslator); - if (!trLoadSuccess) - { + if (!trLoadSuccess) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadUserLanguageFailed"; #endif } - else - { + else { #ifdef GTA5SYNC_DEBUG qDebug() << "loadUserLanguageSuccess"; #endif @@ -111,18 +107,16 @@ void TranslationClass::loadTranslation(QApplication *app) isLangLoaded = true; } } - else - { + else { #ifdef GTA5SYNC_DEBUG qDebug() << "loadUserLanguageSuccess"; #endif isLangLoaded = true; } } - if (trLoadSuccess) - { - if (currentLangIndex != 0 || isEnglishMode) // Don't install the language until we know we not have a better language for the user - { + if (trLoadSuccess) { + // Don't install the language until we know we not have a better language for the user + if (currentLangIndex != 0 || isEnglishMode) { #ifdef GTA5SYNC_DEBUG qDebug() << "externalLanguageReady" << currentLanguage; #endif @@ -130,25 +124,20 @@ void TranslationClass::loadTranslation(QApplication *app) externalLanguageStr = currentLanguage; externalLanguageReady = true; } - else - { + else { #ifdef GTA5SYNC_DEBUG qDebug() << "installTranslation"; #endif - if (loadInternalLang) - { + if (loadInternalLang) { app->installTranslator(&inAppTranslator); } - else - { + else { app->installTranslator(&exAppTranslator); } - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -159,8 +148,7 @@ void TranslationClass::loadTranslation(QApplication *app) isLangLoaded = true; } } - if (externalLanguageReady) - { + if (externalLanguageReady) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadInSystemLanguage"; #endif @@ -170,18 +158,15 @@ void TranslationClass::loadTranslation(QApplication *app) qDebug() << "externalLangIndex" << externalLangIndex << "internalLangIndex" << currentLangIndex; qDebug() << "externalEnglishMode" << externalEnglishMode << "internalEnglishMode" << isEnglishMode; #endif - if ((trLoadSuccess && externalLangIndex > currentLangIndex) || (trLoadSuccess && externalEnglishMode && !isEnglishMode)) - { + if ((trLoadSuccess && externalLangIndex > currentLangIndex) || (trLoadSuccess && externalEnglishMode && !isEnglishMode)) { #ifdef GTA5SYNC_DEBUG qDebug() << "installInternalTranslation"; #endif app->installTranslator(&inAppTranslator); - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -191,20 +176,17 @@ void TranslationClass::loadTranslation(QApplication *app) #endif isLangLoaded = true; } - else - { + else { #ifdef GTA5SYNC_DEBUG qDebug() << "installExternalTranslation"; #endif isEnglishMode = externalEnglishMode; currentLanguage = externalLanguageStr; app->installTranslator(&exAppTranslator); - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -215,24 +197,20 @@ void TranslationClass::loadTranslation(QApplication *app) isLangLoaded = true; } } - else if (!isLangLoaded) - { + else if (!isLangLoaded) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadInSystemLanguage"; #endif trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); - if (trLoadSuccess) - { + if (trLoadSuccess) { #ifdef GTA5SYNC_DEBUG qDebug() << "installInternalTranslation"; #endif app->installTranslator(&inAppTranslator); - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -242,18 +220,15 @@ void TranslationClass::loadTranslation(QApplication *app) #endif isLangLoaded = true; } - else if (!trLoadSuccess) - { + else if (!trLoadSuccess) { #ifdef GTA5SYNC_DEBUG qDebug() << "fallbackToDefaultApplicationLanguage"; #endif currentLanguage = "en_GB"; - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -266,30 +241,24 @@ void TranslationClass::loadTranslation(QApplication *app) } #else // New qconf loading method bool trLoadSuccess; - if (isUserLanguageSystem_p()) - { + if (isUserLanguageSystem_p()) { trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); } - else - { + else { trLoadSuccess = loadUserTranslation_p(inLangPath, &inAppTranslator); } - if (!trLoadSuccess && !isUserLanguageSystem_p()) - { + if (!trLoadSuccess && !isUserLanguageSystem_p()) { trLoadSuccess = loadSystemTranslation_p(inLangPath, &inAppTranslator); } - if (trLoadSuccess) - { + if (trLoadSuccess) { #ifdef GTA5SYNC_DEBUG qDebug() << "installTranslation" << currentLanguage; #endif app->installTranslator(&inAppTranslator); - if (loadQtTranslation_p(exLangPath, &exQtTranslator)) - { + if (loadQtTranslation_p(exLangPath, &exQtTranslator)) { app->installTranslator(&exQtTranslator); } - else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) - { + else if (loadQtTranslation_p(inLangPath, &inQtTranslator)) { app->installTranslator(&inQtTranslator); } #if QT_VERSION >= 0x060000 @@ -332,21 +301,17 @@ bool TranslationClass::loadSystemTranslation_p(const QString &langPath, QTransla qDebug() << "loadSystemTranslation_p"; #endif int currentLangCounter = 0; - for (QString languageName : QLocale::system().uiLanguages()) - { + for (const QString &languageName : QLocale::system().uiLanguages()) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguage" << languageName; #endif - QStringList langList = QString(languageName).replace("-","_").split("_"); - if (langList.length() == 2) - { + const QStringList langList = QString(languageName).replace("-","_").split("_"); + if (langList.length() == 2) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); #endif - if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) - { - if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) - { + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); #endif @@ -359,10 +324,8 @@ bool TranslationClass::loadSystemTranslation_p(const QString &langPath, QTransla #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif - if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { - if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif @@ -371,8 +334,7 @@ bool TranslationClass::loadSystemTranslation_p(const QString &langPath, QTransla currentLangIndex = currentLangCounter; return true; } - else if (langList.at(0) == "en") - { + else if (langList.at(0) == "en") { #ifdef GTA5SYNC_DEBUG qDebug() << "languageEnglishMode index" << currentLangCounter; #endif @@ -382,8 +344,7 @@ bool TranslationClass::loadSystemTranslation_p(const QString &langPath, QTransla return true; } } - else if (langList.at(0) == "en") - { + else if (langList.at(0) == "en") { #ifdef GTA5SYNC_DEBUG qDebug() << "languageEnglishMode index" << currentLangCounter; #endif @@ -393,15 +354,12 @@ bool TranslationClass::loadSystemTranslation_p(const QString &langPath, QTransla return true; } } - else if (langList.length() == 1) - { + else if (langList.length() == 1) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif - if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { - if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif @@ -425,17 +383,14 @@ bool TranslationClass::loadUserTranslation_p(const QString &langPath, QTranslato #ifdef GTA5SYNC_DEBUG qDebug() << "loadUserTranslation_p"; #endif - QString languageName = userLanguage; - QStringList langList = QString(languageName).replace("-","_").split("_"); - if (langList.length() == 2) - { + const QString languageName = userLanguage; + const QStringList langList = QString(languageName).replace("-","_").split("_"); + if (langList.length() == 2) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); #endif - if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) - { - if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) - { + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % "_" % langList.at(1) % ".qm"); #endif @@ -446,10 +401,8 @@ bool TranslationClass::loadUserTranslation_p(const QString &langPath, QTranslato #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif - if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { - if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif @@ -458,15 +411,12 @@ bool TranslationClass::loadUserTranslation_p(const QString &langPath, QTranslato } } } - else if (langList.length() == 1) - { + else if (langList.length() == 1) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif - if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { - if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) - { + if (QFile::exists(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { + if (appTranslator->load(langPath % "/gta5sync_" % langList.at(0) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % "/gta5sync_" % langList.at(0) % ".qm"); #endif @@ -483,17 +433,14 @@ bool TranslationClass::loadQtTranslation_p(const QString &langPath, QTranslator #ifdef GTA5SYNC_DEBUG qDebug() << "loadQtTranslation_p" << currentLanguage; #endif - QString languageName = currentLanguage; - QStringList langList = QString(languageName).replace("-","_").split("_"); - if (langList.length() == 2) - { + const QString languageName = currentLanguage; + const QStringList langList = QString(languageName).replace("-","_").split("_"); + if (langList.length() == 2) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm"); #endif - if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm")) - { - if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm")) - { + if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm")) { + if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % "_" % langList.at(1) % ".qm"); #endif @@ -503,10 +450,8 @@ bool TranslationClass::loadQtTranslation_p(const QString &langPath, QTranslator #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); #endif - if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) - { - if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) - { + if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) { + if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); #endif @@ -514,15 +459,12 @@ bool TranslationClass::loadQtTranslation_p(const QString &langPath, QTranslator } } } - else if (langList.length() == 1) - { + else if (langList.length() == 1) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFile" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); #endif - if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) - { - if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) - { + if (QFile::exists(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) { + if (qtTranslator->load(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm")) { #ifdef GTA5SYNC_DEBUG qDebug() << "loadLanguageFileSuccess" << QString(langPath % QDir::separator() % QtBaseTranslationFormat % langList.at(0) % ".qm"); #endif @@ -541,49 +483,44 @@ bool TranslationClass::isUserLanguageSystem_p() QString TranslationClass::getCurrentAreaLanguage() { const QStringList areaTranslations = listAreaTranslations(); - if (userAreaLanguage == "Auto" || userAreaLanguage.trimmed().isEmpty()) - { - GameLanguage gameLanguage = AppEnv::getGameLanguage(AppEnv::getGameVersion()); - if (gameLanguage == GameLanguage::Undefined) - { + if (userAreaLanguage == "Auto" || userAreaLanguage.trimmed().isEmpty()) { + const GameLanguage gameLanguage = AppEnv::getGameLanguage(AppEnv::getGameVersion()); + if (gameLanguage == GameLanguage::Undefined) { #ifdef GTA5SYNC_DEBUG qDebug() << "autoAreaLanguageModeInterface"; #endif QString langCode = QString(currentLanguage).replace("-", "_"); - if (areaTranslations.contains(langCode)) - { + if (areaTranslations.contains(langCode)) { #ifdef GTA5SYNC_DEBUG qDebug() << "autoAreaLanguageSelected" << langCode; #endif return langCode; } - else if (langCode.contains("_")) - { + else if (langCode.contains("_")) { langCode = langCode.split("_").at(0); - if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage; + if (!areaTranslations.contains(langCode)) + goto outputDefaultLanguage; #ifdef GTA5SYNC_DEBUG qDebug() << "autoAreaLanguageSelected" << langCode; #endif return langCode; } } - else - { + else { #ifdef GTA5SYNC_DEBUG qDebug() << "autoAreaLanguageModeGame"; #endif QString langCode = AppEnv::gameLanguageToString(gameLanguage).replace("-", "_"); - if (areaTranslations.contains(langCode)) - { + if (areaTranslations.contains(langCode)) { #ifdef GTA5SYNC_DEBUG qDebug() << "autoAreaLanguageSelected" << langCode; #endif return langCode; } - else if (langCode.contains("_")) - { + else if (langCode.contains("_")) { langCode = langCode.split("_").at(0); - if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage; + if (!areaTranslations.contains(langCode)) + goto outputDefaultLanguage; #ifdef GTA5SYNC_DEBUG qDebug() << "autoAreaLanguageSelected" << langCode; #endif @@ -591,17 +528,16 @@ QString TranslationClass::getCurrentAreaLanguage() } } } - else if (areaTranslations.contains(userAreaLanguage)) - { + else if (areaTranslations.contains(userAreaLanguage)) { #ifdef GTA5SYNC_DEBUG qDebug() << "userAreaLanguageSelected" << userAreaLanguage; #endif return userAreaLanguage; } - else if (userAreaLanguage.contains("_")) - { - QString langCode = QString(userAreaLanguage).replace("-", "_").split("_").at(0); - if (!areaTranslations.contains(langCode)) goto outputDefaultLanguage; + else if (userAreaLanguage.contains("_")) { + const QString langCode = QString(userAreaLanguage).replace("-", "_").split("_").at(0); + if (!areaTranslations.contains(langCode)) + goto outputDefaultLanguage; #ifdef GTA5SYNC_DEBUG qDebug() << "userAreaLanguageSelected" << langCode; #endif @@ -626,8 +562,7 @@ bool TranslationClass::isLanguageLoaded() void TranslationClass::unloadTranslation(QApplication *app) { - if (isLangLoaded) - { + if (isLangLoaded) { #ifndef GTA5SYNC_QCONF app->removeTranslator(&exAppTranslator); app->removeTranslator(&exQtTranslator); @@ -650,30 +585,21 @@ void TranslationClass::unloadTranslation(QApplication *app) QString TranslationClass::getCountryCode(QLocale::Country country) { - QList locales = QLocale::matchingLocales(QLocale::AnyLanguage, - QLocale::AnyScript, - country); - if (locales.isEmpty()) return QString(); - QStringList localeStrList = locales.at(0).name().split("_"); - if (localeStrList.length() >= 2) - { - return localeStrList.at(1).toLower(); - } - else - { - return QString(); + const QList locales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, country); + if (!locales.isEmpty()) { + const QStringList localeStrList = locales.at(0).name().split("_"); + if (localeStrList.length() >= 2) { + return localeStrList.at(1).toLower(); + } } + return QString(); } QString TranslationClass::getCountryCode(QLocale locale) { QStringList localeStrList = locale.name().split("_"); - if (localeStrList.length() >= 2) - { + if (localeStrList.length() >= 2) { return localeStrList.at(1).toLower(); } - else - { - return QString(); - } + return QString(); } diff --git a/main.cpp b/main.cpp index c6d95ac..c9d59ed 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2019 Syping +* Copyright (C) 2016-2021 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -94,7 +94,6 @@ int main(int argc, char *argv[]) settings.sync(); #endif - bool isFirstStart = settings.value("IsFirstStart", true).toBool(); bool customStyle = settings.value("CustomStyle", false).toBool(); if (customStyle) { const QString appStyle = settings.value("AppStyle", "Default").toString(); @@ -130,28 +129,10 @@ int main(int argc, char *argv[]) Telemetry->work(); #endif - if (!applicationArgs.contains("--skip-firststart")) - { - if (isFirstStart) - { - QMessageBox::StandardButton button = QMessageBox::information(nullptr, QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER), QApplication::tr("

Welcome to %1!

You want to configure %1 before you start using it?").arg(GTA5SYNC_APPSTR), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); - if (button == QMessageBox::Yes) - { - ProfileDatabase profileDB; - OptionsDialog optionsDialog(&profileDB); - optionsDialog.setWindowIcon(IconLoader::loadingAppIcon()); - optionsDialog.show(); - optionsDialog.exec(); - } - settings.setValue("IsFirstStart", false); - } - } - #ifdef GTA5SYNC_TELEMETRY bool telemetryWindowLaunched = settings.value("PersonalUsageDataWindowLaunched", false).toBool(); bool pushUsageData = settings.value("PushUsageData", false).toBool(); - if (!telemetryWindowLaunched && !pushUsageData) - { + if (!telemetryWindowLaunched && !pushUsageData) { QDialog *telemetryDialog = new QDialog(); telemetryDialog->setObjectName(QStringLiteral("TelemetryDialog")); telemetryDialog->setWindowTitle(QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER)); @@ -183,8 +164,7 @@ int main(int argc, char *argv[]) telemetryDialog->setFixedSize(telemetryDialog->sizeHint()); telemetryDialog->exec(); QObject::disconnect(telemetryButton, SIGNAL(clicked(bool)), telemetryDialog, SLOT(close())); - if (telemetryCheckBox->isChecked()) - { + if (telemetryCheckBox->isChecked()) { QSettings telemetrySettings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); telemetrySettings.beginGroup("Telemetry"); telemetrySettings.setValue("PushUsageData", true); @@ -200,43 +180,35 @@ int main(int argc, char *argv[]) #endif settings.endGroup(); - for (QString currentArg : applicationArgs) - { + for (const QString ¤tArg : applicationArgs) { QString reworkedArg; - if (currentArg.left(9) == "-showpic=" && selectedAction == "") - { - reworkedArg = currentArg.remove(0,9); + if (currentArg.left(9) == "-showpic=" && selectedAction == "") { + reworkedArg = QString(currentArg).remove(0,9); arg1 = reworkedArg; selectedAction = "showpic"; } - else if (currentArg.left(9) == "-showsgd=" && selectedAction == "") - { - reworkedArg = currentArg.remove(0,9); + else if (currentArg.left(9) == "-showsgd=" && selectedAction == "") { + reworkedArg = QString(currentArg).remove(0,9); arg1 = reworkedArg; selectedAction = "showsgd"; } - else if (selectedAction == "") - { + else if (selectedAction == "") { QFile argumentFile(currentArg); QFileInfo argumentFileInfo(argumentFile); - if (argumentFile.exists()) - { + if (argumentFile.exists()) { QString argumentFileName = argumentFileInfo.fileName(); QString argumentFileType = argumentFileName.left(4); QString argumentFileExt = argumentFileName.right(4); - if (argumentFileType == "PGTA" || argumentFileExt == ".g5e") - { + if (argumentFileType == "PGTA" || argumentFileExt == ".g5e") { arg1 = currentArg; selectedAction = "showpic"; } - else if (argumentFileType == "SGTA") - { + else if (argumentFileType == "SGTA") { arg1 = currentArg; selectedAction = "showsgd"; } - else if (argumentFileType == "MISR") - { + else if (argumentFileType == "MISR") { arg1 = currentArg; selectedAction = "showsgd"; } @@ -244,8 +216,7 @@ int main(int argc, char *argv[]) } } - if (selectedAction == "showpic") - { + if (selectedAction == "showpic") { CrewDatabase crewDB; ProfileDatabase profileDB; DatabaseThread threadDB(&crewDB); @@ -258,8 +229,10 @@ int main(int argc, char *argv[]) picDialog.setWindowFlags(picDialog.windowFlags()^Qt::Dialog^Qt::Window); int crewID = picture.getSnapmaticProperties().crewID; - if (crewID != 0) { crewDB.addCrew(crewID); } - if (!readOk) { return 1; } + if (crewID != 0) + crewDB.addCrew(crewID); + if (!readOk) + return 1; QObject::connect(&threadDB, SIGNAL(crewNameFound(int, QString)), &crewDB, SLOT(setCrewName(int, QString))); QObject::connect(&threadDB, SIGNAL(crewNameUpdated()), &picDialog, SLOT(crewNameUpdated())); @@ -273,8 +246,7 @@ int main(int argc, char *argv[]) return a.exec(); } - else if (selectedAction == "showsgd") - { + else if (selectedAction == "showsgd") { SavegameDialog savegameDialog; SavegameData savegame; @@ -283,7 +255,8 @@ int main(int argc, char *argv[]) savegameDialog.setSavegameData(&savegame, arg1, readOk); savegameDialog.setWindowFlags(savegameDialog.windowFlags()^Qt::Dialog^Qt::Window); - if (!readOk) { return 1; } + if (!readOk) + return 1; a.setQuitOnLastWindowClosed(true); savegameDialog.show(); diff --git a/res/gta5sync.ts b/res/gta5sync.ts index f88af72..0a1feb4 100644 --- a/res/gta5sync.ts +++ b/res/gta5sync.ts @@ -1639,14 +1639,6 @@ Press 1 for Default View - - QApplication - - - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - - - SavegameDialog @@ -2237,22 +2229,22 @@ Press 1 for Default View TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? - + %1 User Statistics - + Yes, I want include personal usage data. - + &OK diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index 13c9526d4deec527af40d29d8a24a0bd0d0eecaf..e21260bc5f97beda5a5417ce1f29fcfc53bce8a9 100644 GIT binary patch delta 1539 zcmXApdrVVj7{;G|J>~SA)6xXBjWr&0W*94iH>jY3nG4g+p`ds{Gh-HwSJ0_A!(DD7 z1%Z!>mommhZUu`MoO4daXq4$J^EP$54I@#qDO0y;bdkNLfBn+abKduPpZEE`n_1dh zZ&|6T8DAC{!itm1=BljDRhDeFIaLUb8bIhFdVt{T5E`}vu5<|B2|!Uf1TV2IvCN}d z9g)z@3IoC>Kboei|oja2mw+YDDqqbcD=zjueSoR{`le8Bp}Iz zt97%1(n$2)xB(d2@VHh-zkBd3DHfRDtdZ{p1L@O!+`q=hMy+Oe^LxN}vu5+8ze)H2 zpUXluems+z+1}f{lEqqG9c=liF2H7FtK)Y7yW`k~yaj-J5FcPFOPj|7wPv<+4!3Kg zm*`kaxD#l&$XZwQ0+|n3M+X^`lf#am8wKpJu+zdA(%;THPmwOSmv!wi0dWz`yNTXw zD`DMF$^rj7>_Nj|pmsg$dz=6`XLGMswN+$jrG}e84bz%0y#;3LwL`Zg0n^rL!?ylI zum7uElQI%$y~Hg-en5d+m^Y;w$h|FO--@EgDcmCj(sW+IEN4v-T7wVLMhAGmV73)q z6;4-A1{`YzZ%PI5;Vd7s2l-faR`8z4q5lOQsf~% zU1kWWea}x+q9-kxr{%JfA@>+cArlhn#6W<>1qhu88bukynG7FCu z)rk!W`Z-NrO5YLvhMGEHlTn}Cxsn#<)u;B5sJwlH0g_% z6M?j5o~*aTL8|YJrE$}w*3kLD=jl?{j7&<Apb8PYcBcdna)j;8jznS$2}rf zhpv_v^^^CWejY7_vz-pUO^RWM7xOccIWqMF*_(2V4o{Jf`%lQ;#u8w}UHMjE0#Id_ zZ?}+?5WW2H2pyEoHn~^X4D21vO>%5zMz)gUPs$_CD!J=#0F@UMM;KY!d{=SAkXz|L z`ndm%;g2I%t|FVHWMT*lBLFpN+xW?wv^E4kb6dw;nD)mQts7;~LEK(u@FDtEQ zXqLln<=Y$;h{;z@<}3xjCrfgBjdFSe^=gmf{jxd0vrD;FMP^k@RIWSe&f(*@MN!$I z2yRz`Sh38PD?yR1s-bWu)s?dhmE)+cQfqK&=>AF@@NvJ*;EJIl#!ZHL6Y2c&l;LDQ zjoosEpHa-VwqB#C{6w-!j8-=-wyw)K?AH)F+S`o7`Y2&M)oA;L%JUvRpu_|?Ta9H+ zFX)B~FnSi!{`ST2MTT&en#*?^!mSxM{J&4S0L&d>vaY3G$&se0=Nh_4R`A~pW^2hh z)5a3ARFO@4FMdY%!hKWiKmw2*&rL=e$i?kORm^T*L+-pey38o0afn_0c@e ztRT6ObOB9K63`Vv@i#3SP}KY#*Z?U_|= zTFmDOFr+5|Nra(ez>54ZHtwtH(%9zHT-0eXTgJiKvt)}O*0XUyvj*!QLkTl^s!o-C zV=$y=ZQWcxQ>U^P6JMay*oIH}YF)-B0UP|IY(QZEE8ETkEAM096EBbviIaPV1Fk5X zX&et!CE(`8i-2hxZZ#O__Z8f8WdKu}b@H`%U}<6)*L@tu;1gZ{=7GRaRaY?lZzBGX zPhxi6f857Z_Em_lW*IT-TiMJ(CjhIN&7NEWtV(D3%claZGJnoAwqzWS)vK&xEKk;_ zPJha_j;H~G?W{HHCa~-(+q;*9@h@WEbPfVaBU!ufGVu?xL*Emx)*sl3+9)7%6bsFx z=e93rXYYOqL|$dTZte{<=CIqh-UDjK@Q_}!)_C>O=1aiF$9nbnGhn;M$geF zc^}Z@clFM~0l>Bn9xashTG1f9JF*^F9ukT#r%*Ycw+XS-T}V*nV!O~9zlj`u$h!sA z8aOJn*Czs>X9=OgYT(WEFqX(++^|mw?Jp(c|K)Z=wC*_{XVBy|uNY>W=>*DVakoJm zwz|^bvk}{Y5r$Ryc3@MXp)Q_i@f(IZKkdDGm|^3SserTE&{RAfXvyXshQX{UiFeUv zYj;QVKN?B-IKZPKT=MdF#NI*>XzSqR5$|Vz-CtZ)@1=;X6l>1Z09%KPO^2xU=HJAf z@B9g*I>g;Ae~~n1aqoHhFV7LNvy+q_S}NX{I2o`#5pRC$0~Q;^KU*j;9M6D=Xw#hyB;8vFOi$+#pY7MoqH>P-Rhna3$kC>Q=6=_0^tLZB_q$DD ztDbMR{zUw%ukc4oTCdthbJZ4#bYU-Z+xv7#t$mG8GL2wGi+MSL?-cJasWB@*h??<| z3z+JU%AWUt?COego!wp!@C7vlCOMIr4Jc`3{T6ZHY@5FxpO~>29xOL6*zYQ_FF?a-Flh^Bpv6$#&$r zX|#~$3p`o#Jr-|)(>2TD^rVWkohkG6xpVWJIawa3+ojV}r8lO4&xnrOUAE%vi2nhv CKP5;2 diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index 3374031..cf9a8bf 100644 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -1685,9 +1685,8 @@ Drücke 1 für Standardmodus QApplication - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - <h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt? + <h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt? @@ -2282,22 +2281,22 @@ Drücke 1 für Standardmodus TelemetryDialog - + %1 User Statistics %1 Benutzerstatistik - + You want help %1 to improve in the future by including personal usage data in your submission? Sollen bei Einreichungen Persönliche Nutzungsdaten einbezogen werden um %1 in der Zukunft zu unterstützen? - + Yes, I want include personal usage data. Ja, ich möchte Persönliche Nutzungsdaten einbeziehen. - + &OK &OK diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index 2f2956e..47b7212 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -1639,14 +1639,6 @@ Press 1 for Default View - - QApplication - - - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - - - SavegameDialog @@ -2237,22 +2229,22 @@ Press 1 for Default View TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? - + %1 User Statistics - + Yes, I want include personal usage data. - + &OK diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm index 9c8386dd6817e68fb6a743e63d02b895e75c66d6..703bcebb1e1486d053356ea45337f982225da47c 100644 GIT binary patch delta 1545 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 diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 843150a..ff4513d 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -1695,9 +1695,8 @@ Appuyer sur 1 pour le mode par défaut Police sélectionnée : %1 - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - <h4>Bienvenue sur %1!</h4>Voulez-vous configurer %1 avant de l'utiliser t? + <h4>Bienvenue sur %1!</h4>Voulez-vous configurer %1 avant de l'utiliser t? @@ -2294,22 +2293,22 @@ Appuyer sur 1 pour le mode par défaut TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? Voulez-vous aider au développement de %1 en transmettant vos données d'utilisation ? - + %1 User Statistics Statistiques utilisateurs %1 - + Yes, I want include personal usage data. Oui, je veux partager mes données d'utilisation. - + &OK &OK diff --git a/res/gta5sync_ko.qm b/res/gta5sync_ko.qm index 9336f1cc1764ff55cdedc690ca64e204772fa7e7..fc5b04b46b62bf2af34fb94c2e22e451e9b1d0b6 100644 GIT binary patch delta 1535 zcmX9;Yfw~W7=HHKvz|TY?7Cj)AQ-!&sNsT0UO@8#Qx0kxpy3S}ZU%C{3U~vQyUM8e zN!mymLa0cCDJWu!&@gJ6YeZyYUegpyQK@j$wAa~R&&)aB_rA~jJkR%bHL(A_X4}mg zuX2kgOKd3*G_%|(6(FP#HUJ}CAk?k_R@)$)6o3S82sXlEwYSW5#$Pit3lHEHt;%A*O-&@sClA@Nc2{7<3wBxuNSG0}4*?R^1qu^O)bGVp+KZ zTsj6)BGz)#fMhv3Rdf*c10|Dq$$-TnYrDnmdow9x*TjlT6+r$mv8Ih?&(9RUnfD0r z+9n=7)Ca6f6q`D!*RrKzdpk)z>Y;e^qlJL$74gv_%1Y@C@zt>&%7#X-^Y0)nUvOX1 z^6qH;`~x=o@ByR?0E!A%r@hcf(<=aG+r55x3 zqL0%k$?=*Wl?s&1S>(E#D2;hWZm*rs`$b>PIPRl2JIC}$iF2M%G(x4s7(&58O7EWl zgqQFXz2gE|s%Z z^^%wLlJKQY+*k5uvE4jdnyqo;t&;j)SdeVXYNV&Lz>e85vTgrXVAx@~+p>t_6D?n< zBO`l`MHI-&HbzOba*3fqCvq!9b$zF+nLz>;hJuRmvuloCVXBGJjGkVv8NK ztCX^f)aC7~O8Lu;fJsp*9H&xnWTn!*5O5i0$A~sNW?xZij@+UyY05#7!r<7i)VIWcM-UE`>(zS&Tzq2(2R!H!wi4VC^>L!M`-F%i$uWJ60Y zO4zwSxTdZ=-D52Y*3)o8s+<qWF`V!6pk^ZdbmjAn7g;W$#~;L%W{C5)fjI^t+TVx0T` Dd7jvp delta 1720 zcmYL}dr*{B7{;GH`+a=-ec!HR%C5k$yIxadSTru01Uln*zlRslQJ4EF>eN^>}B?k{`&2l_nfoO`##Ti{yEIf zx3XHZW=fqUlI2#{EjBZcROd2=7tDZA(*y`EVktIW}EZ*Tbe~1Hg=<8Y9x@-j@Mhy0vmVYv&V%%{1Tk{d6nf>CIOWSf6B~keHgcBjm+WV zaoWV>TkK%$E}%S{wb=WCv_N+BC=Dj#OZI8^XdwL*J0?t^2IjM_FG*NsJv;ekAdv6{ z^X1XLszBCvcPF5(W>@zO2g-uj%^S;sf(_iKHHYVSXyttufLG3GjlKT@Q{L7FyPZJf zTy0F@L)z}uI*LY;E4kbxR1JL~ESb^>WHt%q7ZYf80&f+_j?cJHFe+(Fg_elDz~%rx zAQ;1QCJDzHqsiC~!B zzXwF^kd7SsgJv^LI(nA=D|waF-A$t&b62{&a2YWA2dTfq1FQ{|?j54cRDUS_`{_-} zOrK7i)dOrf#p5JP@SnN``+b!2VY=L=-N1?%ovSN@3|zonk}3FaU2_KMUv*vAZmR}X zAJiS|raa~?=Z#Wa@E@}2m+5qqSvD7u`Qs&d++Sq+%b|QgO4K~zHl5j%)h_4Exlak1 zDCcAnh2e7kqsbJ_6>?Q4T@`v+-ahLR5c7;&6B$GH{3!3~T13g{ky~sp0SgM`lhdh< z)EfD_YfmY%Kg)e<=8-SA)un!JsrGZ*GA_xMp-+^h*J;?pqLh^bWXZN0JWh^fj=kI^&z|~7Ii2AK z=C4kY`G9QF+~bn6c*0}VJA`CMOjav$ z&I5&Ssx>h**$P#ynMJd+r}$a2iF*{2=SQ_+Vg(R3!cTjxpC!%ep0+DM(RB5IM42!> zQd>Gn_V#$S!)pd&PphAMR|8{H)nmCm=1TvC1RGHSC< zJ^LOFE5B4dw~HR5yf*c!DGlI3>Iha<%Wdj7mOGWNRG-uQ$~~%4S^ti{K|_yP@nPPm znr58Se-ps~u}XjYeVSVANd1#Ml2esrkks!<-q(hZL*%9B1w-hiNczf$8A5MT$nqW- z!ha(9`BV5Kb=I>5U52{-l;o5oL+c89or?PTVtp)Im&~gOsk3>f-Wak`ADA-U3CySu zOwD^pPQ4fCJljUE(@Z{~H?s6NE*VJdQEoGsrF4&jhEj4Q$zWNVoQ`;8BN_=9i%C6w zupS@NeHqpk?}?ePUR-rtbHUNp+jb2jX`k)?orBe{TaF*NuPdWLKfJ*zR->uBEx0nU1W&{0ypE yQ!_GM^sAKW1#Wx3+ge!QaAsK@?nDWIe(8)&n{pg!cDKXj 선택된 폰트: %1 - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - <h4>%1에 오신 것을 환영합니다!</h4>%1을 사용하기 전에 설정 창을 여시겠습니까? + <h4>%1에 오신 것을 환영합니다!</h4>%1을 사용하기 전에 설정 창을 여시겠습니까? @@ -2315,22 +2314,22 @@ Press 1 for Default View TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? 개인 사용 데이터를 제출에 포함시켜 %1이(가) 개선되기를 원합니까? - + %1 User Statistics %1 사용자 통계 - + Yes, I want include personal usage data. 예, 개인 사용 데이터를 포함시키고 싶습니다. - + &OK 확인(&O) diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm index 3b5c538e43914ae3866c47b3617eac5210cfe49e..4ffa0502ceb05858a045eb0a948c1fc9189d7ad0 100644 GIT binary patch delta 1545 zcmX9;dr(wW9RBuj*Sq)LT{juJKwA3A6V`Gl?tNrVnd+s^k@B4kf@0`Mi%;RB| znr^rwFq{?Na!k>fYq=v;wU$RgD60j8PQo@|=uHR>S%9+|!ae~gybr-m*wEY2rdf)% zKtCZ8h!_C9`zVk<+>0C29X%S`oW(_*X4wK*|2wiJ64tK4gy&$rI~=I(#mDMYIg=yg zzq3_#K2N8zx}!Wpr?GYIyjqvAxNsi|W5R)@kFmO~o66hp-Lo`cQaFz99sw+Tf>T>3 z0;R>cdG;(Im*RGv9#}O54^k3D*(RQ!IFz+09z06mrP^nRXor~Wd*PBXrI`m zv_#et0o;f4+Oqk#5#nb)IkJ0w4apKuV9_)%s@gkb1$QP z4Y922-de!e#{OvV12zV+JGT>o^7-8DqgmG!`bZ7ufUi&ZsK;Ia@j*U)zeoXMmia`c zJ)!O2`YcKx0BpD{%69}ku^Z>79sz9EG-A|Hi0J6!rg)@XXgs7q1%9UA>1RV z)}kPxqvlPZs7r9CR{?KldogFe7uVet+~3>j{~SI{ud;0&e7s(hE63=QP8|kp;XGBZ zMN~NTws6uL_<_DMc^I&1qTUrs!dBnYy9$ZCVw}GA*$m(lm%cuKHkla659))N3%rNO z*6!~WaHKb7V<9*9N|AF%ihe>P(D)HA=`}NHeUw;PlSVPi5S^!-l$^U_{UK_;c9Xbc z(tY5qmEx}LkH{Q|?cG!>b+LH(FnJy36tBHE4G8rU?{BBHG^dF#_S~VgoHOX-j{qA^ z^0A^8vH5{va+8}9*kMSn-3olZ%aD5LQySS5L(X-QJY6-cOj!jaPB!EX_!U@ljaP^& zTfLh%icyw|=aT>BI3nvSY3VfhH`YkOf78IL)A>^|mer2o(FV<8^GHi3JfL{IE-hI= zD9n_WKaBv=FY{D`I<0z;RDURe8upV~hfN3O{v&n9*?_Dp>6aTXfr1jLYtFksaUbb? zcr*|7u}V?OPEeVF`HJItKF}vwar(zleqt3@NFlBN=*7(0UaX2&>UUnJGIpg| zq)Y_FD6I#nmzEgi2fGH0yQu87e+Yg_mgMFTr6ZYYHC^W(S@msFmF`Vs)|!#Z87I9w zWntW3(OAQ29<2nk;%q)o2_98{%vd^(cnzbB)nUXdEik%t^onJS_9C|$UGYSsOfuG+ zN#~0G#=RbDduuK~sHoP4Qj@5h2KqlUS+>()T{WhDSHkIfk2m$ZLm4Zxo2WTJ)zm_Mr~2 z_wcJm)l$-FURq9;8h$gcKRTD*29LS!Wg>-PJvW8?4Z*=hXB MH-mTe*aIT}1%M&$fdBvi delta 1794 zcmXYx3s6+o8OQ&7_N;gBy}Myz>5{DF0y>hqA-jSs55dL91dSS$#7EUM8MP2eVHb55 z#McUo5Oq=3!$KQDM z{mys3^Z)+$jE=I}?^vUz%L*mfS^d4xB8|2ALmrE5-yHB@2f&Ak{lJu4;5}79b2s>h z9N76Ic!bzHA=Ix~>)wT7o)bt*f+6x3pk_vtt%1;OjkVVaNvBym%&?6u>6i`M<;ldG zuzfuh==_<;(^-_NLwJ5{ZMadqp|h~AE22`Tv6dmxqAPf7=Xum-+kx`?*wa5k+XwOf zLm#lfjteKJ0qY*%QrAnsZh>1@t^mp|eA#IL_N3!mcLA{Ywodt13a}{{Wm9dGhfeF_ zk4^+$NYQPacApx*EEX|4t8Ej0W?}pPEm~NCwfS@Q#-w53xg56cl^S5z04v+M1n9mX z9y5(qc8CPMg$3e8rrx!(VhuZ%5e5!zXML-00b5epsZ%7)_Ji#7&?I161smW~=mdFe z@FVK%@D4WI90L?&vdDVM>s`Puf3qJj^|PBju|TVX-T87Uu+J?bdd;>sq?dcH0`L4o zZ#n-6$e*Zx*6Rkc*Xy0W2bBJyzN8`v=xGpfyl#ArmoLt02mJ5y>T50vJ48RHiM%f& z+@fsR!~0SW11(u%lv`|d4nEMH4%A)ek%}f@*5)X;x}$9Qfk!?F(EAeMFj!d6MKRZ) zDWUm>m6wKq9XY~d(9#+^4SqZIoA4_`W0?auxXjR+LX8C<8d__qc;jM2$HOJSZ(0rA z)hkHE6miy&%-YQ2HWd@YV3{Q zZjmWxu)r$ek@Ke?yQh3oOOe3utfc=f?Q7H_>XRCc@srBRe>Y0EB%=x?e$G|GUo~90zoulDr5vlyq zyXwa-GQp}s_58~p15ex4h<7{1C#fTCq}bjU)xU-5UTT=G-i%ud5vxASdT$7an#}6! z#d5;otHQ5Zluh$Ytvb5jnleSZYMI@=$MokE1{fZjzB)+K&5=w$t*3r^o6VB?SKt>9 z&DP^I(Y8MGgd2AH;OCkr+#$C$G@5Pyr2ZSe7T>G+Is{(#aWZZT6;fcmLAdOJm$4?*VUL6Qd>z+j>|?=4AGEf^e8M zX`5U^sx+TiVqW2UsS~+ahjh4jEO+r#K9jqU$n)qqgHPo-#5Ce;zL276NW^5MB8k>G zo~)Wo8FRUl&lB64;`}oxcNS$+6`swf^Qg4HECyR2%cF5ridFGQHW>D10 zbCG8R{l?LMe(t(-*Ycv$wVtw~M6V}ta%xhpgF-7jzQoGaZtqxZt;bzl@}_S?5xq@Z zQ#7U6LyuLIu+h7EgE!H)vBdpmVu?3TqI#ynS>@%WC2LoEOFV8d%WgX{QWNj|KS%l| Ap#T5? diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index c215790..589637e 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -1700,9 +1700,8 @@ Press 1 for Default View QApplication - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - <h4>Добро пожаловать в %1!</h4>Хочешь изменить настройки %1 перед использованием? + <h4>Добро пожаловать в %1!</h4>Хочешь изменить настройки %1 перед использованием? @@ -2297,22 +2296,22 @@ Press 1 for Default View TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? Разрешишь нам собирать статистику о пользовании тобой %1? Это поможет нам в разработке. - + %1 User Statistics %1 Пользовательская статистика - + Yes, I want include personal usage data. Да, передавать данные о пользовании программой. - + &OK &ОК diff --git a/res/gta5sync_uk.qm b/res/gta5sync_uk.qm index e30d479ad53bf68655a2d18d58f71d7aa7a842d9..84d9d942bec754e12eba7a58275e1bf2fdbb89ba 100644 GIT binary patch delta 1545 zcmX9;ZBUd|7(IJ=mv`Uy-DMpHmvPOP%#maTB#lLJL}yeqEksgOba2ec5fU&6925lP z!xTi8%cra%x&i`<;Ya3Y&^Tt6OG=~@q!xyhNowRrj`TSD>&)D__j%59&bd$Df9&Qn zR-$TxY(9akDBiY6Wp!I^NhS-w4WXzG5ZVb_fdCtX`gEX1fpA6uc5a2>By9TE)~cEd zCqO$t7ziGO)_DmiSntAp*|vU_9k6jxqnZ!uV0rcA;0#zg#}hhXxgP}7gU{5M#15x+A4dD8-c)C?51UITVK#uv|1fruCQ_V^SaVLGlJ zcn2tcfxBH@fFS|*_G^LNb$FN<0W3MDk$e1sj43Xx>UE)`RWs($8$eLECS}S$z;=l* zVu5UjJI`V!Ryl`PvIuj{T()}LWx#Tmt&iG9O~$i?{3SqRGaqIu+Y-cm+)QkHEDv!D zi%I{DHCf96$0pXY<}R@HZ+7AYNwckno$MF~nJ?kORsJB*I?yj37aI=E9X$yrN;7XO1}s*Mi{ zCd`Kes;{yv|iHL<38K2NL4<=3?_S37{bSUc8@* zRZVaobJ2scv5_0y6Xo0}(MxCmS|a&&_vo0trD92KDqx)}mR~KWn9-()z7=;_dgMfJq(VgJw$0kp%JO$pK2oBAqt;B2e4Q zXNu}%hp2nE(FyDc)g{y&0Fs7uN$nq!Wkb3xcZhOypDr_TC$RjUE_>`vfS2;!qKVn! zd4p&*mzPT3y|bv8pQNUd@xd!4-=}1_{RV#`hOzn(9->pt`J24+&rr1ycfxzgoXS(Kt_(v`kp%I7VqbJYT}Xs^^A7y`_R zlm=rS0SzWuGeA_ccFCGQU*Vu^7)iO#JI;Tit_A+`^mTS1|92PGR=BX`Yi^WO&-_$* zaX;y5w#v%}N&UkKe5Pb&+xPKJQaC%(!!Jmt(9N&O&a~t7g?72HdaCSfCGs(0#wv+qa2ZynW^M@5cALsC2vC)9fv4I!6a%!vQiXI za%Eg{VRfcb^c}T%(@(Lz$N{|8DCOSMfRe8i`@}ptk9T3F)`iul6-V10syCz@5-Ag} z4=ODeXqHw#<;z?Zn0Hn=ox2jeN0#IxW0dm=)a$U556ULb!#d^KUJ|SH59N9}Z5~@c z_f}Nae2#}GzO3*iU#<9t9%|F?m`!yRoxU=F>gwm{?Hbx*Tl!sCRid|tQxT5-Yu5WNA({h{_K{>!`upOvctV8%F;UNZ;GXFnWM8RvKck{7mIbtNE}J z?pYRVur)rWJ*PLcMw5S)NBJ_nm2HmZyY*Ic=6#QIi5G!L52HDrdL{ZA!yaj9m#pBo z^d|GJ#m0@rB&o8;Sam6uc0;dm|L{^EJDD2|zO1N>hZs~byDN^=NjbL4(4Wq~j~jpN JqfgU={|CX!@b~}# delta 1775 zcmXX`e^gXu8h+-RJKVYV&Pazt*W2^r(Zh`K0($PXbXiGEoSl$F(STyoj7r`>cd)~K!7YAq{I_R{pnz0dvL`@Zje zzvp@G_m3ahXFszBO_v@_NM_HtgDW-GRu%NBw#H8()VBh{2w^{PM-W0sInX=}!f64h ztAY?F?D;X+uUYEn!m!){I3h5F-vw$Pjbdwc@QTLT8@Z^{EFB7LQzaeQu$`YnI0oB) zQ-DrAU!qgx${fs{sy%$2Z`7%*YluIl)7TLUZ_?#GQkR07Mah7_0(Jdkz~1li@=tys z?>gRpaRK1Y#JS`50MFjQ#Dxoh*^STJ3_wFWzVYM%`2#xnpGm-uv?w0B6vY##bhmWh z3Z#tdN*DYe*kj@=Su)!z@c>iV!CckWbQpewbmWz7z zyD5 zQ01L#gx;hRBx)m%2&%1aP#9`S1?txd;j%_xSz#2boKZYN@mH!z`v|uiRMykYa}An& zVBE0o+$gYXJ@*>4`3KSsfn=I@cD$j%Z3m7&WN1#J!SQwHPmS0?$3bYhxZPJQ@-kTKquTGBI>6 zM9#S=wvW)}JNJn%{OM~TyGR`9`Hsk0Bo2!rkNB>a(&c|>%w z&J1ohYJuHkZOmiS)x(eoAU{2a8RmGc2IRtY9GlX zCJa)q{Q;n;S~{CeTM1-IAAEL$jC)x+zhMPwcT5^jUI^TMpA=d5EzmVX)=kpvI~!!( zms9wyY`*zc=&|c%9yV&0TDzRNsTtTk8O39VqWIi9T$Hr9-H*%nUm?aVY4Vx~>C(5A zFO<^Qp5xprthDU9Ni2~ph95XHlpa=3FJFzcE;p0Jwyc8*6R zl{FpZqMT=|+^JMgqtP=el$w$YKvRZN?;w7={7QWe5xC?1C?4L)1F{+jzNIwJtpWb{ zNE9oLQ9S&H(thgSRDMnA7Remeh|)Vuqd%XdyjraRxvwj)Rj(&A{7)HjpCR$Bgw(!o zOnKW$CfGQvym#;0KzyPS_El0`QO1rCWBe=SqY#}-`@c{wPcH(GS7xx@H@RI&WY6gM z8iJF9JfNs@#TTY#9i4B7IB!wZJG)(`w~`nTBbvTEO4Q{{n67W5d3ql=i^^YVzUR%B z9#XWe&ph*!WcuL~%rhs+Z9Kzl`td)q7$Kw_PQodWjd^N2}hRemm-Y1}4mH)~?m-(AE? z*+9PeN_pTQvakiIa0)Yp6k(~5LHGHB6INk~kS#bVk}hQZwoaY8V-DtF7S-5)uZk1W zDR&uV<_ZqsPQgK|#ndB{uI048i@K!{Qr2&^Q+*xO*&(D-=6rs4j>m zDK07Ux{IwouXWD6Sy^@pt@Zk?j}>@)Q?VkiXOnBQe|s^#wH6j{^3qc|y)X3@Z1-9H kr7q8AtIM}U1Yo*<>DH|!uA%~;%j@B9x@-dv*Oohe1+Tg$H~;_u diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts index 1d0f0ed..12185ba 100644 --- a/res/gta5sync_uk.ts +++ b/res/gta5sync_uk.ts @@ -1698,9 +1698,8 @@ Press 1 for Default View Вибраний шрифт:%1 - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - <h4>Ласкаво просимо до %1!</h4>Ви хочете налаштувати %1 перед використанням? + <h4>Ласкаво просимо до %1!</h4>Ви хочете налаштувати %1 перед використанням? @@ -2295,22 +2294,22 @@ Press 1 for Default View TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? Ви хочете допомогти %1 покращитись у майбутньому, включивши дані особистого користування? - + %1 User Statistics %1 Статистика користувачів - + Yes, I want include personal usage data. Так, я хочу включити дані особистого користування. - + &OK &OK &OK diff --git a/res/gta5sync_zh_TW.qm b/res/gta5sync_zh_TW.qm index 91bf48cfa635e758bc3380e0d35f10ffcbe9585e..3d1013da6720be74e01f51080586c82edc2f5caa 100644 GIT binary patch delta 1526 zcmX9;dr(w$7(Ms5cfEV>-DL;E-B`!nkP!nB-=db{WPN9;*u?2{cqN zD*arwqI{94;9#O=nlduu7}mHzNM$~pZ)=l4DOjJ15q zwpoR-HMS78CbuTa$_k2Va!f(#Hy~E;1;p8eO~4yYhzFcNPBFwYBCzT)L^ok^Pfe56 zvbqe~Ig@~Z)zG>x0xLuh=C{|}v9iKuE(tbYJ%V2Su|5nz?IQ@!BIxh2g!g%vU{Vr$ zG3wQ?_A@+LFfnH)UoY5%2)6;nfiMUPO`)Je^&@XgagV9HTkIz9nda0Qq5 zzXznu!0oOsK%S1f`?U1jfdP9Y@b-Y9Tnh#gH6G0F@Svkj7#w)34V(vnlplKtBNYZyz5DFfCvu+H6<_jDO<1Bo zJ3QG1I9#l8q(BMymHXuq;+egZMzF8T+Nc}vJ2R7RH{2qb8pC$zMgjv82z8r z-0%=scU3ykNu6R^rPfwb+5a`^_XRQJu8(xDfl{)mL3(krmr_xw(}rIly{7Xp$u`bU zH~*lUa(7>sy>~wlbyJsfel2+&E?t5V1^dn^_7ZHON2oyaZONa{JP`B>ru=J0uhs_rBbp^nj+n zs|dZsbBR+C{(6PYieU(4dHFH^v(9Qs?pEGPsRfdEc`)yV2TNviqipkzP@?aUq=V-x z@%WYe_x1jX$*PPZn)gLaeRuHOQf-%+}4aWtes`Q(q1E)NE5I?^jHNOUl&FFG#C&s6V-A*QCwjX4T3zR`F1E zq!7fD)qrV5*YqFFqPmhpzjHLz)!Fs60UKf zd5dZej5bJW2eFDZSQ^OHf+L2ZH$vz}HyDQYQo7QdhM?c5dRiNQsYZB58fp$cq`kJo z(6pGm%j)6r`pGPQ3*V}rY)MMz`(DOTZY|ts2w-b=@lb9(quL-HH?hs?kKlfo!mhwBgbAx* zLnTvgCv+l=O!E;oSfFV(Fi?(K4ohS<)59Kuw7;$*>8zw_R0QqGxJXOyN$7>J0Ujh1H?td4!~Lq@n9{mIU3?=5h&gdF+kkv z_ji~hHrOC7Nd%&bAqCC?1@8svsq<~PI+Oaq=SMeJ`65%=;G z!Kmi$#*BMQ-432F7}=JIyhgAHqkNCBqO{n79S_F?t46W2V~{pa#s{~&K=Lts+BF+k z{w4bNKLM0n!uA0+=@g$1SWtFyp!| z(fb$8KB9A0PoXN4xJhiB@U8e%avQL|Q`~-O0qyk#?-0ogKM#l|vY?Yor;EQ^y4Y|kP2a(Rz5UHFk-l`P7Q zag)!Crzlu>=s1_U-Y$oUhk&|6ym8!`qRI*Kt~M`)t5a_7Zw6}D$p?Dr+_e+s_m=$* zJa|X$Y`;OeG|I;ZX{U@nxv!5@j=W#~VR;6*8zx^l$7ykGz1;Q-}tufBZWejxpOy}Q>=o*m|H*%(p!nEsHR+Rw<-pR~OIWM0sB z_fZrboVUqI;nx+@caKu3RK;9P#!nkkqW&hsEBt&|P7wyUO>gmaDP>DWC>)YfRzlQW zRw{4KqEIF%jXhK;qDXl$?J}vKtu)0a(%LNLK<^4tVUu#ywhCChPC5T59V0JW`RwPr z6xNfXPm-ls6^5wswNa{Y?H&tM!vhp@mY>f9dUHfUgF3gQ zmA=tMK~}W~S@$QG70ZNCb>&qO`@SdDtYNaG{w1EI%wdJwxm!tl#P_;-!R`UlHmHH> zEN{pY+fjBAD67|+ z5=q(G@3p2h(k?ePNY^dyQ;j}{O>3R81DNz?khujxx@T$!-v5!7k7-9_N`-N!cC?2Y z_g&UbHJE|fUuz#W#XxvPs^7TJ!pDZBvAHS)cTmA_!{wXcssi$$9Hn^AM za=xp5(MGt=D+V|K diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts index fad27a7..656ad1b 100644 --- a/res/gta5sync_zh_TW.ts +++ b/res/gta5sync_zh_TW.ts @@ -1680,9 +1680,8 @@ Press 1 for Default View QApplication - <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - <h4>歡迎使用 %1!</h4> 你想在開始前先設定 %1 嗎? + <h4>歡迎使用 %1!</h4> 你想在開始前先設定 %1 嗎? @@ -2277,22 +2276,22 @@ Press 1 for Default View TelemetryDialog - + You want help %1 to improve in the future by including personal usage data in your submission? 你希望通過收集資料來幫助改善 %1 嗎? - + %1 User Statistics %1 使用者統計 - + Yes, I want include personal usage data. 是的,我想幫忙. - + &OK 確定(&O)