Skip to content

Commit 36a6fd1

Browse files
authored
chore(i18n): update Simplified Chinese localization (#905)
* chore(i18n): update Simplified Chinese localization * Fix translation for vaultMoved message in zh_CN * Add new template creation messages in Chinese * chore: fix issues with mixed Chinese and English text and add translations for previously missed strings * chore: fix translation errors in zh_CN UI strings
1 parent 71253e6 commit 36a6fd1

5 files changed

Lines changed: 988 additions & 140 deletions

File tree

src/main/i18n/locales/zh_CN/devtools.json

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -100,48 +100,52 @@
100100
}
101101
},
102102
"textToUnicode": {
103-
"label": "文本转Unicode",
104-
"description": "将文本转换为Unicode,反之亦然",
103+
"label": "文本转 Unicode",
104+
"description": "将文本转换为 Unicode,反之亦然",
105105
"modes": {
106106
"textToUnicode": "文本 → Unicode",
107107
"unicodeToText": "Unicode → 文本"
108108
}
109109
},
110110
"textToAscii": {
111-
"label": "文本转ASCII Binary",
112-
"description": "将文本转换为ASCII binary,反之亦然",
111+
"label": "文本转 ASCII 二进制",
112+
"description": "将文本转换为 ASCII 二进制,反之亦然",
113113
"modes": {
114114
"textToAscii": "文本 → ASCII",
115115
"asciiToText": "ASCII → 文本"
116116
}
117117
},
118+
"lineBreakNormalizer": {
119+
"label": "换行符规范化",
120+
"description": "移除硬换行并对粘贴的终端文本进行规范化处理"
121+
},
118122
"base64": {
119-
"label": "Base64 Encoder / Decoder",
120-
"description": "将文本编码或解码为Base64",
123+
"label": "Base64 编解码器",
124+
"description": "将文本编码或解码为 Base64",
121125
"modes": {
122126
"textToBase64": "文本 → Base64",
123127
"base64ToText": "Base64 → 文本"
124128
}
125129
},
126130
"jsonToYaml": {
127-
"label": "JSON转YAML",
128-
"description": "将JSON转换为YAML,反之亦然",
131+
"label": "JSON 转 YAML",
132+
"description": "将 JSON 转换为 YAML,反之亦然",
129133
"modes": {
130134
"jsonToYaml": "JSON → YAML",
131135
"yamlToJson": "YAML → JSON"
132136
}
133137
},
134138
"jsonToToml": {
135-
"label": "JSON转TOML",
136-
"description": "将JSON转换为TOML,反之亦然",
139+
"label": "JSON 转 TOML",
140+
"description": "将 JSON 转换为 TOML,反之亦然",
137141
"modes": {
138142
"jsonToToml": "JSON → TOML",
139143
"tomlToJson": "TOML → JSON"
140144
}
141145
},
142146
"jsonToXml": {
143-
"label": "JSON转XML",
144-
"description": "将JSON转换为XML,反之亦然",
147+
"label": "JSON 转 XML",
148+
"description": "将 JSON 转换为 XML,反之亦然",
145149
"modes": {
146150
"jsonToXml": "JSON → XML",
147151
"xmlToJson": "XML → JSON"
@@ -159,35 +163,54 @@
159163
"description": "从文本生成哈希值"
160164
},
161165
"hmac": {
162-
"label": "HMAC生成器",
166+
"label": "HMAC 生成器",
163167
"description": "生成由密钥和消息组成的基于哈希的消息认证码(HMAC)"
164168
},
165169
"password": {
166170
"label": "密码生成器",
167171
"description": "生成安全密码"
168172
},
169173
"uuid": {
170-
"label": "UUID生成器",
174+
"label": "UUID 生成器",
171175
"description": "生成通用唯一标识符(UUID)"
172176
}
173177
},
174178
"web": {
175179
"label": "网络",
176180
"urlParser": {
177-
"label": "URL解析器",
178-
"description": "将URL解析为其组件"
181+
"label": "URL 解析器",
182+
"description": "将 URL 解析为其组件"
179183
},
180184
"urlEncoder": {
181-
"label": "URL Encoder / Decoder",
182-
"description": "编码或解码URL",
185+
"label": "URL 编解码器",
186+
"description": "编码或解码 URL",
183187
"modes": {
184-
"urlEncode": "URL Encode",
185-
"urlDecode": "URL Decode"
188+
"urlEncode": "URL 编码",
189+
"urlDecode": "URL 解码"
186190
}
187191
},
188192
"slugify": {
189193
"label": "Slugify",
190-
"description": "将文本转换为URL友好的slug"
194+
"description": "将文本转换为 URL 友好的 slug"
195+
}
196+
},
197+
"compare": {
198+
"label": "比较",
199+
"jsonDiff": {
200+
"label": "JSON 差异对比",
201+
"description": "比较并可视化两个 JSON 文本之间的差异",
202+
"original": "原始",
203+
"modified": "修改后",
204+
"filters": {
205+
"added": "新增",
206+
"removed": "删除",
207+
"modified": "修改"
208+
},
209+
"empty": "在两个文本区域内粘贴 JSON 即可查看差异",
210+
"errors": {
211+
"invalidJson": "无效的 JSON",
212+
"diffFailed": "差异检查失败"
213+
}
191214
}
192215
},
193216
"form": {
@@ -198,7 +221,7 @@
198221
"inputUrl": "输入URL",
199222
"outputUrl": "输出URL",
200223
"parsedUrl": "解析的URL",
201-
"splitQueryString": "分割Query String",
224+
"splitQueryString": "分割查询字符串",
202225
"key": "",
203226
"value": "",
204227
"component": "组件",
@@ -218,7 +241,7 @@
218241
"text": "输入文本",
219242
"value": "输入值",
220243
"secretKey": "输入密钥",
221-
"url": "输入URL"
244+
"url": "输入 URL"
222245
}
223246
}
224247
}

src/main/i18n/locales/zh_CN/menu.json

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"quit": "退出 massCode",
88
"about": "关于 massCode",
99
"hide": "隐藏 massCode",
10-
"mathNotebook": "Math Notebook"
10+
"mathNotebook": "计算草稿本"
1111
},
1212
"help": {
1313
"label": "帮助",
@@ -33,41 +33,61 @@
3333
"snippets": "代码片段集合"
3434
}
3535
},
36+
"file": {
37+
"label": "文件",
38+
"new": "新建"
39+
},
3640
"view": {
3741
"label": "视图",
3842
"showSidebar": "显示/隐藏侧边栏",
43+
"layout": {
44+
"label": "布局",
45+
"allPanels": "所有面板",
46+
"listEditor": "列表 + 编辑器",
47+
"editorOnly": "仅编辑器"
48+
},
3949
"sortBy": {
40-
"label": "代码片段排序方式",
50+
"label": "排序方式",
4151
"dateModified": "修改日期",
4252
"dateCreated": "创建日期",
4353
"name": "名称"
4454
},
55+
"sortOrder": {
56+
"label": "排序规则",
57+
"ascending": "升序",
58+
"descending": "降序"
59+
},
4560
"compactMode": "紧凑模式",
46-
"layout": {
47-
"label": "Layout",
48-
"allPanels": "All Panels",
49-
"listEditor": "List + Editor",
50-
"editorOnly": "Editor Only"
51-
}
61+
"hideCompletedTasks": "隐藏已完成的任务"
5262
},
5363
"edit": {
5464
"label": "编辑",
65+
"undo": "撤销",
66+
"redo": "恢复",
67+
"cut": "剪切",
68+
"copy": "复制",
69+
"paste": "粘贴",
70+
"delete": "删除",
71+
"selectAll": "全选",
5572
"find": "查找"
5673
},
5774
"editor": {
5875
"label": "编辑器",
59-
"copy": "复制代码片段到剪贴板",
76+
"copySnippet": "复制代码片段",
77+
"copyNote": "复制笔记",
6078
"format": "格式化",
79+
"normalizeTerminalOutput": "规范化换行符",
80+
"mode": "模式",
81+
"modeRaw": "源码",
82+
"modeLivePreview": "实时预览",
83+
"modePreview": "预览",
6184
"previewCode": "预览代码",
6285
"previewScreenshot": "预览截图",
6386
"previewJson": "预览 JSON",
87+
"sendRequest": "发送请求",
6488
"fontSizeIncrease": "增大字体",
6589
"fontSizeDecrease": "减小字体",
66-
"fontSizeReset": "重置字体大小",
67-
"mode": "Mode",
68-
"modeRaw": "Raw",
69-
"modeLivePreview": "Live Preview",
70-
"modePreview": "Preview"
90+
"fontSizeReset": "重置字体大小"
7191
},
7292
"markdown": {
7393
"label": "Markdown",
@@ -85,11 +105,7 @@
85105
"label": "开发者工具"
86106
},
87107
"window": {
88-
"label": "Window",
89-
"minimize": "Minimize"
90-
},
91-
"file": {
92-
"label": "File",
93-
"new": "New"
108+
"label": "窗口",
109+
"minimize": "最小化"
94110
}
95111
}
Lines changed: 103 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,132 @@
11
{
22
"confirm": {
3-
"delete": "您确定要删除 \"{{name}}\" 吗?",
4-
"deletePermanently": "您确定要永久删除 \"{{name}}\" 吗?",
5-
"deleteConfirmMultipleSnippets": "您确定要永久删除已选择的 {{count}} 个代码片段吗?",
6-
"emptyTrash": "您确定要永久删除回收站中的所有代码片段吗?",
3+
"delete": "确定要删除 \"{{name}}\" 吗?",
4+
"deleteVariable": "确定要删除变量 \"{{name}}\" 吗?",
5+
"deleteUnnamedVariable": "确定要删除该变量吗?",
6+
"unprotectHttpSecret": "确定要停止保护 \"{{name}}\" 吗?",
7+
"deletePermanently": "确定要永久删除 \"{{name}}\" 吗?",
8+
"deleteConfirmMultipleSnippets": "确定要永久删除选中的 {{count}} 个代码片段吗?",
9+
"emptyTrash": "确定要永久清空回收站中的所有代码片段吗?",
10+
"convertTaskToNote": "确定要将任务 \"{{name}}\" 转换成笔记吗?",
11+
"moveVaultOverwrite": [
12+
"确定要覆盖所选目录吗?",
13+
"所选目录不为空。当前库的内容将会覆盖该目录下的现有内容。"
14+
],
715
"migrateToMarkdown": [
8-
"Migrate to Markdown Vault?",
9-
"The selected vault will be overwritten with the current SQLite library."
16+
"确定要迁移至 Markdown 仓库吗?",
17+
"当前 SQLite 数据库中的内容将会覆盖所选仓库。"
18+
],
19+
"vaultDoctorApply": [
20+
"应用仓库修复?",
21+
"massCode 将自动执行安全的元数据修复,并应用您选中的重复 ID 处理方案. 未选中的冲突项将被跳过。"
1022
]
1123
},
1224
"success": {
1325
"copied": "已复制到剪贴板",
14-
"migrateToMarkdown": "Migrated to Markdown Vault. Folders: {{folders}}, snippets: {{snippets}}, tags: {{tags}}.",
15-
"vaultLoaded": "Vault successfully loaded."
26+
"migrateToMarkdown": "已迁移至 Markdown 仓库。文件夹:{{folders}},代码片段:{{snippets}},标签:{{tags}}。",
27+
"vaultMoved": "仓库已成功移动。",
28+
"vaultLoaded": "仓库已成功加载。",
29+
"licenseActivated": "许可证已激活。感谢您对 massCode 的支持!",
30+
"noteExported": "笔记已成功导出。",
31+
"noteFolderSiteExported": "笔记文件夹已导出为 HTML 站点。",
32+
"vaultDoctorApplied": "仓库医生应用了 {{count}} 个修复。",
33+
"vaultDoctorClean": "仓库医生没有发现任何问题。"
1634
},
1735
"warning": {
1836
"noUndo": "此操作无法撤消。",
37+
"httpSecretToPlainText": "其值将以纯文本形式存放在环境,因此将存储在仓库中并与之同步。",
1938
"allSnippetsMoveToTrash": "此文件夹中的所有代码片段将被移至回收站。",
39+
"taskPropertiesRemoved": "任务状态、优先级和截止日期将被移除。",
2040
"deleteTag": "这也将导致所有带有该标签的代码片段移除此标签。",
2141
"createDb": "请选择其他文件夹",
2242
"htmlCssPreview": "添加HTML片段以查看结果。添加CSS进行样式设计,添加JavaScript实现交互功能。",
2343
"codeBlockRenderer": [
2444
"使用 Codemirror 时,代码块设置的语言必须对应",
2545
"languages"
26-
]
46+
],
47+
"vaultDoctorConflicts": "仓库:{{count}} 个同步冲突待关注",
48+
"vaultDoctorReview": "审查",
49+
"vaultDoctorNotReady": "仓库仍在与云存储同步中。稍后请尝试再次扫描。",
50+
"cloudFileNotReady": "此文件仍在从云存储同步中。请稍后重试。"
2751
},
2852
"error": {
29-
"migration": "Auto-migration from SQLite failed: {{error}}"
53+
"migration": "从 SQLite 自动迁移失败:{{error}}",
54+
"secretNameRequired": "在保存值之前,请为机密变量输入一个名称。",
55+
"secretEnvironmentMissing": "该环境已不存在。",
56+
"secretEncryptionUnavailable": "无法存储机密变量:该系统没有可用的操作系统加密功能。",
57+
"secretSaveFailed": "保存机密变量失败。",
58+
"secretRevealFailed": "读取机密变量失败。它可能已被其他操作系统用户保存。",
59+
"entryNameEmpty": "名称不能为空。",
60+
"entryNameLeadingDot": "名称不能以点字符(.)开头。",
61+
"entryNameInvalidChars": "名称不能包含以下字符:{{- chars}}",
62+
"entryNameTrailingDot": "名称不能以点字符(.)结尾。",
63+
"entryNameWindowsReserved": "该名称为 Windows 系统保留名称。",
64+
"entryNameNoteConflict": "此文件夹中已存在同名笔记。",
65+
"entryNameSnippetConflict": "此文件夹中已存在同名代码片段。",
66+
"entryNameRequestConflict": "此文件夹中已存在同名请求。",
67+
"entryNameFolderConflict": "当前层级下已存在同名文件夹。",
68+
"vaultPathRequired": "需填写仓库路径",
69+
"licenseInvalid": "无效的许可证密钥",
70+
"noteExportFailed": "笔记导出失败。",
71+
"noteFolderSiteExportFailed": "笔记文件夹导出失败"
3072
},
3173
"description": {
32-
"storageVault": "Choose the vault directory. To sync between devices, select a folder in iCloud Drive, Google Drive or Dropbox.",
33-
"language": "To apply language changes, you need to reload the app.",
34-
"migrateSqliteUtility": "If you have a massCode.db file from a previous version, use this utility to import your data into the current Markdown Vault."
74+
"storageVault": "请选择仓库目录。如需在多设备间同步,请选择 iCloud DriveGoogle Drive Dropbox 中的文件夹。",
75+
"language": "应用语言更改需要重新加载应用程序。",
76+
"migrateSqliteUtility": "如果您有旧版本的 massCode.db 文件,请使用此工具将数据导入当前的 Markdown 仓库。"
3577
},
3678
"special": {
3779
"unsponsored": "未赞助"
3880
},
81+
"donations": {
82+
"trigger": {
83+
"copy": {
84+
"code": "累计复制 {{count}} 个代码片段 🚀",
85+
"http": "累计复制 {{count}} 条 HTTP 请求 🚀",
86+
"notes": "累计复制 {{count}} 篇笔记 🚀",
87+
"math": "累计复制 {{count}} 个计算结果 🚀",
88+
"tools": "累计复制 {{count}} 个工具输出 🚀",
89+
"drawings": "累计复制 {{count}} 幅绘图 🚀"
90+
},
91+
"created": {
92+
"code": "累计创建 {{count}} 个代码片段 🎉",
93+
"http": "累计创建 {{count}} 条 HTTP 请求 🎉",
94+
"notes": "累计创建 {{count}} 篇笔记 🎉",
95+
"math": "累计创建 {{count}} 个计算工作表 🎉",
96+
"drawings": "累计创建 {{count}} 幅绘图 🎉"
97+
},
98+
"sent": {
99+
"http": "累计发送 {{count}} 条 HTTP 请求 🚀"
100+
},
101+
"streak_7": {
102+
"title": "连续打卡 7 天 🔥"
103+
},
104+
"streak_30": {
105+
"title": "massCode 已陪您度过 30 天 🎊"
106+
},
107+
"streak_100": {
108+
"title": "massCode 已陪您度过 100 天 🏆"
109+
}
110+
},
111+
"body": {
112+
"full": "Hi,我是 Anton 👋\nmassCode 是由我独自一人开发并维护的。如果它对你的工作有所帮助,请支持一下这个项目,让它能够继续成长。",
113+
"short": "喜欢 massCode 吗?支持一下这个项目吧,让它能够继续成长。"
114+
},
115+
"actions": {
116+
"support": "支持",
117+
"dismiss": "先用用看"
118+
}
119+
},
39120
"release": {},
40121
"update": {
41-
"available": "版本 {{newVersion}} 现已可供下载。\n您的版本是 {{oldVersion}}。",
42-
"noAvailable": "目前没有可用的更新。"
122+
"available": "版本 {{newVersion}} 现已可供下载。\n您当前的版本是 {{oldVersion}}。",
123+
"noAvailable": "当前没有可用更新。",
124+
"downloading": "新版本 v{{version}} 正在后台下载中。准备就绪后将提示您重启应用。",
125+
"availableToast": "发现新版本",
126+
"goToGitHub": "前往 GitHub",
127+
"downloaded": "新版本 v{{version}} 已准备就绪。请重启 massCode 以应用更新。",
128+
"restart": "重启应用",
129+
"whatsNewToast": "查看 massCode v{{version}} 的新功能",
130+
"releaseNotes": "版本日志"
43131
}
44132
}

0 commit comments

Comments
 (0)