From a5d87032350c3d902396da4914dd742ab5c39efe Mon Sep 17 00:00:00 2001
From: Kyle Kienapfel <Docteh@users.noreply.github.com>
Date: Fri, 4 Nov 2022 04:59:32 -0700
Subject: [PATCH] UI: split up strings relating to content removal

Requested by Italian translator (Fs00 in Discord)

"Remove Installed Game %1?"
"Error Removing %1"

I didn't press for translated strings, so have a taste direct from deepl

Rimuovere il contenuto del gioco installato?
Rimuovere l'aggiornamento del gioco installato?
Rimuovere il DLC del gioco installato?
---
 src/yuzu/main.cpp | 46 +++++++++++++++++++++++++++++-----------------
 src/yuzu/main.h   |  7 ++++---
 2 files changed, 33 insertions(+), 20 deletions(-)

diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 7b16d7f7e2..57fd10dabf 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -2018,38 +2018,50 @@ static bool RomFSRawCopy(QProgressDialog& dialog, const FileSys::VirtualDir& src
     return true;
 }
 
+QString GMainWindow::GetGameListErrorRemoving(InstalledEntryType type) const {
+    switch (type) {
+    case InstalledEntryType::Game:
+        return tr("Error Removing Contents");
+    case InstalledEntryType::Update:
+        return tr("Error Removing Update");
+    case InstalledEntryType::AddOnContent:
+        return tr("Error Removing DLC");
+    default:
+        return QStringLiteral("Error Removing <Invalid Type>");
+    }
+}
 void GMainWindow::OnGameListRemoveInstalledEntry(u64 program_id, InstalledEntryType type) {
-    const QString entry_type = [type] {
+    const QString entry_question = [type] {
         switch (type) {
         case InstalledEntryType::Game:
-            return tr("Contents");
+            return tr("Remove Installed Game Contents?");
         case InstalledEntryType::Update:
-            return tr("Update");
+            return tr("Remove Installed Game Update?");
         case InstalledEntryType::AddOnContent:
-            return tr("DLC");
+            return tr("Remove Installed Game DLC?");
         default:
-            return QString{};
+            return QStringLiteral("Remove Installed Game <Invalid Type>?");
         }
     }();
 
-    if (QMessageBox::question(
-            this, tr("Remove Entry"), tr("Remove Installed Game %1?").arg(entry_type),
-            QMessageBox::Yes | QMessageBox::No, QMessageBox::No) != QMessageBox::Yes) {
+    if (QMessageBox::question(this, tr("Remove Entry"), entry_question,
+                              QMessageBox::Yes | QMessageBox::No,
+                              QMessageBox::No) != QMessageBox::Yes) {
         return;
     }
 
     switch (type) {
     case InstalledEntryType::Game:
-        RemoveBaseContent(program_id, entry_type);
+        RemoveBaseContent(program_id, type);
         [[fallthrough]];
     case InstalledEntryType::Update:
-        RemoveUpdateContent(program_id, entry_type);
+        RemoveUpdateContent(program_id, type);
         if (type != InstalledEntryType::Game) {
             break;
         }
         [[fallthrough]];
     case InstalledEntryType::AddOnContent:
-        RemoveAddOnContent(program_id, entry_type);
+        RemoveAddOnContent(program_id, type);
         break;
     }
     Common::FS::RemoveDirRecursively(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) /
@@ -2057,7 +2069,7 @@ void GMainWindow::OnGameListRemoveInstalledEntry(u64 program_id, InstalledEntryT
     game_list->PopulateAsync(UISettings::values.game_dirs);
 }
 
-void GMainWindow::RemoveBaseContent(u64 program_id, const QString& entry_type) {
+void GMainWindow::RemoveBaseContent(u64 program_id, InstalledEntryType type) {
     const auto& fs_controller = system->GetFileSystemController();
     const auto res = fs_controller.GetUserNANDContents()->RemoveExistingEntry(program_id) ||
                      fs_controller.GetSDMCContents()->RemoveExistingEntry(program_id);
@@ -2067,12 +2079,12 @@ void GMainWindow::RemoveBaseContent(u64 program_id, const QString& entry_type) {
                                  tr("Successfully removed the installed base game."));
     } else {
         QMessageBox::warning(
-            this, tr("Error Removing %1").arg(entry_type),
+            this, GetGameListErrorRemoving(type),
             tr("The base game is not installed in the NAND and cannot be removed."));
     }
 }
 
-void GMainWindow::RemoveUpdateContent(u64 program_id, const QString& entry_type) {
+void GMainWindow::RemoveUpdateContent(u64 program_id, InstalledEntryType type) {
     const auto update_id = program_id | 0x800;
     const auto& fs_controller = system->GetFileSystemController();
     const auto res = fs_controller.GetUserNANDContents()->RemoveExistingEntry(update_id) ||
@@ -2082,12 +2094,12 @@ void GMainWindow::RemoveUpdateContent(u64 program_id, const QString& entry_type)
         QMessageBox::information(this, tr("Successfully Removed"),
                                  tr("Successfully removed the installed update."));
     } else {
-        QMessageBox::warning(this, tr("Error Removing %1").arg(entry_type),
+        QMessageBox::warning(this, GetGameListErrorRemoving(type),
                              tr("There is no update installed for this title."));
     }
 }
 
-void GMainWindow::RemoveAddOnContent(u64 program_id, const QString& entry_type) {
+void GMainWindow::RemoveAddOnContent(u64 program_id, InstalledEntryType type) {
     u32 count{};
     const auto& fs_controller = system->GetFileSystemController();
     const auto dlc_entries = system->GetContentProvider().ListEntriesFilter(
@@ -2105,7 +2117,7 @@ void GMainWindow::RemoveAddOnContent(u64 program_id, const QString& entry_type)
     }
 
     if (count == 0) {
-        QMessageBox::warning(this, tr("Error Removing %1").arg(entry_type),
+        QMessageBox::warning(this, GetGameListErrorRemoving(type),
                              tr("There are no DLC installed for this title."));
         return;
     }
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index f7aa8e4179..0ab0d54b3b 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -324,9 +324,10 @@ private slots:
     void OnMouseActivity();
 
 private:
-    void RemoveBaseContent(u64 program_id, const QString& entry_type);
-    void RemoveUpdateContent(u64 program_id, const QString& entry_type);
-    void RemoveAddOnContent(u64 program_id, const QString& entry_type);
+    QString GetGameListErrorRemoving(InstalledEntryType type) const;
+    void RemoveBaseContent(u64 program_id, InstalledEntryType type);
+    void RemoveUpdateContent(u64 program_id, InstalledEntryType type);
+    void RemoveAddOnContent(u64 program_id, InstalledEntryType type);
     void RemoveTransferableShaderCache(u64 program_id, GameListRemoveTarget target);
     void RemoveAllTransferableShaderCaches(u64 program_id);
     void RemoveCustomConfiguration(u64 program_id, const std::string& game_path);