diff --git a/rpcs3/Emu/Cell/Modules/cellGame.cpp b/rpcs3/Emu/Cell/Modules/cellGame.cpp index d778134ccc..9753df7285 100644 --- a/rpcs3/Emu/Cell/Modules/cellGame.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGame.cpp @@ -1,4 +1,5 @@ #include "stdafx.h" +#include "Emu/localized_string.h" #include "Emu/System.h" #include "Emu/VFS.h" #include "Emu/IdManager.h" @@ -273,7 +274,7 @@ error_code cellHddGameSetSystemVer(vm::cptr systemVersion) error_code cellHddGameExitBroken() { cellGame.warning("cellHddGameExitBroken()"); - return open_exit_dialog("There has been an error!\n\nPlease reinstall the HDD boot game.", true); + return open_exit_dialog(get_localized_string(localized_string_id::CELL_HDD_GAME_EXIT_BROKEN), true); } error_code cellGameDataGetSizeKB(vm::ptr size) @@ -321,7 +322,7 @@ error_code cellGameDataSetSystemVer(vm::cptr systemVersion) error_code cellGameDataExitBroken() { cellGame.warning("cellGameDataExitBroken()"); - return open_exit_dialog("There has been an error!\n\nPlease remove the game data for this title.", true); + return open_exit_dialog(get_localized_string(localized_string_id::CELL_GAME_DATA_EXIT_BROKEN), true); } error_code cellGameBootCheck(vm::ptr type, vm::ptr attributes, vm::ptr size, vm::ptr dirName) @@ -1004,26 +1005,36 @@ error_code cellGameContentErrorDialog(s32 type, s32 errNeedSizeKB, vm::cptr CELL_GAME_ERRDIALOG_NOSPACE); + return open_exit_dialog(error_msg, type > CELL_GAME_ERRDIALOG_NOSPACE); } error_code cellGameThemeInstall(vm::cptr usrdirPath, vm::cptr fileName, u32 option) diff --git a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp index b98704dcb9..740977a9fa 100644 --- a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp @@ -349,75 +349,75 @@ error_code cellMsgDialogOpenErrorCode(u32 errorCode, vm::ptr dia Emu.CallAfter([=, &result]() { - osk->Create("On Screen Keyboard", message, osk->osk_text, maxLength, prohibitFlgs, allowOskPanelFlg, firstViewPanel); + osk->Create(get_localized_string(localized_string_id::CELL_OSK_DIALOG_TITLE), message, osk->osk_text, maxLength, prohibitFlgs, allowOskPanelFlg, firstViewPanel); result = true; }); diff --git a/rpcs3/Emu/Cell/Modules/cellSaveData.cpp b/rpcs3/Emu/Cell/Modules/cellSaveData.cpp index bad14a2674..d3d8560ef5 100644 --- a/rpcs3/Emu/Cell/Modules/cellSaveData.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSaveData.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "Emu/VFS.h" +#include "Emu/localized_string.h" #include "Emu/Cell/lv2/sys_fs.h" #include "Emu/Cell/lv2/sys_sync.h" #include "Emu/Cell/lv2/sys_process.h" @@ -199,13 +200,13 @@ static error_code select_and_delete(ppu_thread& ppu) const std::string info = entry.title + "\n" + entry.subtitle + "\n" + entry.details; // Reusable display message string - std::string msg = "Do you really want to delete this entry?\n\n" + info; + std::string msg = get_localized_string(localized_string_id::CELL_SAVEDATA_DELETE_CONFIRMATION, info.c_str()); // Yield before a blocking dialog is being spawned lv2_obj::sleep(ppu); // Get user confirmation by opening a blocking dialog - error_code res = open_msg_dialog(true, CELL_MSGDIALOG_TYPE_SE_TYPE_NORMAL | CELL_MSGDIALOG_TYPE_BUTTON_TYPE_YESNO, vm::make_str(msg)); + error_code res = open_msg_dialog(true, CELL_MSGDIALOG_TYPE_SE_TYPE_NORMAL | CELL_MSGDIALOG_TYPE_BUTTON_TYPE_YESNO, vm::make_str(msg)); // Reschedule after a blocking dialog returns if (ppu.check_state()) @@ -235,7 +236,7 @@ static error_code select_and_delete(ppu_thread& ppu) } // Update display message - msg = "Successfully removed entry!\n\n" + info; + msg = get_localized_string(localized_string_id::CELL_SAVEDATA_DELETE_SUCCESS, info.c_str()); cellSaveData.success("%s", msg); // Yield before blocking dialog is being spawned @@ -264,16 +265,16 @@ static error_code display_callback_result_error_message(ppu_thread& ppu, const C switch (result.result) { case CELL_SAVEDATA_CBRESULT_ERR_NOSPACE: - msg = fmt::format("Error - Insufficient free space\n\nSpace needed: %d KB", result.errNeedSizeKB); + msg = get_localized_string(localized_string_id::CELL_SAVEDATA_CB_NO_SPACE, fmt::format("%d", result.errNeedSizeKB).c_str()); break; case CELL_SAVEDATA_CBRESULT_ERR_FAILURE: - msg = "Error - Failed to save or load"; + msg = get_localized_string(localized_string_id::CELL_SAVEDATA_CB_FAILURE); break; case CELL_SAVEDATA_CBRESULT_ERR_BROKEN: - msg = "Error - Save data corrupted"; + msg = get_localized_string(localized_string_id::CELL_SAVEDATA_CB_BROKEN); break; case CELL_SAVEDATA_CBRESULT_ERR_NODATA: - msg = "Error - Save data cannot be found"; + msg = get_localized_string(localized_string_id::CELL_SAVEDATA_CB_NO_DATA); break; case CELL_SAVEDATA_CBRESULT_ERR_INVALID: if (result.invalidMsg) @@ -303,19 +304,21 @@ static error_code display_callback_result_error_message(ppu_thread& ppu, const C return CELL_SAVEDATA_ERROR_CBRESULT; } -static std::string get_confirmation_message(u32 operation) +static std::string get_confirmation_message(u32 operation, const SaveDataEntry& entry) { + const std::string info = entry.title + "\n" + entry.subtitle + "\n" + entry.details; + if (operation == SAVEDATA_OP_LIST_DELETE || operation == SAVEDATA_OP_FIXED_DELETE) { - return "Delete this entry?"; + return get_localized_string(localized_string_id::CELL_SAVEDATA_DELETE, info.c_str()); } else if (operation == SAVEDATA_OP_LIST_LOAD || operation == SAVEDATA_OP_FIXED_LOAD) { - return "Load this entry?"; + return get_localized_string(localized_string_id::CELL_SAVEDATA_LOAD, info.c_str()); } else if (operation == SAVEDATA_OP_LIST_SAVE || operation == SAVEDATA_OP_FIXED_SAVE) { - return "Overwrite this entry?"; + return get_localized_string(localized_string_id::CELL_SAVEDATA_OVERWRITE, info.c_str()); } return ""; @@ -1000,7 +1003,7 @@ static NEVER_INLINE error_code savedata_op(ppu_thread& ppu, u32 operation, u32 v // UI returns -1 for new save games if (selected == -1) { - message = "Create new Save Data?"; + message = get_localized_string(localized_string_id::CELL_SAVEDATA_CREATE_CONFIRMATION); save_entry.dirName = listSet->newData->dirName.get_ptr(); save_entry.escaped = vfs::escape(save_entry.dirName); } @@ -1008,7 +1011,7 @@ static NEVER_INLINE error_code savedata_op(ppu_thread& ppu, u32 operation, u32 v { // Get information from the selected entry SaveDataEntry entry = save_entries[selected]; - message = get_confirmation_message(operation) + "\n\n" + entry.title + "\n" + entry.subtitle + "\n" + entry.details; + message = get_confirmation_message(operation, entry); } // Yield before a blocking dialog is being spawned @@ -1128,13 +1131,13 @@ static NEVER_INLINE error_code savedata_op(ppu_thread& ppu, u32 operation, u32 v if (selected == -1) { - message = "Create new Save Data?"; + message = get_localized_string(localized_string_id::CELL_SAVEDATA_CREATE_CONFIRMATION); } else { // Get information from the selected entry SaveDataEntry entry = save_entries[selected]; - message = get_confirmation_message(operation) + "\n\n" + entry.title + "\n" + entry.subtitle + "\n" + entry.details; + message = get_confirmation_message(operation, entry); } // Yield before a blocking dialog is being spawned diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.h b/rpcs3/Emu/RSX/Overlays/overlay_controls.h index 4f0c2612bd..f883001923 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.h @@ -446,8 +446,7 @@ namespace rsx virtual void set_text(localized_string_id id) { - this->text = get_localized_u32string(id); - is_compiled = false; + set_text(get_localized_u32string(id)); } virtual void set_font(const char* font_name, u16 font_size) diff --git a/rpcs3/Emu/localized_string.h b/rpcs3/Emu/localized_string.h index 0d9fe9ff9a..3217ed8f67 100644 --- a/rpcs3/Emu/localized_string.h +++ b/rpcs3/Emu/localized_string.h @@ -28,6 +28,92 @@ enum class localized_string_id RSX_OVERLAYS_OSK_DIALOG_ENTER_PASSWORD, RSX_OVERLAYS_LIST_SELECT, RSX_OVERLAYS_LIST_CANCEL, + + CELL_GAME_ERROR_BROKEN_GAMEDATA, + CELL_GAME_ERROR_BROKEN_HDDGAME, + CELL_GAME_ERROR_BROKEN_EXIT_GAMEDATA, + CELL_GAME_ERROR_BROKEN_EXIT_HDDGAME, + CELL_GAME_ERROR_NOSPACE, + CELL_GAME_ERROR_NOSPACE_EXIT, + CELL_GAME_ERROR_DIR_NAME, + CELL_GAME_DATA_EXIT_BROKEN, + CELL_HDD_GAME_EXIT_BROKEN, + + CELL_MSG_DIALOG_ERROR_DEFAULT, + CELL_MSG_DIALOG_ERROR_80010001, + CELL_MSG_DIALOG_ERROR_80010002, + CELL_MSG_DIALOG_ERROR_80010003, + CELL_MSG_DIALOG_ERROR_80010004, + CELL_MSG_DIALOG_ERROR_80010005, + CELL_MSG_DIALOG_ERROR_80010006, + CELL_MSG_DIALOG_ERROR_80010007, + CELL_MSG_DIALOG_ERROR_80010008, + CELL_MSG_DIALOG_ERROR_80010009, + CELL_MSG_DIALOG_ERROR_8001000A, + CELL_MSG_DIALOG_ERROR_8001000B, + CELL_MSG_DIALOG_ERROR_8001000C, + CELL_MSG_DIALOG_ERROR_8001000D, + CELL_MSG_DIALOG_ERROR_8001000F, + CELL_MSG_DIALOG_ERROR_80010010, + CELL_MSG_DIALOG_ERROR_80010011, + CELL_MSG_DIALOG_ERROR_80010012, + CELL_MSG_DIALOG_ERROR_80010013, + CELL_MSG_DIALOG_ERROR_80010014, + CELL_MSG_DIALOG_ERROR_80010015, + CELL_MSG_DIALOG_ERROR_80010016, + CELL_MSG_DIALOG_ERROR_80010017, + CELL_MSG_DIALOG_ERROR_80010018, + CELL_MSG_DIALOG_ERROR_80010019, + CELL_MSG_DIALOG_ERROR_8001001A, + CELL_MSG_DIALOG_ERROR_8001001B, + CELL_MSG_DIALOG_ERROR_8001001C, + CELL_MSG_DIALOG_ERROR_8001001D, + CELL_MSG_DIALOG_ERROR_8001001E, + CELL_MSG_DIALOG_ERROR_8001001F, + CELL_MSG_DIALOG_ERROR_80010020, + CELL_MSG_DIALOG_ERROR_80010021, + CELL_MSG_DIALOG_ERROR_80010022, + CELL_MSG_DIALOG_ERROR_80010023, + CELL_MSG_DIALOG_ERROR_80010024, + CELL_MSG_DIALOG_ERROR_80010025, + CELL_MSG_DIALOG_ERROR_80010026, + CELL_MSG_DIALOG_ERROR_80010027, + CELL_MSG_DIALOG_ERROR_80010028, + CELL_MSG_DIALOG_ERROR_80010029, + CELL_MSG_DIALOG_ERROR_8001002A, + CELL_MSG_DIALOG_ERROR_8001002B, + CELL_MSG_DIALOG_ERROR_8001002C, + CELL_MSG_DIALOG_ERROR_8001002D, + CELL_MSG_DIALOG_ERROR_8001002E, + CELL_MSG_DIALOG_ERROR_8001002F, + CELL_MSG_DIALOG_ERROR_80010030, + CELL_MSG_DIALOG_ERROR_80010031, + CELL_MSG_DIALOG_ERROR_80010032, + CELL_MSG_DIALOG_ERROR_80010033, + CELL_MSG_DIALOG_ERROR_80010034, + CELL_MSG_DIALOG_ERROR_80010035, + CELL_MSG_DIALOG_ERROR_80010036, + CELL_MSG_DIALOG_ERROR_80010037, + CELL_MSG_DIALOG_ERROR_80010038, + CELL_MSG_DIALOG_ERROR_80010039, + CELL_MSG_DIALOG_ERROR_8001003A, + CELL_MSG_DIALOG_ERROR_8001003B, + CELL_MSG_DIALOG_ERROR_8001003C, + CELL_MSG_DIALOG_ERROR_8001003D, + CELL_MSG_DIALOG_ERROR_8001003E, + + CELL_OSK_DIALOG_TITLE, + + CELL_SAVEDATA_CB_BROKEN, + CELL_SAVEDATA_CB_FAILURE, + CELL_SAVEDATA_CB_NO_DATA, + CELL_SAVEDATA_CB_NO_SPACE, + CELL_SAVEDATA_CREATE_CONFIRMATION, + CELL_SAVEDATA_DELETE_CONFIRMATION, + CELL_SAVEDATA_DELETE_SUCCESS, + CELL_SAVEDATA_DELETE, + CELL_SAVEDATA_LOAD, + CELL_SAVEDATA_OVERWRITE, }; std::string get_localized_string(localized_string_id id, const char* args = ""); diff --git a/rpcs3/rpcs3qt/localized_emu.h b/rpcs3/rpcs3qt/localized_emu.h index 2dbd589601..629a0b46ca 100644 --- a/rpcs3/rpcs3qt/localized_emu.h +++ b/rpcs3/rpcs3qt/localized_emu.h @@ -34,10 +34,10 @@ private: { switch (id) { - case localized_string_id::RSX_OVERLAYS_TROPHY_BRONZE: return tr("You have earned the bronze trophy\n%0").arg(std::forward(args)...); - case localized_string_id::RSX_OVERLAYS_TROPHY_SILVER: return tr("You have earned the silver trophy\n%0").arg(std::forward(args)...); - case localized_string_id::RSX_OVERLAYS_TROPHY_GOLD: return tr("You have earned the gold trophy\n%0").arg(std::forward(args)...); - case localized_string_id::RSX_OVERLAYS_TROPHY_PLATINUM: return tr("You have earned the platinum trophy\n%0").arg(std::forward(args)...); + case localized_string_id::RSX_OVERLAYS_TROPHY_BRONZE: return tr("You have earned the bronze trophy\n%0", "Trophy text").arg(std::forward(args)...); + case localized_string_id::RSX_OVERLAYS_TROPHY_SILVER: return tr("You have earned the silver trophy\n%0", "Trophy text").arg(std::forward(args)...); + case localized_string_id::RSX_OVERLAYS_TROPHY_GOLD: return tr("You have earned the gold trophy\n%0", "Trophy text").arg(std::forward(args)...); + case localized_string_id::RSX_OVERLAYS_TROPHY_PLATINUM: return tr("You have earned the platinum trophy\n%0", "Trophy text").arg(std::forward(args)...); case localized_string_id::RSX_OVERLAYS_COMPILING_SHADERS: return tr("Compiling shaders"); case localized_string_id::RSX_OVERLAYS_MSG_DIALOG_YES: return tr("Yes"); case localized_string_id::RSX_OVERLAYS_MSG_DIALOG_NO: return tr("No"); @@ -56,6 +56,88 @@ private: case localized_string_id::RSX_OVERLAYS_OSK_DIALOG_ENTER_PASSWORD: return tr("[Enter Password]"); case localized_string_id::RSX_OVERLAYS_LIST_SELECT: return tr("Select"); case localized_string_id::RSX_OVERLAYS_LIST_CANCEL: return tr("Cancel"); + case localized_string_id::CELL_GAME_ERROR_BROKEN_GAMEDATA: return tr("ERROR: Game data is corrupted. The application will continue."); + case localized_string_id::CELL_GAME_ERROR_BROKEN_HDDGAME: return tr("ERROR: HDD boot game is corrupted. The application will continue."); + case localized_string_id::CELL_GAME_ERROR_BROKEN_EXIT_GAMEDATA: return tr("ERROR: Game data is corrupted. The application will be terminated."); + case localized_string_id::CELL_GAME_ERROR_BROKEN_EXIT_HDDGAME: return tr("ERROR: HDD boot game is corrupted. The application will be terminated."); + case localized_string_id::CELL_GAME_ERROR_NOSPACE: return tr("ERROR: Not enough available space. The application will continue.\nSpace needed: %0 KB").arg(std::forward(args)...); + case localized_string_id::CELL_GAME_ERROR_NOSPACE_EXIT: return tr("ERROR: Not enough available space. The application will be terminated.\nSpace needed: %0 KB").arg(std::forward(args)...); + case localized_string_id::CELL_GAME_ERROR_DIR_NAME: return tr("Directory name: %0").arg(std::forward(args)...); + case localized_string_id::CELL_GAME_DATA_EXIT_BROKEN: return tr("There has been an error!\n\nPlease remove the game data for this title."); + case localized_string_id::CELL_HDD_GAME_EXIT_BROKEN: return tr("There has been an error!\n\nPlease reinstall the HDD boot game."); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010001: return tr("The resource is temporarily unavailable.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010002: return tr("Invalid argument or flag.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010003: return tr("The feature is not yet implemented.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010004: return tr("Memory allocation failed.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010005: return tr("The resource with the specified identifier does not exist.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010006: return tr("The file does not exist.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010007: return tr("The file is in unrecognized format / The file is not a valid ELF file.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010008: return tr("Resource deadlock is avoided.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010009: return tr("Operation not permitted.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001000A: return tr("The device or resource is busy.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001000B: return tr("The operation is timed out.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001000C: return tr("The operation is aborted.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001000D: return tr("Invalid memory access.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001000F: return tr("State of the target thread is invalid.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010010: return tr("Alignment is invalid.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010011: return tr("Shortage of the kernel resources.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010012: return tr("The file is a directory.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010013: return tr("Operation cancelled.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010014: return tr("Entry already exists.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010015: return tr("Port is already connected.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010016: return tr("Port is not connected.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010017: return tr("Failure in authorizing SELF. Program authentication fail.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010018: return tr("The file is not MSELF.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010019: return tr("System version error.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001001A: return tr("Fatal system error occurred while authorizing SELF. SELF auth failure.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001001B: return tr("Math domain violation.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001001C: return tr("Math range violation.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001001D: return tr("Illegal multi-byte sequence in input.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001001E: return tr("File position error.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001001F: return tr("Syscall was interrupted.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010020: return tr("File too large.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010021: return tr("Too many links.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010022: return tr("File table overflow.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010023: return tr("No space left on device.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010024: return tr("Not a TTY.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010025: return tr("Broken pipe.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010026: return tr("Read-only filesystem.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010027: return tr("Illegal seek.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010028: return tr("Arg list too long.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010029: return tr("Access violation.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001002A: return tr("Invalid file descriptor.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001002B: return tr("Filesystem mounting failed.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001002C: return tr("Too many files open.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001002D: return tr("No device.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001002E: return tr("Not a directory.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001002F: return tr("No such device or IO.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010030: return tr("Cross-device link error.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010031: return tr("Bad Message.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010032: return tr("In progress.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010033: return tr("Message size error.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010034: return tr("Name too long.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010035: return tr("No lock.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010036: return tr("Not empty.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010037: return tr("Not supported.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010038: return tr("File-system specific error.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_80010039: return tr("Overflow occured.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001003A: return tr("Filesystem not mounted.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001003B: return tr("Not SData.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001003C: return tr("Incorrect version in sys_load_param.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001003D: return tr("Pointer is null.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_8001003E: return tr("Pointer is null.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_MSG_DIALOG_ERROR_DEFAULT: return tr("An error has occurred.\n(%0)", "Error code").arg(std::forward(args)...); + case localized_string_id::CELL_OSK_DIALOG_TITLE: return tr("On Screen Keyboard"); + case localized_string_id::CELL_SAVEDATA_CB_BROKEN: return tr("Error - Save data corrupted"); + case localized_string_id::CELL_SAVEDATA_CB_FAILURE: return tr("Error - Failed to save or load"); + case localized_string_id::CELL_SAVEDATA_CB_NO_DATA: return tr("Error - Save data cannot be found"); + case localized_string_id::CELL_SAVEDATA_CB_NO_SPACE: return tr("Error - Insufficient free space\n\nSpace needed: %0 KB").arg(std::forward(args)...); + case localized_string_id::CELL_SAVEDATA_CREATE_CONFIRMATION: return tr("Create new Save Data?"); + case localized_string_id::CELL_SAVEDATA_DELETE_CONFIRMATION: return tr("Do you really want to delete this entry?\n\n%0", "Savedata entry info").arg(std::forward(args)...); + case localized_string_id::CELL_SAVEDATA_DELETE_SUCCESS: return tr("Successfully removed entry!\n\n%0", "Savedata entry info").arg(std::forward(args)...); + case localized_string_id::CELL_SAVEDATA_DELETE: return tr("Delete this entry?\n\n%0", "Savedata entry info").arg(std::forward(args)...); + case localized_string_id::CELL_SAVEDATA_LOAD: return tr("Load this entry?\n\n%0", "Savedata entry info").arg(std::forward(args)...); + case localized_string_id::CELL_SAVEDATA_OVERWRITE: return tr("Overwrite this entry?\n\n%0", "Savedata entry info").arg(std::forward(args)...); case localized_string_id::INVALID: return tr("Invalid"); default: return tr("Unknown");