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 &currentArg : 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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;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>&amp;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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
-        <translation>&lt;h4&gt;Willkommen zu %1!&lt;/h4&gt;Möchtest du %1 einstellen bevor du es nutzt?</translation>
+        <translation type="vanished">&lt;h4&gt;Willkommen zu %1!&lt;/h4&gt;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>&amp;OK</source>
         <translation>&amp;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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;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>&amp;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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
-        <translation>&lt;h4&gt;Bienvenue sur %1!&lt;/h4&gt;Voulez-vous configurer %1 avant de l&apos;utiliser t?</translation>
+        <translation type="vanished">&lt;h4&gt;Bienvenue sur %1!&lt;/h4&gt;Voulez-vous configurer %1 avant de l&apos;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&apos;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&apos;utilisation.</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="180"/>
+        <location filename="../main.cpp" line="161"/>
         <source>&amp;OK</source>
         <translation>&amp;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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
-        <translation>&lt;h4&gt;%1에 오신 것을 환영합니다!&lt;/h4&gt;%1을 사용하기 전에 설정 창을 여시겠습니까?</translation>
+        <translation type="vanished">&lt;h4&gt;%1에 오신 것을 환영합니다!&lt;/h4&gt;%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>&amp;OK</source>
         <translation>확인(&amp;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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
-        <translation>&lt;h4&gt;Добро пожаловать в %1!&lt;/h4&gt;Хочешь изменить настройки %1 перед использованием?</translation>
+        <translation type="vanished">&lt;h4&gt;Добро пожаловать в %1!&lt;/h4&gt;Хочешь изменить настройки %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>&amp;OK</source>
         <translation>&amp;ОК</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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
-        <translation>&lt;h4&gt;Ласкаво просимо до %1!&lt;/h4&gt;Ви хочете налаштувати %1 перед використанням?</translation>
+        <translation type="vanished">&lt;h4&gt;Ласкаво просимо до %1!&lt;/h4&gt;Ви хочете налаштувати %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>&amp;OK</source>
         <translatorcomment>&amp;OK</translatorcomment>
         <translation>&amp;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>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
-        <translation>&lt;h4&gt;歡迎使用 %1!&lt;/h4&gt; 你想在開始前先設定 %1 嗎?</translation>
+        <translation type="vanished">&lt;h4&gt;歡迎使用 %1!&lt;/h4&gt; 你想在開始前先設定 %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>&amp;OK</source>
         <translation>確定(&amp;O)</translation>
     </message>