Skip to content

Commit d625cfc

Browse files
committed
clone support of lang zh
1 parent 3df8112 commit d625cfc

File tree

4 files changed

+228
-4
lines changed

4 files changed

+228
-4
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.*/
2+
build/
3+
*~
4+
*.bak
5+
*.nro
6+
*.nacp
7+
*.elf
8+
.vscode

romfs/lang/zh-Hans.json

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
{
2+
"main":{
3+
"menu": {
4+
"sd": "通过 SD 卡安装",
5+
"net": "通过局域网或互联网安装",
6+
"usb": "通过 USB 安装",
7+
"hdd": "通过 USB 硬盘安装",
8+
"sig": "管理签名补丁",
9+
"set": "设置",
10+
"exit": "退出"
11+
},
12+
"hdd": {
13+
"title": "USB 硬盘",
14+
"notfound": "未连接 USB 硬盘。"
15+
},
16+
"net": {
17+
"title": "网络连接不可用",
18+
"desc": "请确认飞行模式已关闭,且已连接到本地网络。"
19+
},
20+
"usb": {
21+
"warn": {
22+
"title": "警告!",
23+
"desc": "USB 安装在某些设备及环境下不一定能正常“将就使用”。\n如果您在使用 USB 安装时遇到问题,请不要心急!\n建议使用 NS-USBloader 来进行 USB 安装,\n或另行通过网络进行安装!\n\n特此警示。",
24+
"opt1": "不再提示"
25+
},
26+
"error": {
27+
"title": "未检测到 USB 连接",
28+
"desc": "请通过 USB 连接到兼容设备"
29+
}
30+
},
31+
"applet": {
32+
"title": "不支持 Applet 模式",
33+
"desc": "在 Applet 模式下使用 Tinleaf Installer 可能会遇到问题。\n若出现问题,请改以“软件替换”模式启动。\n(回到 \ue0f4 主菜单,按住 \ue0e5 并启动任意已安装游戏,进入 hbmenu 后再重新运行 Tinleaf Installer。)"
34+
},
35+
"buttons": "\ue0e0 选择 \ue0e1 退出"
36+
},
37+
"inst": {
38+
"net": {
39+
"help": {
40+
"title": "帮助",
41+
"desc": "可以从其他设备使用某些工具远程安装文件,如 NS-USBloader (Tinfoil 模式)。\n要向 Switch 发送文件,打开电脑或者移动设备上任一工具软件,\n输入屏幕上显示的 Switch IP 地址,选择文件,然后上传到您的主机。\n若您使用的工具软件不支持选择特定文件类型,您可以尝试更改为可接受的文件扩展名。\nTinleaf Installer 在通过网络安装时不限定文件扩展名。\n\n如果实在搞不懂,请复制文件到 SD 卡并尝试在主菜单中选择“通过 SD 卡安装”。"
42+
},
43+
"src": {
44+
"title": "请选择安装来源",
45+
"opt0": "URL (网络链接)",
46+
"opt1": "Google 云端硬盘"
47+
},
48+
"url": {
49+
"hint": "输入文件的链接地址 (URL)",
50+
"invalid": "URL地址无效!",
51+
"source_string": " (来源: URL)"
52+
},
53+
"gdrive": {
54+
"hint": "输入 Google 云盘公共文件的 ID",
55+
"alt_name": "Google 云盘文件",
56+
"source_string": " (来源: Google 云盘)"
57+
},
58+
"top_info": "在选择您要安装的文件,然后按 \ue0ef 键。",
59+
"top_info1": "正在等待连接… 您 Switch 的 IP 地址是:",
60+
"failed": "远程安装失败!",
61+
"transfer_interput": "数据传输发生错误,请检查网络连接。",
62+
"source_string": " (来源:本地网络)",
63+
"buttons": "\ue0e3 互联网安装 \ue0e2 帮助 \ue0e1 取消",
64+
"buttons1": "\ue0e0 选择文件 \ue0e3 全选 \ue0ef 安装选中文件  \ue0e1 取消"
65+
},
66+
"sd": {
67+
"help": {
68+
"title": "帮助",
69+
"desc": "复制 NSP、NSZ、XCI 或 XCZ 文件到 SD 卡,\n定位并选中想要安装的文件,然后按 \ue0ef 键。"
70+
},
71+
"top_info": "选择想要安装的文件,然后按 \ue0ef 安装!",
72+
"source_string": " (来源: SD 卡)",
73+
"delete_info": " 安装完成!是否将原文件从 SD 卡中删除?",
74+
"delete_info_multi": " 个文件安装成功!是否将原文件从 SD 卡中删除?",
75+
"delete_desc": "安装完成后已不需要原文件。",
76+
"buttons": "\ue0e0 选择文件 \ue0e3 全选 \ue0ef 安装选中文件  \ue0e2 帮助 \ue0e1 取消"
77+
},
78+
"hdd": {
79+
"source_string": " (来源: USB 硬盘)"
80+
},
81+
"usb": {
82+
"help": {
83+
"title": "帮助",
84+
"desc": "可以通过 USB 从其他设备使用某些工具安装文件,如 NS-USBloader (Tinfoil 模式)。\n要向 Switch 发送文件,打开电脑或者移动设备上任一工具软件,\n输入屏幕上显示的 Switch IP 地址,选择文件,然后上传到您的主机。\n若您使用的工具软件不支持选择特定文件类型,您可以尝试更改为可接受的文件扩展名。\nTinleaf Installer 在通过网络安装时不限定文件扩展名。\n\n如果实在搞不懂,请复制文件到 SD 卡并尝试在主菜单中选择“通过 SD 卡安装”。"
85+
},
86+
"top_info": "USB 连接成功!正等待接收文件列表...",
87+
"top_info2": "选择将要通过 USB 安装的文件,然后按 \ue0ef 键。",
88+
"error": "USB 传输超时或失败",
89+
"source_string": " 通过 USB",
90+
"buttons": "\ue0e2 (按住) 帮助 \ue0e1 (按住) 取消",
91+
"buttons2": "\ue0e0 选择文件 \ue0e3 全选 \ue0ef 安装选中文件   \ue0e1 取消"
92+
},
93+
"target": {
94+
"desc0": "请选择 ",
95+
"desc1": " 的安装位置",
96+
"desc00": "请选择已选 ",
97+
"desc01": " 个文件的安装位置?",
98+
"opt0": "SD 卡",
99+
"opt1": "内部存储"
100+
},
101+
"info_page": {
102+
"top_info0": "正在安装 ",
103+
"preparing": "正在准备安装...",
104+
"failed": "安装失败 ",
105+
"failed_desc": "不完全安装的内容可从系统设置中删除。",
106+
"complete": "安装完成",
107+
"desc0": " 个文件安装成功!",
108+
"desc1": " 已安装!",
109+
"downloading": "正在下载 ",
110+
"at": ""
111+
},
112+
"nca_verify": {
113+
"title": "检测到无效 NCA 签名!",
114+
"desc": "请确认非正规签名的文件来源可靠。\n包含从卡带转换以及 DLC 解锁器的文件将始终显示此警告。\n您可以在 Tinleaf Installer 设置中禁用此项检查。\n\n是否继续安装?",
115+
"opt1": "是的,我已明白其中风险",
116+
"error": "请求安装的 NCA 没有正规签名:"
117+
},
118+
"finished": [
119+
"享受您的“合法备份”吧!",
120+
"我相信您在试玩游戏后,将更有兴趣购买它!",
121+
"您买游戏了吧?老任感谢您的购买!",
122+
"绕开 DRM 真是太爽啦。",
123+
"您拒绝购买游戏的行为大概保护了6棵大树免遭砍伐!还节省了塑料包装!",
124+
"任天堂法务部已向您投递律师函,请注意查收。",
125+
"七国语言无中文?英文亲切,乐享游戏!"
126+
]
127+
},
128+
"sig": {
129+
"install": "安装",
130+
"uninstall": "卸载",
131+
"update": "更新",
132+
"version_text": "您已安装的签名补丁最高适用于此 HOS 版本:",
133+
"title0": "安装签名补丁?",
134+
"desc0": "安装和运行官方软件需要签名补丁。",
135+
"backup_failed": "无法备份 Hekate 的 patches.ini!是否继续?",
136+
"backup_failed_desc": "如果您不使用 Hekate,请忽略此警告。",
137+
"download_failed": "无法下载签名补丁",
138+
"download_failed_desc": "您可能在设置中设定了无效来源,\n或者服务器可能暂时无法访问。",
139+
"version_text2": "您的签名补丁已更新至 HOS 最高适配版本 ",
140+
"install_complete": "安装完成!",
141+
"complete_desc": "重启主机以生效",
142+
"restart": "立即重启",
143+
"later": "稍后重启",
144+
"extract_failed": "无法解压文件!",
145+
"restore_failed": "无法恢复原始 Hekate 的 patch.ini!是否继续?",
146+
"uninstall_complete": "卸载完成",
147+
"remove_failed": "无法移除签名补丁",
148+
"remove_failed_desc": "文件可能已被重命名或删除",
149+
"generic_error": "安装签名补丁失败!"
150+
},
151+
"options": {
152+
"menu_items": {
153+
"ignore_firm": "忽略软件最低固件版本要求",
154+
"nca_verify": "安装前验证 NCA 签名",
155+
"boost_mode": "安装时启用\"加速模式\"",
156+
"ask_delete": "安装后询问文件是否删除",
157+
"auto_update": "自动检查 Tinleaf Installer 更新",
158+
"sig_url": "签名补丁来源链接 (URL):",
159+
"language": "语言:",
160+
"check_update": "检查 Tinleaf Installer 更新",
161+
"credits": "致谢"
162+
},
163+
"nca_warn": {
164+
"title": "警告!",
165+
"desc": "一些可安装文件可能包含恶意内容!\n只有在您确信安装文件绝对可靠的情况下\n才可以禁用此功能!\n\n是否仍然禁用 NCA 签名验证?",
166+
"opt1": "是的,我不怕变砖"
167+
},
168+
"sig_hint": "输入签名补丁来源链接 (URL)",
169+
"update": {
170+
"title": "发现新版本",
171+
"desc0": "Tinleaf Installer ",
172+
"desc1": " 已经发布!是否更新?",
173+
"opt0": "更新",
174+
"top_info": "正在更新 Tinleaf Installer ",
175+
"bot_info": "正在下载 Tinleaf Installer ",
176+
"bot_info2": "正在解压 Tinleaf Installer ",
177+
"complete": "更新完成!",
178+
"failed": "更新失败!",
179+
"end_desc": "此软件将关闭。",
180+
"title_check_fail": "没有发现更新",
181+
"desc_check_fail": "当前 Tinleaf Installer 已是最新版!"
182+
},
183+
"credits": {
184+
"title": "感谢以下朋友!",
185+
"desc": "- Adubbz"
186+
},
187+
"language": {
188+
"title": "选择 Tinleaf Installer 语言",
189+
"desc": "软件将在更改语言后关闭。按 \ue0e1 取消。",
190+
"system_language": "系统默认"
191+
},
192+
"title": "更改 Tinleaf Installer 的设置!",
193+
"buttons": "\ue0e0 选择/更改 \ue0e1 取消"
194+
},
195+
"common": {
196+
"ok": "确定",
197+
"cancel": "取消",
198+
"close": "关闭",
199+
"yes": "",
200+
"no": "",
201+
"cancel_desc": "\ue0e1 取消"
202+
}
203+
}

source/ui/optionsPage.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
namespace inst::ui {
1717
extern MainApplication *mainApp;
1818

19-
std::vector<std::string> languageStrings = {"English", "日本語", "Français", "Deutsch", "Italiano", "Русский"};
19+
std::vector<std::string> languageStrings = {"English", "日本語", "Français", "Deutsch", "Italiano", "Русский", "簡体中文"};
2020

2121
optionsPage::optionsPage() : Layout::Layout() {
2222
this->SetBackgroundColor(COLOR("#343E87FF"));
@@ -90,6 +90,9 @@ namespace inst::ui {
9090
return languageStrings[4];
9191
case 10:
9292
return languageStrings[5];
93+
case 6:
94+
case 15:
95+
return languageStrings[6];
9396
default:
9497
return "options.language.system_language"_lang;
9598
}
@@ -200,6 +203,9 @@ namespace inst::ui {
200203
case 5:
201204
inst::config::languageSetting = 10;
202205
break;
206+
case 6:
207+
inst::config::languageSetting = 15;
208+
break;
203209
default:
204210
inst::config::languageSetting = 99;
205211
}

source/util/lang.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <iostream>
22
#include <switch.h>
33
#include <filesystem>
4+
#include <pu/Plutonium>
45
#include "util/lang.hpp"
56
#include "util/config.hpp"
67

@@ -36,10 +37,13 @@ namespace Language {
3637
break;
3738
case 5:
3839
case 14:
39-
languagePath = "romfs:/lang/es.json";
40+
languagePath = "romfs:/lang/es-419.json";
4041
break;
4142
case 6:
42-
languagePath = "romfs:/lang/zh-CN.json";
43+
case 15:
44+
languagePath = "romfs:/lang/zh-Hans.json";
45+
// the default font will miss some chinese character, so use a chinese font (simplified)
46+
pu::ui::render::SetDefaultFontFromShared(pu::ui::render::SharedFont::ChineseSimplified);
4347
break;
4448
case 7:
4549
languagePath = "romfs:/lang/ko.json";
@@ -54,7 +58,10 @@ namespace Language {
5458
languagePath = "romfs:/lang/ru.json";
5559
break;
5660
case 11:
57-
languagePath = "romfs:/lang/zh-TW.json";
61+
case 16:
62+
languagePath = "romfs:/lang/zh-Hant.json";
63+
// the default font will miss some chinese character, so use a chinese font (traditional)
64+
pu::ui::render::SetDefaultFontFromShared(pu::ui::render::SharedFont::ChineseTraditional);
5865
break;
5966
default:
6067
languagePath = "romfs:/lang/en.json";

0 commit comments

Comments
 (0)