From 6b358813461d35d90c4267ea89981588bef4cbdc Mon Sep 17 00:00:00 2001 From: mrdude2478 Date: Sat, 7 Oct 2023 21:49:09 +0100 Subject: [PATCH] add Chinese language --- romfs/images/flags/cn.png | Bin 7571 -> 7025 bytes romfs/lang/cn.json | 17 ++++++++--------- source/main.cpp | 6 ++++-- source/ui/optionsPage.cpp | 25 ++++++++++++++++++++++--- source/util/lang.cpp | 7 +++++-- 5 files changed, 39 insertions(+), 16 deletions(-) diff --git a/romfs/images/flags/cn.png b/romfs/images/flags/cn.png index 29f8e961da6d9614d3e1651496b93484b0413c63..68c808cfa2c932c6d6cf5d7026e837112b45b161 100644 GIT binary patch literal 7025 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 Qe*Y1=I*_EZuAZuh~4WVeIEYX52`9)D05lW)P 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 R=+4g)u(5KmtTFe!@IMDnlTiQw diff --git a/romfs/lang/cn.json b/romfs/lang/cn.json index c62a031..28e5e6d 100644 --- a/romfs/lang/cn.json +++ b/romfs/lang/cn.json @@ -1,5 +1,5 @@ { - "main":{ + "main": { "menu": { "sd": "通过 SD 卡安装", "net": "通过局域网或网络安装", @@ -38,7 +38,7 @@ "net": { "help": { "title": "帮助", - "desc": "可以使用下列工具远程安装文件,例如在 Tinfoil 模式下使用 NS-USBloader。\n如想向 Switch 发送文件,打开电脑或者移动设备上任一工具软件,\n输入屏幕上显示的 Switch IP 地址,选择文件,然后上传到您的主机即可!\n如果您使用的工具软件不支持选择特定文件类型,请尝试更改文件扩展名。\nTinWoo Installer 在通过网络安装不限制文件扩展名!\n\n如果以上无效,请复制文件到 SD 卡并在主菜单中选择\"通过 SD 卡安装\"!" + "desc": "可以使用下列工具远程安装文件,例如在 Tinfoil 模式下使用 NS-USBloader。\n如想向 Switch 发送文件,打开电脑或者移动设备上任一工具软件,\n输入屏幕上显示的 Switch IP 地址,选择文件,然后上传到您的主机即可!\n如果您使用的工具软件不支持选择特定文件类型,请尝试更改文件扩展名。\nTinWoo Installer 在通过网络安装不限制文件扩展名!\n\n如果以上无效,请复制文件到 SD 卡并在主菜单中选择\n通过 SD 卡安装!", "blank": "服务器地址为空。请输入正确的地址。\n\n例如:http://192.168.0.51" }, "src": { @@ -50,7 +50,7 @@ "hint": "输入文件链接地址 (URL)", "invalid": "链接地址 (URL) 无效!", "nolinks": "未发现 XCI、XCZ、NSP、NSZ 链接!\n链接是否正确?", - "source_string": " 通过网络链接 (URL)" + "source_string": " 通过网络链接 (URL)", "listwait": "从网络缓冲列表需要一定时间。\n列表数目被限制为 ", "listwait2": " 条。\n按下 OK 键以加载列表。" }, @@ -98,7 +98,7 @@ "usb": { "help": { "title": "帮助", - "desc": "可以使用下列工具通过 USB 安装文件,例如在 Tinfoil 模式下使用 NS-USBloader。\n如想向 Switch 发送文件,打开电脑或移动设备上任一工具软件,\n选择文件,然后上传到您的主机即可!\n\n不幸的是,USB 安装在一些平台上可能需要特别的设置,这可能会引发更多的问题。\n如果以上无效,试试通过局域网或网络安装,\n或者复制文件到 SD 卡并在主菜单中选择\"通过 SD 卡安装\"!" + "desc": "可以使用下列工具通过 USB 安装文件,例如在 Tinfoil 模式下使用 NS-USBloader。\n如想向 Switch 发送文件,打开电脑或移动设备上任一工具软件,\n选择文件,然后上传到您的主机即可!\n\n不幸的是,USB 安装在一些平台上可能需要特别的设置,这可能会引发更多的问题。\n如果以上无效,试试通过局域网或网络安装,\n或者复制文件到 SD 卡并在主菜单中选择\n通过 SD 卡安装!" }, "top_info": "USB 连接成功!正在等待发送文件列表...", "top_info2": "选择将要通过 USB 安装的文件,然后按 \ue0ef 以安装!", @@ -128,10 +128,10 @@ "at": " 以 " }, "nca_verify": { - "title": "检测到无效 NCA 签名!", + "title": "检测到无效 NCA 签名!", "desc": "请确认签名不正确的文件来源可靠。\n包含整合 XCI 和 DLC 解锁器的文件将始终显示此警告。\n您可以在 TinWoo Installer 设置中禁用此验证。\n\n是否继续安装?", "opt1": "是的,我已明白其中风险", - "error": "请求的 NCA 没有正确签名:" + "error": "请求的 NCA 没有正确签名: ", "ticket_missing": "未发现门票。\n\n如果游戏启动失败,请使用有效门票重新导出。" }, "finished": [ @@ -140,8 +140,7 @@ "您会买游戏的,对吧?任天堂感谢您!", "绕过 DRM 很棒,不是吗?", "出来混,早晚要还的!", - "任天堂忍者已经被派遣到您家,天诛。", - "您甚至不需要相信民主自由就能拿到这样的好处了..." + "任天堂忍者已经被派遣到您家,天诛。" ] }, "sig": { @@ -263,4 +262,4 @@ "sd_used": "\nSD 卡使用率:", "space_info": "空间使用信息" } -} +} \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index a0663bf..7065e65 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -20,8 +20,10 @@ int main(int argc, char* argv[]) //but still use custom fonts if the system language is selected. if (langInt != 2) { if (langInt != 8) { - if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "fonts.default"_theme)) { - x = 1; + if (langInt != 9) { + if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "fonts.default"_theme)) { + x = 1; + } } } } diff --git a/source/ui/optionsPage.cpp b/source/ui/optionsPage.cpp index b0657a9..48c1155 100644 --- a/source/ui/optionsPage.cpp +++ b/source/ui/optionsPage.cpp @@ -19,7 +19,7 @@ namespace inst::ui { extern MainApplication* mainApp; s32 prev_touchcount = 0; std::string flag = "romfs:/images/flags/en.png"; - std::vector languageStrings = { "Sys", "En", "Jpn", "Fr", "De", "It", "Ru", "Es", "Tw" }; + std::vector languageStrings = { "Sys", "En", "Jpn", "Fr", "De", "It", "Ru", "Es", "Tw", "Cn" }; optionsPage::optionsPage() : Layout::Layout() { std::string infoRect_colour = "colour.inforect"_theme; @@ -145,6 +145,7 @@ namespace inst::ui { std::string ru = "romfs:/images/flags/ru.png"; std::string es = "romfs:/images/flags/es.png"; std::string tw = "romfs:/images/flags/tw.png"; + std::string cn = "romfs:/images/flags/cn.png"; // if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "icons_flags.sys"_theme)) { sys = inst::config::appDir + "icons_flags.sys"_theme; @@ -173,6 +174,9 @@ namespace inst::ui { if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "icons_flags.tw"_theme)) { tw = inst::config::appDir + "icons_flags.tw"_theme; } + if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "icons_flags.cn"_theme)) { + cn = inst::config::appDir + "icons_flags.cn"_theme; + } // if (ourLangCode >= 0) { if (ourLangCode == 0) flag = sys; @@ -184,6 +188,7 @@ namespace inst::ui { else if (ourLangCode == 6) flag = ru; else if (ourLangCode == 7) flag = es; else if (ourLangCode == 8) flag = tw; + else if (ourLangCode == 9) flag = cn; return languageStrings[ourLangCode]; } else { @@ -218,6 +223,18 @@ namespace inst::ui { } } + void lang_message() { + std::string flag = "romfs:/images/icons/flags/sys.png"; + if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "icons_flags.sys"_theme)) { + flag = inst::config::appDir + "icons_flags.sys"_theme; + } + int ourResult = inst::ui::mainApp->CreateShowDialog("sig.restart"_lang, "theme.restart"_lang, { "common.no"_lang, "common.yes"_lang }, true, flag); + if (ourResult != 0) { + mainApp->FadeOut(); + mainApp->Close(); + } + } + void optionsPage::setMenuText() { std::string text_colour = "colour.main_text"_theme; this->menu->ClearItems(); @@ -583,12 +600,14 @@ namespace inst::ui { case 8: inst::config::languageSetting = 8; break; + case 9: + inst::config::languageSetting = 9; + break; default: inst::config::languageSetting = 0; } inst::config::setConfig(); - mainApp->FadeOut(); - mainApp->Close(); + lang_message(); break; case 17: if (inst::util::getIPAddress() == "1.0.0.127") { diff --git a/source/util/lang.cpp b/source/util/lang.cpp index d3ecd7d..97c1e40 100644 --- a/source/util/lang.cpp +++ b/source/util/lang.cpp @@ -51,6 +51,9 @@ namespace Language { case 8: languagePath = "romfs:/lang/tw.json"; break; + case 9: + languagePath = "romfs:/lang/cn.json"; + break; case 0: switch (syslang) { case 0: //Japanese @@ -72,7 +75,7 @@ namespace Language { languagePath = "romfs:/lang/es.json"; break; case 6: //Chinese - languagePath = "romfs:/lang/tw.json"; + languagePath = "romfs:/lang/cn.json"; break; case 7: //Korean languagePath = "romfs:/lang/en.json"; @@ -102,7 +105,7 @@ namespace Language { languagePath = "romfs:/lang/tw.json"; break; case 16: //TraditionalChinese - languagePath = "romfs:/lang/tw.json"; + languagePath = "romfs:/lang/cn.json"; break; case 17: //BrazilianPortuguese languagePath = "romfs:/lang/en.json";