From 5244f72ec2e7c75af65bce7894f07eacdbefc9f7 Mon Sep 17 00:00:00 2001 From: Syping Date: Fri, 2 Apr 2021 19:51:05 +0200 Subject: [PATCH] QCONF build separates images --- .ci/gta5view.nsi | 65 +++++++++++++++++++ AppEnv.cpp | 20 +++++- AppEnv.h | 2 + CMakeLists.txt | 5 +- IconLoader.cpp | 41 +++++++----- ImportDialog.cpp | 8 +-- MapLocationDialog.cpp | 5 +- OptionsDialog.cpp | 71 +++++++++------------ PictureDialog.cpp | 8 +-- PlayerListDialog.cpp | 9 +-- SavegameWidget.cpp | 3 +- UserInterface.cpp | 8 +-- config.h | 10 ++- gta5view.pro | 3 +- res/add.svgz | Bin 772 -> 386 bytes res/back.svgz | Bin 455 -> 376 bytes res/empty1x16.png | Bin 87 -> 0 bytes res/flag-de.png | Bin 0 -> 1107 bytes res/flag-fr.png | Bin 0 -> 1299 bytes res/flag-gb.png | Bin 0 -> 2911 bytes res/flag-kr.png | Bin 0 -> 1809 bytes res/flag-ru.png | Bin 0 -> 1446 bytes res/flag-tw.png | Bin 0 -> 1319 bytes res/flag-ua.png | Bin 0 -> 1266 bytes res/flag-us.png | Bin 0 -> 2856 bytes res/gta5sync.ts | 132 +++++++++++++++++++-------------------- res/gta5sync_de.ts | 126 ++++++++++++++++++------------------- res/gta5sync_en_US.ts | 132 +++++++++++++++++++-------------------- res/gta5sync_fr.ts | 126 ++++++++++++++++++------------------- res/gta5sync_ko.ts | 126 ++++++++++++++++++------------------- res/gta5sync_ru.ts | 126 ++++++++++++++++++------------------- res/gta5sync_uk.ts | 126 ++++++++++++++++++------------------- res/gta5sync_zh_TW.ts | 126 ++++++++++++++++++------------------- res/img.cmake | 27 ++++++++ res/{app.qrc => img.qrc} | 12 ++-- res/next.svgz | Bin 453 -> 376 bytes res/template.qrc | 5 ++ 37 files changed, 726 insertions(+), 596 deletions(-) delete mode 100644 res/empty1x16.png create mode 100644 res/flag-de.png create mode 100644 res/flag-fr.png create mode 100644 res/flag-gb.png create mode 100644 res/flag-kr.png create mode 100644 res/flag-ru.png create mode 100644 res/flag-tw.png create mode 100644 res/flag-ua.png create mode 100644 res/flag-us.png create mode 100644 res/img.cmake rename res/{app.qrc => img.qrc} (78%) create mode 100644 res/template.qrc diff --git a/.ci/gta5view.nsi b/.ci/gta5view.nsi index ef7e4be..3ed4617 100644 --- a/.ci/gta5view.nsi +++ b/.ci/gta5view.nsi @@ -128,6 +128,39 @@ File "../res/qt5/qtbase_ko.qm" File "../res/qt5/qtbase_ru.qm" File "../res/qt5/qtbase_uk.qm" File "../res/qt5/qtbase_zh_TW.qm" +SetOutPath "$INSTDIR\resources" +File "../res/add.svgz" +File "../res/avatararea.png" +File "../res/avatarareaimport.png" +File "../res/back.svgz" +File "../res/flag-de.png" +File "../res/flag-fr.png" +File "../res/flag-gb.png" +File "../res/flag-kr.png" +File "../res/flag-ru.png" +File "../res/flag-tw.png" +File "../res/flag-ua.png" +File "../res/flag-us.png" +File "../res/gta5view-16.png" +File "../res/gta5view-24.png" +File "../res/gta5view-32.png" +File "../res/gta5view-40.png" +File "../res/gta5view-48.png" +File "../res/gta5view-64.png" +File "../res/gta5view-96.png" +File "../res/gta5view-128.png" +File "../res/gta5view-256.png" +File "../res/mapcayoperico.jpg" +File "../res/mappreview.jpg" +File "../res/next.svgz" +File "../res/pointmaker-8.png" +File "../res/pointmaker-16.png" +File "../res/pointmaker-24.png" +File "../res/pointmaker-32.png" +File "../res/savegame.svgz" +File "../res/watermark_1b.png" +File "../res/watermark_2b.png" +File "../res/watermark_2r.png" SetOutPath "$INSTDIR\imageformats" File "/usr/local/lib/x86_64-w64-mingw32/qt5/plugins/imageformats/qgif.dll" File "/usr/local/lib/x86_64-w64-mingw32/qt5/plugins/imageformats/qicns.dll" @@ -216,6 +249,38 @@ Delete "$INSTDIR\lang\qtbase_ko.qm" Delete "$INSTDIR\lang\qtbase_ru.qm" Delete "$INSTDIR\lang\qtbase_uk.qm" Delete "$INSTDIR\lang\qtbase_zh_TW.qm" +Delete "$INSTDIR\resources\add.svgz" +Delete "$INSTDIR\resources\avatararea.png" +Delete "$INSTDIR\resources\avatarareaimport.png" +Delete "$INSTDIR\resources\back.svgz" +Delete "$INSTDIR\resources\flag-de.png" +Delete "$INSTDIR\resources\flag-fr.png" +Delete "$INSTDIR\resources\flag-gb.png" +Delete "$INSTDIR\resources\flag-kr.png" +Delete "$INSTDIR\resources\flag-ru.png" +Delete "$INSTDIR\resources\flag-tw.png" +Delete "$INSTDIR\resources\flag-ua.png" +Delete "$INSTDIR\resources\flag-us.png" +Delete "$INSTDIR\resources\gta5view-16.png" +Delete "$INSTDIR\resources\gta5view-24.png" +Delete "$INSTDIR\resources\gta5view-32.png" +Delete "$INSTDIR\resources\gta5view-40.png" +Delete "$INSTDIR\resources\gta5view-48.png" +Delete "$INSTDIR\resources\gta5view-64.png" +Delete "$INSTDIR\resources\gta5view-96.png" +Delete "$INSTDIR\resources\gta5view-128.png" +Delete "$INSTDIR\resources\gta5view-256.png" +Delete "$INSTDIR\resources\mapcayoperico.jpg" +Delete "$INSTDIR\resources\mappreview.jpg" +Delete "$INSTDIR\resources\next.svgz" +Delete "$INSTDIR\resources\pointmaker-8.png" +Delete "$INSTDIR\resources\pointmaker-16.png" +Delete "$INSTDIR\resources\pointmaker-24.png" +Delete "$INSTDIR\resources\pointmaker-32.png" +Delete "$INSTDIR\resources\savegame.svgz" +Delete "$INSTDIR\resources\watermark_1b.png" +Delete "$INSTDIR\resources\watermark_2b.png" +Delete "$INSTDIR\resources\watermark_2r.png" Delete "$INSTDIR\imageformats\qgif.dll" Delete "$INSTDIR\imageformats\qicns.dll" Delete "$INSTDIR\imageformats\qico.dll" diff --git a/AppEnv.cpp b/AppEnv.cpp index 8d118cd..94452aa 100644 --- a/AppEnv.cpp +++ b/AppEnv.cpp @@ -65,7 +65,7 @@ QString AppEnv::getGameFolder(bool *ok) } } - QString GTAV_defaultFolder = StandardPaths::documentsLocation() % QDir::separator() % "Rockstar Games" % QDir::separator() % "GTA V"; + const QString GTAV_defaultFolder = StandardPaths::documentsLocation() % "/Rockstar Games/GTA V"; QString GTAV_returnFolder = GTAV_defaultFolder; QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); @@ -129,13 +129,13 @@ QString AppEnv::getInLangFolder() #ifdef GTA5SYNC_INLANG return StringParser::convertBuildedString(GTA5SYNC_INLANG); #else - return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("SEPARATOR:APPNAME:SEPARATOR:translations")); + return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("/APPNAME:/translations")); #endif #else #ifdef GTA5SYNC_INLANG return StringParser::convertBuildedString(GTA5SYNC_INLANG); #else - return QString(":/tr"); + return QLatin1String(":/tr"); #endif #endif } @@ -145,6 +145,20 @@ QString AppEnv::getPluginsFolder() return StringParser::convertBuildedString(GTA5SYNC_PLUG); } +QString AppEnv::getImagesFolder() +{ +#if defined(GTA5SYNC_QCONF) && defined(GTA5SYNC_CMAKE) + return StringParser::convertBuildedString(GTA5SYNC_SHARE % QLatin1String("/APPNAME:/resources")); +#else + return QLatin1String(":/img"); +#endif +} + +QString AppEnv::getShareFolder() +{ + return StringParser::convertBuildedString(GTA5SYNC_SHARE); +} + // Web Stuff QByteArray AppEnv::getUserAgent() diff --git a/AppEnv.h b/AppEnv.h index 202d5fb..1e182a2 100644 --- a/AppEnv.h +++ b/AppEnv.h @@ -39,7 +39,9 @@ public: static bool setGameFolder(QString gameFolder); static QString getExLangFolder(); static QString getInLangFolder(); + static QString getImagesFolder(); static QString getPluginsFolder(); + static QString getShareFolder(); // Web Stuff static QByteArray getUserAgent(); diff --git a/CMakeLists.txt b/CMakeLists.txt index b081148..db14b14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,8 +168,8 @@ set(GTA5VIEW_TRANSLATIONS ) list(APPEND GTA5VIEW_RESOURCES - res/app.qrc res/global.qrc + res/template.qrc ) set_property(SOURCE res/global.qrc PROPERTY AUTORCC_OPTIONS "-threshold;0;-compress;9") @@ -205,6 +205,7 @@ if(QCONF_BUILD) ) else() list(APPEND GTA5VIEW_RESOURCES + res/img.qrc res/tr_g5p.qrc res/qt${QT_VERSION_MAJOR}/tr_qt.qrc ) @@ -369,5 +370,7 @@ install(FILES res/gta5view-256.png DESTINATION share/icons/hicolor/256x256/apps install(FILES res/gta5view-512.png DESTINATION share/icons/hicolor/512x512/apps RENAME de.syping.gta5view.png) install(FILES res/de.syping.gta5view.png DESTINATION share/pixmaps) if(QCONF_BUILD) + include(res/img.cmake) + install(FILES ${GTA5VIEW_IMGFILES} DESTINATION share/gta5view/resources) install(FILES ${GTA5VIEW_QMFILES} DESTINATION share/gta5view/translations) endif() diff --git a/IconLoader.cpp b/IconLoader.cpp index f5e19f5..f321d91 100644 --- a/IconLoader.cpp +++ b/IconLoader.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2017 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 @@ -17,34 +17,45 @@ *****************************************************************************/ #include "IconLoader.h" +#include "AppEnv.h" +#include #include IconLoader::IconLoader() { - } QIcon IconLoader::loadingAppIcon() { QIcon appIcon; - appIcon.addFile(":/img/gta5view-16.png", QSize(16, 16)); - appIcon.addFile(":/img/gta5view-24.png", QSize(24, 24)); - appIcon.addFile(":/img/gta5view-32.png", QSize(32, 32)); - appIcon.addFile(":/img/gta5view-40.png", QSize(40, 40)); - appIcon.addFile(":/img/gta5view-48.png", QSize(48, 48)); - appIcon.addFile(":/img/gta5view-64.png", QSize(64, 64)); - appIcon.addFile(":/img/gta5view-96.png", QSize(96, 96)); - appIcon.addFile(":/img/gta5view-128.png", QSize(128, 128)); - appIcon.addFile(":/img/gta5view-256.png", QSize(256, 256)); +#if defined(GTA5SYNC_QCONF) && defined(GTA5SYNC_CMAKE) +#ifdef Q_OS_WIN + const QString pattern = AppEnv::getImagesFolder() % QLatin1String(":/gta5view-%1.png"); +#else + const QString pattern = AppEnv::getShareFolder() % QLatin1String("/icons/hicolor/%1x%1/apps/de.syping.gta5view.png"); +#endif +#else + const QString pattern = AppEnv::getImagesFolder() % QLatin1String(":/gta5view-%1.png"); +#endif + appIcon.addFile(pattern.arg("16"), QSize(16, 16)); + appIcon.addFile(pattern.arg("24"), QSize(24, 24)); + appIcon.addFile(pattern.arg("32"), QSize(32, 32)); + appIcon.addFile(pattern.arg("40"), QSize(40, 40)); + appIcon.addFile(pattern.arg("48"), QSize(48, 48)); + appIcon.addFile(pattern.arg("64"), QSize(64, 64)); + appIcon.addFile(pattern.arg("96"), QSize(96, 96)); + appIcon.addFile(pattern.arg("128"), QSize(128, 128)); + appIcon.addFile(pattern.arg("256"), QSize(256, 256)); return appIcon; } QIcon IconLoader::loadingPointmakerIcon() { QIcon pointmakerIcon; - pointmakerIcon.addFile(":/img/pointmaker-8.png", QSize(8, 8)); - pointmakerIcon.addFile(":/img/pointmaker-16.png", QSize(16, 16)); - pointmakerIcon.addFile(":/img/pointmaker-24.png", QSize(24, 24)); - pointmakerIcon.addFile(":/img/pointmaker-32.png", QSize(32, 32)); + const QString pattern = AppEnv::getImagesFolder() % QLatin1String("/pointmaker-%1.png"); + pointmakerIcon.addFile(pattern.arg("8"), QSize(8, 8)); + pointmakerIcon.addFile(pattern.arg("16"), QSize(16, 16)); + pointmakerIcon.addFile(pattern.arg("24"), QSize(24, 24)); + pointmakerIcon.addFile(pattern.arg("32"), QSize(32, 32)); return pointmakerIcon; } diff --git a/ImportDialog.cpp b/ImportDialog.cpp index 369e1cf..61f3e50 100644 --- a/ImportDialog.cpp +++ b/ImportDialog.cpp @@ -63,7 +63,7 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) : watermarkAvatar = true; watermarkPicture = false; insideAvatarZone = false; - avatarAreaImage = QImage(":/img/avatarareaimport.png"); + avatarAreaImage = QImage(AppEnv::getImagesFolder() % "/avatarareaimport.png"); selectedColour = QColor::fromRgb(0, 0, 0, 255); // Set Icon for OK Button @@ -323,18 +323,18 @@ void ImportDialog::processWatermark(QPainter *snapmaticPainter) } // draw watermark if (redWatermark) { - const QImage viewWatermark = QImage(":/img/watermark_2r.png"); + const QImage viewWatermark = QImage(AppEnv::getImagesFolder() % "/watermark_2r.png"); snapmaticPainter->drawImage(snapmaticResolution.width() - viewWatermark.width(), 0, viewWatermark); } else { - QImage viewWatermark = QImage(":/img/watermark_2b.png"); + QImage viewWatermark = QImage(AppEnv::getImagesFolder() % "/watermark_2b.png"); if (!blackWatermark) { viewWatermark.invertPixels(QImage::InvertRgb); } snapmaticPainter->drawImage(snapmaticResolution.width() - viewWatermark.width(), 0, viewWatermark); } - QImage textWatermark = QImage(":/img/watermark_1b.png"); + QImage textWatermark = QImage(AppEnv::getImagesFolder() % "/watermark_1b.png"); if (!blackWatermark) { textWatermark.invertPixels(QImage::InvertRgb); } diff --git a/MapLocationDialog.cpp b/MapLocationDialog.cpp index 7351234..bfea683 100644 --- a/MapLocationDialog.cpp +++ b/MapLocationDialog.cpp @@ -20,6 +20,7 @@ #include "ui_MapLocationDialog.h" #include "IconLoader.h" #include "AppEnv.h" +#include #include #include @@ -79,10 +80,10 @@ void MapLocationDialog::setCayoPerico(bool isCayoPerico) ui->hlMapDialog->removeItem(ui->vlPosLayout); ui->hlMapDialog->addLayout(ui->vlPosLayout); ui->labPos->setAlignment(Qt::AlignRight); - mapImage = QImage(":/img/mapcayoperico.jpg"); + mapImage = QImage(AppEnv::getImagesFolder() % "/mapcayoperico.jpg"); } else { - mapImage = QImage(":/img/mappreview.jpg"); + mapImage = QImage(AppEnv::getImagesFolder() % "/mappreview.jpg"); } drawPointOnMap(xpos_old, ypos_old); } diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index bbe5be0..e7949ed 100644 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -21,6 +21,7 @@ #include "TranslationClass.h" #include "StandardPaths.h" #include "UserInterface.h" +#include "wrapper.h" #include "AppEnv.h" #include "config.h" #include @@ -92,22 +93,18 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : ui->rbPicDefaultRes->setText(ui->rbPicDefaultRes->text().arg(QString::number(defExportSize.width()), QString::number(defExportSize.height()))); // Set Icon for OK Button - if (QIcon::hasThemeIcon("dialog-ok")) - { + if (QIcon::hasThemeIcon("dialog-ok")) { ui->cmdOK->setIcon(QIcon::fromTheme("dialog-ok")); } - else if (QIcon::hasThemeIcon("gtk-ok")) - { + else if (QIcon::hasThemeIcon("gtk-ok")) { ui->cmdOK->setIcon(QIcon::fromTheme("gtk-ok")); } // Set Icon for Cancel Button - if (QIcon::hasThemeIcon("dialog-cancel")) - { + if (QIcon::hasThemeIcon("dialog-cancel")) { ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel")); } - else if (QIcon::hasThemeIcon("gtk-cancel")) - { + else if (QIcon::hasThemeIcon("gtk-cancel")) { ui->cmdCancel->setIcon(QIcon::fromTheme("gtk-cancel")); } @@ -145,15 +142,11 @@ void OptionsDialog::setupTreeWidget() { const QStringList players = profileDB->getPlayers(); if (players.length() != 0) { - QStringList::const_iterator it = players.constBegin(); - QStringList::const_iterator end = players.constEnd(); - while (it != end) - { + for (auto it = players.constBegin(); it != players.constEnd(); it++) { bool ok; int playerID = it->toInt(&ok); - if (ok) - { - QString playerName = profileDB->getPlayerName(playerID); + if (ok) { + const QString playerName = profileDB->getPlayerName(playerID); QStringList playerTreeViewList; playerTreeViewList += *it; @@ -163,7 +156,6 @@ void OptionsDialog::setupTreeWidget() ui->twPlayers->addTopLevelItem(playerItem); playerItems += playerItem; } - it++; } ui->twPlayers->sortItems(1, Qt::AscendingOrder); } @@ -179,20 +171,18 @@ void OptionsDialog::setupLanguageBox() currentAreaLanguage = settings->value("AreaLanguage", "Auto").toString(); settings->endGroup(); - QString cbSysStr = tr("%1 (Language priority)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System", + const QString cbSysStr = tr("%1 (Language priority)", "First language a person can talk with a different person/application. \"Native\" or \"Not Native\".").arg(tr("System", "System in context of System default")); #ifdef Q_OS_WIN QString cbAutoStr; - if (AppEnv::getGameLanguage(AppEnv::getGameVersion()) != GameLanguage::Undefined) - { + if (AppEnv::getGameLanguage(AppEnv::getGameVersion()) != GameLanguage::Undefined) { cbAutoStr = tr("%1 (Game language)", "Next closest language compared to the Game settings").arg(tr("Auto", "Automatic language choice.")); } - else - { + else { cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice.")); } #else - QString cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice.")); + const QString cbAutoStr = tr("%1 (Closest to Interface)", "Next closest language compared to the Interface").arg(tr("Auto", "Automatic language choice.")); #endif ui->cbLanguage->addItem(cbSysStr, "System"); ui->cbAreaLanguage->addItem(cbAutoStr, "Auto"); @@ -206,15 +196,18 @@ void OptionsDialog::setupLanguageBox() availableLanguages.removeDuplicates(); availableLanguages.sort(); - for (QString lang : availableLanguages) - { + for (const QString &lang : qAsConst(availableLanguages)) { QLocale langLocale(lang); - QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % lang % "]"; - QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale); + const QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % lang % "]"; + const QString langIconPath = AppEnv::getImagesFolder() % "/flag-" % TranslationClass::getCountryCode(langLocale) % ".png"; - ui->cbLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang); - if (currentLanguage == lang) - { + if (QFile::exists(langIconPath)) { + ui->cbLanguage->addItem(QIcon(langIconPath), cbLangStr, lang); + } + else { + ui->cbLanguage->addItem(cbLangStr, lang); + } + if (currentLanguage == lang) { #if QT_VERSION >= 0x050000 ui->cbLanguage->setCurrentText(cbLangStr); #else @@ -225,7 +218,8 @@ void OptionsDialog::setupLanguageBox() } QString aCurrentLanguage = QString("en_GB"); - if (Translator->isLanguageLoaded()) { aCurrentLanguage = Translator->getCurrentLanguage(); } + if (Translator->isLanguageLoaded()) + aCurrentLanguage = Translator->getCurrentLanguage(); QLocale currentLocale = QLocale(aCurrentLanguage); ui->labCurrentLanguage->setText(tr("Current: %1").arg(currentLocale.nativeLanguageName() % " (" % currentLocale.nativeCountryName() % ") [" % aCurrentLanguage % "]")); @@ -234,7 +228,7 @@ void OptionsDialog::setupLanguageBox() availableLanguages.removeDuplicates(); availableLanguages.sort(); - for (QString lang : availableLanguages) { + for (const QString &lang : qAsConst(availableLanguages)) { // correcting Language Location if possible QString aLang = lang; if (QFile::exists(":/global/global." % lang % ".loc")) { @@ -246,10 +240,8 @@ void OptionsDialog::setupLanguageBox() } QLocale langLocale(aLang); - QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % aLang % "]"; - QString langIconStr = "flag-" % TranslationClass::getCountryCode(langLocale); - - ui->cbAreaLanguage->addItem(QIcon::fromTheme(langIconStr), cbLangStr, lang); + const QString cbLangStr = langLocale.nativeLanguageName() % " (" % langLocale.nativeCountryName() % ") [" % aLang % "]"; + ui->cbAreaLanguage->addItem(cbLangStr, lang); if (currentAreaLanguage == lang) { #if QT_VERSION >= 0x050000 ui->cbAreaLanguage->setCurrentText(cbLangStr); @@ -264,8 +256,7 @@ void OptionsDialog::setupLanguageBox() if (QFile::exists(":/global/global." % aCurrentAreaLanguage % ".loc")) { qDebug() << "locFile found"; QFile locFile(":/global/global." % aCurrentAreaLanguage % ".loc"); - if (locFile.open(QFile::ReadOnly)) - { + if (locFile.open(QFile::ReadOnly)) { aCurrentAreaLanguage = QString::fromUtf8(locFile.readLine()).trimmed(); locFile.close(); } @@ -492,7 +483,7 @@ void OptionsDialog::setupDefaultProfile() void OptionsDialog::commitProfiles(const QStringList &profiles) { - for (QString profile : profiles) { + for (const QString &profile : profiles) { ui->cbProfiles->addItem(tr("Profile: %1").arg(profile), profile); if (defaultProfile == profile) { #if QT_VERSION >= 0x050000 @@ -705,8 +696,8 @@ void OptionsDialog::setupSnapmaticPictureViewer() void OptionsDialog::on_cmdExploreFolder_clicked() { - QString GTAV_Folder = QFileDialog::getExistingDirectory(this, UserInterface::tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); - if (QFileInfo(GTAV_Folder).exists()) { + const QString GTAV_Folder = QFileDialog::getExistingDirectory(this, UserInterface::tr("Select GTA V Folder..."), StandardPaths::documentsLocation(), QFileDialog::ShowDirsOnly); + if (QDir(GTAV_Folder).exists()) { ui->txtFolder->setText(GTAV_Folder); } } diff --git a/PictureDialog.cpp b/PictureDialog.cpp index 32f9645..4eb48d8 100644 --- a/PictureDialog.cpp +++ b/PictureDialog.cpp @@ -163,10 +163,10 @@ void PictureDialog::setupPictureDialog() qreal screenRatio = AppEnv::screenRatio(); qreal screenRatioPR = AppEnv::screenRatioPR(); if (screenRatio != 1 || screenRatioPR != 1) { - avatarAreaPicture = QImage(":/img/avatararea.png").scaledToHeight(snapmaticResolution.height() * screenRatio * screenRatioPR, Qt::FastTransformation); + avatarAreaPicture = QImage(AppEnv::getImagesFolder() % "/avatararea.png").scaledToHeight(snapmaticResolution.height() * screenRatio * screenRatioPR, Qt::FastTransformation); } else { - avatarAreaPicture = QImage(":/img/avatararea.png"); + avatarAreaPicture = QImage(AppEnv::getImagesFolder() % "/avatararea.png"); } avatarLocX = 145; avatarLocY = 66; @@ -243,8 +243,8 @@ void PictureDialog::addPreviousNextButtons() #endif uiToolbar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); uiToolbar->setObjectName("UiToolbar"); - uiToolbar->addAction(QIcon(":/img/back.svgz"), "", this, SLOT(previousPictureRequestedSlot())); - uiToolbar->addAction(QIcon(":/img/next.svgz"), "", this, SLOT(nextPictureRequestedSlot())); + uiToolbar->addAction(QIcon(AppEnv::getImagesFolder() % "/back.svgz"), "", this, SLOT(previousPictureRequestedSlot())); + uiToolbar->addAction(QIcon(AppEnv::getImagesFolder() % "/next.svgz"), "", this, SLOT(nextPictureRequestedSlot())); #ifdef Q_OS_MAC #if QT_VERSION >= 0x050000 uiToolbar->setStyle(QStyleFactory::create("Fusion")); diff --git a/PlayerListDialog.cpp b/PlayerListDialog.cpp index 8531921..65a3219 100644 --- a/PlayerListDialog.cpp +++ b/PlayerListDialog.cpp @@ -19,6 +19,7 @@ #include "PlayerListDialog.h" #include "ui_PlayerListDialog.h" #include "AppEnv.h" +#include #include #include #include @@ -94,9 +95,9 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile ui->cmdMakeAd->setIconSize(iconSize); } #endif - ui->cmdMakeAv->setIcon(QIcon(":/img/back.svgz")); - ui->cmdMakeSe->setIcon(QIcon(":/img/next.svgz")); - ui->cmdMakeAd->setIcon(QIcon(":/img/add.svgz")); + ui->cmdMakeAv->setIcon(QIcon(AppEnv::getImagesFolder() % "/back.svgz")); + ui->cmdMakeSe->setIcon(QIcon(AppEnv::getImagesFolder() % "/next.svgz")); + ui->cmdMakeAd->setIcon(QIcon(AppEnv::getImagesFolder() % "/add.svgz")); } buildInterface(); @@ -124,7 +125,7 @@ void PlayerListDialog::on_cmdCancel_clicked() void PlayerListDialog::buildInterface() { const QStringList dbPlayers = profileDB->getPlayers(); - for (const QString &sePlayer : players) { + for (const QString &sePlayer : qAsConst(players)) { QListWidgetItem *playerItem = new QListWidgetItem(profileDB->getPlayerName(sePlayer)); playerItem->setData(Qt::UserRole, sePlayer); ui->listSePlayers->addItem(playerItem); diff --git a/SavegameWidget.cpp b/SavegameWidget.cpp index 4d7b416..cede630 100644 --- a/SavegameWidget.cpp +++ b/SavegameWidget.cpp @@ -25,6 +25,7 @@ #include "SavegameCopy.h" #include "AppEnv.h" #include "config.h" +#include #include #include #include @@ -59,7 +60,7 @@ SavegameWidget::SavegameWidget(QWidget *parent) : ui->labSavegamePic->setFixedSize(48 * screenRatio, 27 * screenRatio); ui->labSavegamePic->setScaledContents(true); - ui->labSavegamePic->setPixmap(QPixmap(":/img/savegame.svgz")); + ui->labSavegamePic->setPixmap(QPixmap(AppEnv::getImagesFolder() % "/savegame.svgz")); QString exportSavegameStr = tr("Export Savegame..."); Q_UNUSED(exportSavegameStr) diff --git a/UserInterface.cpp b/UserInterface.cpp index d7573f3..cdc5442 100644 --- a/UserInterface.cpp +++ b/UserInterface.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 @@ -170,7 +170,7 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D donateAction->setIcon(QIcon::fromTheme("taxes-finances")); } else { - donateAction->setIcon(QIcon(":/img/donate.svgz")); + donateAction->setIcon(QIcon(AppEnv::getImagesFolder() % "/donate.svgz")); } ui->menuHelp->insertAction(ui->actionAbout_gta5sync, donateAction); QObject::connect(donateAction, &QAction::triggered, this, [=](){ @@ -715,8 +715,8 @@ void UserInterface::showMessages(const QStringList messages) nextButton->setIcon(QIcon::fromTheme("go-next")); } else { - backButton->setIcon(QIcon(":/img/back.svgz")); - nextButton->setIcon(QIcon(":/img/next.svgz")); + backButton->setIcon(QIcon(AppEnv::getImagesFolder() % "/back.svgz")); + nextButton->setIcon(QIcon(AppEnv::getImagesFolder() % "/next.svgz")); } backButton->setEnabled(false); if (stackWidget->count() <= 1) { diff --git a/config.h b/config.h index 7e66980..02e1e19 100644 --- a/config.h +++ b/config.h @@ -65,7 +65,11 @@ #ifdef GTA5SYNC_QCONF #ifndef GTA5SYNC_SHARE -#define GTA5SYNC_SHARE "RUNDIR:SEPARATOR:..SEPARATOR:share" +#ifdef Q_OS_WIN +#define GTA5SYNC_SHARE "RUNDIR:" +#else +#define GTA5SYNC_SHARE "RUNDIR:/../share" +#endif #endif #ifndef GTA5SYNC_LANG #define GTA5SYNC_LANG "QCONFLANG:" @@ -83,10 +87,10 @@ #define GTA5SYNC_SHARE "RUNDIR:" #endif #ifndef GTA5SYNC_LANG -#define GTA5SYNC_LANG "SHAREDDIR:SEPARATOR:lang" +#define GTA5SYNC_LANG "SHAREDDIR:/lang" #endif #ifndef GTA5SYNC_PLUG -#define GTA5SYNC_PLUG "RUNDIR:SEPARATOR:plugins" +#define GTA5SYNC_PLUG "RUNDIR:/plugins" #endif #endif diff --git a/gta5view.pro b/gta5view.pro index a9c9f91..9326210 100644 --- a/gta5view.pro +++ b/gta5view.pro @@ -144,7 +144,8 @@ TRANSLATIONS += \ res/gta5sync_zh_TW.ts RESOURCES += \ - res/app.qrc \ + res/img.qrc \ + res/template.qrc \ res/tr_g5p.qrc DISTFILES += \ diff --git a/res/add.svgz b/res/add.svgz index 74451aeba99c76eae38f6107671788dc33898db0..ca716e587c03146ca9a71ed9b34864e785a87567 100644 GIT binary patch literal 386 zcmV-|0e$`-iwFP!000000EJP@PQx$|y!R_s=1S|>l(vbIR6+=G;evRajqN58i5x&rxpxL-Y$&8fVw+W@~M^`UwS5PIXu63i0ca$v{C6ioEa@lF&t6odnG}gG$ zY23w`xKq26dKiYqa5aip9LF@`l=C?%=I+yYv7i68;*Nh=c@#wydz12CRjI3@^clHk zyxosXr80tDHWp{+`ynbl+}M3aB8UJ@;Tao4rF?mwgYy&D3W=9(JMDDWYm%o*?_B5} z=7cIHK=ZVi$YP1QR`~Kj0U-APSDV!(Uo*G|zK-A})B!IU;sek4D&QqQ@qsCU$It^~ z0fzS%Ip&68VGbWRphccG+6yJTn3g#*e1%Kl|41Hh@A6d2e^`6X=?ZOhHTY-WVdY_x3iAK*6VeW@`UpU8IikaFV4|RRgCeTDo@iiL2P3F zKUU_jDh+-keGtUX9Ib>s>Ori*Cy!qqM=(lb<<*UuQa?E<8hGJ#5cU-iHMmAdaLFL= z^bb%L2cOdgq5+FW5Izv^&t*fXUfQsMoxuNG1l?9kN28RHo8vZ zHIHZH9iOL*#r)wt;VD~1=`3RGC%WC#;Dr)i1m!;6LBbfq*!%2{$4}dhl-WPVKJ~P) z0wQ+ih~+|_k{NcV7JggSqJYrYpD~3^G68|(FAYp4dLx)!*WJ4#u4G*XrQ}avR@LWV zo04R^Nv`qWZVWLQB1c!ScT+~;wC>c#>V?v&(2btepj~MyV{`g;-!0k$J7X2t0ea}x z3&>!PFhXqcRcv) zr@RsVFpMwCekZfl!+XADUr7NINUr9+Tc9lrNMVs-md=U6!_uw-2MxrO=TUL1^@uf C-hW2` diff --git a/res/back.svgz b/res/back.svgz index 84a61babf1056752c65bf37a3c38acb8c0a374e4..f2f90a5dcb5b6afacf0570e9003c6d41fb6d90ad 100644 GIT binary patch literal 376 zcmV-;0f+t{iwFP!000000F97MZi6roh4(pyOs9JUH+74I+8({~M z+t)x6QmKntvNV44y&2DB`*Tx+UUpU)okJ2}2&CplC|&08eJW^Gf!b67dorU#^~Usj4SMn1QY|DjUbGVbSZJ85Ot z%Sj)Ua8(W?Lfi8s^hypd=A1(eF!1tt=ftvMG6_oL(3hVdl~iTrZiR|W$fF(g85>_a z2vCu=roNO$FR80A_W+Aqm2D5(5(BHI3q{uq8h7P?*HQ4p2;j zXv$7q8tIr|jxB9&3XT2e{Jzt-*F%wUo_?C{d&b5yX4scG`ANnhc_(+;PHc zB1uNaf8RuB)-CKq1tGcTJ14o9RF9XwLn9a~wW=|V6O2G{Eu?B|{Ojja^a&&Dm=dhh z3Tmu0er)b4JGOTSA#YZ;6uibK=Z2Dy;cU8Co0bSppo1QivxLT!;0@;+&J8dpN8q~e zwX%y-*$;1EBaW~1G)?i8Ef6h=f+Q(P)5sH%ot0yk=wGY9<9pULNfP3~v;*V5 z|G|I-Gs04zq;RJi=QJHIOJS5SebJX1Cn!O_9R5|L*nG`1;gToR`0~d0DCO z1%(~-*++R!@bail&s-yW)m~i__1@&xjrYLOZe51m!;&@VZf>>Oq-$XvKSG0+{wdZt%hMgD xd3=wujK|gW!U_%O?XxcsyMk fLpZJ{CoIqd@&Xtbm4siE0$B{6u6{1-oD!M<84MJJ diff --git a/res/flag-de.png b/res/flag-de.png new file mode 100644 index 0000000000000000000000000000000000000000..2aeaf350da74d8e76baaa697b9f02c7e1b4a5824 GIT binary patch literal 1107 zcmXAn2{4=o6vzL2vJ^ozl5UV>I*~*~lQt0+E0G|hOAs;=Y-L1FmT@e*v(=P@Gz}f+ zY6&rpQY)p7NSv#bFeECDP}Y$W)LpA2Uq92Ccm3x7-pqS5FW!Y`uc5Y64Sz2s{G13P7$@3ycA6S?I_`O9m9X zFR6cNDe6|Bnf zZ!P-sZ~$1BVYmPffRSxz;6P>#<9lb9$$Jb#U3qTsisOjmgM`xbeI*wTFL!IVYv=va zzsL<}ni!lgY<-=hQw30K9PMn~9a`sJdAg0c;Euv2uZZ7R6K!PduuV0GZhKkPm2R7y zKlL|3Xp7GBRClvFW;=b9-_f=!BAr7NPR93c_W74xyu~Z%xl-|iiOloYu;l9WuV;xn!OAz9fo$^O2E@`{DYxt?(=r663HzG3-# zDeQnUVS}|vfB!8vlm1qoCXs57h2DFh?lfIYynJ6++EWr#`Kyqv!YXSve~V z3k%|A$(OzkDco#poub~iI`wg*u_qUfhIumAj{f}o_#Z`I{c8V7YQCG9nO{+q&l9^n zIsptOkKc1`r)exTA|mGQee+BDrkSbcE5ZI;Ldej1&W_yA7mH6W3ul8Hy7#%a9u`%) zr&29^5_G##ZKJ<`=Or^Y5b5*vFW0y0`KVouI>qB?UXApwo7JOu%M{~fzH~G8g1CHO zV!hFbeTynR+-Y+-k0_&Zd5mmf<1johvu7G42oD1T8nxK~1BS_cN@Kc)r7&4;>XYL19SlKD4B1nZpM zgLd0}IvWEOvPRz}FRvra)V4%!PWE(AvVq`sQk?F?i}a5qlgjg^8>hL;LcP9)5dO4M z1S!yX6$c6ppm{3Dz;j?7c5IiFeSrv}u;h(CcJI2;c@qW3V z#_tdeIG@8*yz)Y|eX*mcu(x_3w?DnbI5FHtMBVjy z5NCBM`YFw*A$To7Gr{xSk(srqO15?PPuaauy!b IN&fBs0C9QT?f?J) literal 0 HcmV?d00001 diff --git a/res/flag-fr.png b/res/flag-fr.png new file mode 100644 index 0000000000000000000000000000000000000000..d54b858df284d44a36c97d586e9000903d3d7678 GIT binary patch literal 1299 zcmV+u1?>8XP)%}Cjv2zWFJz$CNlvgf5XGW02+3}BQeFr#jF({z#=co%F4vV!~hv_!zMJtCo}~v zh6XT*u^A)O)YPgH9I+WA1Tl`Q6dudV%K#g602_71#l-_Pk^?A&0yL4+)6>+{)YR0} zv>GMC!osQ(9KyoF!^6V>8gc_0b)yg%(b3U`i>S?-pV86L#>U3c(b0^Wy1~K0rKP2~ zeuV%3|LGqs04JFMES>5hF90u~>?Je+DVyykHtQrZ05YQJ94YG}F#sc$?I$+?Ad&z% zr~odW05qfM9x4DNmjEJ^<{2gD8z=57I{-DL03VOk)YP#TA?+zStrQ;aEk3pyB>*mq z?kYL}9eS!08~`VT05g#QF^>4Oxd0-6y&fw7H>Rnw*}EGi$H&L`v9^8IFPeM7$F!>dx)gQ(3?g4d|<)nGu`r>DNx7G2K~U8a&dHUIzu z{YgYYR7l6A*2`|wKorLDzsD!;B_=9Pp@_hOi`rFT(WZ6%t~@6YwZ(*zg2> z0TvNrfe;852m}%raT9GRZQQ1for_s`e2bmLh}l`1pTBcvJhn}uAtz7I9IJ|Hq81j7 z{*1@uAs2lCz_BcK9q=vif#sL*v=#)vPb|C|%~h>;69b&q`D+FcoaYFDS*8#8sAoN` z1;OvWxI@u{Q-1e0&^GGT8$g{e4p3nW@K}5XtG*rJ#rIh-gKt3_plX<%K6e14_7hoy z`uo8)Kn1qIgAPD5l&iiScznDD%X|7}5AX8uZb0ohoWr=qHUN#Zzw&Ij-&LP_n?nF> z)cXqE7H|&H6B=RpQG9MRVJ&LsE6jFj0Y1?UCi&FxNP7eW8sYLqyi27>?&SRd!~ll< zgm_Zkl(>HFyG-^iVvi&~iML1dsQl2=Hw9l3KaT5%G~-PZ<&*brSx>l)X>T*y$2{c^ zB}?y@h4}Ft9z`B;h<#N42!EL3+IK)wek^A=KJ+N~ zFOOusj5`eJ@*|JJE$hkqK7?<}lrP2Oe0q}jN%5rOL*J)|6nSSXkK_Bg>cp4iX^+x} zC*!^GJtW=%8S)c&s(oFnK!Nwm#D~2K0+N*P0ZbR_sUnZ0ypEq9UB2G@*mq{g`ROqW zFzf-9?7kDn`(u4S+3Sw2P~|;2uh&2EWqIW74# zC-HRq1Xu{xzj%j?2LvDQ-^$N;gveJ}VqZ@@d-l+3j^v47`Ji{9vb6u`9zL`B+V}-m zcDXcV_|5#|82QE42Qbz-Ui!MpJswZ4m7jYG3tk*-4KUU>=MQ8Tq*uIdwVruK z+3nA8|4sBIgC}!;%$)&%(U2d#5xl{ literal 0 HcmV?d00001 diff --git a/res/flag-gb.png b/res/flag-gb.png new file mode 100644 index 0000000000000000000000000000000000000000..a425dcc007c0458f55598d75b0b7af73c8a100dd GIT binary patch literal 2911 zcmdT`hd0{|7ycz?r3hjL4QlVz(rS#>Y^_Snsy#klR7-`lI;^S?>lIa_wbg79MTjjn zwP$JZQEkMY#pmDn?m5rB_ndp~InQ~{ea^XWEzAsAS>P-H0I(Vx=~-S>oeL;2(_Lgj zYMeX(&;b@EXnn%~6Of=4g+c+KS^&3^v5+AMjt02zGRXPRiMv_=GTB@*U|}l|x6wdf zKZC4i3$Yd?WSe(ce0*T=ViD~eo_kq5_p(?Hn}qybESXHcqV6*}ISH0<1Go(8vvQdE zjlc-2+W!Osa5O~0Z(v}6RnoHZLte@y!RhJgGMH*ZLqi$2%D*f^rCcgxTrxQ}`JzwH zt>w`SeiD|3je1|st!C`>Hh~#_)4(SphH!p<-p(r3%`Q)2lk10F>*Y`e1YJPl{s5mf zNX(B65$lJk_j0K8ajG^$#9J>*cCgCqjZOh@yG}M4fCtsZCOgQh*}^IbTygJ#DuNLX zXJ==?6*rJ%0H7Fp!3w1EY=B2&faeBCA$WIq9DpK85K)kvFGv{+lJ*A41?>!u-giv| z@t6WU79iN&VL{y?KIGZS30Un#?Iodu!(#yMFnSYR4pSW*96F(Go&G%qICMv^7#{ui zm(8P(fA{v=c$Kzy4umy>M@Ps0?(CIvDW4u3(uug7{MoqBmONM41PQB9o8p!V`YstZs0f|bZc1Juun`YBB^>kuQD}<+}PNN@=BY1 z@C4x0XA<}R{`0r&-RPKfQf^t-R!dK-obFn7360dg6qB|=Y@S5>1V@*5Q7Cp#@(#ZL zjAr6tk$zM~`nJ_M;E63_B~H)(@(E76Ws^`+)4%qvkYwznWASWE_W?{b$iy+G zt*xy~Kn>~iZaF-)u4SAE*B-I*x~%bX#>h)h$xF{JZdBUz+r;uhSp59sh$#AL^ zy>tCvYI_FfdX)5g)$YpQ4qd`$yf5m&rGB#Uc+=WFv(QHQ`SWLqp*1PvV>LwF%{R)? zFRkZe@pl{{T@guY9T_xn3`-^9AcCK4TuU6h1a%_3BP)qqYU}IkaOEVNu zkBCa+iVRE%rBk<&Gk^4S;yASE8fqo>PUS}B&QAEW!P22ZHbf_Hgf`mSo!3d(D42D2 zb{ldXD!91H|JykGe$3_#08Bi_db(&MN<4uHjk4jReBfpp#Ewmjx|I`WnlL9JAQKbY zB<^r~;an)grLIJJQ7D*xB(kZshae)Of+p1Q=1w#b@!7RA1?57)bF^o)*Y@kb&IQ@T z>YEo%H<}hmk-3MB8ewC$CqJMkU-Gg)Xhj|)__xL${6Uz*sZHCLj^bh)ru*$rdkg~cX}4^Da0Q`h zQqy^x`dx^tx^ha-ZA|=GsFqX=H$7u4a&09i&@*--Kk1c}e7RU{n#;`~HNP9U@OSSb zG+E1Bsce~9n^Lb{IkRP?i;3P}y%Bh&eYrKi++{4SnTl)uqn4-ZR119!i=m^V0}FXEh-SY8VK!12atu1Zwq~_$1)NZ(xD5A{23C z^L`$v{yOM0D8U%dRNLWcwg?7K{k>CCC}^qWPi*Yx4S_}KZ4dD7QmsP=biZgcv#5)v z>?hVGYDmYl)LB*hapse-YMrtBe&e||2cV6i;U5%XgnGwEOKej_t`ev+Frygfuq695 zs+gNQ(s+}+2lPoQ-b9&4L0j=vCP<_XjFb1Ro+xS!J!}qziD}^xe6*#A`z<>P$F4L}{9U!f(nNoHNOv*!7;>6@tK*PpUI=~ zK_-nC=YHkVePGI|?kKd-cFmjfqD|*%FlVq zGGeU>!Txe-SIMeH7ATUbx$ImHmdWF#>6iabo$(&`U&ZD9u(N$o>%le`S|ES;LSJT@ zlqr)6r?+T)@^PheLBn--Hx6G|<5jzuCC^#j!Gy-xNSoTCSiXMa znzP~4?c7qy)5zQAFuqd_GTUSpXtW61ZH_svpa=P8CTqpslf`FTldZ5LKW#?Kz(i^M z$Pe2)Zbzbms8j`LekF=1x4ozTnoicX#xj1NYk6~Dt@!s}jqib4%$vR1@hg?0@p(NK zyyYU8Y;BIZt#A*?t(m(w|J;eyDCqU`I8w3}=JcD3#YjnOpZ>c(XWVj{W%oKGLzbC9 zJqN4jN+@V(9EL>Qs>VsRg|v2=9@??lHF5g;)~ROQ2V5BXlJ5m1MI$?)jfTdR$f^%q z0nbxR7E`l!qmtV1FUH1GSn@|o>o|e}#ijhMOUKmhUrK;KF|XSQNv!bx#*KW&_KS*c zZvCLQCfHIptXPrnUf5XMH3KUn{6P!F`j2*k;Iqw#@e-mz5 zC2)WK5OSOvz@B+zFU}%o-*)0a&O-_?+QnUZQ&aT(<Aj(Ab=dhs-UPRUzw_@)zd9OCkzG4u zy&Q9E2)OIBHT;OUD_h-Pr$x9Zw+^-iXwc3As&=`=rPV6z)1bpt1oP=kih1JWnMc{# zYTMdmT%Ol5WeB;`1H1h=Jt6&AdPMAz_O+kq&%Yp4j*srQGqTrKR}0(Y=zrV=H$jHdZ$jHdh(9qb}*t4^<*x1;@!otJD!^XzO z&(F`gy1Kf$y1cx+|Ns90007P~JOD$S07RbH*x1_I+RrjR(9qD-)YQ%{IsieM{{H^L z!omPQn90e>y}iB9&(F*(IK;%n07jt7%F4&b$I;Qz;o;%XG(f<>zy<~e)6>)B+9y`=DNDN{r&wH7Z>&Q_4oJpFfcFzNutZk%lrHL zWo2c5e}5z-B=Pa_v9Ym7M@M#cb{-xcKR-WCPEM7TmHhGYhlhtdJ3D%MdYzq}TwGj_ zkB=%UD)aO6-EVmK;p6JHy7Be-a5iP$c!1~U=WT6mR#sN4tE=hh>2Ppxsk_)ncC}f9 zy`3~ufTPbGLXl#P#G<02rlzJPTc*-LOFnL~+GK6l;qKQ~VDih(xXR)&J%fHVUgVLN ztuRQ+*y=_-d=N{Wzb-#oKXzD0X46PhPd<4~RFC24^5vSJRXcP&IeO>q^{G>B$S^*T zJ6`y*#~ABFgt^u^Lmz3(@C&rl zQQEBA)29Fc1inc`K~zY`m6rKi+E^5ZaToV}X*+FaItv#}gt8NXK!6|-+4mhq6x3Qo z+{V`K`?P(gv(NmmbCVbd7#!#ODcpO$H|N~&+;c=CPWQw;cRQvgCnu*m`i5_dyG7T~ zK+gpG(0O;JA3Vdk39P+T8)oP!4>x=B6mhU8~p~C}c32o*3`w zxx^Xh9PS#_JE26kXHWz|?NmS|X_6}9r)qZ8WmDK_P4`cXPxbcE>h1crUr)=7mz`k| zf+F^^x9&syEu57ywThz(b6s*Myc1!-iN*m|1slSCR~VFBB*CxQs1>;yfJ3mg0rn3-Fd*nZCmu&Z zEDy50H7y??2SGEDarlUEJ>{L9okqzH(uev8XEdzl0Za{mw*X89klf@7@V?r9x@=i~ zy1mPN^mP!0>8<1lXB}YT0Ro4IMNsu{1*~l^Ls=}A#l@d@*)$?Spv%!kl>9;f7_dnn zBJ%~jYcE;)lP-cFO2*5=0Ext% zX12V$7QS67z5kr4g31u46o`3h{0tOA|CqlloS(5ny<;|#Am}2~68<471OTcJr!DsT z2I&s7RRuAe7iq!-0g@m8soO972E#*UXEo*E2V!jik3KiOoso1+Ag~?ay3HAcLZAO;{Cl(=O7`~R5Spci0Gq&9 zd>smf&h}2JK+GR4$r|oM2*vtJvD73_gv&)pqy*3%xngB@3&K^RmU8(%zxBmvH z&~=bwo?e7n>`LXES3&@56JVc2g5ZEX#(MFrU8(s+=(e{)fSLPYPp*Tkp71f3dgQq2 z^%{-lh`l$X_7;Gd1C%o)S^#<2TG(@Z)@0W_WACLX*sytp0g?@nbrHTw30PUe3D2&1 z@+Y&X192CbiwFY(L6G0_m~|j{@rt7-oLzJLfLZa!fhPxw)y=XHKw>0Fd{!z z&jBK3IM(5`*fB~agrIzxGXJ}HSb)l3LCs+(qtU3P+dth8{bM#5gVSw{n$ zW!&t9X6>z;T{rrMhKBlX%#Po@h0zcU!%TVvuU+DJ6S&z5?W1!ddR%o5b`5t9v`n+z z;+~PwufM@CH7zV`cA*X&j)}Mfk(;bKsP9JZz&Pmc6<;w?ch8N@LylT)4UNpt&d$z{jD0V@SKs&-=B7?Z2paI$00000NkvXXu0mjf;2x%R literal 0 HcmV?d00001 diff --git a/res/flag-ru.png b/res/flag-ru.png new file mode 100644 index 0000000000000000000000000000000000000000..c0111e2ff8472b7389df85e2069f3eb57e5d16b1 GIT binary patch literal 1446 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 literal 0 HcmV?d00001 diff --git a/res/flag-us.png b/res/flag-us.png new file mode 100644 index 0000000000000000000000000000000000000000..293337e72bcc58d33ae94fb4081c8ee5d43b87d0 GIT binary patch literal 2856 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 - + X: %1 Y: %2 X and Y position @@ -728,26 +728,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 - - - - + + + + + + + - - - Language: %1 @@ -768,7 +768,7 @@ Y: %2 - + Participate in %1 User Statistics @@ -804,8 +804,8 @@ Y: %2 - - + + Participation ID: %1 @@ -827,8 +827,8 @@ Y: %2 - - + + Current: %1 @@ -890,95 +890,95 @@ Y: %2 - + System System in context of System default - + %1 (Game language) Next closest language compared to the Game settings - - + + %1 (Closest to Interface) Next closest language compared to the Interface - - - + + + Auto Automatic language choice. - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". - + %1 %1 - + The new Custom Folder will initialise after you restart %1. - + No Profile No Profile, as default - - - + + + Profile: %1 - + View %1 User Statistics Online - + Not registered - - - - + + + + Yes - - + + No - - + + OS defined - - + + Steam defined @@ -1227,28 +1227,28 @@ Press 1 for Default View - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1799,48 +1799,48 @@ Press 1 for Default View - + Export Savegame... - - - - AUTOSAVE - %1 -%2 - - + AUTOSAVE - %1 +%2 + + + + + SAVE %3 - %1 %2 - + WRONG FORMAT - + UNKNOWN - - + + Delete Savegame - + Are you sure to delete %1 from your savegames? - + Failed at deleting %1 from your savegames @@ -2391,7 +2391,7 @@ Press 1 for Default View - + Select GTA V Folder... diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index 5a6ab4c..0a7476e 100644 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -604,7 +604,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt! &Fertig - + X: %1 Y: %2 X and Y position @@ -756,26 +756,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Gefunden: %1 - - - - + + + + + + + - - - Language: %1 Sprache: %1 @@ -796,7 +796,7 @@ Y: %2 - + Participate in %1 User Statistics An %1 Benutzerstatistik teilnehmen @@ -827,8 +827,8 @@ Y: %2 - - + + Participation ID: %1 Teilnahme ID: %1 @@ -884,8 +884,8 @@ Y: %2 - - + + Current: %1 Aktuell: %1 @@ -922,95 +922,95 @@ Y: %2 Abbre&chen - + %1 %1 %1 - + System System in context of System default System - + %1 (Game language) Next closest language compared to the Game settings %1 (Spielsprache) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Näheste zur Oberfläche) - - - + + + Auto Automatic language choice. Automatisch - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Sprachenpriorität) - + The new Custom Folder will initialise after you restart %1. Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. - + View %1 User Statistics Online %1 Benutzerstatistik Online ansehen - + Not registered Nicht registriert - - - - + + + + Yes Ja - - + + No Nein - - + + OS defined OS-defined - - + + Steam defined Steam-definiert - + No Profile No Profile, as default Kein Profil - - - + + + Profile: %1 Profil: %1 @@ -1265,28 +1265,28 @@ Drücke 1 für Standardmodus Abbre&chen - + Add Players... Spieler hinzufügen... - + Failed to add more Players because the limit of Players are %1! Fehlgeschlagen beim Hinzufügen von mehr Spielern weil der Limit von Spielern %1 ist! - - + + Add Player... Spieler hinzufügen... - + Enter Social Club Player ID Social Club Spieler ID eingeben - + Failed to add Player %1 because Player %1 is already added! Fehlgeschlagen beim Hinzufügen vom Spieler %1 weil Spieler %1 bereits hinzugefügt wurde! @@ -1753,7 +1753,7 @@ Drücke 1 für Standardmodus Savegame löschen - + Export Savegame... Spielstand exportieren... @@ -1763,45 +1763,45 @@ Drücke 1 für Standardmodus SPIELSTAND %3 - %1<br>%2 - + WRONG FORMAT FALSCHES FORMAT - - + + AUTOSAVE - %1 %2 AUTOSAVE - %1 %2 - - + + SAVE %3 - %1 %2 SPIELSTAND %3 - %1 %2 - + UNKNOWN UNKNOWN - + Are you sure to delete %1 from your savegames? Bist du sicher %1 von deinen Spielständen zu löschen? - - + + Delete Savegame Savegame löschen - + Failed at deleting %1 from your savegames Fehlgeschlagen beim Löschen %1 von deinen Spielständen @@ -2470,7 +2470,7 @@ Drücke 1 für Standardmodus - + Select GTA V Folder... diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index 5979526..297ca40 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -585,7 +585,7 @@ When you want to use it as Avatar the image will be detached! - + X: %1 Y: %2 X and Y position @@ -728,26 +728,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 - - - - + + + + + + + - - - Language: %1 @@ -763,7 +763,7 @@ Y: %2 - + Participate in %1 User Statistics @@ -784,8 +784,8 @@ Y: %2 - - + + Participation ID: %1 @@ -847,8 +847,8 @@ Y: %2 - - + + Current: %1 @@ -890,95 +890,95 @@ Y: %2 - + System System in context of System default - + %1 (Game language) Next closest language compared to the Game settings - - + + %1 (Closest to Interface) Next closest language compared to the Interface - - - + + + Auto Automatic language choice. - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". - + %1 %1 - + The new Custom Folder will initialise after you restart %1. The new Custom Folder will initialize after you restart %1. - + No Profile No Profile, as default - - - + + + Profile: %1 - + View %1 User Statistics Online - + Not registered - - - - + + + + Yes - - + + No - - + + OS defined - - + + Steam defined @@ -1227,28 +1227,28 @@ Press 1 for Default View - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1799,48 +1799,48 @@ Press 1 for Default View - + Export Savegame... - - - - AUTOSAVE - %1 -%2 - - + AUTOSAVE - %1 +%2 + + + + + SAVE %3 - %1 %2 - + WRONG FORMAT - + UNKNOWN - + Are you sure to delete %1 from your savegames? - - + + Delete Savegame - + Failed at deleting %1 from your savegames @@ -2386,7 +2386,7 @@ Press 1 for Default View - + Select GTA V Folder... diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 2d72526..29a4b6d 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -605,7 +605,7 @@ Si vous l'utilisez comme Avatar, l'image sera détachée !&Terminer - + X: %1 Y: %2 X and Y position @@ -757,26 +757,26 @@ Y : %2 - - - - - - + + + + + + Found: %1 Trouvé : %1 - - - - + + + + + + + - - - Language: %1 Langue : %1 @@ -797,7 +797,7 @@ Y : %2 - + Participate in %1 User Statistics Participer aux statistiques d'usage %1 @@ -828,8 +828,8 @@ Y : %2 - - + + Participation ID: %1 ID de participation : %1 @@ -880,8 +880,8 @@ Y : %2 - - + + Current: %1 Actuel : %1 @@ -923,95 +923,95 @@ Y : %2 &Annuler - + System System in context of System default Système - + %1 (Game language) Next closest language compared to the Game settings %1 (Langue du jeu) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Langage proche de l'interface) - - - + + + Auto Automatic language choice. Automatique - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Priorité de la langue) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Le nouveau Dossier personnalisé sera initialisé au redémarrage de %1. - + View %1 User Statistics Online Voir les statistiques d'usage %1 en ligne - + Not registered Pas enregistré - - - - + + + + Yes Oui - - + + No Non - - + + OS defined Défini par le système d'exploitation - - + + Steam defined Défini par Steam - + No Profile No Profile, as default Aucun profil - - - + + + Profile: %1 Profil : %1 @@ -1266,28 +1266,28 @@ Appuyer sur 1 pour le mode par défaut A&nnuler - + Add Players... Ajouter des joueurs... - + Failed to add more Players because the limit of Players are %1! Échec de l'ajout de joueurs : la limite de %1 est atteinte ! - - + + Add Player... Ajouter un joueur... - + Enter Social Club Player ID Entrer l'ID Social Club du joueur - + Failed to add Player %1 because Player %1 is already added! Échec de l'ajout du joueur %1 car le joueur %1 est déjà ajouté ! @@ -1823,50 +1823,50 @@ Appuyer sur 1 pour le mode par défaut Fichier invalide - + Export Savegame... Exporter la sauvegarde... - - + + AUTOSAVE - %1 %2 SAUVEGARDE AUTO - %1 %2 - - + + SAVE %3 - %1 %2 SAUVEGARDE %3 - %1 %2 - + WRONG FORMAT Format invalide - + UNKNOWN Inconnu - + Are you sure to delete %1 from your savegames? Supprimer %1 ? - - + + Delete Savegame Supprimer la sauvegarde - + Failed at deleting %1 from your savegames Impossible de supprimer %1 @@ -2432,7 +2432,7 @@ Appuyer sur 1 pour le mode par défaut - + Select GTA V Folder... diff --git a/res/gta5sync_ko.ts b/res/gta5sync_ko.ts index 8e70c2e..d88030d 100644 --- a/res/gta5sync_ko.ts +++ b/res/gta5sync_ko.ts @@ -610,7 +610,7 @@ When you want to use it as Avatar the image will be detached! 완료(&D) - + X: %1 Y: %2 X and Y position @@ -763,26 +763,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 찾음: %1 - - - - + + + + + + + - - - Language: %1 언어: %1 @@ -803,7 +803,7 @@ Y: %2 - + Participate in %1 User Statistics 사용자 통계 참가 %1 @@ -839,8 +839,8 @@ Y: %2 - - + + Participation ID: %1 참여 아이디: %1 @@ -862,8 +862,8 @@ Y: %2 - - + + Current: %1 현재: %1 @@ -931,100 +931,100 @@ Y: %2 취소(&C) - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (우선 순위) - + System System in context of System default 시스템 - + %1 (Game language) Next closest language compared to the Game settings 게임 설정과 가장 가까운 언어 %1 (게임 언어) - - - + + + Auto Automatic language choice. 언어 자동 선택 자동 - - + + %1 (Closest to Interface) Next closest language compared to the Interface 인터페이스와 가장 가까운 언어 %1 (인터페이스와 가까운 언어) - + %1 %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 다시 시작한 후 새 사용자 지정 폴더가 초기화됩니다. %1. - + No Profile No Profile, as default 프로필 없음 (기본값) 프로필 없음 - - - + + + Profile: %1 프로필: %1 - + View %1 User Statistics Online 온라인 %1 사용자 통계 보기 - + Not registered 등록되지 않았습니다. - - - - + + + + Yes - - + + No 아니요 - - + + OS defined OS 정의 - - + + Steam defined 스팀 정의 @@ -1279,28 +1279,28 @@ Press 1 for Default View 취소(&C) - + Add Players... 플레이어 추가 - + Failed to add more Players because the limit of Players are %1! 플레이어의 제한이 %1이므로 플레이어를 추가하지 못했습니다! - - + + Add Player... 플레이어 추가 - + Enter Social Club Player ID 소셜 클럽 플레이어 아이디 입력 - + Failed to add Player %1 because Player %1 is already added! %1 플레이어가 이미 추가되어 %1 플레이어를 추가하지 못했습니다! @@ -1877,50 +1877,50 @@ Press 1 for Default View 올바른 파일이 선택되지 않았습니다. - + Export Savegame... 세이브 파일 내보내기 - - + + AUTOSAVE - %1 %2 자동 저장 - %1 %2 - - + + SAVE %3 - %1 %2 저장 %3 - %1 %2 - + WRONG FORMAT 잘못된 형식 - + UNKNOWN 알 수 없음 - - + + Delete Savegame 세이브 파일 삭제 - + Are you sure to delete %1 from your savegames? %1을(를) 세이브 파일에서 삭제하시겠습니까? - + Failed at deleting %1 from your savegames %1을(를) 세이브 파일에서 삭제하지 못했습니다. @@ -2477,7 +2477,7 @@ Press 1 for Default View - + Select GTA V Folder... diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index 7a7ff2c..a0316c0 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -611,7 +611,7 @@ When you want to use it as Avatar the image will be detached! &Готово - + X: %1 Y: %2 X and Y position @@ -763,26 +763,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Найдено: %1 - - - - + + + + + + + - - - Language: %1 Язык: %1 @@ -803,7 +803,7 @@ Y: %2 - + Participate in %1 User Statistics Участвовать в пользовательской статистике %1 @@ -836,8 +836,8 @@ Y: %2 - - + + Participation ID: %1 Номер участника: %1 @@ -890,8 +890,8 @@ Y: %2 - - + + Current: %1 Сейчас: %1 @@ -933,95 +933,95 @@ Y: %2 От&мена - + System System in context of System default Система - + %1 (Game language) Next closest language compared to the Game settings %1 (Язык игры) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Как язык интерфейса) - - - + + + Auto Automatic language choice. Автоматически - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Приоритетный язык) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Другая папка будет загружена после перезапуска %1. - + View %1 User Statistics Online Посмотреть статистику %1 онлайн - + Not registered Не зарегистрирован - - - - + + + + Yes Да - - + + No Нет - - + + OS defined Настройка от ОС - - + + Steam defined Настройка от Steam - + No Profile No Profile, as default Не выбран - - - + + + Profile: %1 Профиль: %1 @@ -1276,28 +1276,28 @@ Press 1 for Default View &Отмена - + Add Players... Добавить игроков... - + Failed to add more Players because the limit of Players are %1! Невозможно добавить больше игроков из-за ограничения в %1! - - + + Add Player... Добавить игрока... - + Enter Social Club Player ID Введите идентификатор игрока из Social Club - + Failed to add Player %1 because Player %1 is already added! Нельзя повторно добавить игрока %1, %1 уже добавлен! @@ -1773,7 +1773,7 @@ Press 1 for Default View Удалить сохранение - + Export Savegame... Экспортировать сохранение... @@ -1783,45 +1783,45 @@ Press 1 for Default View СОХРАНЕНИЕ %3 - %1<br>%2 - + WRONG FORMAT НЕВЕРНЫЙ ФОРМАТ - - + + AUTOSAVE - %1 %2 АВТОСОХРАНЕНИЕ - %1 %2 - - + + SAVE %3 - %1 %2 СОХРАНЕНИЕ %3 - %1 %2 - + UNKNOWN НЕИЗВЕСТНО - + Are you sure to delete %1 from your savegames? Вы уверены, что хотите удалить сохранение %1? - - + + Delete Savegame Удалить сохранение - + Failed at deleting %1 from your savegames Не удалось удалить сохранение %1 @@ -2485,7 +2485,7 @@ Press 1 for Default View - + Select GTA V Folder... diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts index 1810514..1f79f33 100644 --- a/res/gta5sync_uk.ts +++ b/res/gta5sync_uk.ts @@ -607,7 +607,7 @@ When you want to use it as Avatar the image will be detached! &Готово - + X: %1 Y: %2 X and Y position @@ -759,26 +759,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 Знайдено:%1 - - - - + + + + + + + - - - Language: %1 Мова: %1 @@ -800,7 +800,7 @@ Y: %2 - + Participate in %1 User Statistics Опитування %1 про устаткування ПК @@ -836,8 +836,8 @@ Y: %2 - - + + Participation ID: %1 ID учасника : %1 @@ -859,8 +859,8 @@ Y: %2 - - + + Current: %1 Зараз: %1 @@ -926,95 +926,95 @@ Y: %2 &Скасувати - + System System in context of System default Як у системи - + %1 (Game language) Next closest language compared to the Game settings %1 (Мова гри) - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Співпадає з інтерфейсом) - - - + + + Auto Automatic language choice. Автоматично - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (пріоритет мови) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Нова користувацька папка буде ініціалізована після перезапуску %1. - + No Profile No Profile, as default Жодного - - - + + + Profile: %1 Профіль: %1 - + View %1 User Statistics Online Переглянути користувацьку статистику %1 онлайн - + Not registered Не зареєстрований - - - - + + + + Yes Так - - + + No Ні - - + + OS defined Визначається ОС - - + + Steam defined Визначається Steam @@ -1269,28 +1269,28 @@ Press 1 for Default View &Скасувати - + Add Players... Додати гравців... - + Failed to add more Players because the limit of Players are %1! Не вдалося додати більше гравців, бо ліміт %1! - - + + Add Player... Додати гравця... - + Enter Social Club Player ID Введіть ID гравця Social Club - + Failed to add Player %1 because Player %1 is already added! Не вдалося додати гравця %1, оскільки %1 вже доданий! @@ -1862,50 +1862,50 @@ Press 1 for Default View Вибрано невірний файл - + Export Savegame... Експортування файлу збереження... - - + + AUTOSAVE - %1 %2 АВТОМАТИЧНЕ ЗБЕРЕЖЕННЯ - %1 %2 - - + + SAVE %3 - %1 %2 ЗБЕРЕЖЕННЯ %3 - %1 %2 - + WRONG FORMAT НЕПРАВИЛЬНИЙ ФОРМАТ - + UNKNOWN НЕВІДОМИЙ - - + + Delete Savegame Видалити файл збереження - + Are you sure to delete %1 from your savegames? Ви впевнені, що хочете видалити %1 зі своїх сейвів? - + Failed at deleting %1 from your savegames Не вдалося видалити %1 із ваших збережених ігор @@ -2457,7 +2457,7 @@ Press 1 for Default View - + Select GTA V Folder... diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts index 2ef112b..5ce90ec 100644 --- a/res/gta5sync_zh_TW.ts +++ b/res/gta5sync_zh_TW.ts @@ -602,7 +602,7 @@ When you want to use it as Avatar the image will be detached! 完成(&D) - + X: %1 Y: %2 X and Y position @@ -754,26 +754,26 @@ Y: %2 - - - - - - + + + + + + Found: %1 找到: %1 - - - - + + + + + + + - - - Language: %1 語言: %1 @@ -794,7 +794,7 @@ Y: %2 - + Participate in %1 User Statistics 參與 %1 使用者統計 @@ -830,8 +830,8 @@ Y: %2 - - + + Participation ID: %1 參與 ID: %1 @@ -853,8 +853,8 @@ Y: %2 - - + + Current: %1 目前: %1 @@ -920,95 +920,95 @@ Y: %2 取消(&C) - + System System in context of System default 系統 - - + + %1 (Closest to Interface) Next closest language compared to the Interface %1 (與介面接近的語言) - - - + + + Auto Automatic language choice. 自動 - + %1 (Language priority) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (語言優先) - + %1 (Game language) Next closest language compared to the Game settings %1 (遊戲語言) - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. 自訂資料夾將在 %1 重新啟動後初始化. - + No Profile No Profile, as default - - - + + + Profile: %1 設定檔: %1 - + View %1 User Statistics Online 檢視 %1 使用者統計資訊 - + Not registered 未註冊參與 - - - - + + + + Yes - - + + No - - + + OS defined 系統定義 - - + + Steam defined Steam 定義 @@ -1263,28 +1263,28 @@ Press 1 for Default View 取消(&C) - + Add Players... 新增玩家... - + Failed to add more Players because the limit of Players are %1! 因為數量限制 %1,無法新增更多玩家! - - + + Add Player... 新增玩家... - + Enter Social Club Player ID 輸入玩家的 Social Club ID - + Failed to add Player %1 because Player %1 is already added! 新增 %1 失敗,因為 %1 已被新增! @@ -1844,50 +1844,50 @@ Press 1 for Default View 沒有選擇有效的檔案 - + Export Savegame... 匯出遊戲存檔... - - + + AUTOSAVE - %1 %2 自動存檔 - %1 %2 - - + + SAVE %3 - %1 %2 存檔 %3 - %1 %2 - + WRONG FORMAT 格式錯誤 - + UNKNOWN 未知 - - + + Delete Savegame 刪除存檔 - + Are you sure to delete %1 from your savegames? 你確定要刪除存檔 %1? - + Failed at deleting %1 from your savegames 刪除存檔 %1 失敗 @@ -2438,7 +2438,7 @@ Press 1 for Default View - + Select GTA V Folder... diff --git a/res/img.cmake b/res/img.cmake new file mode 100644 index 0000000..7a51a90 --- /dev/null +++ b/res/img.cmake @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.7) + +set(GTA5VIEW_IMGFILES + res/add.svgz + res/avatararea.png + res/avatarareaimport.png + res/back.svgz + res/flag-de.png + res/flag-fr.png + res/flag-gb.png + res/flag-kr.png + res/flag-ru.png + res/flag-tw.png + res/flag-ua.png + res/flag-us.png + res/mapcayoperico.jpg + res/mappreview.jpg + res/next.svgz + res/pointmaker-8.png + res/pointmaker-16.png + res/pointmaker-24.png + res/pointmaker-32.png + res/savegame.svgz + res/watermark_1b.png + res/watermark_2b.png + res/watermark_2r.png +) diff --git a/res/app.qrc b/res/img.qrc similarity index 78% rename from res/app.qrc rename to res/img.qrc index f0e8b1c..4fe80f2 100644 --- a/res/app.qrc +++ b/res/img.qrc @@ -4,7 +4,14 @@ avatararea.png avatarareaimport.png back.svgz - empty1x16.png + flag-de.png + flag-fr.png + flag-gb.png + flag-kr.png + flag-ru.png + flag-tw.png + flag-ua.png + flag-us.png gta5view-16.png gta5view-24.png gta5view-32.png @@ -26,7 +33,4 @@ watermark_2b.png watermark_2r.png - - template.g5e - diff --git a/res/next.svgz b/res/next.svgz index 0203d84fe5a33a030b4fc782e457136fc5e94180..bdf7ee93747001c7c4b16b20a46dc1fa96c65af5 100644 GIT binary patch literal 376 zcmV-;0f+t{iwFP!000000F97QZ-XEZ$KU%Y2zzY>Y_-*>O_rq}VA--~2Go)%7@^vJ z`<>d>E!o3JNRI#g{&(DE`%7J+PPI;3lVcW8jFb^pYE$O;{q3;YVdOkFl2_KK92<-G z#UgWExj+bk*|=1S9G|>zQbL+@TLrc)i4;Uts#eB3!U9I{jEfl;t>RvHO4z!##*I$n zo_@fsJU-~Y?}L6lLM%xVLPHXUDe_2CHDS_Nf{)b9k!v)OWw92Wr zQ={H%=}$S1SlC=fq0_2=wwD}JL=nitof7kg*(hk4V<rHYLF2yZ5c W9(BmQJcO{4V(|^4G;KjZ<{a}zV}yH-f;nAQj)@eO4C$n(oXwOkCS7+Ay&ag zwgchc&xWLQQV&H!vY#*eedO}-(zR#+W2IIVrg4H1D6WN6O@;sbeu^G2vW_XiTCJeM zO5?}+uCzmQhY<2+WedS8d~&WY2{RyC8?h0`SM@lK@wlBuG|zLAq$EuvuZZlV9J@sSTm2p1v!+Rs5YMg3kEjaUGw$c_ z4OlP(%=jpUJ5@NNX@8l4LBjY|Un-oS1bI083$Zp#XTZ9t^>Lusp@rzc_)BB-S&2fy zh~Bur%xWnr{DVzk{x0ql$mZm3C)Z^MjtS;i;1=}_$vx{EDt>-@s!Ps`XKh{6e`#of1 zM3yY+TBzp}Zp-T>{p$7Jz|pQ#hTVS7>UBFcTCLO-Sn5Zp*U~>l-~TSzP@2W} vh(09oev|LeHcK~Ywz~rN)UUi~oA2U1+R`M>W_CU$R8s!~=%{;yGy?zt>QUx_ diff --git a/res/template.qrc b/res/template.qrc new file mode 100644 index 0000000..06dcf5a --- /dev/null +++ b/res/template.qrc @@ -0,0 +1,5 @@ + + + template.g5e + +