From a60471e8882271755a3c489845a693b5a13cdcd2 Mon Sep 17 00:00:00 2001 From: damien zhao Date: Sat, 4 Sep 2021 23:15:34 +0800 Subject: [PATCH] full ui Lang in lang txt --- romfs/lang/en-US.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++ romfs/lang/zh-CN.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++ romfs/lang/zh-TW.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/cfg.cpp | 11 ++++++++--- src/data.cpp | 22 +++++++++++----------- src/file.cpp | 4 ++-- src/fsthrd.cpp | 4 +++- src/ui.cpp | 8 ++++---- src/ui/fm.cpp | 2 +- src/ui/sett.cpp | 2 +- src/ui/ttl.cpp | 8 ++++---- src/ui/uistr.cpp | 2 +- src/ui/usr.cpp | 16 ++++++++-------- src/util.cpp | 28 ++++++++++++++-------------- 14 files changed, 189 insertions(+), 50 deletions(-) diff --git a/romfs/lang/en-US.txt b/romfs/lang/en-US.txt index 5467ef9..e175c2a 100644 --- a/romfs/lang/en-US.txt +++ b/romfs/lang/en-US.txt @@ -7,6 +7,50 @@ #It can also export already made translations with new strings if added, cutting down work for everyone. #If there are issues with spacing, line breaking, untranslatable English text, etc let me know in a git issue or your pull request. +usersSaveType = 0, "Device" +usersSaveType = 1, "BCAT" +usersSaveType = 2, "Cache" +usersSaveType = 3, "System" +usersSaveType = 4, "System BCAT" +usersSaveType = 5, "SysTemp Storagetem" +settingsMainMenu = 0, "Settings" +extrasMainMenu = 0, "Extras" +translationMainPage = 0, "Translation: " +loadingStartPage = 0, "Loading..." + +saveDataType = 0, "System Save\n" +saveDataType = 1, "Save Data\n" +saveDataType = 2, "BCAT\n" +saveDataType = 3, "Device Save\n" +saveDataType = 4, "Temp Storage\n" +saveDataType = 5, "Cache Storage\n" +saveDataType = 6, "System BCAT\n" +saveDataType = 7, "Save Index: " + +infoStatus = 0, "TID: " +infoStatus = 1, "SID: " +infoStatus = 2, "Play Time: " +infoStatus = 3, "Total Launches: " +infoStatus = 4, "User Count: " +infoStatus = 5, "Current User: " +infoStatus = 6, "Current Title: " +infoStatus = 7, "Safe Title: " +infoStatus = 8, "Sort Type: " +infoStatus = 9, "Saving the file master..." +infoStatus = 10, "Error committing file to device -> 0x%X\n" +infoStatus = 11, "Deleting..." +infoStatus = 12, "SaveCreate Failed -> " +infoStatus = 14, "Trash emptied." + +newSafeTitle = 0, "Input New Output Folder" +expandSize = 0, "Enter New Size in MB" +expandSizeFailed = 0, "Extend Failed: %uMB to %uMB -> %X\n" +newFolderPopFldMenu = 0, "New Folder" +newFolderCopyMenu = 0, "New" + +changeToPopStatus = 0, "changed to" +tmpEmptyPopStatus = 0, "contains illegal or non-ASCII characters." + #If author is not "NULL", your name will be displayed in the UI author = 0, "NULL" confirmBlacklist = 0, "Are you sure you want to add #%s# to your blacklist?" diff --git a/romfs/lang/zh-CN.txt b/romfs/lang/zh-CN.txt index 17bb2c8..17c021c 100644 --- a/romfs/lang/zh-CN.txt +++ b/romfs/lang/zh-CN.txt @@ -7,6 +7,50 @@ #如果添加了新字符串,它还可以导出已经生成的翻译,从而减少每个人的工作量。 #如果存在空格、换行或无法翻译的英文文本等问题,请在git问题或您的pull请求中告诉我。 +usersSaveType = 0, "设备存档" +usersSaveType = 1, "BCAT存档" +usersSaveType = 2, "缓存存档" +usersSaveType = 3, "系统存档" +usersSaveType = 4, "系统BCAT存档" +usersSaveType = 5, "临时存档" +settingsMainMenu = 0, "系统设置" +extrasMainMenu = 0, "附加设置" +translationMainPage = 0, "翻译:" +loadingStartPage = 0, "加载中..." + +saveDataType = 0, "系统存档\n" +saveDataType = 1, "用户存档\n" +saveDataType = 2, "BCAT存档\n" +saveDataType = 3, "设备存档\n" +saveDataType = 4, "临时存档\n" +saveDataType = 5, "缓存存档\n" +saveDataType = 6, "系统BCAT存档\n" +saveDataType = 7, "存档索引号:" + +infoStatus = 0, "TID: " +infoStatus = 1, "SID: " +infoStatus = 2, "游戏时间:" +infoStatus = 3, "总启动次数:" +infoStatus = 4, "用户数目:" +infoStatus = 5, "当前用户:" +infoStatus = 6, "当前Title:" +infoStatus = 7, "安全Title:" +infoStatus = 8, "排序类型:" +infoStatus = 9, "正在文件管理器里保存..." +infoStatus = 10, "提交文件到设备错误 -> 0x%X\n" +infoStatus = 11, "正在删除" +infoStatus = 12, "存档创建失败 -> " +infoStatus = 14, "回收站已清空。" + +newSafeTitle = 0, "输入新的导出目录名称" +expandSize = 0, "输入新的大小(单位MB)" +expandSizeFailed = 0, "大小扩展失败:%uMB到%uMB -> %X\n" +newFolderPopFldMenu = 0, "新建目录" +newFolderCopyMenu = 0, "新建" + +changeToPopStatus = 0, "更改到" +tmpEmptyPopStatus = 0, "包含非法或者非ASCII字符。" + #如果author不是“NULL”,您的姓名将显示在UI中 author = 0, "zdm65477730" confirmBlacklist = 0, "您确定要将#%s#添加到您的黑名单中吗?" diff --git a/romfs/lang/zh-TW.txt b/romfs/lang/zh-TW.txt index 7435506..6f6e0bb 100644 --- a/romfs/lang/zh-TW.txt +++ b/romfs/lang/zh-TW.txt @@ -7,6 +7,50 @@ #It can also export already made translations with new strings if added, cutting down work for everyone. #If there are issues with spacing, line breaking, untranslatable English text, etc let me know in a git issue or your pull request. +usersSaveType = 0, "設備存檔" +usersSaveType = 1, "BCAT存檔" +usersSaveType = 2, "緩存存檔" +usersSaveType = 3, "系統存檔" +usersSaveType = 4, "系統BCAT存檔" +usersSaveType = 5, "臨時存檔" +settingsMainMenu = 0, "系統設置" +extrasMainMenu = 0, "附加設定" +translationMainPage = 0, "翻譯:" +loadingStartPage = 0, "加載中…" + +saveDataType = 0, "系統存檔\n" +saveDataType = 1, "用戶存檔\n" +saveDataType = 2, "BCAT存檔\n" +saveDataType = 3, "設備存檔\n" +saveDataType = 4, "臨時存檔\n" +saveDataType = 5, "緩存存檔\n" +saveDataType = 6, "系統BCAT存檔\n" +saveDataType = 7, "存檔索引號:" + +infoStatus = 0, "TID:" +infoStatus = 1, "SID:" +infoStatus = 2, "遊戲時間:" +infoStatus = 3, "總啟動次數:" +infoStatus = 4, "用戶數目:" +infoStatus = 5, "當前用戶:" +infoStatus = 6, "當前Title:" +infoStatus = 7, "安全Title:" +infoStatus = 8, "排序類型:" +infoStatus = 9, "正在檔案管理器裏保存…" +infoStatus = 10, "提交檔案到設備錯誤-> 0x%X\n" +infoStatus = 11, "正在删除" +infoStatus = 12, "存檔創建失敗->" +infoStatus = 14, "回收站已清空。" + +newSafeTitle = 0, "輸入新的匯出目錄名稱" +expandSize = 0, "輸入新的大小(組織MB)" +expandSizeFailed = 0, "大小擴展失敗:%uMB到%uMB -> %X\n" +newFolderPopFldMenu = 0, "新建目錄" +newFolderCopyMenu = 0, "新建" + +changeToPopStatus = 0, "更改到" +tmpEmptyPopStatus = 0, "包含非法或者非ASCII字元。" + #If author is not "NULL", your name will be displayed in the UI author = 0, "Leo" confirmBlacklist = 0, "是否確定要將#%s#加入黑名單?" diff --git a/src/cfg.cpp b/src/cfg.cpp index f02496a..bc35221 100644 --- a/src/cfg.cpp +++ b/src/cfg.cpp @@ -104,6 +104,7 @@ void cfg::pathDefAdd(const uint64_t& tid, const std::string& newPath) { std::string oldSafe = data::titles[tid].safeTitle; std::string tmp = util::safeString(newPath); + std::string popmsg = "'%s' "; if(!tmp.empty()) { pathDefs[tid] = tmp; @@ -113,10 +114,14 @@ void cfg::pathDefAdd(const uint64_t& tid, const std::string& newPath) std::string newOutput = fs::getWorkDir() + tmp; rename(oldOutput.c_str(), newOutput.c_str()); - ui::showPopMessage(POP_FRAME_DEFAULT, "'%s' changed to '%s'", oldSafe.c_str(), tmp.c_str()); + popmsg += ui::getUICString("changeToPopStatus", 0); + popmsg += " '%s'"; + ui::showPopMessage(POP_FRAME_DEFAULT, popmsg.c_str(), oldSafe.c_str(), tmp.c_str()); + } + else { + popmsg += ui::getUICString("tmpEmptyPopStatus", 0); + ui::showPopMessage(POP_FRAME_DEFAULT, popmsg.c_str(), newPath.c_str()); } - else - ui::showPopMessage(POP_FRAME_DEFAULT, "'%s' contains illegal or non-ASCII characters.", newPath.c_str()); } std::string cfg::getPathDefinition(const uint64_t& tid) diff --git a/src/data.cpp b/src/data.cpp index 549a763..d34464a 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -200,10 +200,10 @@ bool data::loadUsersTitles(bool clearUsers) loadUserAccounts(); sysBCATPushed = false; tempPushed = false; - users.emplace_back(util::u128ToAccountUID(3), "Device"); - users.emplace_back(util::u128ToAccountUID(2), "BCAT"); - users.emplace_back(util::u128ToAccountUID(5), "Cache"); - users.emplace_back(util::u128ToAccountUID(0), "System"); + users.emplace_back(util::u128ToAccountUID(3), ui::getUICString("usersSaveType", 0)); + users.emplace_back(util::u128ToAccountUID(2), ui::getUICString("usersSaveType", 1)); + users.emplace_back(util::u128ToAccountUID(5), ui::getUICString("usersSaveType", 2)); + users.emplace_back(util::u128ToAccountUID(0), ui::getUICString("usersSaveType", 3)); } for(unsigned i = 0; i < 7; i++) @@ -242,7 +242,7 @@ bool data::loadUsersTitles(bool clearUsers) { ++systemUserCount; sysBCATPushed = true; - users.emplace_back(util::u128ToAccountUID(4), "Sys. BCAT"); + users.emplace_back(util::u128ToAccountUID(4), ui::getUICString("usersSaveType", 4)); } break; @@ -256,7 +256,7 @@ bool data::loadUsersTitles(bool clearUsers) { ++systemUserCount; tempPushed = true; - users.emplace_back(util::u128ToAccountUID(6), "Temp"); + users.emplace_back(util::u128ToAccountUID(6), ui::getUICString("usersSaveType", 5)); } break; } @@ -456,12 +456,12 @@ void data::dispStats() data::userTitleInfo *d = data::getCurrentUserTitleInfo(); //Easiest/laziest way to do this - std::string stats = "User Count: " + std::to_string(users.size()) + "\n"; + std::string stats = ui::getUICString("infoStatus", 4) + std::to_string(users.size()) + "\n"; for(data::user& u : data::users) stats += u.getUsername() + ": " + std::to_string(u.titleInfo.size()) + "\n"; - stats += "Current User: " + cu->getUsername() + "\n"; - stats += "Current Title: " + data::getTitleNameByTID(d->tid) + "\n"; - stats += "Safe Title: " + data::getTitleSafeNameByTID(d->tid) + "\n"; - stats += "Sort Type: " + std::to_string(cfg::sortType) + "\n"; + stats += ui::getUICString("infoStatus", 5) + cu->getUsername() + "\n"; + stats += ui::getUICString("infoStatus", 6) + data::getTitleNameByTID(d->tid) + "\n"; + stats += ui::getUICString("infoStatus", 7) + data::getTitleSafeNameByTID(d->tid) + "\n"; + stats += ui::getUICString("infoStatus", 8) + std::to_string(cfg::sortType) + "\n"; gfx::drawTextf(NULL, 16, 2, 2, &green, stats.c_str()); } diff --git a/src/file.cpp b/src/file.cpp index 957b4c6..52b3b4f 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -90,7 +90,7 @@ bool fs::commitToDevice(const std::string& dev) Result res = fsdevCommitDevice(dev.c_str()); if(R_FAILED(res)) { - fs::logWrite("Error committing file to device -> 0x%X\n", res); + fs::logWrite(ui::getUICString("infoStatus", 10), res); ui::showPopMessage(POP_FRAME_DEFAULT, ui::getUICString("popErrorCommittingFile", 0)); ret = false; } @@ -692,7 +692,7 @@ void fs::deleteBackup(void *a) unsigned ind = m->getSelected() - 1; std::string itemName = d->getItem(ind); - t->status->setStatus("Deleting..."); + t->status->setStatus(ui::getUICString("infoStatus", 11)); if(cfg::config["trashBin"]) { data::userTitleInfo *getTID = data::getCurrentUserTitleInfo(); diff --git a/src/fsthrd.cpp b/src/fsthrd.cpp index 2079c29..6f4dd04 100644 --- a/src/fsthrd.cpp +++ b/src/fsthrd.cpp @@ -126,7 +126,9 @@ void fs::createSaveData_t(void *a) else { ui::showPopMessage(POP_FRAME_DEFAULT, ui::getUICString("saveDataCreationFailed", 0)); - fs::logWrite("SaveCreate Failed -> %X\n", res); + std::string logstr(ui::getUICString("infoStatus", 12)); + logstr += "%X\n"; + fs::logWrite(logstr.c_str(), res); } delete s; t->finished = true; diff --git a/src/ui.cpp b/src/ui.cpp index 1088d37..f3bb0aa 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -159,8 +159,8 @@ void ui::init() threadMngr = new ui::threadProcMngr; //Need these from user/main menu - settPos = ui::usrMenu->getOptPos("Settings"); - extPos = ui::usrMenu->getOptPos("Extras"); + settPos = ui::usrMenu->getOptPos(ui::getUICString("settingsMainMenu", 0)); + extPos = ui::usrMenu->getOptPos(ui::getUICString("extrasMainMenu", 0)); } void ui::exit() @@ -207,7 +207,7 @@ void ui::showLoadScreen() SDL_Texture *icon = gfx::loadImageFile("romfs:/icon.png"); gfx::clearTarget(NULL, &ui::clearClr); gfx::texDraw(NULL, icon, 512, 232); - gfx::drawTextf(NULL, 16, 1100, 673, &ui::txtCont, "Loading..."); + gfx::drawTextf(NULL, 16, 1100, 673, &ui::txtCont, ui::getUICString("loadingStartPage", 0)); gfx::present(); SDL_DestroyTexture(icon); } @@ -225,7 +225,7 @@ void ui::drawUI() //Version / translation author gfx::drawTextf(NULL, 12, 8, 700, &ui::txtCont, "v. %02d.%02d.%04d", BLD_MON, BLD_DAY, BLD_YEAR); if(ui::getUIString("author", 0) != "NULL") - gfx::drawTextf(NULL, 12, 8, 682, &ui::txtCont, "Translation: %s", ui::getUICString("author", 0)); + gfx::drawTextf(NULL, 12, 8, 682, &ui::txtCont, "%s%s", ui::getUICString("translationMainPage", 0), ui::getUICString("author", 0)); //This only draws the help text now and only does when user select is open ui::usrDraw(NULL); diff --git a/src/ui/fm.cpp b/src/ui/fm.cpp index 19770e6..e2f04aa 100644 --- a/src/ui/fm.cpp +++ b/src/ui/fm.cpp @@ -352,7 +352,7 @@ static void _copyMenuRename(void *a) static void _copyMenuMkDir(void *a) { menuFuncArgs *ma = (menuFuncArgs *)a; - std::string getNewFolder = util::getStringInput(SwkbdType_QWERTY, "New Folder", ui::getUIString("swkbdMkDir", 0), 64, 0, NULL); + std::string getNewFolder = util::getStringInput(SwkbdType_QWERTY, ui::getUIString("newFolderCopyMenu", 0), ui::getUIString("swkbdMkDir", 0), 64, 0, NULL); if(!getNewFolder.empty()) { std::string createPath = *ma->path + getNewFolder; diff --git a/src/ui/sett.cpp b/src/ui/sett.cpp index 89d24b3..bed3ced 100644 --- a/src/ui/sett.cpp +++ b/src/ui/sett.cpp @@ -123,7 +123,7 @@ static void toggleOpt(void *a) case 0: fs::delDir(fs::getWorkDir() + "_TRASH_/"); mkdir(std::string(fs::getWorkDir() + "_TRASH_").c_str(), 777); - ui::showPopMessage(POP_FRAME_DEFAULT, "Trash emptied."); + ui::showPopMessage(POP_FRAME_DEFAULT, ui::getUICString("infoStatus", 14)); break; case 1: diff --git a/src/ui/ttl.cpp b/src/ui/ttl.cpp index 94fe138..3ca85f8 100644 --- a/src/ui/ttl.cpp +++ b/src/ui/ttl.cpp @@ -77,7 +77,7 @@ void ui::populateFldMenu() *backargs = {fldMenu, fldList}; - fldMenu->addOpt(NULL, "New"); + fldMenu->addOpt(NULL, ui::getUICString("newFolderPopFldMenu", 0)); fldMenu->optAddButtonEvent(0, HidNpadButton_A, fs::createNewBackup, backargs); for(unsigned i = 0; i < fldList->getCount(); i++) @@ -170,7 +170,7 @@ static void ttlOptsDefinePath(void *a) { uint64_t tid = data::getCurrentUserTitleInfo()->tid; std::string safeTitle = data::getTitleInfoByTID(tid)->safeTitle; - std::string newSafeTitle = util::getStringInput(SwkbdType_QWERTY, safeTitle, "Input New Output Folder", 0x200, 0, NULL); + std::string newSafeTitle = util::getStringInput(SwkbdType_QWERTY, safeTitle, ui::getUICString("newSafeTitle", 0), 0x200, 0, NULL); if(!newSafeTitle.empty()) cfg::pathDefAdd(tid, newSafeTitle); } @@ -286,7 +286,7 @@ static void ttlOptsExtendSaveData_t(void *a) threadInfo *t = (threadInfo *)a; data::userTitleInfo *d = data::getCurrentUserTitleInfo(); - std::string expSizeStr = util::getStringInput(SwkbdType_NumPad, "", "Enter New Size in MB", 4, 0, NULL); + std::string expSizeStr = util::getStringInput(SwkbdType_NumPad, "", ui::getUICString("expandSize", 0), 4, 0, NULL); if(!expSizeStr.empty()) { int64_t journ = 0, expSize; @@ -337,7 +337,7 @@ static void ttlOptsExtendSaveData_t(void *a) fsFsGetTotalSpace(fsdevGetDeviceFileSystem("sv"), "/", &totalSize); fs::unmountSave(); - fs::logWrite("Extend Failed: %uMB to %uMB -> %X\n", totalSize / 1024 / 1024, expSize / 1024 / 1024, res); + fs::logWrite(ui::getUICString("expandSizeFailed", 0), totalSize / 1024 / 1024, expSize / 1024 / 1024, res); ui::showPopMessage(POP_FRAME_DEFAULT, ui::getUICString("saveDataExtendFailed", 0)); } else diff --git a/src/ui/uistr.cpp b/src/ui/uistr.cpp index 7c00cd9..718c000 100644 --- a/src/ui/uistr.cpp +++ b/src/ui/uistr.cpp @@ -220,7 +220,7 @@ void ui::loadTrans() void ui::saveTranslationFile(void *a) { threadInfo *t = (threadInfo *)a; - t->status->setStatus("Saving the file master..."); + t->status->setStatus(ui::getUICString("infoStatus", 9)); std::string out = fs::getWorkDir() + "en-US.txt"; FILE *enUS = fopen(out.c_str(), "w"); diff --git a/src/ui/usr.cpp b/src/ui/usr.cpp index e6a8bc9..f6096c5 100644 --- a/src/ui/usr.cpp +++ b/src/ui/usr.cpp @@ -12,7 +12,7 @@ #include "usr.h" #include "ttl.h" -static const char *settText = "Settings", *extText = "Extras"; +static const char *settText = ui::getUICString("settingsMainMenu", 0), *extText = ui::getUICString("extrasMainMenu", 0); //Main menu/Users + options, folder ui::menu *ui::usrMenu; @@ -119,9 +119,9 @@ static void saveCreateCallback(void *a) static void usrOptSaveCreate(void *a) { ui::menu *m = (ui::menu *)a; - int devPos = m->getOptPos("Device"); - int bcatPos = m->getOptPos("BCAT"); - int cachePos = m->getOptPos("Cache"); + int devPos = m->getOptPos(ui::getUICString("usersSaveType", 0)); + int bcatPos = m->getOptPos(ui::getUICString("usersSaveType", 1)); + int cachePos = m->getOptPos(ui::getUICString("usersSaveType", 2)); ui::updateInput(); int sel = m->getSelected(); @@ -164,7 +164,7 @@ static void usrOptDeleteAllUserSaves_t(void *a) threadInfo *t = (threadInfo *)a; data::user *u = data::getCurrentUser(); int curUserIndex = data::getCurrentUserIndex(); - int devUser = ui::usrMenu->getOptPos("Device"); + int devUser = ui::usrMenu->getOptPos(ui::getUICString("usersSaveType", 0)); for(data::userTitleInfo& tinf : u->titleInfo) { @@ -261,8 +261,8 @@ static void usrOptCreateAllSaves_t(void *a) { threadInfo *t = (threadInfo *)a; data::user *u = data::getCurrentUser(); - int devPos = ui::usrMenu->getOptPos("Device"); - int bcatPos = ui::usrMenu->getOptPos("BCAT"); + int devPos = ui::usrMenu->getOptPos(ui::getUICString("usersSaveType", 0)); + int bcatPos = ui::usrMenu->getOptPos(ui::getUICString("usersSaveType", 1)); int sel = ui::usrMenu->getSelected(); if(sel < devPos) { @@ -464,7 +464,7 @@ void ui::usrUpdate() { case HidNpadButton_X: { - int cachePos = usrMenu->getOptPos("Cache"); + int cachePos = usrMenu->getOptPos(ui::getUIString("usersSaveType", 2)); if(usrMenu->getSelected() <= cachePos) { data::user *u = data::getCurrentUser(); diff --git a/src/util.cpp b/src/util.cpp index 439cf40..deca03b 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -12,7 +12,7 @@ #include "curlfuncs.h" #include "type.h" -static const char verboten[] = { ',', '/', '\\', '<', '>', ':', '"', '|', '?', '*', '', '', ''}; +static const uint32_t verboten[] = { ',', '/', '\\', '<', '>', ':', '"', '|', '?', '*', '�', '�', '�'}; static bool isVerboten(const uint32_t& t) { @@ -70,7 +70,7 @@ uint32_t replaceChar(uint32_t c) { switch(c) { - case '': + case '�': return 'e'; break; } @@ -202,49 +202,49 @@ std::string util::getInfoString(data::user& u, const uint64_t& tid) std::string ret = tinfo->title + "\n"; - ret += "TID: " + util::getIDStr(tid) + "\n"; - ret += "SID: " + util::getIDStr(userTinfo->saveInfo.save_data_id) + "\n"; + ret += ui::getUICString("infoStatus", 0) + util::getIDStr(tid) + "\n"; + ret += ui::getUICString("infoStatus", 1) + util::getIDStr(userTinfo->saveInfo.save_data_id) + "\n"; uint32_t hours, mins; hours = userTinfo->playStats.playtimeMinutes / 60; mins = userTinfo->playStats.playtimeMinutes - (hours * 60); - ret += "Play Time: " + getTimeString(hours, mins) + "\n"; - ret += "Total Launches: " + std::to_string(userTinfo->playStats.totalLaunches) + "\n"; + ret += ui::getUICString("infoStatus", 2) + getTimeString(hours, mins) + "\n"; + ret += ui::getUICString("infoStatus", 3) + std::to_string(userTinfo->playStats.totalLaunches) + "\n"; switch(userTinfo->saveInfo.save_data_type) { case FsSaveDataType_System: - ret += "System Save\n"; + ret += ui::getUICString("saveDataType", 0); break; case FsSaveDataType_Account: - ret += "Save Data\n"; + ret += ui::getUICString("saveDataType", 1); break; case FsSaveDataType_Bcat: - ret += "BCAT\n"; + ret += ui::getUICString("saveDataType", 2); break; case FsSaveDataType_Device: - ret += "Device Save\n"; + ret += ui::getUICString("saveDataType", 3); break; case FsSaveDataType_Temporary: - ret += "Temp Storage\n"; + ret += ui::getUICString("saveDataType", 4); break; case FsSaveDataType_Cache: { data::userTitleInfo *d = data::getCurrentUserTitleInfo(); - ret += "Cache Storage\n"; - ret += "Save Index: " + std::to_string(d->saveInfo.save_data_index) + "\n"; + ret += ui::getUICString("saveDataType", 5); + ret += ui::getUICString("saveDataType", 7) + std::to_string(d->saveInfo.save_data_index) + "\n"; } break; case FsSaveDataType_SystemBcat: - ret += "System BCAT\n"; + ret += ui::getUICString("saveDataType", 6); break; }