feat(i18n): add multi-language support (ja/ko/vi/ru/zh-TW) with system auto-detection

- Extend AppLanguage to 7 locales: zh-CN, zh-TW, en, ja, ko, vi, ru
- Auto-detect system language via navigator.languages; fallback to English
- Add BCP47 locale mapping for date formatting and sorting
- Create 50 translation JSON files (5 languages × 10 namespaces, 1137 keys each)
- Update language selector with native language names
- Extend locale key parity test to cover all 7 languages (70 assertions)
- Add VNC/RDP desktop, serial terminal, AI agent, port forwarding, and SFTP features
- Add credential encryption, host metrics, session backup crypto, and zmodem bridge
- Update Rust backend: desktop services, host metrics, SSH/SFTP enhancements
This commit is contained in:
Logan.Li committed 2026-08-12 00:07:48 +08:00
1 parent fea6d8db04
commit b0d0e3a5f3
301 files changed
+28002 -2705

No files matched your search

+87
View File
@@ -0,0 +1,87 @@
{
"panel": {
"title": "Agent CLI",
"modelConfigured": "{{provider}} · {{model}}",
"modelNotConfigured": "未配置模型",
"sshReady": "SSH · {{target}}",
"sshNotConnected": "未连接远程 SSH",
"defaultTarget": "当前 SSH 会话",
"emptyHint": "描述运维任务后发送。可连续追问,或点 + 开新话题。",
"newTopic": "新话题",
"close": "关闭",
"thinking": "思考中…",
"conclusion": "结论",
"copy": "复制",
"copied": "已复制",
"stop": "停止",
"send": "发送",
"placeholder": "任务或追问…(Enter 发送,Shift+Enter 换行)",
"hintFollowUp": "继续追问将带上本轮上下文",
"hintSelection": "将附带选中 {{lines}} 行",
"hintSteps": "最多 {{max}} 步 · 不落盘",
"footerNote": "高风险需确认 · critical 拒绝 · 会话不落盘"
},
"safety": {
"aria": "Agent 安全模式",
"strict": {
"label": "严格",
"short": "中风险起确认",
"description": "文件修改、权限调整及更高风险命令需要确认,适合生产或陌生主机。"
},
"relaxed": {
"label": "宽松",
"short": "仅高风险确认",
"description": "查看和普通修改自动执行;删除、重启、安装等高风险操作需要确认。"
}
},
"risk": {
"safe": "安全",
"low": "低风险",
"medium": "中风险",
"high": "高风险",
"critical": "禁止执行"
},
"step": {
"round": "第 {{round}} 步",
"awaiting": "待确认",
"running": "执行中",
"done": "完成",
"confirmTitle": "第 {{round}} 步 · {{risk}}",
"confirmMessage": "SSH · {{target}}\n{{mode}}\n\n$ {{command}}",
"rejected": "已拒绝第 {{round}} 步命令。",
"terminated": "已终止",
"stoppedMessage": "已终止。正在执行的远端命令已请求中断。"
},
"confirm": {
"reject": "Reject",
"once": "Once",
"always": "Always",
"hint": "Enter · Once Esc · Reject Always · 本会话同类命令不再确认"
},
"error": {
"noProvider": "请先在设置 → 大模型配置 Provider",
"noApiKey": "「{{provider}}」尚未保存 API Key",
"emptyTask": "请输入任务或追问",
"sshRequired": "需要已连接的远程 SSH",
"modelEmpty": "模型未返回内容",
"protocolFailed": "模型连续两次未遵循协议,已停止",
"noConclusion": "模型未返回可用结论",
"multipleCommands": "模型一次返回了多个命令,已拒绝执行",
"invalidCommand": "模型未返回唯一的单行命令,已拒绝执行",
"repeatLoop": "检测到重复命令循环,已停止:{{command}}",
"criticalBlocked": "命令命中破坏性操作硬红线,不提供确认放行:{{command}}",
"execFailed": "ssh-exec 失败:{{error}}",
"execUnknown": "未知错误",
"execNoOutput": "命令执行完成,无输出",
"maxSteps": "已达 {{max}} 步上限,请缩小范围后重试"
},
"output": {
"empty": "(空输出)",
"truncatedMiddle": "... [已省略 {{count}} 行] ...",
"totalLines": "总行数: {{count}}{{truncatedSuffix}}",
"truncatedSuffix": "(已截断保留首尾)",
"errorLines": "疑似错误/告警行 ({{count}}):\n{{lines}}",
"noErrorKeywords": "未发现明显错误关键词",
"snippetLabel": "输出片段:\n{{snippet}}"
}
}