Added localization support to parts of the application

This commit is contained in:
Leon Styhre 2024-07-14 18:01:54 +02:00
parent 84f296badd
commit c2beb86bcc
3 changed files with 114 additions and 96 deletions

View file

@ -12,6 +12,7 @@
#include "Log.h"
#include "Settings.h"
#include "SystemData.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
#include <chrono>
@ -45,7 +46,7 @@ void MiximageGenerator::startThread(std::promise<bool>* miximagePromise)
if ((mScreenshotPath = mGame->getScreenshotPath()) == "") {
LOG(LogDebug) << "MiximageGenerator::MiximageGenerator(): "
"No screenshot image found, aborting";
mResultMessage = "No screenshot image found, couldn't generate miximage";
mResultMessage = _("No screenshot image found, couldn't generate miximage");
mMiximagePromise->set_value(true);
return;
}

View file

@ -11,6 +11,7 @@
#include "SystemData.h"
#include "components/MenuComponent.h"
#include "utils/LocalizationUtil.h"
GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
: mGameQueue {gameQueue}
@ -36,10 +37,10 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
// Header.
mTitle = std::make_shared<TextComponent>(
"MIXIMAGE OFFLINE GENERATOR", Font::get(FONT_SIZE_LARGE), mMenuColorTitle, ALIGN_CENTER);
_("MIXIMAGE OFFLINE GENERATOR"), Font::get(FONT_SIZE_LARGE), mMenuColorTitle, ALIGN_CENTER);
mGrid.setEntry(mTitle, glm::ivec2 {0, 0}, false, true, glm::ivec2 {6, 1});
mStatus = std::make_shared<TextComponent>("NOT STARTED", Font::get(FONT_SIZE_MEDIUM),
mStatus = std::make_shared<TextComponent>(_("NOT STARTED"), Font::get(FONT_SIZE_MEDIUM),
mMenuColorPrimary, ALIGN_CENTER);
mGrid.setEntry(mStatus, glm::ivec2 {0, 1}, false, true, glm::ivec2 {6, 1});
@ -58,7 +59,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
glm::ivec2 {1, 7});
// Generated label.
mGeneratedLbl = std::make_shared<TextComponent>("Generated:", Font::get(FONT_SIZE_SMALL),
mGeneratedLbl = std::make_shared<TextComponent>(_("Generated:"), Font::get(FONT_SIZE_SMALL),
mMenuColorSecondary, ALIGN_LEFT);
mGrid.setEntry(mGeneratedLbl, glm::ivec2 {1, 4}, false, true, glm::ivec2 {1, 1});
@ -69,7 +70,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
mGrid.setEntry(mGeneratedVal, glm::ivec2 {2, 4}, false, true, glm::ivec2 {1, 1});
// Overwritten label.
mOverwrittenLbl = std::make_shared<TextComponent>("Overwritten:", Font::get(FONT_SIZE_SMALL),
mOverwrittenLbl = std::make_shared<TextComponent>(_("Overwritten:"), Font::get(FONT_SIZE_SMALL),
mMenuColorSecondary, ALIGN_LEFT);
mGrid.setEntry(mOverwrittenLbl, glm::ivec2 {1, 5}, false, true, glm::ivec2 {1, 1});
@ -80,8 +81,8 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
mGrid.setEntry(mOverwrittenVal, glm::ivec2 {2, 5}, false, true, glm::ivec2 {1, 1});
// Skipping label.
const std::string skipLabel {mRenderer->getIsVerticalOrientation() ? "Skipped:" :
"Skipped (existing):"};
const std::string skipLabel {mRenderer->getIsVerticalOrientation() ? _("Skipped:") :
_("Skipped (existing):")};
mSkippedLbl = std::make_shared<TextComponent>(skipLabel, Font::get(FONT_SIZE_SMALL),
mMenuColorSecondary, ALIGN_LEFT);
mGrid.setEntry(mSkippedLbl, glm::ivec2 {1, 6}, false, true, glm::ivec2 {1, 1});
@ -92,7 +93,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
mGrid.setEntry(mSkippedVal, glm::ivec2 {2, 6}, false, true, glm::ivec2 {1, 1});
// Failed label.
mFailedLbl = std::make_shared<TextComponent>("Failed:", Font::get(FONT_SIZE_SMALL),
mFailedLbl = std::make_shared<TextComponent>(_("Failed:"), Font::get(FONT_SIZE_SMALL),
mMenuColorSecondary, ALIGN_LEFT);
mGrid.setEntry(mFailedLbl, glm::ivec2 {1, 7}, false, true, glm::ivec2 {1, 1});
@ -102,7 +103,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
mGrid.setEntry(mFailedVal, glm::ivec2 {2, 7}, false, true, glm::ivec2 {1, 1});
// Processing label.
mProcessingLbl = std::make_shared<TextComponent>("Processing: ", Font::get(FONT_SIZE_SMALL),
mProcessingLbl = std::make_shared<TextComponent>(_("Processing:"), Font::get(FONT_SIZE_SMALL),
mMenuColorSecondary, ALIGN_LEFT);
mGrid.setEntry(mProcessingLbl, glm::ivec2 {3, 4}, false, true, glm::ivec2 {1, 1});
@ -117,7 +118,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
// Last error message label.
mLastErrorLbl = std::make_shared<TextComponent>(
"Last error message:", Font::get(FONT_SIZE_SMALL), mMenuColorSecondary, ALIGN_LEFT);
_("Last error message:"), Font::get(FONT_SIZE_SMALL), mMenuColorSecondary, ALIGN_LEFT);
mGrid.setEntry(mLastErrorLbl, glm::ivec2 {1, 9}, false, true, glm::ivec2 {4, 1});
// Last error message value.
@ -136,32 +137,33 @@ GuiOfflineGenerator::GuiOfflineGenerator(const std::queue<FileData*>& gameQueue)
// Buttons.
std::vector<std::shared_ptr<ButtonComponent>> buttons;
mStartPauseButton = std::make_shared<ButtonComponent>("START", "start processing", [this]() {
if (!mProcessing) {
mProcessing = true;
mPaused = false;
mStartPauseButton->setText("PAUSE", "pause processing");
mCloseButton->setText("CLOSE", "close (abort processing)");
mStatus->setText("RUNNING...");
if (mGamesProcessed == 0) {
LOG(LogInfo) << "GuiOfflineGenerator: Processing " << mTotalGames << " games";
mStartPauseButton =
std::make_shared<ButtonComponent>(_("START"), _("start processing"), [this]() {
if (!mProcessing) {
mProcessing = true;
mPaused = false;
mStartPauseButton->setText(_("PAUSE"), _("pause processing"));
mCloseButton->setText(_("CLOSE"), _("close (abort processing)"));
mStatus->setText(_("RUNNING..."));
if (mGamesProcessed == 0) {
LOG(LogInfo) << "GuiOfflineGenerator: Processing " << mTotalGames << " games";
}
}
}
else {
if (mMiximageGeneratorThread.joinable())
mMiximageGeneratorThread.join();
mPaused = true;
update(1);
mProcessing = false;
this->mStartPauseButton->setText("START", "start processing");
this->mCloseButton->setText("CLOSE", "close (abort processing)");
mStatus->setText("PAUSED");
}
});
else {
if (mMiximageGeneratorThread.joinable())
mMiximageGeneratorThread.join();
mPaused = true;
update(1);
mProcessing = false;
this->mStartPauseButton->setText(_("START"), _("start processing"));
this->mCloseButton->setText(_("CLOSE"), _("close (abort processing)"));
mStatus->setText(_("PAUSED"));
}
});
buttons.push_back(mStartPauseButton);
mCloseButton = std::make_shared<ButtonComponent>("CLOSE", "close", [this]() {
mCloseButton = std::make_shared<ButtonComponent>(_("CLOSE"), _("close"), [this]() {
if (mGamesProcessed != 0 && mGamesProcessed != mTotalGames) {
LOG(LogInfo) << "GuiOfflineGenerator: Aborted after processing " << mGamesProcessed
<< (mGamesProcessed == 1 ? " game (" : " games (") << mImagesGenerated
@ -318,7 +320,7 @@ void GuiOfflineGenerator::update(int deltaTime)
}
// Update the statistics.
mStatus->setText("RUNNING");
mStatus->setText(_("RUNNING"));
mGameCounter->setText(std::to_string(mGamesProcessed) + " OF " + std::to_string(mTotalGames) +
(mTotalGames == 1 ? " GAME " : " GAMES ") + "PROCESSED");
@ -327,10 +329,10 @@ void GuiOfflineGenerator::update(int deltaTime)
mOverwrittenVal->setText(std::to_string(mImagesOverwritten));
if (mGamesProcessed == mTotalGames) {
mStatus->setText("COMPLETED");
mStartPauseButton->setText("DONE", "done (close)");
mStatus->setText(_("COMPLETED"));
mStartPauseButton->setText(_("DONE"), _("done (close)"));
mStartPauseButton->setPressedFunc([this]() { delete this; });
mCloseButton->setText("CLOSE", "close");
mCloseButton->setText(_("CLOSE"), _("close"));
mProcessingVal->setText("");
LOG(LogInfo) << "GuiOfflineGenerator: Completed processing (" << mImagesGenerated
<< (mImagesGenerated == 1 ? " image " : " images ") << "generated, "

View file

@ -10,6 +10,7 @@
#include "CollectionSystemsManager.h"
#include "utils/FileSystemUtil.h"
#include "utils/LocalizationUtil.h"
#include "utils/PlatformUtil.h"
#include "views/ViewController.h"
@ -62,22 +63,22 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
#endif
mMediaDescription =
"THIS WILL REMOVE ALL MEDIA FILES WHERE NO MATCHING GAME FILES CAN BE FOUND. "
"THESE FILES WILL BE MOVED TO A CLEANUP FOLDER INSIDE YOUR GAME MEDIA "
"DIRECTORY. YOU CAN MANUALLY DELETE THIS FOLDER WHEN YOU ARE SURE IT'S NO "
"LONGER NEEDED.";
_("THIS WILL REMOVE ALL MEDIA FILES WHERE NO MATCHING GAME FILES CAN BE FOUND. "
"THESE FILES WILL BE MOVED TO A CLEANUP FOLDER INSIDE YOUR GAME MEDIA "
"DIRECTORY. YOU CAN MANUALLY DELETE THIS FOLDER WHEN YOU ARE SURE IT'S NO "
"LONGER NEEDED.");
mGamelistDescription =
mGamelistDescription = _(
"THIS WILL REMOVE ALL ENTRIES FROM YOUR GAMELIST XML FILES WHERE NO MATCHING "
"GAME FILES CAN BE FOUND. BACKUPS OF THE ORIGINAL FILES WILL BE SAVED TO A CLEANUP FOLDER "
"INSIDE YOUR GAMELISTS DIRECTORY. YOU CAN MANUALLY DELETE THIS FOLDER WHEN YOU ARE SURE "
"IT'S NO LONGER NEEDED.";
"IT'S NO LONGER NEEDED.");
mCollectionsDescription =
mCollectionsDescription = _(
"THIS WILL REMOVE ALL ENTRIES FROM YOUR CUSTOM COLLECTIONS CONFIGURATION FILES WHERE NO "
"MATCHING GAME FILES CAN BE FOUND. BACKUPS OF THE ORIGINAL FILES WILL BE SAVED TO A "
"CLEANUP FOLDER INSIDE YOUR COLLECTIONS DIRECTORY. ONLY CURRENTLY ENABLED COLLECTIONS WILL "
"BE PROCESSED.";
"BE PROCESSED.");
// Stop any ongoing custom collections editing.
if (CollectionSystemsManager::getInstance()->isEditing())
@ -89,12 +90,12 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
}
// Set up grid.
mTitle = std::make_shared<TextComponent>("ORPHANED DATA CLEANUP", Font::get(FONT_SIZE_LARGE),
mTitle = std::make_shared<TextComponent>(_("ORPHANED DATA CLEANUP"), Font::get(FONT_SIZE_LARGE),
mMenuColorTitle, ALIGN_CENTER);
mGrid.setEntry(mTitle, glm::ivec2 {0, 0}, false, true, glm::ivec2 {4, 1},
GridFlags::BORDER_NONE);
mStatus = std::make_shared<TextComponent>("NOT STARTED", Font::get(FONT_SIZE_MEDIUM),
mStatus = std::make_shared<TextComponent>(_("NOT STARTED"), Font::get(FONT_SIZE_MEDIUM),
mMenuColorPrimary, ALIGN_CENTER);
mGrid.setEntry(mStatus, glm::ivec2 {0, 1}, false, true, glm::ivec2 {4, 1},
GridFlags::BORDER_NONE);
@ -103,8 +104,8 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mGrid.setEntry(std::make_shared<GuiComponent>(), glm::ivec2 {0, 2}, false, false,
glm::ivec2 {4, 1}, GridFlags::BORDER_BOTTOM);
mDescriptionHeader = std::make_shared<TextComponent>("DESCRIPTION:", Font::get(FONT_SIZE_MINI),
mMenuColorPrimary, ALIGN_LEFT);
mDescriptionHeader = std::make_shared<TextComponent>(
_("DESCRIPTION:"), Font::get(FONT_SIZE_MINI), mMenuColorPrimary, ALIGN_LEFT);
mGrid.setEntry(mDescriptionHeader, glm::ivec2 {1, 3}, false, true, glm::ivec2 {2, 1});
mDescription = std::make_shared<TextComponent>(
@ -114,7 +115,7 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mGrid.setEntry(mDescription, glm::ivec2 {1, 4}, false, true, glm::ivec2 {2, 1});
mEntryCountHeader = std::make_shared<TextComponent>(
"TOTAL ENTRIES REMOVED:", Font::get(FONT_SIZE_SMALL), mMenuColorPrimary, ALIGN_LEFT);
_("TOTAL ENTRIES REMOVED:"), Font::get(FONT_SIZE_SMALL), mMenuColorPrimary, ALIGN_LEFT);
mGrid.setEntry(mEntryCountHeader, glm::ivec2 {1, 6}, false, true, glm::ivec2 {1, 1});
mEntryCount = std::make_shared<TextComponent>("0", Font::get(FONT_SIZE_SMALL),
@ -122,7 +123,7 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mGrid.setEntry(mEntryCount, glm::ivec2 {2, 6}, false, true, glm::ivec2 {1, 1});
mSystemProcessingHeader = std::make_shared<TextComponent>(
"LAST PROCESSED SYSTEM:", Font::get(FONT_SIZE_SMALL), mMenuColorPrimary, ALIGN_LEFT);
_("LAST PROCESSED SYSTEM:"), Font::get(FONT_SIZE_SMALL), mMenuColorPrimary, ALIGN_LEFT);
mGrid.setEntry(mSystemProcessingHeader, glm::ivec2 {1, 7}, false, true, glm::ivec2 {1, 1});
mSystemProcessing = std::make_shared<TextComponent>("", Font::get(FONT_SIZE_SMALL),
@ -130,7 +131,7 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mGrid.setEntry(mSystemProcessing, glm::ivec2 {2, 7}, false, true, glm::ivec2 {1, 1});
mErrorHeader = std::make_shared<TextComponent>(
"LAST ERROR MESSAGE:", Font::get(FONT_SIZE_SMALL), mMenuColorPrimary, ALIGN_LEFT);
_("LAST ERROR MESSAGE:"), Font::get(FONT_SIZE_SMALL), mMenuColorPrimary, ALIGN_LEFT);
mGrid.setEntry(mErrorHeader, glm::ivec2 {1, 8}, false, true, glm::ivec2 {1, 1});
mError =
@ -144,7 +145,7 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
// Buttons.
std::vector<std::shared_ptr<ButtonComponent>> buttons;
mButton1 = std::make_shared<ButtonComponent>("MEDIA", "start processing", [this]() {
mButton1 = std::make_shared<ButtonComponent>(_("MEDIA"), _("start processing"), [this]() {
if (mIsProcessing && mStopProcessing)
return;
if (mIsProcessing) {
@ -165,14 +166,14 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mErrorMessage = "";
mError->setValue("");
mEntryCount->setValue("0");
mStatus->setValue("RUNNING MEDIA CLEANUP");
mButton1->setText("STOP", "stop processing", true, false);
mStatus->setValue(_("RUNNING MEDIA CLEANUP"));
mButton1->setText(_("STOP"), _("stop processing"), true, false);
mThread = std::make_unique<std::thread>(&GuiOrphanedDataCleanup::cleanupMediaFiles, this);
});
buttons.push_back(mButton1);
mButton2 = std::make_shared<ButtonComponent>("GAMELISTS", "start processing", [this]() {
mButton2 = std::make_shared<ButtonComponent>(_("GAMELISTS"), _("start processing"), [this]() {
if (mIsProcessing && mStopProcessing)
return;
if (mIsProcessing) {
@ -193,8 +194,8 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mErrorMessage = "";
mError->setValue("");
mEntryCount->setValue("0");
mStatus->setValue("RUNNING GAMELISTS CLEANUP");
mButton2->setText("STOP", "stop processing", true, false);
mStatus->setValue(_("RUNNING GAMELISTS CLEANUP"));
mButton2->setText(_("STOP"), _("stop processing"), true, false);
// Write any gamelist.xml changes before proceeding with the cleanup.
if (Settings::getInstance()->getString("SaveGamelistsMode") == "on exit") {
for (auto system : SystemData::sSystemVector)
@ -204,7 +205,7 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
});
buttons.push_back(mButton2);
mButton3 = std::make_shared<ButtonComponent>("COLLECTIONS", "start processing", [this]() {
mButton3 = std::make_shared<ButtonComponent>(_("COLLECTIONS"), _("start processing"), [this]() {
if (mIsProcessing && mStopProcessing)
return;
if (mIsProcessing) {
@ -212,8 +213,8 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
return;
}
if (!mHasCustomCollections) {
mStatus->setValue("COLLECTIONS CLEANUP FAILED");
mError->setValue("There are no enabled custom collections");
mStatus->setValue(_("COLLECTIONS CLEANUP FAILED"));
mError->setValue(_("There are no enabled custom collections"));
mEntryCount->setValue("0");
mSystemProcessing->setValue("");
return;
@ -232,13 +233,13 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
mErrorMessage = "";
mError->setValue("");
mEntryCount->setValue("0");
mStatus->setValue("RUNNING COLLECTIONS CLEANUP");
mButton3->setText("STOP", "stop processing", true, false);
mStatus->setValue(_("RUNNING COLLECTIONS CLEANUP"));
mButton3->setText(_("STOP"), _("stop processing"), true, false);
mThread = std::make_unique<std::thread>(&GuiOrphanedDataCleanup::cleanupCollections, this);
});
buttons.push_back(mButton3);
mButton4 = std::make_shared<ButtonComponent>("CLOSE", "close", [this]() {
mButton4 = std::make_shared<ButtonComponent>(_("CLOSE"), _("close"), [this]() {
if (mIsProcessing) {
mStopProcessing = true;
if (mThread) {
@ -285,7 +286,7 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function<void()> reloadCallb
std::round(mRenderer->getScreenHeight() * 0.1f));
mBusyAnim.setSize(mSize);
mBusyAnim.setText("PROCESSING");
mBusyAnim.setText(_("PROCESSING"));
mBusyAnim.onSizeChanged();
}
@ -421,7 +422,7 @@ void GuiOrphanedDataCleanup::cleanupMediaFiles()
LOG(LogError) << "Couldn't create target directory \"" << fileDirectory << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't create target directory, permission problems?";
mErrorMessage = _("Couldn't create target directory, permission problems?");
}
mFailed = true;
mIsProcessing = false;
@ -431,7 +432,7 @@ void GuiOrphanedDataCleanup::cleanupMediaFiles()
LOG(LogError) << "Couldn't move file \"" << file << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't move media file, permission problems?";
mErrorMessage = _("Couldn't move media file, permission problems?");
}
mFailed = true;
mIsProcessing = false;
@ -589,7 +590,8 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
LOG(LogError) << "Couldn't remove temporary file \"" << tempFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't delete temporary gamelist file, permission problems?";
mErrorMessage =
_("Couldn't delete temporary gamelist file, permission problems?");
}
mFailed = true;
mIsProcessing = false;
@ -621,7 +623,8 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
LOG(LogError) << "Couldn't write to temporary file \"" << tempFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't write to temporary gamelist file, permission problems?";
mErrorMessage =
_("Couldn't write to temporary gamelist file, permission problems?");
}
// If we couldn't write to the file this will probably fail as well.
Utils::FileSystem::removeFile(tempFile);
@ -697,7 +700,8 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
LOG(LogError) << "Couldn't write to temporary file \"" << tempFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't write to temporary gamelist file, permission problems?";
mErrorMessage =
_("Couldn't write to temporary gamelist file, permission problems?");
}
Utils::FileSystem::removeFile(tempFile);
mFailed = true;
@ -725,7 +729,7 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
LOG(LogError) << "Couldn't create backup directory \"" << targetDirectory << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't create backup directory, permission problems?";
mErrorMessage = _("Couldn't create backup directory, permission problems?");
}
mFailed = true;
}
@ -742,7 +746,7 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
LOG(LogError) << "Couldn't move file \"" << gamelistFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't move old gamelist file, permission problems?";
mErrorMessage = _("Couldn't move old gamelist file, permission problems?");
}
mFailed = true;
}
@ -751,7 +755,7 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage =
"Couldn't move temporary gamelist file, permission problems?";
_("Couldn't move temporary gamelist file, permission problems?");
}
mFailed = true;
// Attempt to move back the old gamelist.xml file.
@ -773,7 +777,7 @@ void GuiOrphanedDataCleanup::cleanupGamelists()
LOG(LogError) << "Couldn't remove temporary file \"" << tempFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't delete temporary gamelist file, permission problems?";
mErrorMessage = _("Couldn't delete temporary gamelist file, permission problems?");
}
mFailed = true;
}
@ -832,7 +836,7 @@ void GuiOrphanedDataCleanup::cleanupCollections()
<< collectionFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't find custom collection configuration file";
mErrorMessage = _("Couldn't find custom collection configuration file");
}
mFailed = true;
mIsProcessing = false;
@ -860,7 +864,7 @@ void GuiOrphanedDataCleanup::cleanupCollections()
<< collectionFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't open custom collection configuration file";
mErrorMessage = _("Couldn't open custom collection configuration file");
}
mFailed = true;
mIsProcessing = false;
@ -897,7 +901,7 @@ void GuiOrphanedDataCleanup::cleanupCollections()
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage =
"Couldn't delete temporary collection file, permission problems?";
_("Couldn't delete temporary collection file, permission problems?");
}
mFailed = true;
mIsProcessing = false;
@ -922,7 +926,7 @@ void GuiOrphanedDataCleanup::cleanupCollections()
LOG(LogError) << "Couldn't create backup directory \"" << targetDirectory << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't create backup directory, permission problems?";
mErrorMessage = _("Couldn't create backup directory, permission problems?");
}
mFailed = true;
mIsProcessing = false;
@ -941,7 +945,8 @@ void GuiOrphanedDataCleanup::cleanupCollections()
<< tempFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't write to temporary collection configuration file";
mErrorMessage =
_("Couldn't write to temporary collection configuration file");
}
mFailed = true;
mIsProcessing = false;
@ -970,7 +975,8 @@ void GuiOrphanedDataCleanup::cleanupCollections()
<< "\" to backup directory";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't move old collection file, permission problems?";
mErrorMessage =
_("Couldn't move old collection file, permission problems?");
}
// Attempt to move back the old collection file.
Utils::FileSystem::renameFile(
@ -983,7 +989,7 @@ void GuiOrphanedDataCleanup::cleanupCollections()
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage =
"Couldn't move temporary collection file, permission problems?";
_("Couldn't move temporary collection file, permission problems?");
}
// Attempt to move back the old collection file.
Utils::FileSystem::renameFile(
@ -1006,7 +1012,8 @@ void GuiOrphanedDataCleanup::cleanupCollections()
LOG(LogError) << "Couldn't remove temporary file \"" << tempFile << "\"";
{
std::unique_lock<std::mutex> lock {mMutex};
mErrorMessage = "Couldn't delete temporary collection file, permission problems?";
mErrorMessage =
_("Couldn't delete temporary collection file, permission problems?");
}
mFailed = true;
}
@ -1038,20 +1045,28 @@ void GuiOrphanedDataCleanup::update(int deltaTime)
mError->setValue(mErrorMessage);
}
else if (mCompleted) {
std::string message {mStopProcessing ? "ABORTED" : "COMPLETED"};
std::string message;
if (mCleanupType == CleanupType::MEDIA) {
mButton1->setText("MEDIA", "start processing");
message.append(" MEDIA ");
mButton1->setText(_("MEDIA"), _("start processing"));
if (mStopProcessing)
message = _("ABORTED MEDIA CLEANUP");
else
message = _("COMPLETED MEDIA CLEANUP");
}
else if (mCleanupType == CleanupType::GAMELISTS) {
mButton2->setText("GAMELISTS", "start processing");
message.append(" GAMELISTS ");
mButton2->setText(_("GAMELISTS"), _("start processing"));
if (mStopProcessing)
message = _("ABORTED GAMELIST CLEANUP");
else
message = _("COMPLETED GAMELIST CLEANUP");
}
else {
mButton3->setText("COLLECTIONS", "start processing");
message.append(" COLLECTIONS ");
mButton3->setText(_("COLLECTIONS"), _("start processing"));
if (mStopProcessing)
message = _("ABORTED COLLECTIONS CLEANUP");
else
message = _("COMPLETED COLLECTIONS CLEANUP");
}
message.append("CLEANUP");
mStatus->setValue(message);
if (mError->getValue() != mErrorMessage)
mError->setValue(mErrorMessage);
@ -1060,16 +1075,16 @@ void GuiOrphanedDataCleanup::update(int deltaTime)
else if (mFailed) {
std::string message;
if (mCleanupType == CleanupType::MEDIA) {
mButton1->setText("MEDIA", "start processing");
message.append("MEDIA CLEANUP FAILED");
mButton1->setText(_("MEDIA"), _("start processing"));
message.append(_("MEDIA CLEANUP FAILED"));
}
else if (mCleanupType == CleanupType::GAMELISTS) {
mButton2->setText("GAMELISTS", "start processing");
message.append("GAMELISTS CLEANUP FAILED");
mButton2->setText(_("GAMELISTS"), _("start processing"));
message.append(_("GAMELISTS CLEANUP FAILED"));
}
else {
mButton3->setText("COLLECTIONS", "start processing");
message.append("COLLECTIONS CLEANUP FAILED");
mButton3->setText(_("COLLECTIONS"), _("start processing"));
message.append(_("COLLECTIONS CLEANUP FAILED"));
}
mStatus->setValue(message);
{
@ -1167,7 +1182,7 @@ bool GuiOrphanedDataCleanup::input(InputConfig* config, Input input)
}
else if (mCursorPos == 3) {
mDescription->setValue(
mNeedsReloading ? "THE APPLICATION WILL RELOAD WHEN CLOSING THIS UTILITY." :
mNeedsReloading ? _("THE APPLICATION WILL RELOAD WHEN CLOSING THIS UTILITY.") :
"");
}
}