From 929d341826f3813c00576767dba82289a1f5bdbf Mon Sep 17 00:00:00 2001 From: Syping <schiedelrafael@keppe.org> 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 <QDesktopWidget> #endif -#include <iostream> -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 <QUrl> 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("<title>Rockstar Games Social Club - Crew : "); - if (crewHtmlSplit1.length() >= 2) - { + if (crewHtmlSplit1.length() >= 2) { QStringList crewHtmlSplit2 = QString(crewHtmlSplit1.at(1)).split("</title>"); - 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<QVariant> memberList = crewMap["Members"].toList(); - for (QVariant memberVariant : memberList) - { + for (const QVariant &memberVariant : memberList) { QMap<QString, QVariant> 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<QString, QString> GlobalString::getGlobalMap() @@ -39,8 +38,7 @@ QMap<QString, QString> 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<QLocale> 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<QLocale> 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("<h4>Welcome to %1!</h4>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</source> <translation type="unfinished"></translation> </message> </context> -<context> - <name>QApplication</name> - <message> - <location filename="../main.cpp" line="137"/> - <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation type="unfinished"></translation> - </message> -</context> <context> <name>SavegameDialog</name> <message> @@ -2237,22 +2229,22 @@ Press 1 for Default View</source> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation type="unfinished"></translation> </message> 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>K<B*(6r}iAd$#P6$`0P-qDHkg&V%jUCym9hb-xcZjfU;d@x(+Ptuf0P zvoZGFw+FWK<r*_<8N#<|R92PED>boei|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`8z4q5lOQs<UYH{3D$zSI*QWUOfloZRE*1b>f~% zU1kWWea}x<x*-&(&(yhsNmhBE&Xr5G_e|B*yj}pTsnFGDF9BNC@iV$0Ru{z|QL%le z{Dxofr+l2}Cch*(cY!!qXao*j;st&S6RU&7((0`gu_DoV)d@6D6YD!^^rk1`;ZL3d z(JRHH?iaw<X0hWM_1bb?Ja>+q9-kxr{%JfA@>+cArlhn#6W<>1qhu88bukynG7FCu z)rk!W`Z-NrO5YLvhMGEHlTn}Cxsn#<)u;B5<b+rH^rT(D;&Oe~$U8tqH{UIqS$R8e z6zxNqWVt_s*0NMmQ)ugx3#Fh}wC%6r`Aad1H5GHaUbW^=kk-$7M%i#k>sJwlH0g_% z6M?j5o~*aTL8|YJrE$}w*3kLD=jl?{j7&<<XzB990bu84se9SS<iA_G6=DZw&XM{P zpOX(;WKACl%}SOvf4pO-Y#c&~&bz{Yrlti^^3+u>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%;<!R>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+-pey38o0a<ya3(Y(U$@c#i} Cx9dRw delta 1745 zcmX9;4Nz277(ILUEpOj@yD($=7;${88cwaut|*9>fn_0<VyI<WGX~6}o3N|0i>c@e ztRT6ObOB9K63`Vv@i#3SP}KY#*Z<Kn$C?ZsGe%2IGwow`-@H9{zx(dp^PO|vz5I+_ zTBcv6=|)z?+E}HdYLdp9c$HhV*7kuA*a!%}5VisF7a(k22(0%&I3NIl3J4*>?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<?-`C>;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<J8y~4zPU{a z@f!_kM@hO!o-ArH!3o9*TSAn=W@G-wMqr-V=sx5i<9^_7QH`lNW(+#015bi+zr6xj z&~9w+q&)H<uNRa1K9-_?9s@K?mb5~0Ke0j@{13TaKc07sDXiJg?MBU4{*siJevdLz zD&^%83PsZVN5g<6UrXg3v{#%eeU^5e94M0lwj^M~BdO_71_@Chwc4iuIZLDyW2lp5 znsn;7=RifLboQgS$+-sUvMm`HJ3;E6ai0{LBkOJx_2OJvcc%yU%jP}<p-0(a9x`e% zE0W|_bL)Wet}r%qgmFhA7bUG%d6AsiMS}O8El=wvTXy`;lcf=?qLjO(v{!abl21E4 zK-M!kRJaF_PlmB*R2Y|*gmGP)912zfmLKKIvF}kcHr_4KtEF*K&anDERZ1g?`ly47 zKkp*2=6fZOMDlJurv%bSz@<mRxb8mp$*PYlO5G4YFt{j;J{HEh1f^-$FThvJlxC5# z5qnB$?I7yA8kBEKH6X1_`L6UsAVF2y^N*7EYY1uko$1Pv6w1KNP0I0!M}QaJRYIPn z)M~MEemyBx^RjZGhK{7_7nNV5bHIBmeOcR3ZdV4gN*$j@u&odGDXP5Wp{Y(sN87pq zyk1e?XgO>;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!<p~k<GhJDk~Y!MKjUm+-}yylAx1Rxxag=Sz0_KfYF$ZM5JIE zoXDeV4&2D6%K;ZGSOhP9#~}d&xT|(hbkE2_b55EqfQLpsYaIMwZM4rp6${n9R9{4Q zsuA>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</translation> <context> <name>QApplication</name> <message> - <location filename="../main.cpp" line="137"/> <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation><h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt?</translation> + <translation type="vanished"><h4>Willkommen zu %1!</h4>Möchtest du %1 einstellen bevor du es nutzt?</translation> </message> </context> <context> @@ -2282,22 +2281,22 @@ Drücke 1 für Standardmodus</translation> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation>%1 Benutzerstatistik</translation> </message> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation>Sollen bei Einreichungen Persönliche Nutzungsdaten einbezogen werden um %1 in der Zukunft zu unterstützen?</translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation>Ja, ich möchte Persönliche Nutzungsdaten einbeziehen.</translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation>&OK</translation> </message> 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</source> <translation type="unfinished"></translation> </message> </context> -<context> - <name>QApplication</name> - <message> - <location filename="../main.cpp" line="137"/> - <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation type="unfinished"></translation> - </message> -</context> <context> <name>SavegameDialog</name> <message> @@ -2237,22 +2229,22 @@ Press 1 for Default View</source> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation type="unfinished"></translation> </message> diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm index 9c8386dd6817e68fb6a743e63d02b895e75c66d6..703bcebb1e1486d053356ea45337f982225da47c 100644 GIT binary patch delta 1545 zcmXApc}x^%7{;Idc9z+h*<~AIm$Jq|Yov+_MmdUY!Ng|qKu{EkXtgyd5hLJ<2MTg2 zC<WF}E{jlLxiM5xE7YT!7)q(EBHCK5)dq{$DpgTiXr!;%zkbPN<~^S0nRnzR8yaE- zs%D1G(}x`xZ;Mb_dAlvq>}^{OA-59Hc@SHGX*CdPcLF7wAbcwT*)t(Hi1h)s7S)p7 z3*9__z;6UPM+cBO-pQjqwtkg;b&iV~)ly}J_nS|ulHq-I5>V{{@4sdc7xNH}S>Ek| zsc*h5?%-=QW@hi_+chdH&EmzH@b&wzAT!7Z*m?*DTY7-~HheR@4Ony-Kb)KeY=}m8 z^?V@rBp&qk0tPJ}R_TB*KEcz3aA0YiM!qu*NY*-8bj-=hLCv^^cLCpF&6Zh1G<Y?S zU_NZ$VV=s&tne*f%)%`tHEhkqPGCwGTNjxQ9DK~;vz7rhFZd`^*)9Y3)S6l5-#kzo z9JAvJYYZp^D%)7|XAgiqN$k`ql4kEUcKXspAhm;?7pBk#AG3>RX|h_*I*Uxe;_J+@ ziQcPU&#pc`1h~G(ey<$^9L;3|52FCvLGIA1-UVm0Qtb_(Y_it;{cB*po7Q7%0`Ot7 z)_>azpqy#rk|qFk_1s<9=av~EEPlTNNc&nyyBSQ6!+DE9jy&NG!7T6T7MjUelsxBy zg4sJeRybeb2jmEXBk3^kal4Z#olcgX6&z<W$oq2ct248@J|3!5Wxhfe(|rj@cjJjV zb>^WaU8)bwJ0VtA5bq0Aa9!Cn8Z3Xlt}K&^A6lWS99{;jo2;{^tsoIY`30R9D-YxS zRIG5wW!z;~%E$?Ba!HWWmWgA8I-nts?{`@qbEH=+sMrShFA)p73jw>UXun9yS9giW z7d`<(+QinT=fIbH#Zx`hYx9tJ=@Mx@BVN3>C=&4bLwwRiX=xf2U!NYJbclML^)hMv z5f2g7nUz8MuzCk2a9AH-Sq&um>k}`2PS%C$lkd~WQD^jf5)J^-FZFvT+#*X{dA?|7 z`EI;U46tys<o@d%awb_)lgN0#rIOb_WcZN<{FNBYs?&I&UbUoOmp06MO7YkzZHOfb zwbJHSGl5-8c%t4MS^844Uks;(!=+~5rNG+bQs<mhN|7XW^^F2qanjXQ3&^4f>84L0 zFxM^(#yle>tg>c+Mop1q&7W@=CmY|UT&E}SpQvlbL-~W)G9aVK$+AaIHjHqSq`GBz z$V>W3*LNc2=s{Ayv5SXD0W8ahZ<nmBc`LslnP=}5WJl6T`h`|HS?nS^>hgf`0rE}H zD4^6={<)Dxnf{C1cY^+wO_A~gWeadPl$+%6)ZGh}3|E>ws7J}%&<pTeO0GYNYOhyv ztt3}+v6IDfmE0ex&7?ZT_Fo#{mZKE92LX9Ul(MOr^t{i><Qq;Frz`do_o>Zsr9q@j zc#cz=FVHT{4y7$a1*}h$_KcO_cVtO!s#ea&Q?I5_J}8^r8pD*Hqa;>AigLY>E>C_c zcUM%_;LZaTFP3wfuTi{a*FG}j%%!^0kfC@w)m2;#Wg5C-yV{&AT5Bk?QV~O|!ET~C zlO7q`2Wjn^ll+2W_O9<Vipn)Wy=SyEk+J3d#<6#O0Aq)7>;Ppf|BBK3HkB`!&PNri zo9(XAR{xyt+<0Tla`LY*g-06#*v>gT-w<Hg-RycU;W7~ZoyoGEdd0_@f}d%CeIxug zgV}Q6U(?1sl2pz%m2|A8+t6vM8jYfp!??-l#SVn=K%*+Aei{cH^JraVytaeiUN^Bd JV*fP1{{c;l^`-y- delta 1730 zcmXw(3s6&68pr=RxtE)JZz3(DS4_uCtcz7-6Kw%)%Rtw*Ssw*ov?}ecgG`X@K%$Uf zeLz%D6lhCw03StDF@ii=YSC8Pj*e_?)mo$Iy4&ev`cg|DGPSsM>5kpcW;Qdqzsx!3 ze)+!t|37DVnEm>1)~Fk129xZpJ}Ed~XW?T(ua*+}3xtM!fH;oW3#1-^(7qPfwF<&J z0<e8Lgeb8yJ=m*Tw_k!dI~_>-6=L)QU`tYrdoKpB>ule<Tr%j^{ZAt0?koG(A>~3c z5J^PJ57UVAdA31QDibmF?z=nR=gSQmJ8+G!G3ab}4c}qN{oA&4sCn29_(G`f9RRj9 z;;j)skkf>-haUn;mf-yUIlv2jxO(|AU^e30HW7I7IsD|w1s1yv%BQKo1{ULvo*3J1 z7{+(r4>(2)<qr*0<86FCv$I;x159Hr@q7o%weE_r<rB{UQ$A$Hi#7udKd{m*c|iLx z|BdNvy~>k}8rw3&XBe~c*Pdft8O=c3QPxv%6{zyFBS%P@O&8dk{S$$W@3Z5=6q?|1 zcJf{7tRuwEw8R4oF0trpI@jrD7k&%@qaI*iwT}k&*0aHHp9Vs8JZjWaf^Qk+_J06- z9x!UB?*MZWjN^PBAalJj-G2)R8;tIX3BbV)K33S8uq9VmFf$Bn?iDs&$)e>P-YbwJ zKk}%cDODc{J!C9)-Q+`pma^R?91o`fbw(jt(F8p4c8r13G46gxh#svb@Aq(rsIh}z z^FNEa(zH~}Ki>~j-^;zC{vhuX19s|nLXp^5>HuB|iLI&BSmSK5wT6oGrQ*JkJfL{8 z7}>OpM0D~K;v^QH$FEbdmY?IspBhCOImF}RJj&+9(rBRr=z4+I#yzv*<x5gy*bk&H zl$y^s0|zWp<RlFrIV&BScLT^iCiQjy473KMBLnnbWy4Z`KWRO!RQe)k5n#V2T|E{6 zp8rU?(M_r8xg*_qbC6OJXA+&KNb5{KL(;8nGfht&j8YQ+V=CRZAMmD|yeC~`p_6+h z%^I?pI$ShC*&5SP$9BN~o#}W#WwP;J9+on!O=IM-pFKtnt&{Z%3P9RodD3k%{^dD* zNXlZ7joe|<1Jwg^$?TsfCSJLuh$ytnWxqTKtY0A4o}glXsFUlQpOXhS<pz5?u=|!A zIhjjJ<j6ga#lVU~@|nkIlq!?_;WxhlTZ`oj&&?(8a^)-b8NlNac_{xTN%W**7^L0< zCdKgmT^1{rG55oW>QWvx>DHR-%A-ZCKuvRudj@0d8sU<xC)6Y=3$K&niHnpaL*z^M zSw2I~U|avly|VL>SId=iE+0@ZO^H?<29(?w*BN8nkRRhtQHgfE2-q@|D@jk&Fm^s9 zYpmJHB_%hda;{oEiduhoK&>gc3^e^qZAd454|J#vP7-iKON={b@qnTQUfQL$POSlw zzlm|f<rsHvQX_AC2{ga1c1jeEr15Ic32Ob-^Xjo`9dO=I->!ZZn0}9Xyz~^A-$tbJ zJx=w#EDFJ2|EZqNc@Id)Q=`5r8g-sJu!j^2R;rhp>0WBAQokBo2tHaJ$GSA`P$#jv zBYX*=V~___O<8}`+-jivZASqQtJ<vgKJ(vG84$P3{QX{%&Y5if?`rC&^Rz`$F9P}( z7Hc;-8op+^?{hm~`M`4DAf>JGoF(NG>OYvue^H$Yq0cPAgOq8X&C>e}-Bc}=e7-q@ zt;^=MgvxGy!mL?qN8<A*dw{&m_!X;fkzF6hdj{SB>TmNQv&J?WxMZ2c>gREXMVB@% zcLT2__T^bFK0mbynJ7jYvM>v7xZpv>?@vEHZ77EyWyEAm#{_;mG;v%ZymY3B&aV7@ z&-MR(zJQN0l!R<!iham7fj)8cots&lmbJuHQs^yp*?eAG^7ILr4q95~_1o4Iczk!) z3ca2p_ey`6i*{`*Tt!~`wU+kFeFbGco4?%cS!r|ovLz~KUiha~t4iF31wOae(`Vb7 Gm-asZ{3N>o 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</translation> <translation type="obsolete">Police sélectionnée : %1</translation> </message> <message> - <location filename="../main.cpp" line="137"/> <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation><h4>Bienvenue sur %1!</h4>Voulez-vous configurer %1 avant de l'utiliser t?</translation> + <translation type="vanished"><h4>Bienvenue sur %1!</h4>Voulez-vous configurer %1 avant de l'utiliser t?</translation> </message> </context> <context> @@ -2294,22 +2293,22 @@ Appuyer sur 1 pour le mode par défaut</translation> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation>Voulez-vous aider au développement de %1 en transmettant vos données d'utilisation ?</translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation>Statistiques utilisateurs %1</translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation>Oui, je veux partager mes données d'utilisation.</translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation>&OK</translation> </message> 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_%|(<teH)Jsm<>6(FP#HUJ}CAk?k_R@)$)6o3S82sXlEwY<UXoNxxZ zIg<gmP0-oS0xO@{F{iZro|)wx=c2~q<N)iN8yjcCdU-Tq2dsa25kBL-8dZ+yhx?nW zt4%yyqq2fbo~<#nHPw8VCLlh(4~0`bfskfwY3Kyvzr*q8nZWcQeBU?`2-f0K^;{si z5qG<~0BH~I@6!P(fq0S}0QlX~$iI025t1FVUF^8w2aU_Yk-(@rO~%B(f!Jss$UIrx zOP<G6mU)ElVgb&pU$Ai3^MJ+1Vi)F9lc6lBC>SW5#$Pit3lHEHt;%A*<UU&8Wy4vW zcLlKFGgcpY7l`s>O-&@sClA@Nc2{7<3wBx<O9QNDZQl~H!VY%+Qxh=rB(tT_xne(d z`QZ*gS<Y_PIsiHTtmpnBAbk(FY0cKO2U@B2XJEacRnNTwrtH=_tx5(w=V~Ws{zJzb zwQ*S^fTAzBqfj!~RS2507l`f@Hg?aXuOYlaAUp1Jo1n^3`9i(NSHKz{-Yclqgec+k z-brNa1HqQH6PR?<jw^iZxaNvrYc8PwJNS5=%8EMqY@JzN6{!ok)DFbV;VC-vgp8BA zJWrzQl&jmGG#<$9(N%g7uhb@8Wg!*MNYPb24+es6>uNSG0}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<M-z<GnRW-19vOc9PnvBcQue(Kz->=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<L0Q@V}kN+5$pCO(1%L5`$Nf++C2I7p;<<Jj-#Nkr6rw`eqO1&XZ zY5GU9riXY&HOQJj-(a6?e2Wqtvy=ZqO;@(d(_$*=LFU_WeTyAS3b;wK3?3&hxJQx> z^^%wLlJKQY+*k5uvE4jdnyqo;t&;j)SdeVXYNV&Lz>e85vTgrXVAx@~+p>t_6D?n< zBO<N?<U2>`l`MHI-&HbzOba*3fqCvq!9b$zF+nLz>;hJuRmvuloCVXBGJjGkVv8NK ztCX^f)aC7~O8Lu;fJsp*9H&xnWTn!*5O5i0$A~sNW?xZij@+UyY05#7!r<7i)VI<k zo060h1!lneqS8{Z9N^bvy<A$YoKB)<r7L-_tPUw@S2{l@snY6{pDJkMr2ftw6*DVt z<37q5mKe{&m3O8NGHm*Q>WcM-UE`>(zS&Tzq2(2R!H!wi4VC^>L!M`-F%i$uWJ60Y zO<gGPRz<ZI7a2w6N1}Dc=zNG=%}p>4zwSxTdZ=-D52Y*3)o8s+<<sK$YsG&^`cq^1 zfj(Mq!N!KgWL}oaml(WR*k-=X;O!i_df=(#4q(P0lXE=v3T`&de5#=xGK1eRsLn~5 zrqrz@sou@B`)n96b*yRM>qWF`V!6pk^ZdbmjAn7g;W$#~;L%W{C5)fjI^t+TVx0T` Dd7jvp delta 1720 zcmYL}dr*{B7{;GH`+a=-ec!HR%C5k$yIxadSTru01Uln*zlRslQJ4EF><TP5OEy{% zF($!-)fB~$7rbB;W<eJT3Pp2V@-{V<smXYkv>eN^>}B?k{`&2l_nfoO`##Ti{yEIf zx3XHZW=fqUlI2#{EjBZcROd2=7tDZA(*y`EVk<Bz48p!rp!9tRUkE^s2*F3(+F#dd z4$0X8aZU^{z8a$M1dx5g&$5+u*UjwJtz6Prf`3E!;EC6a2=5z9tVj5rDB=m8s4*(` z<Cr*jwB!<Br!lgMnY>tIW}EZ*Tbe~1Hg=<8Y9x@-j@Mhy0vmVYv&V%%{1Tk{<ar=T zi!;0D0xmE5&z}e6cX8tb5!htLedi)z`W21xa|E#d2S1DN_*ved2|F+f7;{il@cf^E zBbqN}k!-_v+{28lsGPsW7KN0aV(Uhq1S~$5z3er>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<odL|^tZJ;2Y+&4RDpOLaT9iAJ`yiO&|zN@0|ka;6)|GI5t^ zp6uQ(dLl_~aG6+}YXdy(VnYP!%Bv6?D(G@|g4pyp30QJf+*6(mRBYp&;y6~;$*<F8 z#R~(%dWKLU=JLP*r;?c{4Hue$ZCYLxup;&4y;5ysA!Y0rY1f%ufVWcG(?z{|XG$N> 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<cpDU<eO0*NO?eG`AX5;B;jdgistqpyA?ywC}@$D#(g?- zNOqkvEwh0>)un!JsrGZ*GA_xMp-+^h*J;?pqLh^bWXZN0JWh^fj=kI^&z|~7Ii2AK z=C4<LMV|oD?|!bc_-VKLSrVi8n%@9Me572oET>kY`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<as`kZm*72zfB<T=XR*Q3%>=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*Nu<FAoSbK%RlU-wagJ3=V z;$W@k4)3ZAS~D*`J33)yMoyY5H^b_7S;tNq8E>PdWLKfJ*zR->uBEx0nU1W&{0ypE yQ!_GM^sAKW1#Wx3+ge!QaAsK@?nDWIe(8)&n{pg!cDKXj<ed}79jV{wnD`$?MjBE8 diff --git a/res/gta5sync_ko.ts b/res/gta5sync_ko.ts index a63162c..6db77d2 100644 --- a/res/gta5sync_ko.ts +++ b/res/gta5sync_ko.ts @@ -1713,9 +1713,8 @@ Press 1 for Default View</source> <translation type="obsolete">선택된 폰트: %1</translation> </message> <message> - <location filename="../main.cpp" line="137"/> <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation><h4>%1에 오신 것을 환영합니다!</h4>%1을 사용하기 전에 설정 창을 여시겠습니까?</translation> + <translation type="vanished"><h4>%1에 오신 것을 환영합니다!</h4>%1을 사용하기 전에 설정 창을 여시겠습니까?</translation> </message> </context> <context> @@ -2315,22 +2314,22 @@ Press 1 for Default View</source> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation>개인 사용 데이터를 제출에 포함시켜 %1이(가) 개선되기를 원합니까?</translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation>%1 사용자 통계</translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation>예, 개인 사용 데이터를 포함시키고 싶습니다.</translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation>확인(&O)</translation> </message> 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{juJ<SLgD6?1uL7$BNRV}qK8rlLuX=2WI8;3MA20?Q*5 zf%ULrx{4t3l45*d<pa}l6jK-RS@~>KwA3A6V`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^k3<sXaRRQYesN^CEHo|6S9p3uq1k!a{W`Mm#3rKk+Fn zoY^b6jj7Dh&8u00#d(I!8`ud98O;_>D*(RQ!IFz+09z06mrP^nRXor~Wd*PBXrI`m zv_#et<pgS$vDW!Ff$Tx7y`8LC>0o;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`YcKx0Bp<S{z9>D{%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*|<SMnr11nPoi-5rve-7f3?BFs@_)2ozg+bVv6s^&eEM=x*zd97aDQ0&FV)7&g+ zzIo&1_j|}!^@KdjL+&@N<YT2MR*=9mq<GeRiyxHKQEBC}JAF4@p$lH*U9!8e9MEFr z^MQ#JqL1Z^EhHu6HTlL)x-H2+%Qux3fTJ%r%L%s3lZw4JDUUj?6fQXnRJJK)kz{IJ zfl?Mvc4Y>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$ZLm4Zxo2<VRec4t1 zQi=C1KW=g~J)(E6*wi+Y=C}48KFb)z(vI;8W0WN;wD*COBf#W1vt=>WTJ)zm_Mr~2 z_wcJm)l$-FURq9;8h$gcKRTD*29LS!Wg>-PJvW<zS&1)?Hfdtc^F`!N>8?4Z*=hXB MH-mTe*aIT}1%M&$fdBvi delta 1794 zcmXYx3s6+o8OQ&7_N;gBy}Myz>5{DF0y>hqA-jSs55dL91dSS$#7EUM8MP2eVHb55 z#McUo5Oq=3!$KQD<RSPV!!$k;n+z5jr=l6xQZ;Q_ZR*4^Hi=B4P8yTZe$2WvJHI>M 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@Y<KoXfMc(j<m~n2!|DqJjdx0ZmqJG@6HNT%DHMaZ6W|dO- zQkb0cgVa4phwnTl{b9jfAa|Q|;`luh$1I&1p}jnBNkc=V^$TI?^Os)%QevfBXZ(O~ zsdV=^x#n1n^yu^*a?MSnA^#k3;4_gaY1Z~f#)U^B<iv}{vW_m`w<nCA!6F(V6CTN8 z-TRHPw}?*Q{?zz^V;8Vts&Qb5JQ*Am?NWv{B+GHvXHv0bS*sueq&CRO|D(bGE+9rF z7weoa97fH*<0rXv-nV2Er(9Z0<jdp@-=_hU|CQ^{Qn87z$-DD!&<qCTpxsHUQ|0c# z0#YJL?sL2fy#Av+Jd=*HxlX?L#bY4QBwv1QK2Wd8*X)_V%-7}7mEQqf(-hqu>V3<Q zqWg-t^%=$d^NG-7M~jFUHEZ=_C8xL*s6G?r0TJbq8$yz`@zsl!!rP>{<r8K3D9z>Q zZjmWxu)r$ek@Ke?yQh3o<OP1cS&3Af1dL5lRvd_O(-%=TT~{K#djZX*TuWF=ek&KF zGJRgjLQ)EBRiCMWr>OOe3u<lY6(IDH8g!DrUHjBvJ_%Tr5@q-q;a4pF-~zSv`C4Go zpQ5ZPjxzkJ+Wp>tfc=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+<M(}P4jmy+m)Dv5m(fin3dJH* z2CKL#>Is{(#aWZZT6;fc<uBbp;mMda>mLAdOJm$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^Q<Q;#wt1~>g4HECyR2%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</source> <context> <name>QApplication</name> <message> - <location filename="../main.cpp" line="137"/> <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation><h4>Добро пожаловать в %1!</h4>Хочешь изменить настройки %1 перед использованием?</translation> + <translation type="vanished"><h4>Добро пожаловать в %1!</h4>Хочешь изменить настройки %1 перед использованием?</translation> </message> </context> <context> @@ -2297,22 +2296,22 @@ Press 1 for Default View</source> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation>Разрешишь нам собирать статистику о пользовании тобой %1? Это поможет нам в разработке.</translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation>%1 Пользовательская статистика</translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation>Да, передавать данные о пользовании программой.</translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation>&ОК</translation> </message> 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<jmQa z`08!-Grn45Vhv~bCXLGM-n>#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~<Sb<81wWdgp0%GPW`|a@%N0f-Y9w=h zO!u07S?6D+fU%JMTJHty^JfG1mI7r4?sQWv-0CLP{|J26<7WEiC9q(G+o(?xff)gA z!Kp)Z{ghi=+F0^sJ@*z0JPT@t$f>nJ?kORsJB*I?yj37aI=E9X$yrN;7XO1}s*Mi{ zCd<w?;e74eKw-4tOe+KCe&E9F=`OU>`Kes;{yv|iHL<38K2NL4<=3?_S37{b<vdBN zPA(7DW(5-8abDVzgh{~um0G($5wkUD?RiwZtXEt2d<hVzY8^Q%NJJyQp!H>SUc8@* zRZVaobJ2scv5_0y6Xo0}(MxCmS|a&&_vo0trD92KDqx)}mR~KW<n)M+b{f9EQ2c!1 z17Ox#@mTX?62~f@xJJEFI>n9-()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`J<!_^B+<?!lVuB2!&WF z`N?EpOFB=|nWF5)lA}F>24+&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?72HdaCSfC<ewpmAieG zQi!g|H=2k_;BmRHjebk=2>Gs(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<y~9X6 zH&y6Q57O9;>-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*W<Wd#yqk$5`)Sh0*+V-=5APqdHiuQ;Gj-1Gb%F_ zg^UD>2^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!Cc<N@+{5E*~Zyt0ow%Ivg#@N$ZgEMD<A0Y<2RVb zDi-hry~_3!@P&Hkx+ng_PNs!`6Hl<-f(an-9UB}ZYO0U2mqup;Pvx;8;da_VHye4K zCOcWk&K`&bR^80P+bFO1c6R=&{XlFTyW9~EwA$I^=c|FxO+2jEY>kWbQpewbmWz7z zy<dP8H|b~iJiy{R^bY@3N<Xc4mCYhu9_7=8-Ep;T!hPv2K+S2PYTQZTSl%y?B4>D5 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!S<gtG}ln`&?Q6bPx*jLGqhK& zB@*NKupyDPP3Kpr*`c{Hx15<q-YDg<F&?>QwHPmS0?$3bYhxZPJQ@-kTKquTGBI>6 zM9#S=wvW)}JNJn%{OM~TyGR`9`Hsk0Bo2<zw@S~8qoc(2yj=0py{iEGs5tRz04V=d z{JMu+)4x^x<)uk-$tt5E=L~S{5??54mJ_n^&s|~QFN=-t*5iQps?j@AOwwKBUQx9) zhK!xXw1d)2<16;3fwDg1&?tFwzniy+X_f;aY5KpisacYwm5~7)>!rkNB>a(&c|>%w z&J1ohYJuH<kV=++LpE6|m24su9+I~IFdwL>kZOmiS)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<^Qp5xpr<z)0<ls_!?0fjMgxa>thDU9Ni2~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`<UkE&HM)?CoWWA4t9~J{U&q&gLG0I9N;TWY3#|h zyq2Ic!iP<&W$%XAb+>td)q7$Kw_PQ<K8p2>odWjd^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><O&%^Ox^ZAo>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</source> <translation type="obsolete">Вибраний шрифт:%1</translation> </message> <message> - <location filename="../main.cpp" line="137"/> <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation><h4>Ласкаво просимо до %1!</h4>Ви хочете налаштувати %1 перед використанням?</translation> + <translation type="vanished"><h4>Ласкаво просимо до %1!</h4>Ви хочете налаштувати %1 перед використанням?</translation> </message> </context> <context> @@ -2295,22 +2294,22 @@ Press 1 for Default View</source> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation>Ви хочете допомогти %1 покращитись у майбутньому, включивши дані особистого користування?</translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation>%1 Статистика користувачів</translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation>Так, я хочу включити дані особистого користування.</translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translatorcomment>&OK</translatorcomment> <translation>&OK</translation> 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{WP<qsL6C<JeDY>N9;*u?2{cqN zD*arwqI{94;9#O=nlduu7}mHzNM$~<!IUXP)U;94K4<?rbMO7#?>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)<K@%vf~>6;nfiMUPO`)Je^&@XgagV9HTkIz9nda0Qq5 zzXznu!0oOsK%S1f`?U1jfdP9Y@b-Y9Tnh#gH6G0F@Svkj7<OnlFuYU9pYVuir}8Kk z!d715rOd>#w)34V(vnlplKtBNYZyz5DFfCvu<Q?Ffuhm;C9?^U+@>+H6<_jDO<1Bo zJ3QG1I9#l8<!xYz4?A&!WLXx?PPY03OFw7l#6aTzE<67n@hWn$wjD-bS|4+-qjMX* zSbN_mfHJ`TIN$^1m$BZvaX^N|-5OiqT#bC-3Xr!@WBUFDFzG{$Z-E^c)u)+M_z#_a zu1R<JktKF+7Aw8ShzqCe29^&JH+RpVw*kCKBrkfnTQtk_#m3;T$jzI)Uo-~}7tigU z2&_IPx*gkr@xdNk(&xe4jiUQhIelNq$7oHgcps0@T9wQaZPMjdYLLQnwAS$%ecI9x z;`+Lx-IhHDD3rCe!Ne+Uh_<$Zif0_s?tK~y%nR1mZB7K7M|g{Nq%e`+(c0wjLBlS1 zQ55pHagbeEc1rRQ>q(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<ROjmr1_|Dj)E3tnJ%(Up<_xlw{-@&&^CYJgqua`o7 zXUgX5GszN{Y;};~BYNe4f63_F9{xlM6a0Co&gLu0S#t&`6bW)x3ZdqPocClrkWk5U zbf%cx!*bpENE-H>+&E?t5V1^dn^_7ZHON2oyaZONa{JP`B>ru=J0uhs_rBbp^nj+n zs|dZsbBR+C{(6PYieU(4dHFH^v(9Qs?pEGPsRfdEc`)yV2TNviqipkzP@?aUq=V-x z@%<!x$t@lxPi8B+_<A{<ZMw%>WYe_x1jX$*PPZn)gLaeRuHOQf-%+}4aWtes`Q<P% z@rzY@j?o2)b||;id?3r48<nWiVQRS-@eXWPE3&$P%nr4B66xt2uU3bXREZ@Xv@cMr zf21x$Q`MU1n*py9)n%Rvq?W0*qblhA9uFoqd(d8?)*ZV=U82=P5~aaZr8c(ED5c}n zZ_BN~gsbZ5@+APjuIQ9a>(q1E)NE5I?^jHNOUl&FFG#C&s6V-A*QCwjX4T3zR`F1E zq!7fD)qrV5*YqFFqPmhpzjHLz)!Fs60<EotiyqA0uCEQJ8uAl;osoFPZP1_Yr>UKf zd5dZej5bJW2eFDZSQ^OHf+L2ZH$vz}HyDQYQo7QdhM?c5dRiNQsYZB58fp$cq`kJo z(6pGm%j)6r`pGPQ3*V}rY)MM<I%~fGOieLbGN@BzfpNwIfwqT+-_)CZZN}U!q^ES( xxa;C_+6K>z`(DOTZY|ts2w-b=@lb<RS{j>9(quL-HH?hs?kK<J=(YZD{tx+V(8vG) delta 1695 zcmXYx3s6*59LB$U_FnJads!Kab_K`XRYn9PHWh^OK~kb=N+QZj<>lfo!mhwBgbAx* zLnTvgCv+l=O!E;oSfFV(Fi?(K4ohS<)59K<V`N4ojirhGo$b!t`Q179od5Zs@B8lU zd5w*>uw7;$*>8zw_R0QqGxJXOyN$7>J0Ujh1H?td4!~Lq@n9{mIU3?=5h&gdF+kkv z_ji~hHrOC7Nd%&bAqCC?1@8svsq<eov+4pa3zqOxh`qO><~PI+Oaq=SMeJ`65%=;G z!Kmi$#*BMQ-432F7}=JIyhgAHqkNCBqO{n79S_F?t46W2V~{pa#s{~&K=Lts+BF+k z{w4bNKLM0n!<CB{0cAdZc}oH|)?>uA0+=@<sNco`Imd!@)dyKqElfT#6_`3GRLvd* z3d49hi)TeO+{cWpd?DY%Rzz&hWciWj0dop-WIRioWV7<;GJ!2$^SjI<+~yXYkrgiE zNxGDr0rt+EW;$XjJ6d=J$m?atkCQCx#@LCzNa7OKEye&vBdqr$>g$<Qc7As#@W^!* zsGxaUPqTsRuK?-@`{`g9;IXlxUseO9T|A((#N5;=2fqX=@92!@#(>1<b>SWtFyp!| z(fb$8KB9A0PoXN4xJhiB@U8e%avQL|Q`~-O0qyk#?-0ogKM#l|<sb2A+}q@46CV~$ zF#)l=Edkh&F9xb#1!lzsxwa+9iWo6)vVmm3!)=n0ZB6HkC9_%<E9Lh00r~fHw`88R zsYUX|Q?C<MX;--o@Sc!b<ESe~pVYd8if>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<pZ)J<=@*WExv4d?8FeIBS9~v zodK$T<w>$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 z6xNf<z}ltc+AGSX_#|NFHf1>XPm-ls6^5wswNa{Y?H&tM!vhp@mY>f9dUHfUgF3gQ zmA=tMK~}W~S@$QG70ZNCb>&qO`@SdDtYNaG{w1EI%wdJwxm!tl#P_;-!R`UlHmHH> zE<o-IGFu8VXEaFH$7<lvOMod=y<}NUIs1?gD<+|v%W8Ver&_~!>N{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<WUN?Y2D>#XxvPs^7TJ!pDZBvAHS)cTmA_!{wXcssi$$9Hn^AM za=xp5(M<m##~<2Hreg3gEu7UQbDK6@_=;y~QS6x)xKA^xIi8SKfqrMMg}hBOrf%6E z@^Kskr2LR;Z;)=Y7lr&=LG5fEGsxQK)Ly0`qMh9I<{Bnlj;Bw&-7sm0V&;r8#C}8V zJFEFkZSjQL2LEA-@~Yj2jy2?2xu2(p%wgGcc_Sh30p1g03O^Q_8|?z-w}ci|{6$W6 zgt`Xb2kaO4aEM7b%Vk3pvoGQ{gIQiDIDu^wJ2MT_vwW$T2L}?cU{m4C{pmh$G_070 znV3T3w%{9B(+di2WJNdc%=s*1`N}0PKA6|?|19h3ex&F@*EqVD&T}Lz$g-CeyUXoX zkJ~zJ=9GCh8p?5dtu=)%&%Lo?x2wdt(OYS!x7H$iOo^KwYiUB2r?Apv^;S7u8?8=H eicIxFRxaGUxy)Hy=yAGTyl#9{XX}Q@=>Gt=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</source> <context> <name>QApplication</name> <message> - <location filename="../main.cpp" line="137"/> <source><h4>Welcome to %1!</h4>You want to configure %1 before you start using it?</source> - <translation><h4>歡迎使用 %1!</h4> 你想在開始前先設定 %1 嗎?</translation> + <translation type="vanished"><h4>歡迎使用 %1!</h4> 你想在開始前先設定 %1 嗎?</translation> </message> </context> <context> @@ -2277,22 +2276,22 @@ Press 1 for Default View</source> <context> <name>TelemetryDialog</name> <message> - <location filename="../main.cpp" line="166"/> + <location filename="../main.cpp" line="147"/> <source>You want help %1 to improve in the future by including personal usage data in your submission?</source> <translation>你希望通過收集資料來幫助改善 %1 嗎?</translation> </message> <message> - <location filename="../main.cpp" line="167"/> + <location filename="../main.cpp" line="148"/> <source>%1 User Statistics</source> <translation>%1 使用者統計</translation> </message> <message> - <location filename="../main.cpp" line="171"/> + <location filename="../main.cpp" line="152"/> <source>Yes, I want include personal usage data.</source> <translation>是的,我想幫忙.</translation> </message> <message> - <location filename="../main.cpp" line="180"/> + <location filename="../main.cpp" line="161"/> <source>&OK</source> <translation>確定(&O)</translation> </message>