From bef0fc0c41f5c630b7e2b8efe6193a0f14c054f9 Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Fri, 20 Sep 2024 21:39:18 -0300 Subject: [PATCH] powershell_unzip | changelog fix Does not use zlin-ng to unpack, now uses powershell on windows and on linux/mac uses unzip or 7z, and if it does not find it, it will ask if you want to install it before extracting. Do not show the changelog button if: The current version is a pre-release and the version to be downloaded is a release. --- src/common/config.cpp | 12 +- src/qt_gui/checkUpdate.cpp | 397 ++++++++++--------------------- src/qt_gui/checkUpdate.h | 5 +- src/qt_gui/translations/ar.ts | 10 - src/qt_gui/translations/da_DK.ts | 10 - src/qt_gui/translations/de.ts | 10 - src/qt_gui/translations/el.ts | 10 - src/qt_gui/translations/en.ts | 10 - src/qt_gui/translations/es_ES.ts | 36 +-- src/qt_gui/translations/fa_IR.ts | 10 - src/qt_gui/translations/fi.ts | 10 - src/qt_gui/translations/fr.ts | 10 - src/qt_gui/translations/hu_HU.ts | 10 - src/qt_gui/translations/id.ts | 10 - src/qt_gui/translations/it.ts | 10 - src/qt_gui/translations/ja_JP.ts | 10 - src/qt_gui/translations/ko_KR.ts | 10 - src/qt_gui/translations/lt_LT.ts | 10 - src/qt_gui/translations/nb.ts | 10 - src/qt_gui/translations/nl.ts | 10 - src/qt_gui/translations/pl_PL.ts | 10 - src/qt_gui/translations/pt_BR.ts | 14 +- src/qt_gui/translations/ro_RO.ts | 10 - src/qt_gui/translations/ru_RU.ts | 10 - src/qt_gui/translations/sq.ts | 10 - src/qt_gui/translations/tr_TR.ts | 10 - src/qt_gui/translations/vi_VN.ts | 10 - src/qt_gui/translations/zh_CN.ts | 10 - src/qt_gui/translations/zh_TW.ts | 10 - 29 files changed, 155 insertions(+), 549 deletions(-) diff --git a/src/common/config.cpp b/src/common/config.cpp index 91c9547da..b5248c89a 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -17,12 +17,12 @@ static s32 gpuId = -1; // Vulkan physical device index. Set to negative for auto static std::string logFilter; static std::string logType = "async"; static std::string userName = "shadPS4"; -static std::string updateChannel = "unstable"; +static std::string updateChannel = "stable"; static bool useSpecialPad = false; static int specialPadClass = 1; static bool isDebugDump = false; static bool isShowSplash = false; -static bool isAutoUpdate = true; +static bool isAutoUpdate = false; static bool isNullGpu = false; static bool shouldCopyGPUBuffers = false; static bool shouldDumpShaders = false; @@ -382,9 +382,9 @@ void load(const std::filesystem::path& path) { logFilter = toml::find_or(general, "logFilter", ""); logType = toml::find_or(general, "logType", "sync"); userName = toml::find_or(general, "userName", "shadPS4"); - updateChannel = toml::find_or(general, "updateChannel", "unstable"); + updateChannel = toml::find_or(general, "updateChannel", "stable"); isShowSplash = toml::find_or(general, "showSplash", true); - isAutoUpdate = toml::find_or(general, "autoUpdate", true); + isAutoUpdate = toml::find_or(general, "autoUpdate", false); } if (data.contains("Input")) { @@ -529,12 +529,12 @@ void setDefaultValues() { logFilter = ""; logType = "async"; userName = "shadPS4"; - updateChannel = "unstable"; + updateChannel = "stable"; useSpecialPad = false; specialPadClass = 1; isDebugDump = false; isShowSplash = false; - isAutoUpdate = true; + isAutoUpdate = false; isNullGpu = false; shouldDumpShaders = false; shouldDumpPM4 = false; diff --git a/src/qt_gui/checkUpdate.cpp b/src/qt_gui/checkUpdate.cpp index 75e263f65..bcfc16672 100644 --- a/src/qt_gui/checkUpdate.cpp +++ b/src/qt_gui/checkUpdate.cpp @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include @@ -23,7 +22,6 @@ #include #include #include -#include #include "checkUpdate.h" using namespace Common::FS; @@ -142,15 +140,15 @@ void CheckUpdate::CheckForUpdates(const bool showMessage) { close(); return; } else { - setupUI_UpdateAvailable(downloadUrl, latestDate, latestRev, currentDate, currentRev); + setupUI(downloadUrl, latestDate, latestRev, currentDate, currentRev); } reply->deleteLater(); }); } -void CheckUpdate::setupUI_UpdateAvailable(const QString& downloadUrl, const QString& latestDate, - const QString& latestRev, const QString& currentDate, - const QString& currentRev) { +void CheckUpdate::setupUI(const QString& downloadUrl, const QString& latestDate, + const QString& latestRev, const QString& currentDate, + const QString& currentRev) { QVBoxLayout* layout = new QVBoxLayout(this); QHBoxLayout* titleLayout = new QHBoxLayout(); @@ -158,7 +156,7 @@ void CheckUpdate::setupUI_UpdateAvailable(const QString& downloadUrl, const QStr QPixmap pixmap(":/images/shadps4.ico"); imageLabel->setPixmap(pixmap); imageLabel->setScaledContents(true); - imageLabel->setFixedSize(40, 40); + imageLabel->setFixedSize(50, 50); QLabel* titleLabel = new QLabel("

" + tr("Update Available") + "

", this); titleLayout->addWidget(imageLabel); @@ -189,51 +187,47 @@ void CheckUpdate::setupUI_UpdateAvailable(const QString& downloadUrl, const QStr layout->addLayout(bottomLayout); QString updateChannel = QString::fromStdString(Config::getUpdateChannel()); - // Create text field for changelog - - if (updateChannel == "unstable") { + // Don't show changelog button if: + // The current version is a pre-release and the version to be downloaded is a release. + bool current_isRelease = currentRev.startsWith('v', Qt::CaseInsensitive); + bool latest_isRelease = latestRev.startsWith('v', Qt::CaseInsensitive); + if (!current_isRelease && latest_isRelease) { + } else { QTextEdit* textField = new QTextEdit(this); - textField->setReadOnly(true); textField->setFixedWidth(400); textField->setFixedHeight(200); textField->setVisible(false); layout->addWidget(textField); - // Create toggle button for changelog QPushButton* toggleButton = new QPushButton(tr("Show Changelog"), this); layout->addWidget(toggleButton); - // Connect the toggle button to the slot to show/hide changelog connect(toggleButton, &QPushButton::clicked, [this, textField, toggleButton, currentRev, latestRev, downloadUrl, latestDate, currentDate]() { QString updateChannel = QString::fromStdString(Config::getUpdateChannel()); - if (updateChannel == "unstable") { - if (!textField->isVisible()) { - requestChangelog(currentRev, latestRev, downloadUrl, latestDate, - currentDate); - textField->setVisible(true); - toggleButton->setText(tr("Hide Changelog")); - adjustSize(); - } else { - textField->setVisible(false); - toggleButton->setText(tr("Show Changelog")); - adjustSize(); - } + if (!textField->isVisible()) { + requestChangelog(currentRev, latestRev, downloadUrl, latestDate, + currentDate); + textField->setVisible(true); + toggleButton->setText(tr("Hide Changelog")); + adjustSize(); } else { - QMessageBox::information( - this, tr("Changelog Unavailable"), - tr("Viewing changelog is only available for the 'unstable' channel.")); + textField->setVisible(false); + toggleButton->setText(tr("Show Changelog")); + adjustSize(); } }); - } else { - adjustSize(); } - connect(yesButton, &QPushButton::clicked, this, - [this, downloadUrl]() { DownloadAndInstallUpdate(downloadUrl); }); + connect(yesButton, &QPushButton::clicked, this, [this, downloadUrl]() { + yesButton->setEnabled(false); + noButton->setEnabled(false); + DownloadUpdate(downloadUrl); + }); + connect(noButton, &QPushButton::clicked, this, [this]() { close(); }); autoUpdateCheckBox->setChecked(Config::autoUpdate()); @@ -278,7 +272,7 @@ void CheckUpdate::requestChangelog(const QString& currentRev, const QString& lat QJsonObject commitObj = commitValue.toObject(); QString message = commitObj["commit"].toObject()["message"].toString(); - // Remove texts after the first line break, if any + // Remove texts after first line break, if any, to make it cleaner int newlineIndex = message.indexOf('\n'); if (newlineIndex != -1) { message = message.left(newlineIndex); @@ -299,7 +293,7 @@ void CheckUpdate::requestChangelog(const QString& currentRev, const QString& lat }); } -void CheckUpdate::DownloadAndInstallUpdate(const QString& url) { +void CheckUpdate::DownloadUpdate(const QString& url) { QNetworkRequest request(url); QNetworkReply* reply = networkManager->get(request); @@ -327,7 +321,6 @@ void CheckUpdate::DownloadAndInstallUpdate(const QString& url) { file.close(); QMessageBox::information(this, tr("Download Complete"), tr("The update has been downloaded, press OK to install.")); - Unzip(); Install(); } else { QMessageBox::warning( @@ -339,209 +332,13 @@ void CheckUpdate::DownloadAndInstallUpdate(const QString& url) { }); } -void CheckUpdate::Unzip() { - QString userPath = - QString::fromStdString(Common::FS::GetUserPath(Common::FS::PathType::UserDir).string()); - QString tempDirPath = userPath + "/temp_download_update"; - QString zipFilePath = tempDirPath + "/temp_download_update.zip"; - - QFile zipFile(zipFilePath); - if (!zipFile.open(QIODevice::ReadOnly)) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to open the ZIP file") + ":\n" + zipFilePath); - return; - } - - QByteArray zipData = zipFile.readAll(); - zipFile.close(); - - const uint8_t* data = reinterpret_cast(zipData.constData()); - size_t size = zipData.size(); - size_t offset = 0; - -#pragma pack(push, 1) - struct ZipLocalFileHeader { - uint32_t signature; - uint16_t version; - uint16_t flags; - uint16_t method; - uint16_t time; - uint16_t date; - uint32_t crc32; - uint32_t compressedSize; - uint32_t uncompressedSize; - uint16_t filenameLength; - uint16_t extraFieldLength; - }; -#pragma pack(pop) - - auto readLocalFileHeader = [&](const uint8_t* data, size_t offset, - ZipLocalFileHeader& header) -> bool { - memcpy(&header, data + offset, sizeof(header)); - return header.signature == 0x04034b50; - }; - - auto decompressData = [&](const std::vector& compressedData, - std::vector& decompressedData) -> bool { - zng_stream strm = {}; - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = compressedData.size(); - strm.next_in = reinterpret_cast(const_cast(compressedData.data())); - - if (zng_inflateInit2(&strm, -MAX_WBITS) != Z_OK) { - return false; - } - - strm.avail_out = decompressedData.size(); - strm.next_out = decompressedData.data(); - - int result = zng_inflate(&strm, Z_NO_FLUSH); - if (result != Z_STREAM_END) { - zng_inflateEnd(&strm); - return false; - } - - zng_inflateEnd(&strm); - return true; - }; - - while (offset < size) { - ZipLocalFileHeader header; - if (readLocalFileHeader(data, offset, header)) { - uint16_t fileNameLength = header.filenameLength; - std::string fileName(reinterpret_cast(data + offset + sizeof(header)), - fileNameLength); - - if (fileName.empty()) { - QMessageBox::warning(this, tr("Error"), - tr("File name is empty. Possibly corrupted ZIP.")); - break; - } - - offset += sizeof(header) + fileNameLength + header.extraFieldLength; - - size_t compressedDataOffset = offset; - size_t compressedDataSize = header.compressedSize; - size_t uncompressedSize = header.uncompressedSize; - - if (header.method == 0) { - // 0 = No need to decompress, just copy the data - std::vector decompressedData( - data + compressedDataOffset, data + compressedDataOffset + compressedDataSize); - - QString filePath = QString::fromUtf8(fileName.c_str()); - QString fullPath = tempDirPath + "/" + filePath; - - QFileInfo fileInfo(fullPath); - QString dirPath = fileInfo.path(); - - QDir dir(dirPath); - if (!dir.exists()) { - if (!dir.mkpath(dirPath)) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to create directory") + ":\n" + dirPath); - continue; - } - } - - QFile outFile(fullPath); - outFile.write(reinterpret_cast(decompressedData.data()), - decompressedData.size()); - outFile.close(); - - offset += compressedDataSize; - } else if (header.method == 8) { - // 8 = Decompression Deflate - std::vector compressedData( - data + compressedDataOffset, data + compressedDataOffset + compressedDataSize); - std::vector decompressedData(uncompressedSize); - - if (!decompressData(compressedData, decompressedData)) { - QMessageBox::warning(this, tr("Error"), - tr("Error decompressing file") + ":\n" + - QString::fromStdString(fileName)); - continue; - } - - QString filePath = QString::fromUtf8(fileName.c_str()); - QString fullPath = tempDirPath + "/" + filePath; - - QFileInfo fileInfo(fullPath); - QString dirPath = fileInfo.path(); - - QDir dir(dirPath); - if (!dir.exists()) { - if (!dir.mkpath(dirPath)) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to create directory") + ":\n" + dirPath); - continue; - } - } - - QFile outFile(fullPath); - if (!outFile.open(QIODevice::WriteOnly)) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to open output file") + ":\n" + fullPath); - continue; - } - outFile.write(reinterpret_cast(decompressedData.data()), - decompressedData.size()); - outFile.close(); - - offset += compressedDataSize; - } else { - QMessageBox::warning(this, tr("Error"), - tr("Unsupported compression method for file:") + - header.method + "\n" + QString::fromStdString(fileName)); - break; - } -#if defined(Q_OS_MAC) - if (filePath == "shadps4-macos-qt.tar.gz") { - // Unpack the tar.gz file - QString tarGzFilePath = tempDirPath + "/" + filePath; - QString tarExtractDirPath = tempDirPath + "/tar_extracted"; - QDir tarExtractDir(tarExtractDirPath); - if (!tarExtractDir.exists()) { - if (!tarExtractDir.mkpath(tarExtractDirPath)) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to create TAR extraction directory") + - ":\n" + tarExtractDirPath); - return; - } - } - - QString tarCommand = - QString("tar -xzf %1 -C %2").arg(tarGzFilePath, tarExtractDirPath); - QProcess tarProcess; - tarProcess.start(tarCommand); - tarProcess.waitForFinished(); - - // Check if tar was successful - if (tarProcess.exitStatus() != QProcess::NormalExit || tarProcess.exitCode() != 0) { - QMessageBox::warning(this, tr("Error"), - tr("Failed to extract the TAR file") + ":\n" + - tarProcess.errorString()); - return; - } - // Remove .tar.gz file after extraction - QFile::remove(tarGzFilePath); - } -#endif - } else { - offset++; - } - } -} - void CheckUpdate::Install() { QString userPath = QString::fromStdString(Common::FS::GetUserPath(Common::FS::PathType::UserDir).string()); - QString tempDirPath = userPath + "/temp_download_update"; - QString rootPath = QString::fromStdString(std::filesystem::current_path().string()); QString startingUpdate = tr("Starting Update..."); + QString tempDirPath = userPath + "/temp_download_update"; + QString rootPath = QString::fromStdString(std::filesystem::current_path().string()); QString scriptContent; QString scriptFileName; @@ -550,50 +347,120 @@ void CheckUpdate::Install() { #ifdef Q_OS_WIN // Windows Batch Script - scriptFileName = tempDirPath + "/update.bat"; - scriptContent = QStringLiteral("@echo off\n" - "chcp 65001\n" - "echo %1\n" - "timeout /t 2 /nobreak\n" - "xcopy /E /I /Y \"%2\\*\" \"%3\\\"\n" - "timeout /t 2 /nobreak\n" - "del /Q \"%3\\update.bat\"\n" - "del /Q \"%3\\temp_download_update.zip\"\n" - "start \"\" \"%3\\shadps4.exe\"\n" - "rmdir /S /Q \"%2\"\n"); - arguments << "/C" << scriptFileName; - processCommand = "cmd.exe"; + scriptFileName = tempDirPath + "/update.ps1"; + scriptContent = QStringLiteral( + "Set-ExecutionPolicy Bypass -Scope Process -Force\n" + "Write-Output '%1'\n" + "Expand-Archive -Path '%2\\temp_download_update.zip' -DestinationPath '%2' -Force\n" + "Start-Sleep -Seconds 3\n" + "Copy-Item -Recurse -Force '%2\\*' '%3\\'\n" + "Start-Sleep -Seconds 2\n" + "Remove-Item -Force '%3\\update.ps1'\n" + "Remove-Item -Force '%3\\temp_download_update.zip'\n" + "Start-Process '%3\\shadps4.exe'\n" + "Remove-Item -Recurse -Force '%2'\n"); + arguments << "-ExecutionPolicy" + << "Bypass" + << "-File" << scriptFileName; + processCommand = "powershell.exe"; #elif defined(Q_OS_LINUX) // Linux Shell Script scriptFileName = tempDirPath + "/update.sh"; - scriptContent = QStringLiteral("#!/bin/bash\n" - "echo \"%1\"\n" - "sleep 2\n" - "cp -r \"%2/\"* \"%3/\"\n" - "sleep 2\n" - "rm \"%3/update.sh\"\n" - "rm \"%3/temp_download_update.zip\"\n" - "rm -r \"%2\"\n" - "chmod +x \"%3/Shadps4-qt.AppImage\"\n" - "cd \"%3\" && ./Shadps4-qt.AppImage\n"); + scriptContent = QStringLiteral( + "#!/bin/bash\n" + "check_unzip() {\n" + " if ! command -v unzip &> /dev/null && ! command -v 7z &> /dev/null; then\n" + " echo \"Neither 'unzip' nor '7z' is installed.\"\n" + " read -p \"Would you like to install 'unzip'? (y/n): \" response\n" + " if [[ \"$response\" == \"y\" || \"$response\" == \"Y\" ]]; then\n" + " if [[ -f /etc/os-release ]]; then\n" + " . /etc/os-release\n" + " case \"$ID\" in\n" + " ubuntu|debian)\n" + " sudo apt-get install unzip -y\n" + " ;;\n" + " fedora|redhat)\n" + " sudo dnf install unzip -y\n" + " ;;\n" + " *)\n" + " echo \"Unsupported distribution for automatic installation.\"\n" + " exit 1\n" + " ;;\n" + " esac\n" + " else\n" + " echo \"Could not identify the distribution.\"\n" + " exit 1\n" + " fi\n" + " else\n" + " echo \"At least one of 'unzip' or '7z' is required to continue. The process " + "will be terminated.\"\n" + " exit 1\n" + " fi\n" + " fi\n" + "}\n" + "extract_file() {\n" + " if command -v unzip &> /dev/null; then\n" + " unzip -o \"%2/temp_download_update.zip\" -d \"%2/\"\n" + " elif command -v 7z &> /dev/null; then\n" + " 7z x \"%2/temp_download_update.zip\" -o\"%2/\" -y\n" + " else\n" + " echo \"No suitable extraction tool found.\"\n" + " exit 1\n" + " fi\n" + "}\n" + "main() {\n" + " check_unzip\n" + " echo \"%1\"\n" + " sleep 2\n" + " extract_file\n" + " sleep 2\n" + " cp -r \"%2/\"* \"%3/\"\n" + " sleep 2\n" + " rm \"%3/update.sh\"\n" + " rm \"%3/temp_download_update.zip\"\n" + " chmod +x \"%3/Shadps4-qt.AppImage\"\n" + " rm -r \"%2\"\n" + " cd \"%3\" && ./Shadps4-qt.AppImage\n" + "}\n" + "main\n"); arguments << scriptFileName; processCommand = "bash"; #elif defined(Q_OS_MAC) // macOS Shell Script scriptFileName = tempDirPath + "/update.sh"; - scriptContent = QStringLiteral("#!/bin/bash\n" - "echo \"%1\"\n" - "sleep 2\n" - "tar -xzf \"%2/temp_download_update.tar.gz\" -C \"%3\"\n" - "sleep 2\n" - "rm \"%3/update.sh\"\n" - "chmod +x \"%3/shadps4.app/Contents/MacOS/shadps4\"\n" - "open \"%3/shadps4.app\"\n" - "rm -r \"%2\"\n"); + scriptContent = QStringLiteral( + "#!/bin/bash\n" + "check_tools() {\n" + " if ! command -v unzip &> /dev/null && ! command -v tar &> /dev/null; then\n" + " echo \"Neither 'unzip' nor 'tar' is installed.\"\n" + " read -p \"Would you like to install 'unzip'? (y/n): \" response\n" + " if [[ \"$response\" == \"y\" || \"$response\" == \"Y\" ]]; then\n" + " echo \"Please install 'unzip' using Homebrew or another package manager.\"\n" + " exit 1\n" + " else\n" + " echo \"At least one of 'unzip' or 'tar' is required to continue. The process " + "will be terminated.\"\n" + " exit 1\n" + " fi\n" + " fi\n" + "}\n" + "check_tools\n" + "echo \"%1\"\n" + "sleep 2\n" + "unzip -o \"%2/temp_download_update.zip\" -d \"%2/\"\n" + "sleep 2\n" + "tar -xzf \"%2/shadps4-macos-qt.tar.gz\" -C \"%3\"\n" + "sleep 2\n" + "rm \"%3/update.sh\"\n" + "chmod +x \"%3/shadps4.app/Contents/MacOS/shadps4\"\n" + "open \"%3/shadps4.app\"\n" + "rm -r \"%2\"\n"); + arguments << scriptFileName; processCommand = "bash"; + #else QMessageBox::warning(this, tr("Error"), "Unsupported operating system."); return; diff --git a/src/qt_gui/checkUpdate.h b/src/qt_gui/checkUpdate.h index 9f765dc25..f8a70bc4a 100644 --- a/src/qt_gui/checkUpdate.h +++ b/src/qt_gui/checkUpdate.h @@ -18,12 +18,11 @@ public: private slots: void CheckForUpdates(const bool showMessage); - void DownloadAndInstallUpdate(const QString& url); - void Unzip(); + void DownloadUpdate(const QString& url); void Install(); private: - void setupUI_UpdateAvailable(const QString& downloadUrl, const QString& latestDate, + void setupUI(const QString& downloadUrl, const QString& latestDate, const QString& latestRev, const QString& currentDate, const QString& currentRev); diff --git a/src/qt_gui/translations/ar.ts b/src/qt_gui/translations/ar.ts index e3c4701fb..20a06ae94 100644 --- a/src/qt_gui/translations/ar.ts +++ b/src/qt_gui/translations/ar.ts @@ -1092,16 +1092,6 @@ Hide Changelog إخفاء سجل التغييرات - - - Changelog Unavailable - سجل التغييرات غير متوفر - - - - Viewing changelog is only available for the 'unstable' channel. - عرض سجل التغييرات متاح فقط للقناة 'غير المستقرة'. - Changes diff --git a/src/qt_gui/translations/da_DK.ts b/src/qt_gui/translations/da_DK.ts index 2845caaf7..52b442a15 100644 --- a/src/qt_gui/translations/da_DK.ts +++ b/src/qt_gui/translations/da_DK.ts @@ -1092,16 +1092,6 @@ Hide Changelog Skjul ændringslog - - - Changelog Unavailable - Ændringslog ikke tilgængelig - - - - Viewing changelog is only available for the 'unstable' channel. - Visning af ændringsloggen er kun tilgængelig for den 'ustabile' kanal. - Changes diff --git a/src/qt_gui/translations/de.ts b/src/qt_gui/translations/de.ts index 31596b841..d9dd818f2 100644 --- a/src/qt_gui/translations/de.ts +++ b/src/qt_gui/translations/de.ts @@ -1092,16 +1092,6 @@ Hide Changelog Änderungsprotokoll ausblenden - - - Changelog Unavailable - Änderungsprotokoll nicht verfügbar - - - - Viewing changelog is only available for the 'unstable' channel. - Die Ansicht des Änderungsprotokolls ist nur für den 'unstabilen' Kanal verfügbar. - Changes diff --git a/src/qt_gui/translations/el.ts b/src/qt_gui/translations/el.ts index 763af71cb..eec6c7b1b 100644 --- a/src/qt_gui/translations/el.ts +++ b/src/qt_gui/translations/el.ts @@ -1092,16 +1092,6 @@ Hide Changelog Απόκρυψη Ιστορικού Αλλαγών - - - Changelog Unavailable - Το Ιστορικό Αλλαγών δεν είναι διαθέσιμο - - - - Viewing changelog is only available for the 'unstable' channel. - Η προβολή του ιστορικού αλλαγών είναι διαθέσιμη μόνο για το 'unstable' κανάλι. - Changes diff --git a/src/qt_gui/translations/en.ts b/src/qt_gui/translations/en.ts index 97f785ff1..9dcb67b11 100644 --- a/src/qt_gui/translations/en.ts +++ b/src/qt_gui/translations/en.ts @@ -1092,16 +1092,6 @@ Hide Changelog Hide Changelog - - - Changelog Unavailable - Changelog Unavailable - - - - Viewing changelog is only available for the 'unstable' channel. - Viewing changelog is only available for the 'unstable' channel. - Changes diff --git a/src/qt_gui/translations/es_ES.ts b/src/qt_gui/translations/es_ES.ts index e0c6d668d..84e36b9b3 100644 --- a/src/qt_gui/translations/es_ES.ts +++ b/src/qt_gui/translations/es_ES.ts @@ -21,7 +21,7 @@ This software should not be used to play games you have not legally obtained. - Este software no debe utilizarse para jugar juegos que no hayas obtenido legalmente. + Este software no debe utilizarse para jugar juegos que hayas obtenido ilegalmente. @@ -118,7 +118,7 @@ Copy Serial - Copiar serial + Copiar número de serie @@ -301,7 +301,7 @@ Settings - Configuraciones + Configuración @@ -346,7 +346,7 @@ toolBar - barra de herramientas + Barra de herramientas @@ -370,7 +370,7 @@ Settings - Configuraciones + Configuración @@ -558,7 +558,7 @@ All Patches available for all games have been downloaded. - Todos los parches disponibles para todos los juegos han sido descargados. + Todos los parches disponibles han sido descargados para todos los juegos. @@ -668,7 +668,7 @@ File doesn't appear to be a valid PKG file - El archivo no parece ser un archivo PKG válido + El archivo parece no ser un archivo PKG válido @@ -691,7 +691,7 @@ Serial: - Serie: + Número de serie: @@ -731,7 +731,7 @@ You can delete the cheats you don't want after downloading them. - Puedes eliminar los trucos que no quieras después de descargarlos. + Puedes eliminar los trucos que no quieras una vez descargados. @@ -761,7 +761,7 @@ Patches - Parche + Parches @@ -781,7 +781,7 @@ No patch file found for the current serial. - No se encontró ningún archivo de parche para la serie actual. + No se encontró ningún archivo de parche para el número de serie actual. @@ -957,7 +957,7 @@ Icon - Ícono + Icono @@ -967,7 +967,7 @@ Serial - Serie + Numero de serie @@ -1092,16 +1092,6 @@ Hide Changelog Ocultar registro de cambios - - - Changelog Unavailable - Registro de cambios no disponible - - - - Viewing changelog is only available for the 'unstable' channel. - La visualización del registro de cambios solo está disponible para el canal 'inestable'. - Changes diff --git a/src/qt_gui/translations/fa_IR.ts b/src/qt_gui/translations/fa_IR.ts index c08616776..400414a1a 100644 --- a/src/qt_gui/translations/fa_IR.ts +++ b/src/qt_gui/translations/fa_IR.ts @@ -1092,16 +1092,6 @@ Hide Changelog مخفی کردن تغییرات - - - Changelog Unavailable - تغییرات در دسترس نیست - - - - Viewing changelog is only available for the 'unstable' channel. - نمایش تغییرات فقط برای کانال 'unstable' در دسترس است. - Changes diff --git a/src/qt_gui/translations/fi.ts b/src/qt_gui/translations/fi.ts index 1944dc08e..e2dd07a60 100644 --- a/src/qt_gui/translations/fi.ts +++ b/src/qt_gui/translations/fi.ts @@ -1092,16 +1092,6 @@ Hide Changelog Piilota muutospäiväkirja - - - Changelog Unavailable - Muutospäiväkirja ei saatavilla - - - - Viewing changelog is only available for the 'unstable' channel. - Muutospäiväkirjan katsominen on saatavilla vain 'unstable'-kanavalle. - Changes diff --git a/src/qt_gui/translations/fr.ts b/src/qt_gui/translations/fr.ts index fa9727eef..0246de6c6 100644 --- a/src/qt_gui/translations/fr.ts +++ b/src/qt_gui/translations/fr.ts @@ -1092,16 +1092,6 @@ Hide Changelog Cacher le journal des modifications - - - Changelog Unavailable - Journal des modifications indisponible - - - - Viewing changelog is only available for the 'unstable' channel. - La consultation du journal des modifications n'est disponible que pour le canal 'unstable'. - Changes diff --git a/src/qt_gui/translations/hu_HU.ts b/src/qt_gui/translations/hu_HU.ts index 79ff15d80..ead0808b9 100644 --- a/src/qt_gui/translations/hu_HU.ts +++ b/src/qt_gui/translations/hu_HU.ts @@ -1092,16 +1092,6 @@ Hide Changelog Módosítások elrejtése - - - Changelog Unavailable - Módosítások nem elérhetők - - - - Viewing changelog is only available for the 'unstable' channel. - A módosítások megtekintése csak az 'unstable' csatornára érhető el. - Changes diff --git a/src/qt_gui/translations/id.ts b/src/qt_gui/translations/id.ts index 06bc9b2dc..46baa0a65 100644 --- a/src/qt_gui/translations/id.ts +++ b/src/qt_gui/translations/id.ts @@ -1092,16 +1092,6 @@ Hide Changelog Sembunyikan Catatan Perubahan - - - Changelog Unavailable - Catatan perubahan tidak tersedia - - - - Viewing changelog is only available for the 'unstable' channel. - Pemirsa catatan perubahan hanya tersedia untuk saluran 'unstable'. - Changes diff --git a/src/qt_gui/translations/it.ts b/src/qt_gui/translations/it.ts index 732aa29f4..47e2fd1d5 100644 --- a/src/qt_gui/translations/it.ts +++ b/src/qt_gui/translations/it.ts @@ -1092,16 +1092,6 @@ Hide Changelog Nascondi il Changelog - - - Changelog Unavailable - Changelog non disponibile - - - - Viewing changelog is only available for the 'unstable' channel. - La visualizzazione del changelog è disponibile solo per il canale 'unstable'. - Changes diff --git a/src/qt_gui/translations/ja_JP.ts b/src/qt_gui/translations/ja_JP.ts index 060d87864..13178b796 100644 --- a/src/qt_gui/translations/ja_JP.ts +++ b/src/qt_gui/translations/ja_JP.ts @@ -1092,16 +1092,6 @@ Hide Changelog 変更ログを隠す - - - Changelog Unavailable - 変更ログは利用できません - - - - Viewing changelog is only available for the 'unstable' channel. - 変更ログの表示は「unstable」チャネルでのみ利用可能です。 - Changes diff --git a/src/qt_gui/translations/ko_KR.ts b/src/qt_gui/translations/ko_KR.ts index 6bde4be26..0351fd7d5 100644 --- a/src/qt_gui/translations/ko_KR.ts +++ b/src/qt_gui/translations/ko_KR.ts @@ -1092,16 +1092,6 @@ Hide Changelog Hide Changelog - - - Changelog Unavailable - Changelog Unavailable - - - - Viewing changelog is only available for the 'unstable' channel. - Viewing changelog is only available for the 'unstable' channel. - Changes diff --git a/src/qt_gui/translations/lt_LT.ts b/src/qt_gui/translations/lt_LT.ts index f2b8df2ff..1d31233bf 100644 --- a/src/qt_gui/translations/lt_LT.ts +++ b/src/qt_gui/translations/lt_LT.ts @@ -1092,16 +1092,6 @@ Hide Changelog Slėpti pakeitimų sąrašą - - - Changelog Unavailable - Pakeitimų sąrašas neprieinamas - - - - Viewing changelog is only available for the 'unstable' channel. - Žiūrėjimas pakeitimų sąrašo galimas tik 'unstable' kanalui. - Changes diff --git a/src/qt_gui/translations/nb.ts b/src/qt_gui/translations/nb.ts index d15b8b067..6f7a8f54c 100644 --- a/src/qt_gui/translations/nb.ts +++ b/src/qt_gui/translations/nb.ts @@ -1092,16 +1092,6 @@ Hide Changelog Skjul endringslogg - - - Changelog Unavailable - Endringslogg utilgjengelig - - - - Viewing changelog is only available for the 'unstable' channel. - Visning av endringslogg er kun tilgjengelig for 'unstable' kanalen. - Changes diff --git a/src/qt_gui/translations/nl.ts b/src/qt_gui/translations/nl.ts index 422834433..686a65ebd 100644 --- a/src/qt_gui/translations/nl.ts +++ b/src/qt_gui/translations/nl.ts @@ -1092,16 +1092,6 @@ Hide Changelog Verberg changelog - - - Changelog Unavailable - Changelog niet beschikbaar - - - - Viewing changelog is only available for the 'unstable' channel. - Weergave van de changelog is alleen beschikbaar voor het 'unstable' kanaal. - Changes diff --git a/src/qt_gui/translations/pl_PL.ts b/src/qt_gui/translations/pl_PL.ts index 8760a618d..b4e76d601 100644 --- a/src/qt_gui/translations/pl_PL.ts +++ b/src/qt_gui/translations/pl_PL.ts @@ -1092,16 +1092,6 @@ Hide Changelog Ukryj zmiany - - - Changelog Unavailable - Brak zmian do wyświetlenia - - - - Viewing changelog is only available for the 'unstable' channel. - Podgląd zmian jest dostępny tylko dla kanału 'unstable'. - Changes diff --git a/src/qt_gui/translations/pt_BR.ts b/src/qt_gui/translations/pt_BR.ts index 84b332f7b..0c4db13d0 100644 --- a/src/qt_gui/translations/pt_BR.ts +++ b/src/qt_gui/translations/pt_BR.ts @@ -510,7 +510,7 @@ Check for Updates at Startup - Verificar atualizações ao Iniciar + Verificar Atualizações ao Iniciar @@ -1075,7 +1075,7 @@ Check for Updates at Startup - Verificar atualizações ao Iniciar + Verificar Atualizações ao Iniciar @@ -1092,16 +1092,6 @@ Hide Changelog Ocultar Changelog - - - Changelog Unavailable - Changelog indisponível - - - - Viewing changelog is only available for the 'unstable' channel. - A visualização do changelog está disponível apenas para o canal 'unstable'. - Changes diff --git a/src/qt_gui/translations/ro_RO.ts b/src/qt_gui/translations/ro_RO.ts index 6fa3a23e1..72e1b7fe0 100644 --- a/src/qt_gui/translations/ro_RO.ts +++ b/src/qt_gui/translations/ro_RO.ts @@ -1092,16 +1092,6 @@ Hide Changelog Ascunde jurnalul de modificări - - - Changelog Unavailable - Jurnal de modificări indisponibil - - - - Viewing changelog is only available for the 'unstable' channel. - Vizualizarea jurnalului de modificări este disponibilă doar pentru canalul 'unstable'. - Changes diff --git a/src/qt_gui/translations/ru_RU.ts b/src/qt_gui/translations/ru_RU.ts index 37ef8f900..9bbfd8115 100644 --- a/src/qt_gui/translations/ru_RU.ts +++ b/src/qt_gui/translations/ru_RU.ts @@ -1092,16 +1092,6 @@ Hide Changelog Скрыть изменения - - - Changelog Unavailable - Изменения недоступны - - - - Viewing changelog is only available for the 'unstable' channel. - Просмотр изменений доступен только для канала 'unstable'. - Changes diff --git a/src/qt_gui/translations/sq.ts b/src/qt_gui/translations/sq.ts index 6ac3bc0b4..6bc401782 100644 --- a/src/qt_gui/translations/sq.ts +++ b/src/qt_gui/translations/sq.ts @@ -1092,16 +1092,6 @@ Hide Changelog Fshih ndryshimet - - - Changelog Unavailable - Ndryshimet nuk janë të disponueshme - - - - Viewing changelog is only available for the 'unstable' channel. - Shikimi i ndryshimeve është i disponueshëm vetëm për kanalin 'unstable'. - Changes diff --git a/src/qt_gui/translations/tr_TR.ts b/src/qt_gui/translations/tr_TR.ts index d94bcce9a..6673a8068 100644 --- a/src/qt_gui/translations/tr_TR.ts +++ b/src/qt_gui/translations/tr_TR.ts @@ -1092,16 +1092,6 @@ Hide Changelog Değişiklik Günlüğünü Gizle - - - Changelog Unavailable - Değişiklik Günlüğü Mevcut Değil - - - - Viewing changelog is only available for the 'unstable' channel. - Değişiklik günlüğünü görüntüleme yalnızca 'unstable' kanalı için mevcuttur. - Changes diff --git a/src/qt_gui/translations/vi_VN.ts b/src/qt_gui/translations/vi_VN.ts index ab38169d0..6edfdff64 100644 --- a/src/qt_gui/translations/vi_VN.ts +++ b/src/qt_gui/translations/vi_VN.ts @@ -1092,16 +1092,6 @@ Hide Changelog Ẩn nhật ký thay đổi - - - Changelog Unavailable - Nhật ký thay đổi không có sẵn - - - - Viewing changelog is only available for the 'unstable' channel. - Việc xem nhật ký thay đổi chỉ khả dụng cho kênh 'unstable'. - Changes diff --git a/src/qt_gui/translations/zh_CN.ts b/src/qt_gui/translations/zh_CN.ts index f7fcc3d1c..b887ef291 100644 --- a/src/qt_gui/translations/zh_CN.ts +++ b/src/qt_gui/translations/zh_CN.ts @@ -1092,16 +1092,6 @@ Hide Changelog 隐藏变更日志 - - - Changelog Unavailable - 变更日志不可用 - - - - Viewing changelog is only available for the 'unstable' channel. - 查看变更日志仅适用于“unstable”通道。 - Changes diff --git a/src/qt_gui/translations/zh_TW.ts b/src/qt_gui/translations/zh_TW.ts index 295261995..03d32f012 100644 --- a/src/qt_gui/translations/zh_TW.ts +++ b/src/qt_gui/translations/zh_TW.ts @@ -1092,16 +1092,6 @@ Hide Changelog 隱藏變更日誌 - - - Changelog Unavailable - 變更日誌不可用 - - - - Viewing changelog is only available for the 'unstable' channel. - 查看變更日誌僅適用於 'unstable' 通道。 - Changes