* fix: support CSV password import and save password in keyboard-interactive auth (#627) - Add Password column support to CSV import/export/template - Add isAPasswordPrompt detection (prompt contains "password" + echo=false) - Auto-fill saved password in keyboard-interactive modal - Add "Save password" checkbox for password prompts in keyboard-interactive modal - Wire save callback through sessionId → host to persist password Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: address review feedback for keyboard-interactive and CSV changes - Merge password field in dedupeHosts to avoid losing passwords from duplicate CSV rows - Extract isAPasswordPrompt to module-level pure function - Only render save-password checkbox at the first password prompt index - Clean up orphaned i18n keys (useSaved, useSavedPassword, fill, fillSaved) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: preserve whitespace in CSV imported passwords Passwords may intentionally contain leading/trailing whitespace. Removing .trim() ensures lossless CSV round-trip and correct auth. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: exclude OTP prompts from password detection and guard jump host save - Add negative patterns (one-time, otp, verification, token, code) to isAPasswordPrompt to avoid auto-filling SSH password into OTP fields - Only save password when request hostname matches session hostname, preventing jump host passwords from overwriting the destination host Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: skip formula injection guard for password column in CSV export Password values starting with =, +, -, @ were getting a ' prefix from the CSV formula injection protection, breaking round-trip fidelity. Now password column is escaped for CSV syntax only, preserving the credential verbatim. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: only skip formula guard for data rows, not header row Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1843 lines
97 KiB
TypeScript
1843 lines
97 KiB
TypeScript
import type { Messages } from './en';
|
||
|
||
const zhCN: Messages = {
|
||
// Common
|
||
'common.save': '保存',
|
||
'common.cancel': '取消',
|
||
'common.close': '关闭',
|
||
'common.reset': '重置',
|
||
'common.zoomIn': '放大',
|
||
'common.zoomOut': '缩小',
|
||
'common.settings': '设置',
|
||
'common.search': '搜索',
|
||
'common.connect': '连接',
|
||
'common.terminal': '终端',
|
||
'common.create': '创建',
|
||
'common.add': '添加',
|
||
'common.rename': '重命名',
|
||
'common.refresh': '刷新',
|
||
'common.continue': '继续',
|
||
'common.enabled': '已启用',
|
||
'common.disabled': '已禁用',
|
||
'common.unknownError': '未知错误',
|
||
'common.noResultsFound': '没有匹配结果',
|
||
'common.back': '返回',
|
||
'common.apply': '应用',
|
||
'common.use': '使用',
|
||
'common.useGlobal': '跟随全局',
|
||
'common.left': '左侧',
|
||
'common.right': '右侧',
|
||
'common.more': '更多',
|
||
'common.selectAHost': '选择主机',
|
||
'sort.az': 'A-z',
|
||
'sort.za': 'Z-a',
|
||
'sort.newest': '从新到旧',
|
||
'sort.oldest': '从旧到新',
|
||
'sort.group': '按分组',
|
||
'field.label': 'Label',
|
||
'field.type': '类型',
|
||
'auth.keyType': '类型 {type}',
|
||
'auth.showAllKeys': '显示全部 keys',
|
||
|
||
// Dialogs / prompts
|
||
'confirm.deleteHost': '删除主机 "{name}"?',
|
||
'confirm.deleteIdentity': '删除身份 "{name}"?',
|
||
'confirm.removeProvider': '移除提供商 "{name}"?',
|
||
'dialog.renameWorkspace.title': '重命名工作区',
|
||
'dialog.renameSession.title': '重命名会话',
|
||
'field.name': '名称',
|
||
'placeholder.workspaceName': '工作区名称',
|
||
'placeholder.sessionName': '会话名称',
|
||
'toast.settingsUnavailable': '当前平台无法打开设置窗口。',
|
||
'credentials.protectionUnavailable.title': '凭据保护不可用',
|
||
'credentials.protectionUnavailable.message': '当前设备无法自动解密已保存的密码和密钥。连接前请重新输入凭据。',
|
||
'credentials.protectionUnavailable.action': '打开设置',
|
||
|
||
// Settings shell
|
||
'settings.title': '设置',
|
||
'settings.tab.application': '应用',
|
||
'settings.tab.appearance': '外观',
|
||
'settings.tab.terminal': '终端',
|
||
'settings.tab.shortcuts': '快捷键',
|
||
'settings.tab.syncCloud': '同步与云',
|
||
'settings.tab.system': '系统',
|
||
|
||
// Settings > System
|
||
'settings.system.title': '系统',
|
||
'settings.system.description': '系统信息与临时文件管理。',
|
||
'settings.system.tempDirectory': '临时文件',
|
||
'settings.system.location': '位置',
|
||
'settings.system.fileCount': '文件数量',
|
||
'settings.system.totalSize': '占用空间',
|
||
'settings.system.openFolder': '打开文件夹',
|
||
'settings.system.refresh': '刷新',
|
||
'settings.system.clearTempFiles': '清理临时文件',
|
||
'settings.system.clearing': '清理中...',
|
||
'settings.system.clearResult': '已删除 {deleted} 个文件,{failed} 个失败。',
|
||
'settings.system.tempDirectoryHint': '临时文件在使用外部应用打开远程文件时创建。SFTP 会话关闭时会自动清理。',
|
||
'settings.system.credentials.title': '凭据保护',
|
||
'settings.system.credentials.status': '状态',
|
||
'settings.system.credentials.checking': '检查中...',
|
||
'settings.system.credentials.available': '可用(系统钥匙串正常)',
|
||
'settings.system.credentials.unavailable': '不可用(无法解密已保存凭据)',
|
||
'settings.system.credentials.unknown': '未知(当前环境不支持)',
|
||
'settings.system.credentials.unavailableHint': '在其他用户或机器上加密的凭据无法在此处解密。请在当前设备重新输入并保存凭据。',
|
||
'settings.system.credentials.portabilityHint': '云同步可跨设备,因为使用主密钥加密;本地 safeStorage 加密仅绑定当前系统用户/设备。',
|
||
|
||
// Settings > System > Crash Logs
|
||
'settings.system.crashLogs.title': '崩溃日志',
|
||
'settings.system.crashLogs.description': '查看主进程错误日志,帮助诊断异常行为。',
|
||
'settings.system.crashLogs.noLogs': '未找到崩溃日志。',
|
||
'settings.system.crashLogs.entries': '{count} 条记录',
|
||
'settings.system.crashLogs.clear': '清除所有日志',
|
||
'settings.system.crashLogs.cleared': '已清除 {count} 个日志文件。',
|
||
'settings.system.crashLogs.source': '来源',
|
||
'settings.system.crashLogs.time': '时间',
|
||
'settings.system.crashLogs.message': '消息',
|
||
'settings.system.crashLogs.stack': '堆栈跟踪',
|
||
'settings.system.crashLogs.hint': '崩溃日志保留 30 天,超期自动清理。',
|
||
'settings.system.crashLogs.collapse': '收起',
|
||
'settings.system.crashLogs.expand': '查看详情',
|
||
|
||
// Settings > System > Software Update
|
||
'settings.update.title': '软件更新',
|
||
'settings.update.currentVersion': '当前版本',
|
||
'settings.update.checkForUpdates': '检查更新',
|
||
'settings.update.checking': '检查中...',
|
||
'settings.update.upToDate': '当前已是最新版本。',
|
||
'settings.update.available': '新版本 {version} 已发布。',
|
||
'settings.update.download': '下载更新',
|
||
'settings.update.downloading': '正在下载... {percent}%',
|
||
'settings.update.readyToInstall': '更新已下载,准备安装。',
|
||
'settings.update.restartNow': '重启并更新',
|
||
'settings.update.error': '检查更新失败。',
|
||
'settings.update.downloadError': '下载失败。',
|
||
'settings.update.manualDownload': '前往 GitHub 下载',
|
||
'settings.update.manualDownloadHint': '当前平台不支持自动更新,请前往 GitHub 下载最新版本。',
|
||
'settings.update.hint': 'Netcatty 从 GitHub Releases 检查更新。',
|
||
'settings.update.lastCheckedJustNow': '刚刚',
|
||
'settings.update.lastCheckedMinutesAgo': '{n} 分钟前',
|
||
'settings.update.lastCheckedHoursAgo': '{n} 小时前',
|
||
'settings.update.lastCheckedPrefix': '上次检查:',
|
||
'settings.update.autoUpdateEnabled': '自动更新',
|
||
'settings.update.autoUpdateEnabledDesc': '有新版本时自动检查并下载更新。',
|
||
|
||
// Settings > Session Logs
|
||
'settings.sessionLogs.title': '会话日志',
|
||
'settings.sessionLogs.description': '配置会话日志导出和自动保存设置。',
|
||
'settings.sessionLogs.autoSave': '自动保存',
|
||
'settings.sessionLogs.enableAutoSave': '启用自动保存',
|
||
'settings.sessionLogs.enableAutoSaveDesc': '在终端会话结束时自动保存会话日志。',
|
||
'settings.sessionLogs.directory': '保存目录',
|
||
'settings.sessionLogs.noDirectory': '未选择目录',
|
||
'settings.sessionLogs.browse': '浏览',
|
||
'settings.sessionLogs.openFolder': '打开文件夹',
|
||
'settings.sessionLogs.directoryHint': '日志将按主机名组织在子目录中。',
|
||
'settings.sessionLogs.format': '日志格式',
|
||
'settings.sessionLogs.formatDesc': '选择保存日志文件的格式。',
|
||
'settings.sessionLogs.formatTxt': '纯文本 (.txt)',
|
||
'settings.sessionLogs.formatRaw': '原始格式 (.log)',
|
||
'settings.sessionLogs.formatHtml': 'HTML (.html)',
|
||
'settings.sessionLogs.hint': '会话日志用于记录终端输出,便于故障排查和审计。',
|
||
|
||
// Settings > Global Hotkey (Quake Mode)
|
||
'settings.globalHotkey.title': '全局快捷键',
|
||
'settings.globalHotkey.toggleWindow': '切换窗口',
|
||
'settings.globalHotkey.toggleWindowDesc': '按下组合键以设置显示/隐藏窗口的全局快捷键。',
|
||
'settings.globalHotkey.notSet': '未设置',
|
||
'settings.globalHotkey.reset': '恢复默认',
|
||
'settings.globalHotkey.closeToTray': '关闭时最小化到托盘',
|
||
'settings.globalHotkey.closeToTrayDesc': '启用后,关闭窗口将最小化到系统托盘而不是退出程序。',
|
||
'settings.globalHotkey.enabled': '启用全局快捷键',
|
||
'settings.globalHotkey.enabledDesc': '注册系统级键盘快捷键。禁用后将取消所有全局快捷键注册。',
|
||
'settings.globalHotkey.hint': '全局快捷键在系统范围内工作,可快速显示或隐藏窗口(下拉式终端风格)。',
|
||
|
||
// Tray Panel
|
||
'tray.openMainWindow': '打开主窗口',
|
||
'tray.sessions': '会话',
|
||
'tray.portForwarding': '端口转发',
|
||
'tray.status.connected': '已连接',
|
||
'tray.status.connecting': '连接中',
|
||
'tray.status.disconnected': '已断开',
|
||
'tray.status.active': '已启用',
|
||
'tray.status.inactive': '未启用',
|
||
'tray.status.error': '错误',
|
||
'tray.recentHosts': '最近连接的主机',
|
||
'tray.empty.title': '一切都很安静',
|
||
'tray.empty.subtitle': '去连接个服务器吧,它们想念你了 🚀',
|
||
'tray.quit': '退出 Netcatty',
|
||
|
||
// Vault Sidebar
|
||
'vault.sidebar.collapse': '收起侧边栏',
|
||
'vault.sidebar.expand': '展开侧边栏',
|
||
|
||
// Settings > Application
|
||
'settings.application.checkUpdates': '检查更新',
|
||
'settings.application.reportProblem': '反馈问题',
|
||
'settings.application.reportProblem.subtitle': '生成预填的 GitHub issue',
|
||
'settings.application.community': '社区',
|
||
'settings.application.community.subtitle': 'GitHub Discussions',
|
||
'settings.application.github': 'GitHub',
|
||
'settings.application.github.subtitle': '源代码',
|
||
'settings.application.whatsNew': '更新内容',
|
||
'settings.application.whatsNew.subtitle': '查看发布说明',
|
||
'settings.vault.title': '主机库',
|
||
'settings.vault.showRecentHosts': '显示最近连接的主机',
|
||
'settings.vault.showRecentHostsDesc': '在主机列表顶部显示最近连接过的主机',
|
||
|
||
// Update notifications
|
||
'update.available.title': '发现新版本',
|
||
'update.available.message': '新版本 {version} 已发布,点击前往下载。',
|
||
'update.checking': '正在检查更新...',
|
||
'update.upToDate.title': '已是最新版本',
|
||
'update.upToDate.message': '当前版本 ({version}) 已是最新。',
|
||
'update.error': '检查更新失败',
|
||
'update.downloadNow': '立即下载',
|
||
'update.viewInSettings': '在设置中查看',
|
||
'update.readyToInstall.title': '更新已就绪',
|
||
'update.readyToInstall.message': '版本 {version} 已下载完成,准备安装。',
|
||
'update.restartNow': '立即重启',
|
||
'update.downloadFailed.title': '更新失败',
|
||
'update.downloadFailed.message': '下载更新失败,可前往 GitHub 手动下载。',
|
||
'update.openReleases': '打开 Releases',
|
||
'update.remindLater': '稍后提醒',
|
||
'update.skipVersion': '跳过此版本',
|
||
|
||
// Settings > Appearance
|
||
'settings.appearance.uiTheme': '界面主题',
|
||
'settings.appearance.theme': '主题',
|
||
'settings.appearance.theme.desc': '选择浅色、深色或跟随系统设置',
|
||
'settings.appearance.theme.light': '浅色',
|
||
'settings.appearance.theme.dark': '深色',
|
||
'settings.appearance.theme.system': '系统',
|
||
'settings.appearance.accentColor': '强调色',
|
||
'settings.appearance.customColor': '自定义颜色',
|
||
'settings.appearance.accentColor.mode': '使用自定义强调色',
|
||
'settings.appearance.accentColor.mode.desc': '覆盖主题自带的强调色',
|
||
'settings.appearance.accentColor.custom': '自定义强调色',
|
||
'settings.appearance.themeColor': '主题色',
|
||
'settings.appearance.themeColor.desc': '为浅色与深色主题选择预设配色',
|
||
'settings.appearance.themeColor.light': '浅色主题',
|
||
'settings.appearance.themeColor.dark': '深色主题',
|
||
'settings.appearance.customCss': '自定义 CSS',
|
||
'settings.appearance.customCss.desc': '使用自定义 CSS 个性化界面,修改会立即生效。',
|
||
'settings.appearance.customCss.placeholder':
|
||
'/* 示例:*/\n.terminal { background: #1a1a2e !important; }\n:root { --radius: 0.25rem; }',
|
||
'settings.appearance.language': '语言',
|
||
'settings.appearance.language.desc': '选择界面语言',
|
||
'settings.appearance.uiFont': '界面字体',
|
||
'settings.appearance.uiFont.desc': '选择软件界面使用的字体',
|
||
|
||
// Context menus / common actions
|
||
'action.newHost': '新建主机',
|
||
'action.newSubfolder': '新建文件夹',
|
||
'action.copyPublicKey': '复制公钥',
|
||
'action.keyExport': '导出密钥',
|
||
'action.edit': '编辑',
|
||
'action.delete': '删除',
|
||
'action.remove': '移除',
|
||
'action.convertToHost': '转换为主机',
|
||
|
||
// Sync
|
||
'sync.cloudSync': '云同步',
|
||
'sync.settings': '同步设置',
|
||
'sync.active': '云同步已启用',
|
||
'sync.syncing': '正在同步…',
|
||
'sync.error': '同步错误',
|
||
'sync.notConfigured': '未配置',
|
||
'sync.failed': '同步失败',
|
||
'sync.connected': '已连接',
|
||
'sync.syncNow': '立即同步',
|
||
'sync.recentActivity': '最近活动',
|
||
'sync.history.uploaded': '已 Upload',
|
||
'sync.history.downloaded': '已 Download',
|
||
'sync.history.resolved': '已处理',
|
||
'sync.toast.completedMessage': '同步完成',
|
||
'sync.toast.errorTitle': '同步错误',
|
||
'sync.autoSync.failedTitle': '同步失败',
|
||
'sync.autoSync.syncedTitle': '已从云端同步',
|
||
'sync.autoSync.syncedMessage': '你的数据已从云端更新。',
|
||
'sync.autoSync.noProvider': '未连接云同步 provider。请打开 设置 → Sync & Cloud 进行连接。',
|
||
'sync.autoSync.alreadySyncing': '同步正在进行中。',
|
||
'sync.autoSync.vaultLocked': 'Vault 处于锁定状态。请打开 设置 → Sync & Cloud 解锁。',
|
||
'sync.autoSync.conflictDetected': '检测到同步冲突。请打开 设置 → Sync & Cloud 处理。',
|
||
'sync.autoSync.syncFailed': '同步失败',
|
||
'sync.credentialsUnavailable': '当前设备无法解密部分已保存凭据。请先在本地重新输入凭据后再同步。',
|
||
'time.never': '从未',
|
||
'time.justNow': '刚刚',
|
||
'time.minutesAgo': '{minutes} 分钟前',
|
||
|
||
// Vault navigation
|
||
'vault.nav.hosts': '主机',
|
||
'vault.nav.keychain': '钥匙串',
|
||
'vault.nav.portForwarding': '端口转发',
|
||
'vault.nav.snippets': '代码片段',
|
||
'vault.nav.knownHosts': '已知主机',
|
||
'vault.nav.logs': '日志',
|
||
|
||
'vault.groups.title': '分组',
|
||
'vault.groups.total': '共 {count} 个',
|
||
'vault.groups.hostsCount': '{count} 台主机',
|
||
'vault.groups.newSubgroup': '新建子分组',
|
||
'vault.groups.rename': '重命名分组',
|
||
'vault.groups.delete': '删除分组',
|
||
'vault.groups.createSubfolder': '创建子分组',
|
||
'vault.groups.createRoot': '创建根分组',
|
||
'vault.groups.createDialog.desc': '创建新的分组用于组织主机。',
|
||
'vault.groups.renameDialogTitle': '重命名分组',
|
||
'vault.groups.renameDialog.desc': '重命名已有分组。',
|
||
'vault.groups.deleteDialogTitle': '删除分组',
|
||
'vault.groups.deleteDialog.desc': '这将永久删除该分组并将所有主机移动到根级别。',
|
||
'vault.groups.deleteDialog.managedDesc': '这是一个托管的 SSH config 分组。删除后将同时删除所有主机并断开与源文件的连接。',
|
||
'vault.groups.deleteDialog.deleteHosts': '同时删除该分组下的所有主机',
|
||
'vault.groups.ungrouped': '未分组',
|
||
'vault.groups.field.name': '分组名称',
|
||
'vault.groups.placeholder.example': '例如:Production',
|
||
'vault.groups.parentLabel': '父级',
|
||
'vault.groups.pathLabel': '路径',
|
||
'vault.groups.settings': '分组设置',
|
||
'vault.groups.details': '分组详情',
|
||
'vault.groups.details.general': '常规',
|
||
'vault.groups.details.ssh': 'SSH',
|
||
'vault.groups.details.telnet': 'Telnet',
|
||
'vault.groups.details.advanced': '高级',
|
||
'vault.groups.details.appearance': '外观',
|
||
'vault.groups.details.mosh': 'Mosh',
|
||
'vault.groups.details.parentGroup': '父分组',
|
||
'vault.groups.details.none': '无',
|
||
'vault.groups.details.inherited': '继承自分组',
|
||
'vault.groups.details.addProtocol': '添加协议',
|
||
'vault.groups.details.removeProtocol': '移除协议',
|
||
'vault.groups.details.fontFamily': '字体',
|
||
'vault.groups.details.fontSize': '字号',
|
||
'vault.groups.errors.required': '分组名称不能为空。',
|
||
'vault.groups.errors.invalidChars': "分组名称不能包含 '/' 或 '\\\\'.",
|
||
'vault.groups.errors.duplicatePath': '该位置已存在同名分组。',
|
||
|
||
'vault.managedSource.unmanage': '取消托管',
|
||
'vault.managedSource.unmanageSuccess': '已取消托管分组',
|
||
|
||
'vault.hosts.header.entries': '{count} 条',
|
||
'vault.hosts.header.live': '{count} 个在线',
|
||
|
||
// Vault hosts header/actions
|
||
'vault.hosts.search.placeholder': '查找主机或 ssh user@hostname / ssh -p 2222 user@hostname…',
|
||
'vault.hosts.connect': '连接',
|
||
'vault.view.grid': '网格',
|
||
'vault.view.list': '列表',
|
||
'vault.view.tree': '树形',
|
||
'vault.tree.expandAll': '展开全部',
|
||
'vault.tree.collapseAll': '折叠全部',
|
||
'vault.hosts.newHost': '新建主机',
|
||
'vault.hosts.newGroup': '新建分组',
|
||
'vault.hosts.import': '导入',
|
||
'vault.hosts.export': '导出',
|
||
'vault.hosts.export.toast.success': '已导出 {count} 个主机到 CSV',
|
||
'vault.hosts.export.toast.successWithSkipped': '已导出 {count} 个主机到 CSV(跳过 {skipped} 个不支持的主机)',
|
||
'vault.hosts.export.toast.noHosts': '没有主机可导出',
|
||
'vault.hosts.allHosts': '全部主机',
|
||
'vault.hosts.pinned': '已置顶',
|
||
'vault.hosts.recentlyConnected': '最近连接',
|
||
'vault.hosts.pinToTop': '置顶',
|
||
'vault.hosts.unpin': '取消置顶',
|
||
'vault.hosts.copyCredentials': '复制账密信息',
|
||
'vault.hosts.copyCredentials.toast.success': '账密信息已复制到剪贴板',
|
||
'vault.hosts.copyCredentials.toast.noPassword': '该主机未保存密码',
|
||
'vault.hosts.multiSelect': '多选',
|
||
'vault.hosts.selected': '已选择 {count} 项',
|
||
'vault.hosts.selectAll': '全选',
|
||
'vault.hosts.deselectAll': '取消全选',
|
||
'vault.hosts.deleteSelected': '删除 ({count})',
|
||
'vault.hosts.deleteMultiple.success': '已删除 {count} 个主机',
|
||
'vault.hosts.moveToGroup.success': '已将 {host} 移动到 {group}',
|
||
'vault.hosts.empty.title': '设置你的主机',
|
||
'vault.hosts.empty.desc': '保存主机以快速连接到你的服务器、虚拟机和容器。',
|
||
|
||
// Vault import
|
||
'vault.import.title': '添加数据到你的 Vault',
|
||
'vault.import.desc': '从常见工具迁移连接信息。选择一种格式开始导入。',
|
||
'vault.import.chooseFormat': '选择文件格式',
|
||
'vault.import.csv.tip': '批量导入:可使用 CSV 模板填写后导入。',
|
||
'vault.import.csv.downloadTemplate': '下载 CSV 模板',
|
||
'vault.import.toast.start': '正在从 {format} 导入...',
|
||
'vault.import.toast.completedTitle': '导入完成',
|
||
'vault.import.toast.failedTitle': '导入失败',
|
||
'vault.import.toast.noEntries': '{format} 文件中没有可导入的条目。',
|
||
'vault.import.toast.noNewHosts': '从 {format} 没有导入到新的主机。',
|
||
'vault.import.toast.summary': '已导入 {count} 个主机(跳过 {skipped},重复 {duplicates})。',
|
||
'vault.import.toast.firstIssue': '首个问题:{issue}',
|
||
'vault.import.sshConfig.chooseMode': '选择如何导入你的 SSH config 文件。',
|
||
'vault.import.sshConfig.modeQuestion': '你希望如何导入?',
|
||
'vault.import.sshConfig.importOnly': '仅导入',
|
||
'vault.import.sshConfig.importOnlyDesc': '一次性导入,修改不会同步回文件。',
|
||
'vault.import.sshConfig.managed': '托管同步',
|
||
'vault.import.sshConfig.managedDesc': '保持同步,修改会自动保存回文件。',
|
||
'vault.import.sshConfig.managedGroup': 'ssh config',
|
||
'vault.import.sshConfig.managedSuccess': '已导入 {count} 个主机,文件已托管。',
|
||
'vault.import.sshConfig.alreadyManaged': '该文件已被托管。',
|
||
'vault.import.sshConfig.alreadyManagedDesc': '该文件已在分组 "{group}" 下托管。如需重新导入,请先移除现有的托管源。',
|
||
'vault.import.sshConfig.noFilePath': '无法托管此文件。',
|
||
'vault.import.sshConfig.noFilePathDesc': '无法确定文件路径。托管同步需要访问文件系统。',
|
||
|
||
// Known Hosts
|
||
'knownHosts.search.placeholder': '搜索已知主机...',
|
||
'knownHosts.action.scanSystem': '扫描系统',
|
||
'knownHosts.action.importFile': '导入文件',
|
||
'knownHosts.action.browseFile': '浏览文件',
|
||
'knownHosts.empty.title': '暂无已知主机',
|
||
'knownHosts.empty.desc':
|
||
'Known Hosts 是你之前连接过的 SSH server。导入系统的 known_hosts 文件以开始。',
|
||
'knownHosts.results.showingLimited': '显示 {shown}/{total} 个主机。使用搜索查找特定主机。',
|
||
'knownHosts.toast.scanUnavailable': '当前平台无法扫描系统 known_hosts。',
|
||
'knownHosts.toast.scanNoFile': '未找到系统 known_hosts 文件。',
|
||
'knownHosts.toast.scanNoEntries': 'known_hosts 中没有可用条目。',
|
||
'knownHosts.toast.scanImported': '已导入 {count} 个新主机。',
|
||
'knownHosts.toast.scanNoNew': '没有发现新的主机。',
|
||
'knownHosts.toast.scanFailed': '扫描系统 known_hosts 失败。',
|
||
|
||
// Port Forwarding
|
||
'pf.empty.title': '配置端口转发规则',
|
||
'pf.empty.desc': '保存端口转发规则,用于访问数据库、Web 应用等服务。',
|
||
'pf.title': '端口转发规则',
|
||
'pf.rulesCount': '{count} 条规则',
|
||
'pf.wizard.editTitle': '编辑端口转发规则',
|
||
'pf.wizard.newTitle': '新建端口转发规则',
|
||
'pf.wizard.saveChanges': '保存修改',
|
||
'pf.wizard.done': '完成',
|
||
'pf.wizard.continue': '继续',
|
||
'pf.wizard.cancel': '取消',
|
||
'pf.wizard.skipWizard': '跳过向导',
|
||
'pf.error.hostNotFound': '未找到主机',
|
||
'pf.toast.titleWithLabel': '端口转发规则: {label}',
|
||
'pf.type.local': '本地转发',
|
||
'pf.type.remote': '远程转发',
|
||
'pf.type.dynamic': '动态转发',
|
||
'pf.type.menu.local': '本地转发',
|
||
'pf.type.menu.remote': '远程转发',
|
||
'pf.type.menu.dynamic': '动态转发',
|
||
'pf.type.local.desc': '本地转发让你像访问本地一样访问远程服务端口。',
|
||
'pf.type.remote.desc': '远程转发在远端开启端口,并将连接转发到本地(当前)主机。',
|
||
'pf.type.dynamic.desc': '动态转发将 Netcatty 作为 SOCKS 代理使用。',
|
||
'pf.wizard.type.title': '选择端口转发类型:',
|
||
'pf.wizard.localConfig.title': '设置本地端口与绑定地址:',
|
||
'pf.wizard.localConfig.desc': '该端口会在本地(当前设备)打开,并接收流量。',
|
||
'pf.wizard.localConfig.localPort': '本地端口 *',
|
||
'pf.wizard.bindAddress': '绑定地址',
|
||
'pf.wizard.remoteHost.title': '选择远端主机:',
|
||
'pf.wizard.remoteHost.desc': '选择要打开端口的远端主机。该端口的流量将转发到目标地址。',
|
||
'pf.wizard.remoteConfig.title': '设置端口与绑定地址:',
|
||
'pf.wizard.remoteConfig.desc': '将从所选主机的指定端口与网卡地址转发流量。',
|
||
'pf.wizard.remoteConfig.remotePort': '远端端口 *',
|
||
'pf.wizard.destination.title': '设置目标地址:',
|
||
'pf.wizard.destination.desc.local': '输入你希望通过 tunnel 访问的远端目标地址。',
|
||
'pf.wizard.destination.desc.remote': '要转发流量到的目标地址与端口。',
|
||
'pf.wizard.destination.address': '目标地址 *',
|
||
'pf.wizard.destination.addressPlaceholder': '例如:127.0.0.1 或 192.168.1.100',
|
||
'pf.wizard.destination.port': '目标端口 *',
|
||
'pf.wizard.sshServer.title': '选择 SSH server:',
|
||
'pf.wizard.sshServer.desc.dynamic': '选择作为 SOCKS proxy 的 SSH server。',
|
||
'pf.wizard.sshServer.desc.default': '选择用于将流量 tunnel 到目标地址的 SSH server。',
|
||
'pf.wizard.label.title': '设置 Label:',
|
||
'pf.wizard.label.placeholder.dynamic': '例如:SOCKS Proxy',
|
||
'pf.wizard.label.placeholder.default': '例如:MySQL Production',
|
||
'pf.wizard.label.placeholder.remoteRule': '例如:Remote Rule',
|
||
'pf.wizard.placeholders.portExample': '例如:{port}',
|
||
|
||
// SFTP
|
||
'sftp.newFolder': '新建文件夹',
|
||
'sftp.newFile': '新建文件',
|
||
'sftp.filter': '筛选',
|
||
'sftp.filter.placeholder': '按文件名筛选...',
|
||
'sftp.bookmark.add': '收藏此路径',
|
||
'sftp.bookmark.remove': '取消收藏',
|
||
'sftp.bookmark.addGlobal': '+全局',
|
||
'sftp.bookmark.addGlobalTooltip': '保存为全局收藏(所有主机共享)',
|
||
'sftp.bookmark.empty': '暂无收藏路径',
|
||
'sftp.columns.name': '名称',
|
||
'sftp.columns.modified': '修改时间',
|
||
'sftp.columns.size': '大小',
|
||
'sftp.columns.kind': '类型',
|
||
'sftp.columns.actions': '操作',
|
||
'sftp.emptyDirectory': '空目录',
|
||
'sftp.nav.up': '返回上层',
|
||
'sftp.nav.home': '返回主目录',
|
||
'sftp.nav.refresh': '刷新',
|
||
'sftp.upload': '上传',
|
||
'sftp.uploadFiles': '上传文件',
|
||
'sftp.uploadFolder': '上传文件夹',
|
||
'sftp.dragDropToUpload': '拖拽文件到这里上传',
|
||
'sftp.retry': '重试',
|
||
'sftp.context.open': '打开',
|
||
'sftp.context.navigateTo': '跳转到这里',
|
||
'sftp.context.moveTo': '移动到...',
|
||
'sftp.context.moveToParent': '移动到上级目录',
|
||
'sftp.moveTo.title': '移动到目录',
|
||
'sftp.moveTo.placeholder': '输入目标目录路径',
|
||
'sftp.moveTo.confirm': '移动',
|
||
'sftp.moveTo.pathNotFound': '目录不存在或无法访问',
|
||
'sftp.context.download': '下载',
|
||
'sftp.context.copyToOtherPane': '复制到另一侧',
|
||
'sftp.viewMode.label': '视图模式',
|
||
'sftp.viewMode.list': '列表视图',
|
||
'sftp.viewMode.tree': '树形视图',
|
||
'sftp.tree.loadError': '加载目录失败',
|
||
'sftp.tree.loading': '加载中...',
|
||
'sftp.kind.folder': '文件夹',
|
||
'sftp.context.rename': '重命名',
|
||
'sftp.context.permissions': '权限',
|
||
'sftp.context.delete': '删除',
|
||
'sftp.context.refresh': '刷新',
|
||
'sftp.context.downloadSelected': '下载选中项({count})',
|
||
'sftp.context.deleteSelected': '删除选中项({count})',
|
||
'sftp.dropFilesHere': '拖拽文件到这里',
|
||
'sftp.itemsCount': '{count} 个项目',
|
||
'sftp.selectedCount': '已选 {count} 个',
|
||
'sftp.path.doubleClickToEdit': '双击编辑路径',
|
||
'sftp.showHiddenPaths': '隐藏的路径',
|
||
'sftp.task.waiting': '等待中...',
|
||
'sftp.transfer.preparing': '准备中...',
|
||
'sftp.status.loading': '加载中...',
|
||
'sftp.status.uploading': '上传中...',
|
||
'sftp.status.ready': '就绪',
|
||
'sftp.transfers': '传输',
|
||
'sftp.transfers.active': '{count} 个进行中',
|
||
'sftp.transfers.clearCompleted': '清除已完成',
|
||
'sftp.transfers.calculatingTotal': '正在统计总大小...',
|
||
'sftp.transfers.filesCount': '{count} 个文件',
|
||
'sftp.transfers.filesProgress': '{current}/{total} 个文件',
|
||
'sftp.transfers.expandChildren': '展开文件',
|
||
'sftp.transfers.collapseChildren': '收起文件',
|
||
'sftp.transfers.expandChildList': '展开详情',
|
||
'sftp.transfers.collapseChildList': '收起',
|
||
'sftp.transfers.dragToResize': '拖拽调整高度',
|
||
'sftp.goUp': '上一级',
|
||
'sftp.goToTerminalCwd': '定位到终端当前目录',
|
||
'sftp.encoding.label': '文件名编码',
|
||
'sftp.encoding.auto': '自动',
|
||
'sftp.encoding.utf8': 'UTF-8',
|
||
'sftp.encoding.gb18030': 'GB18030',
|
||
'sftp.goHome': '返回主目录',
|
||
'sftp.folderName': '文件夹名称',
|
||
'sftp.folderName.placeholder': '输入文件夹名称',
|
||
'sftp.fileName': '文件名称',
|
||
'sftp.fileName.placeholder': '输入文件名称',
|
||
'sftp.prompt.newFolderName': '新建文件夹名称?',
|
||
'sftp.rename.title': '重命名',
|
||
'sftp.rename.newName': '新名称',
|
||
'sftp.rename.placeholder': '输入新名称',
|
||
'sftp.confirm.deleteOne': '删除 "{name}"?',
|
||
'sftp.deleteConfirm.single': '删除 "{name}"?',
|
||
'sftp.deleteConfirm.title': '删除 {count} 个项目?',
|
||
'sftp.deleteConfirm.desc': '此操作不可撤销,将删除以下内容:',
|
||
'sftp.deleteConfirm.descSingle': '此操作不可撤销。',
|
||
'sftp.deleteConfirm.host': '主机',
|
||
'sftp.deleteConfirm.path': '路径',
|
||
'sftp.error.loadFailed': '加载目录失败',
|
||
'sftp.error.downloadFailed': '下载失败',
|
||
'sftp.error.uploadFailed': '上传失败',
|
||
'sftp.error.deleteFailed': '删除失败',
|
||
'sftp.error.createFolderFailed': '创建文件夹失败',
|
||
'sftp.error.createFileFailed': '创建文件失败',
|
||
'sftp.error.invalidFileName': '文件名包含非法字符:{chars}',
|
||
'sftp.error.reservedName': '此文件名是系统保留名称',
|
||
'sftp.overwrite.title': '文件已存在',
|
||
'sftp.overwrite.desc': '名为"{name}"的文件已存在。是否要替换它?',
|
||
'sftp.overwrite.confirm': '替换',
|
||
'sftp.error.renameFailed': '重命名失败',
|
||
'sftp.picker.title': '选择主机',
|
||
'sftp.picker.desc': '为{side}窗格选择主机',
|
||
'sftp.picker.searchPlaceholder': '搜索主机...',
|
||
'sftp.picker.local.title': '本地文件系统',
|
||
'sftp.picker.local.desc': '浏览本地文件',
|
||
'sftp.picker.local.badge': '本地',
|
||
'sftp.picker.noMatch': '没有匹配的主机',
|
||
'sftp.permissions.title': '编辑权限',
|
||
'sftp.permissions.owner': '所有者',
|
||
'sftp.permissions.group': '群组',
|
||
'sftp.permissions.others': '其他',
|
||
'sftp.permissions.octal': '八进制',
|
||
'sftp.permissions.symbolic': '符号',
|
||
'sftp.permissions.success': '权限已更新',
|
||
'sftp.permissions.failed': '权限更新失败',
|
||
|
||
// Quick Switcher
|
||
'qs.search.placeholder': '搜索主机或标签页',
|
||
'qs.jumpTo': '跳转到',
|
||
'qs.localTerminal': '本地终端',
|
||
'qs.localShells': '本地 Shell',
|
||
'qs.default': '默认',
|
||
|
||
// Select Host panel
|
||
'selectHost.title': '选择主机',
|
||
'selectHost.noHostsFound': '未找到主机',
|
||
'selectHost.newHost': '新建主机',
|
||
'selectHost.continue': '继续',
|
||
'selectHost.continueWithCount': '继续(已选 {count} 个)',
|
||
|
||
// Quick Connect
|
||
'quickConnect.knownHost.title': '确认要连接吗?',
|
||
'quickConnect.knownHost.authenticity': '无法验证 {hostname} 的真实性。',
|
||
'quickConnect.knownHost.fingerprintLabel': '{keyType} fingerprint (SHA256):',
|
||
'quickConnect.knownHost.addQuestion': '是否将它加入 Known Hosts?',
|
||
'quickConnect.knownHost.addAndContinue': '加入并继续',
|
||
'quickConnect.addKey': '添加 key',
|
||
'quickConnect.warning.unparsedOptions': '部分 SSH 参数已被忽略: {options}',
|
||
|
||
// Protocol select dialog
|
||
'protocolSelect.chooseProtocol': '选择协议',
|
||
'protocolSelect.port': '端口:',
|
||
// Host Details
|
||
'hostDetails.title.details': '主机详情',
|
||
'hostDetails.title.new': '新建主机',
|
||
'hostDetails.saveAria': '保存',
|
||
'hostDetails.section.address': '地址',
|
||
'hostDetails.hostname.placeholder': 'IP 或 主机名',
|
||
'hostDetails.section.general': '通用',
|
||
'hostDetails.section.sftp': 'SFTP 设置',
|
||
'hostDetails.sftp.sudo': 'Sudo 提权模式',
|
||
'hostDetails.sftp.sudo.desc': '使用保存的密码自动获取 Root 权限',
|
||
'hostDetails.sftp.sudo.passwordWarning': 'Sudo 模式需要密码。请在上方配置密码,或确保服务器允许免密 sudo。',
|
||
'hostDetails.sftp.encoding': '文件名编码',
|
||
'hostDetails.sftp.encoding.desc': '选择用于解码和发送 SFTP 文件名的编码。',
|
||
'hostDetails.label.placeholder': '名称(例如:Production Server)',
|
||
'hostDetails.group.placeholder': '父级 Group',
|
||
'hostDetails.section.credentials': '凭据',
|
||
'hostDetails.section.portCredentials': '端口与凭据',
|
||
'hostDetails.section.appearance': '外观',
|
||
'hostDetails.distro.title': 'Linux 发行版',
|
||
'hostDetails.distro.desc': '可在连接后自动探测,也可以手动覆盖图标所用的发行版。',
|
||
'hostDetails.distro.mode': '来源',
|
||
'hostDetails.distro.mode.auto': '自动探测',
|
||
'hostDetails.distro.mode.manual': '手动覆盖',
|
||
'hostDetails.distro.detectedLabel': '当前值',
|
||
'hostDetails.distro.manualLabel': '手动指定',
|
||
'hostDetails.distro.pending': '首次连接后自动探测',
|
||
'hostDetails.distro.unknown': '未知',
|
||
'hostDetails.distro.option.linux': '通用 Linux',
|
||
'hostDetails.distro.option.ubuntu': 'Ubuntu',
|
||
'hostDetails.distro.option.debian': 'Debian',
|
||
'hostDetails.distro.option.centos': 'CentOS',
|
||
'hostDetails.distro.option.rocky': 'Rocky Linux',
|
||
'hostDetails.distro.option.fedora': 'Fedora',
|
||
'hostDetails.distro.option.arch': 'Arch Linux',
|
||
'hostDetails.distro.option.alpine': 'Alpine',
|
||
'hostDetails.distro.option.amazon': 'Amazon Linux',
|
||
'hostDetails.distro.option.opensuse': 'openSUSE / SLES',
|
||
'hostDetails.distro.option.redhat': 'Red Hat / RHEL',
|
||
'hostDetails.distro.option.almalinux': 'AlmaLinux',
|
||
'hostDetails.distro.option.oracle': 'Oracle Linux',
|
||
'hostDetails.distro.option.kali': 'Kali Linux',
|
||
'hostDetails.section.mosh': 'Mosh',
|
||
'hostDetails.username.placeholder': '用户名',
|
||
'hostDetails.password.placeholder': '密码',
|
||
'hostDetails.password.show': '显示密码',
|
||
'hostDetails.password.hide': '隐藏密码',
|
||
'hostDetails.password.save': '保存密码',
|
||
'hostDetails.identity.suggestions': '身份',
|
||
'hostDetails.identity.missing': '身份不存在',
|
||
'hostDetails.credential.keyCertificate': '密钥 / 证书 / 本地密钥',
|
||
'hostDetails.credential.key': '密钥',
|
||
'hostDetails.credential.certificate': '证书',
|
||
'hostDetails.credential.localKeyFile': '本地密钥文件',
|
||
'hostDetails.credential.localKeyFilePlaceholder': '~/.ssh/id_ed25519',
|
||
'hostDetails.credential.browseKeyFile': '浏览…',
|
||
'hostDetails.credential.missing': '凭据不存在',
|
||
'hostDetails.keys.search': '搜索密钥…',
|
||
'hostDetails.keys.empty': '暂无密钥',
|
||
'hostDetails.certs.search': '搜索证书…',
|
||
'hostDetails.certs.empty': '暂无证书',
|
||
'hostDetails.agentForwarding': '转发 SSH 密钥',
|
||
'hostDetails.agentForwarding.desc': '允许远程服务器使用本地 SSH 密钥(例如用于 git 操作)',
|
||
'hostDetails.agentForwarding.agentNotRunning': 'SSH Agent 不可用',
|
||
'hostDetails.agentForwarding.agentNotRunningHint': '未检测到 SSH Agent。请启用 Windows OpenSSH Authentication Agent 服务,或使用兼容的 Agent(如 Bitwarden、1Password、gpg-agent)。',
|
||
'hostDetails.section.agentForwarding': 'SSH 代理',
|
||
'hostDetails.section.deviceType': '设备类型',
|
||
'hostDetails.deviceType': '网络设备模式',
|
||
'hostDetails.deviceType.desc': '适用于通过 SSH 连接的网络设备(交换机、路由器、防火墙)。命令将原样发送,不进行 Shell 包装,兼容华为 VRP、Cisco IOS 等厂商 CLI。',
|
||
'hostDetails.deviceType.warning': 'AI 代理命令将直接发送,无法获取退出码。仅建议在设备不运行标准 Shell 时启用。',
|
||
'hostDetails.section.legacyAlgorithms': '旧版算法',
|
||
'hostDetails.legacyAlgorithms': '允许旧版算法',
|
||
'hostDetails.legacyAlgorithms.desc': '启用已弃用的 SSH 算法(diffie-hellman-group1、ssh-dss、3des-cbc 等)以连接老旧网络设备。',
|
||
'hostDetails.legacyAlgorithms.warning': '这些算法存在已知安全漏洞,仅建议在老旧设备不支持现代加密时启用。',
|
||
'hostDetails.backspaceBehavior': 'Backspace 行为',
|
||
'hostDetails.backspaceBehavior.default': '默认',
|
||
'hostDetails.jumpHosts': '通过主机代理',
|
||
'hostDetails.jumpHosts.hops': '{count} 跳',
|
||
'hostDetails.jumpHosts.direct': '直连',
|
||
'hostDetails.jumpHosts.configure': '配置代理主机',
|
||
'hostDetails.proxy': '通过 HTTP/SOCKS5 代理',
|
||
'hostDetails.proxy.none': '无',
|
||
'hostDetails.proxy.edit': '编辑代理',
|
||
'hostDetails.proxy.configure': '配置代理',
|
||
'hostDetails.envVars': '环境变量',
|
||
'hostDetails.envVars.add': '添加环境变量',
|
||
'hostDetails.startupCommand': '启动命令',
|
||
'hostDetails.startupCommand.placeholder': '连接后执行的命令(例如:cd /app && ls)',
|
||
'hostDetails.startupCommand.help': 'SSH 连接建立后将自动执行该命令。',
|
||
'hostDetails.otherProtocols': '其他协议',
|
||
'hostDetails.telnetOn': 'Telnet on',
|
||
'hostDetails.port': '端口',
|
||
'hostDetails.telnet.credentials': '凭据',
|
||
'hostDetails.telnet.username': 'Telnet 用户名',
|
||
'hostDetails.telnet.password': 'Telnet 密码',
|
||
'hostDetails.charset.placeholder': '字符集(例如 UTF-8)',
|
||
'hostDetails.telnet.add': '添加 Telnet 协议',
|
||
'hostDetails.tags': '标签',
|
||
'hostDetails.group': '分组',
|
||
'hostDetails.selectGroup': '选择分组',
|
||
'hostDetails.addTag': '添加标签...',
|
||
'hostDetails.createTag': '创建标签',
|
||
'hostDetails.createGroup': '创建分组',
|
||
|
||
// Host form (legacy modal)
|
||
'hostForm.title.edit': '编辑主机',
|
||
'hostForm.title.new': '新建主机',
|
||
'hostForm.desc.edit': '更新该主机的连接信息',
|
||
'hostForm.desc.new': '创建一个新的 SSH 主机条目',
|
||
'hostForm.field.label': '名称',
|
||
'hostForm.placeholder.label': 'My Production Server',
|
||
'hostForm.field.hostname': 'Hostname / IP',
|
||
'hostForm.placeholder.hostname': '192.168.1.1',
|
||
'hostForm.field.port': '端口',
|
||
'hostForm.field.username': '用户名',
|
||
'hostForm.field.osType': '操作系统类型',
|
||
'hostForm.placeholder.selectOs': '选择操作系统',
|
||
'hostForm.field.group': '分组',
|
||
'hostForm.placeholder.group': '例如:AWS、DigitalOcean',
|
||
'hostForm.field.tags': '标签',
|
||
'hostForm.placeholder.addTag': '添加标签…',
|
||
'hostForm.auth.method': '认证方式',
|
||
'hostForm.auth.password': '密码',
|
||
'hostForm.auth.sshKey': 'SSH密钥',
|
||
'hostForm.auth.selectKey': '选择 SSH密钥',
|
||
'hostForm.auth.noKeys': '暂无密钥',
|
||
'hostForm.auth.noKeysHint': '钥匙串中未找到 SSH密钥,请先创建一个。',
|
||
'hostForm.saveHost': '保存主机',
|
||
|
||
// Connection logs
|
||
'logs.table.date': '日期',
|
||
'logs.table.user': '用户',
|
||
'logs.table.host': '主机',
|
||
'logs.table.saved': '收藏',
|
||
'logs.empty.title': '暂无连接日志',
|
||
'logs.empty.desc': '当你连接主机或打开本地终端后,这里会显示连接历史。',
|
||
'logs.loadMore': '加载更多 ({count} 条)',
|
||
'logs.ongoing': '进行中',
|
||
'logs.localTerminal': '本地终端',
|
||
'logs.action.save': '收藏',
|
||
'logs.action.unsave': '取消收藏',
|
||
'logs.action.delete': '删除',
|
||
|
||
// Log view
|
||
'logView.customizeAppearance': '自定义外观',
|
||
'logView.appearance': '外观',
|
||
'logView.readOnly': '只读',
|
||
'logView.export': '导出',
|
||
|
||
// Terminal toolbar / search / context menu / auth
|
||
'terminal.toolbar.openSftp': '打开 SFTP',
|
||
'terminal.toolbar.availableAfterConnect': '连接后可用',
|
||
'terminal.toolbar.sftp': 'SFTP',
|
||
'terminal.toolbar.scripts': '脚本',
|
||
'terminal.toolbar.library': '库',
|
||
'terminal.toolbar.noSnippets': '暂无代码片段',
|
||
'terminal.toolbar.terminalSettings': '终端设置',
|
||
'terminal.toolbar.searchTerminal': '搜索终端 (Ctrl+F)',
|
||
'terminal.toolbar.search': '搜索',
|
||
'terminal.toolbar.broadcast': '广播',
|
||
'terminal.toolbar.broadcastEnable': '启用广播模式',
|
||
'terminal.toolbar.broadcastDisable': '关闭广播模式',
|
||
'terminal.toolbar.composeBar': '撰写栏',
|
||
'terminal.composeBar.placeholder': '在此输入命令,按回车发送...',
|
||
'terminal.composeBar.send': '发送',
|
||
'terminal.composeBar.close': '关闭撰写栏',
|
||
'terminal.composeBar.broadcasting': '正在广播到所有会话',
|
||
'terminal.toolbar.focus': '聚焦',
|
||
'terminal.toolbar.focusMode': '聚焦模式',
|
||
'terminal.toolbar.encoding': '终端编码',
|
||
'terminal.toolbar.encoding.utf8': 'UTF-8',
|
||
'terminal.toolbar.encoding.gb18030': 'GB18030',
|
||
'terminal.toolbar.closeSession': '关闭会话',
|
||
'terminal.toolbar.hostHighlight.title': '主机关键字高亮',
|
||
'terminal.toolbar.hostHighlight.noRules': '此主机未定义自定义高亮规则',
|
||
'terminal.toolbar.hostHighlight.addRule': '添加新规则',
|
||
'terminal.toolbar.hostHighlight.labelPlaceholder': '标签(例如:错误)',
|
||
'terminal.toolbar.hostHighlight.patternPlaceholder': '正则表达式(例如:\\bfailed\\b)',
|
||
'terminal.toolbar.hostHighlight.invalidPattern': '无效的正则表达式',
|
||
'terminal.toolbar.hostHighlight.clearAll': '清除全部',
|
||
'terminal.toolbar.hostHighlight.changeColor': '更改高亮颜色',
|
||
'terminal.toolbar.hostHighlight.selectColor': '选择新规则的颜色',
|
||
'terminal.serverStats.cpu': 'CPU 使用率',
|
||
'terminal.serverStats.cpuCores': 'CPU 核心使用率',
|
||
'terminal.serverStats.memory': '内存使用',
|
||
'terminal.serverStats.memoryDetails': '内存详情',
|
||
'terminal.serverStats.memUsed': '已用',
|
||
'terminal.serverStats.memBuffers': '缓冲区',
|
||
'terminal.serverStats.memCached': '缓存',
|
||
'terminal.serverStats.memFree': '空闲',
|
||
'terminal.serverStats.swap': '交换空间',
|
||
'terminal.serverStats.swapUsed': '已用交换',
|
||
'terminal.serverStats.swapFree': '空闲交换',
|
||
'terminal.serverStats.swapTotal': '总计',
|
||
'terminal.serverStats.topProcesses': '内存占用前十进程',
|
||
'terminal.serverStats.disk': '磁盘使用(根分区)',
|
||
'terminal.serverStats.diskDetails': '已挂载磁盘',
|
||
'terminal.serverStats.network': '网络速度',
|
||
'terminal.serverStats.networkDetails': '网络接口',
|
||
'terminal.serverStats.noData': '暂无数据',
|
||
'terminal.dragDrop.localTitle': '拖放以插入路径',
|
||
'terminal.dragDrop.localMessage': '文件路径将被插入到终端',
|
||
'terminal.dragDrop.remoteTitle': '拖放以上传文件',
|
||
'terminal.dragDrop.remoteMessage': '文件将通过 SFTP 上传',
|
||
'terminal.dragDrop.notConnected': '无法拖放文件 - 终端未连接',
|
||
'terminal.dragDrop.errorTitle': '拖放错误',
|
||
'terminal.dragDrop.errorMessage': '处理拖放文件失败',
|
||
'terminal.search.placeholder': '搜索…',
|
||
'terminal.search.noResults': '无结果',
|
||
'terminal.search.prevMatch': '上一个匹配 (Shift+Enter)',
|
||
'terminal.search.nextMatch': '下一个匹配 (Enter)',
|
||
'terminal.menu.copy': '复制',
|
||
'terminal.menu.paste': '粘贴',
|
||
'terminal.menu.selectAll': '全选',
|
||
'terminal.menu.splitHorizontal': '水平分屏',
|
||
'terminal.menu.splitVertical': '垂直分屏',
|
||
'terminal.menu.clearBuffer': '清空缓冲区',
|
||
'terminal.menu.closeTerminal': '关闭终端',
|
||
'terminal.auth.password': '密码',
|
||
'terminal.auth.sshKey': 'SSH Key',
|
||
'terminal.auth.username': '用户名',
|
||
'terminal.auth.username.placeholder': 'root',
|
||
'terminal.auth.passwordLabel': '密码',
|
||
'terminal.auth.password.placeholder': '输入密码',
|
||
'terminal.auth.passphrase': '密码短语',
|
||
'terminal.auth.passphrase.placeholder': '可选:所选私钥的密码短语',
|
||
'terminal.auth.certificate': '证书',
|
||
'terminal.auth.selectKey': '选择密钥',
|
||
'terminal.auth.noKeysHint': '暂无密钥,请先在钥匙串中添加。',
|
||
'terminal.auth.continueSave': '继续并保存',
|
||
'terminal.auth.credentialsUnavailable': '当前设备无法解密已保存凭据,请重新输入并再次保存。',
|
||
'terminal.auth.jumpCredentialsUnavailable': '某个跳板机的已保存凭据无法在当前设备解密,请到主机设置中重新填写。',
|
||
'terminal.auth.proxyCredentialsUnavailable': '代理凭据无法在当前设备解密,请到主机设置中重新填写代理密码。',
|
||
'terminal.auth.keyUnavailableFallbackPassword': '已保存 SSH 密钥在当前设备不可用,改用密码认证。',
|
||
'terminal.connectionErrorTitle': '连接错误',
|
||
'terminal.progress.timeoutIn': '将在 {seconds}s 后超时',
|
||
'terminal.progress.disconnected': '已断开',
|
||
'terminal.progress.cancelling': '正在取消...',
|
||
'terminal.progress.startOver': '重新开始',
|
||
'terminal.connection.dismissDisconnectedDialog': '关闭断连提示',
|
||
'terminal.connection.chainOf': 'Chain {current} / {total}',
|
||
'terminal.connection.showLogs': '显示日志',
|
||
'terminal.connection.hideLogs': '隐藏日志',
|
||
'terminal.connection.protocol.ssh': 'SSH',
|
||
'terminal.connection.protocol.telnet': 'Telnet',
|
||
'terminal.connection.protocol.mosh': 'Mosh',
|
||
'terminal.connection.protocol.serial': '串口',
|
||
'terminal.connection.protocol.local': '本地终端',
|
||
'terminal.themeModal.title': 'Terminal 外观',
|
||
'terminal.themeModal.tab.theme': '主题',
|
||
'terminal.themeModal.tab.font': '字体',
|
||
'terminal.themeModal.tab.custom': '自定义',
|
||
'terminal.themeModal.globalTheme': '全局主题',
|
||
'terminal.themeModal.globalFont': '全局字体',
|
||
'terminal.themeModal.fontSize': '字体大小',
|
||
'terminal.themeModal.fontWeight': '字体粗细',
|
||
'terminal.themeModal.livePreview': '实时预览',
|
||
'terminal.themeModal.themeType': '{type} 主题',
|
||
|
||
// Custom Themes
|
||
'terminal.customTheme.section': '自定义主题',
|
||
'terminal.customTheme.yourThemes': '我的主题',
|
||
'terminal.customTheme.new': '新建主题',
|
||
'terminal.customTheme.newDesc': '克隆当前主题并自定义',
|
||
'terminal.customTheme.newTitle': '新建自定义主题',
|
||
'terminal.customTheme.editTitle': '编辑主题',
|
||
'terminal.customTheme.import': '导入 .itermcolors',
|
||
'terminal.customTheme.importDesc': '从 iTerm2 配色方案文件导入',
|
||
'terminal.customTheme.importError': '无法解析所选文件,请确保它是有效的 .itermcolors XML 文件。',
|
||
'terminal.customTheme.delete': '删除主题',
|
||
'terminal.customTheme.confirmDelete': '确认删除',
|
||
'terminal.customTheme.name': '名称',
|
||
'terminal.customTheme.namePlaceholder': '我的自定义主题',
|
||
'terminal.customTheme.type': '类型',
|
||
'terminal.customTheme.group.general': '通用',
|
||
'terminal.customTheme.group.normal': '标准色',
|
||
'terminal.customTheme.group.bright': '高亮色',
|
||
'terminal.customTheme.color.background': '背景',
|
||
'terminal.customTheme.color.foreground': '前景',
|
||
'terminal.customTheme.color.cursor': '光标',
|
||
'terminal.customTheme.color.selection': '选区',
|
||
'terminal.customTheme.color.black': '黑色',
|
||
'terminal.customTheme.color.red': '红色',
|
||
'terminal.customTheme.color.green': '绿色',
|
||
'terminal.customTheme.color.yellow': '黄色',
|
||
'terminal.customTheme.color.blue': '蓝色',
|
||
'terminal.customTheme.color.magenta': '品红',
|
||
'terminal.customTheme.color.cyan': '青色',
|
||
'terminal.customTheme.color.white': '白色',
|
||
'terminal.customTheme.color.brightBlack': '亮黑',
|
||
'terminal.customTheme.color.brightRed': '亮红',
|
||
'terminal.customTheme.color.brightGreen': '亮绿',
|
||
'terminal.customTheme.color.brightYellow': '亮黄',
|
||
'terminal.customTheme.color.brightBlue': '亮蓝',
|
||
'terminal.customTheme.color.brightMagenta': '亮品红',
|
||
'terminal.customTheme.color.brightCyan': '亮青色',
|
||
'terminal.customTheme.color.brightWhite': '亮白',
|
||
|
||
'cloudSync.gate.title': '端到端加密同步',
|
||
'cloudSync.gate.desc':
|
||
'数据会在本地加密后再同步,云端不会看到明文。设置主密钥以启用安全同步。',
|
||
'cloudSync.gate.masterKey': '主密钥',
|
||
'cloudSync.gate.confirmMasterKey': '确认主密钥',
|
||
'cloudSync.gate.placeholder': '输入一个强密码',
|
||
'cloudSync.gate.confirmPlaceholder': '再次输入密码',
|
||
'cloudSync.gate.mismatch': '两次输入的密码不一致',
|
||
'cloudSync.gate.warning':
|
||
'我已了解:如果忘记主密钥,数据无法恢复,且没有密码重置功能。',
|
||
'cloudSync.gate.enableVault': '启用加密 Vault',
|
||
'cloudSync.gate.enabledToast': '已启用加密 Vault',
|
||
'cloudSync.gate.setupFailed': '设置主密钥失败',
|
||
'cloudSync.passwordStrength.tooShort': '太短',
|
||
'cloudSync.passwordStrength.weak': '弱',
|
||
'cloudSync.passwordStrength.moderate': '一般',
|
||
'cloudSync.passwordStrength.strong': '强',
|
||
'cloudSync.passwordStrength.veryStrong': '非常强',
|
||
'cloudSync.provider.notConnected': '未连接',
|
||
'cloudSync.provider.sync': '同步',
|
||
'cloudSync.provider.connect': '连接',
|
||
'cloudSync.provider.connecting': '连接中...',
|
||
'cloudSync.provider.webdav': 'WebDAV',
|
||
'cloudSync.provider.webdav.desc': '连接到自建 WebDAV 端点',
|
||
'cloudSync.provider.s3': 'S3 兼容存储',
|
||
'cloudSync.provider.s3.desc': '连接到 S3 兼容对象存储',
|
||
'cloudSync.provider.comingSoon': '即将支持',
|
||
'cloudSync.webdav.title': 'WebDAV 设置',
|
||
'cloudSync.webdav.desc': '配置 WebDAV 端点用于加密同步。',
|
||
'cloudSync.webdav.endpoint': '端点地址',
|
||
'cloudSync.webdav.authType': '认证方式',
|
||
'cloudSync.webdav.auth.basic': 'Basic',
|
||
'cloudSync.webdav.auth.digest': 'Digest',
|
||
'cloudSync.webdav.auth.token': 'Token',
|
||
'cloudSync.webdav.username': '用户名',
|
||
'cloudSync.webdav.password': '密码',
|
||
'cloudSync.webdav.token': 'Token',
|
||
'cloudSync.webdav.showSecret': '显示密钥',
|
||
'cloudSync.webdav.allowInsecure': '允许不安全的连接(忽略证书错误)',
|
||
'cloudSync.webdav.validation.endpoint': '请输入有效的 WebDAV 端点。',
|
||
'cloudSync.webdav.validation.credentials': '请输入用户名和密码。',
|
||
'cloudSync.webdav.validation.token': '请输入 Token。',
|
||
'cloudSync.s3.title': 'S3 设置',
|
||
'cloudSync.s3.desc': '连接到 S3 兼容对象存储以进行加密同步。',
|
||
'cloudSync.s3.endpoint': '端点地址',
|
||
'cloudSync.s3.region': 'Region',
|
||
'cloudSync.s3.bucket': 'Bucket',
|
||
'cloudSync.s3.accessKeyId': 'Access Key ID',
|
||
'cloudSync.s3.secretAccessKey': 'Secret Access Key',
|
||
'cloudSync.s3.sessionToken': 'Session Token(可选)',
|
||
'cloudSync.s3.prefix': 'Key 前缀(可选)',
|
||
'cloudSync.s3.forcePathStyle': '强制使用 path-style URL(适用于 MinIO/R2 等)',
|
||
'cloudSync.s3.showSecret': '显示密钥',
|
||
'cloudSync.s3.validation.required': '端点、Region、Bucket、Access Key 与 Secret 必填。',
|
||
'cloudSync.smb.title': 'SMB 设置',
|
||
'cloudSync.smb.desc': '连接到 SMB/CIFS 文件共享以进行加密同步。',
|
||
'cloudSync.smb.share': '共享路径',
|
||
'cloudSync.smb.username': '用户名',
|
||
'cloudSync.smb.password': '密码',
|
||
'cloudSync.smb.domain': '域(可选)',
|
||
'cloudSync.smb.domainPlaceholder': '例如:WORKGROUP',
|
||
'cloudSync.smb.port': '端口(可选)',
|
||
'cloudSync.smb.showSecret': '显示密码',
|
||
'cloudSync.smb.validation.share': '共享路径必填。',
|
||
'cloudSync.smb.validation.port': '端口必须是 1 到 65535 之间的数字。',
|
||
'cloudSync.connect.smb.success': 'SMB 已连接',
|
||
'cloudSync.connect.smb.failedTitle': 'SMB 连接失败',
|
||
'cloudSync.provider.smb': 'SMB 共享',
|
||
'cloudSync.connect.webdav.success': 'WebDAV 已连接',
|
||
'cloudSync.connect.webdav.failedTitle': 'WebDAV 连接失败',
|
||
'cloudSync.connect.s3.success': 'S3 已连接',
|
||
'cloudSync.connect.s3.failedTitle': 'S3 连接失败',
|
||
'cloudSync.lastSync.never': '从未',
|
||
'cloudSync.lastSync.justNow': '刚刚',
|
||
'cloudSync.lastSync.minutesAgo': '{minutes} 分钟前',
|
||
'cloudSync.changeKey': '更改 Key',
|
||
'cloudSync.providers.title': '云服务',
|
||
'cloudSync.syncAll': '同步所有已连接的服务',
|
||
'cloudSync.autoSync.title': '自动同步',
|
||
'cloudSync.autoSync.desc': '发生变更时自动同步',
|
||
'cloudSync.status.title': '同步状态',
|
||
'cloudSync.status.localVersion': '本地版本',
|
||
'cloudSync.status.remoteVersion': '远端版本',
|
||
'cloudSync.history.title': '同步历史',
|
||
'cloudSync.history.upload': '上传',
|
||
'cloudSync.history.download': '下载',
|
||
'cloudSync.history.resolved': '已解决',
|
||
'cloudSync.history.error': '错误',
|
||
'cloudSync.changeKey.title': '更改主密钥',
|
||
'cloudSync.changeKey.current': '当前主密钥',
|
||
'cloudSync.changeKey.new': '新的主密钥',
|
||
'cloudSync.changeKey.confirmNew': '确认新的主密钥',
|
||
'cloudSync.changeKey.currentPlaceholder': '输入当前主密钥',
|
||
'cloudSync.changeKey.newPlaceholder': '输入新的主密钥',
|
||
'cloudSync.changeKey.confirmPlaceholder': '再次输入新的主密钥',
|
||
'cloudSync.changeKey.fillAll': '请填写所有字段',
|
||
'cloudSync.changeKey.minLength': '新的主密钥至少 8 个字符',
|
||
'cloudSync.changeKey.notMatch': '两次输入的主密钥不一致',
|
||
'cloudSync.changeKey.incorrectCurrent': '当前主密钥不正确',
|
||
'cloudSync.changeKey.failed': '更改主密钥失败',
|
||
'cloudSync.changeKey.desc': '这将重新加密 Vault,请务必记住新的主密钥。',
|
||
'cloudSync.changeKey.showKeys': '显示主密钥',
|
||
'cloudSync.changeKey.updatedToast': '主密钥已更新',
|
||
'cloudSync.changeKey.updateButton': '更新主密钥',
|
||
'cloudSync.unlock.title': '输入主密钥',
|
||
'cloudSync.unlock.masterKey': '主密钥',
|
||
'cloudSync.unlock.desc': '仅需输入一次主密钥以启用加密同步,之后会通过系统 Keychain 安全存储。',
|
||
'cloudSync.unlock.placeholder': '输入你的主密钥',
|
||
'cloudSync.unlock.empty': '请输入主密钥',
|
||
'cloudSync.unlock.incorrect': '主密钥不正确',
|
||
'cloudSync.unlock.failed': '解锁 Vault 失败',
|
||
'cloudSync.unlock.showKey': '显示主密钥',
|
||
'cloudSync.unlock.notNow': '暂不',
|
||
'cloudSync.unlock.readyToast': 'Vault 已就绪',
|
||
'cloudSync.unlock.unlockButton': '解锁',
|
||
'cloudSync.header.vaultReady': 'Vault 已就绪',
|
||
'cloudSync.header.preparingVault': '正在准备 Vault...',
|
||
'cloudSync.header.providersConnected': '已连接 {count} 个 provider',
|
||
'cloudSync.githubFlow.title': '连接到 GitHub',
|
||
'cloudSync.githubFlow.desc': '复制下面的 code,并在 GitHub 页面输入以授权 Netcatty。',
|
||
'cloudSync.githubFlow.copyCode': '复制 code',
|
||
'cloudSync.githubFlow.copied': '已复制',
|
||
'cloudSync.githubFlow.openGitHub': '打开 GitHub',
|
||
'cloudSync.githubFlow.waiting': '等待授权...',
|
||
'cloudSync.conflict.title': '检测到版本冲突',
|
||
'cloudSync.conflict.desc': '选择保留哪个版本',
|
||
'cloudSync.conflict.local': '本地',
|
||
'cloudSync.conflict.cloud': '云端',
|
||
'cloudSync.conflict.keepLocal': '覆盖云端(保留本地)',
|
||
'cloudSync.conflict.useCloud': '下载云端(覆盖本地)',
|
||
'cloudSync.connect.browserContinue': '请在浏览器中完成授权',
|
||
'cloudSync.connect.github.success': 'GitHub 已连接',
|
||
'cloudSync.connect.github.failedTitle': 'GitHub 连接失败',
|
||
'cloudSync.connect.github.timeout': '连接 GitHub 超时,请检查网络或代理设置。',
|
||
'cloudSync.connect.github.networkError': '无法访问 GitHub,请检查网络或代理设置。',
|
||
'cloudSync.connect.google.failedTitle': 'Google 连接失败',
|
||
'cloudSync.connect.onedrive.failedTitle': 'OneDrive 连接失败',
|
||
'cloudSync.sync.success': '已同步到 {provider}',
|
||
'cloudSync.sync.failed': '同步失败',
|
||
'cloudSync.sync.failedTitle': '同步失败',
|
||
'cloudSync.sync.errorTitle': '同步错误',
|
||
'cloudSync.resolve.downloaded': '已下载云端数据',
|
||
'cloudSync.resolve.uploaded': '已上传本地数据',
|
||
'cloudSync.resolve.failedTitle': '冲突处理失败',
|
||
'cloudSync.clearLocal.title': '清空本地数据',
|
||
'cloudSync.clearLocal.desc': '重置本地版本和同步历史。下次同步将从云端下载。',
|
||
'cloudSync.clearLocal.button': '清空',
|
||
'cloudSync.clearLocal.dialog.title': '清空本地 Vault 数据?',
|
||
'cloudSync.clearLocal.dialog.desc': '这将重置本地版本为 0 并清除同步历史。下次同步时会从云端下载数据,替换本地数据。',
|
||
'cloudSync.clearLocal.dialog.cancel': '取消',
|
||
'cloudSync.clearLocal.dialog.confirm': '确认清空',
|
||
'cloudSync.clearLocal.toast.title': '本地数据已清空',
|
||
'cloudSync.clearLocal.toast.desc': '本地版本已重置为 0。同步以从云端下载数据。',
|
||
|
||
// Common (additional)
|
||
'common.searchPlaceholder': '搜索...',
|
||
'common.import': '导入',
|
||
'common.generate': '生成',
|
||
'common.delete': '删除',
|
||
'common.edit': '编辑',
|
||
'common.clear': '清除',
|
||
'common.optional': '可选',
|
||
'common.selectPlaceholder': '请选择...',
|
||
'common.error': '错误',
|
||
'common.validation': '验证',
|
||
'common.saveChanges': '保存修改',
|
||
'common.advanced': '高级',
|
||
'common.selectAHostPlaceholder': '选择主机...',
|
||
|
||
// Actions
|
||
'action.duplicate': '复制',
|
||
'action.open': '打开',
|
||
'action.copy': '复制',
|
||
'action.run': '运行',
|
||
'action.start': '启动',
|
||
'action.stop': '停止',
|
||
|
||
// Port Forwarding (form)
|
||
'pf.form.labelPlaceholder': '规则标签',
|
||
'pf.form.intermediateHost': '中转主机 *',
|
||
'pf.form.createRule': '创建规则',
|
||
'pf.form.openWizard': '打开向导',
|
||
'pf.form.openWizardTitle': '打开端口转发向导',
|
||
'pf.action.newForwarding': '新建转发',
|
||
'pf.view.grid': '网格',
|
||
'pf.view.list': '列表',
|
||
'pf.rule.summary.dynamic': 'SOCKS 监听于 {bindAddress}:{localPort}',
|
||
'pf.rule.summary.default': '{bindAddress}:{localPort} -> {remoteHost}:{remotePort}',
|
||
'pf.tooltip.relayHost': '中转主机',
|
||
'pf.tooltip.hostLabel': '主机',
|
||
'pf.tooltip.hostAddress': '地址',
|
||
'pf.tooltip.noHost': '未配置中转主机',
|
||
'pf.tooltip.localDesc': '本地端口转发:通过 SSH 隧道访问远程服务',
|
||
'pf.tooltip.remoteDesc': '远程端口转发:将本地服务暴露给远程主机',
|
||
'pf.tooltip.dynamicDesc': '动态 SOCKS 代理:通过 SSH 隧道转发流量',
|
||
'pf.deleteActive.title': '删除正在运行的端口转发?',
|
||
'pf.deleteActive.desc': '端口转发规则 "{label}" 当前正在运行。删除前将先关闭转发连接。',
|
||
'pf.deleteActive.confirm': '关闭并删除',
|
||
'pf.form.autoStart': '自动启动',
|
||
'pf.form.autoStartDesc': '应用启动时自动开启此规则',
|
||
|
||
// SFTP (pane + conflict)
|
||
'sftp.pane.local': '本地',
|
||
'sftp.pane.remote': '远端',
|
||
'sftp.pane.selectHost': '选择主机',
|
||
'sftp.pane.selectHostToStart': '先选择一个主机',
|
||
'sftp.pane.chooseFilesystem': '选择要浏览的本地或远端文件系统',
|
||
'sftp.tabs.addTab': '新建标签页',
|
||
'sftp.tabs.closeTab': '关闭标签页',
|
||
'sftp.tabs.newTab': '新标签页',
|
||
'sftp.conflict.title': '文件冲突',
|
||
'sftp.conflict.desc': '目标位置已存在同名文件',
|
||
'sftp.conflict.alreadyExistsSuffix': '已存在',
|
||
'sftp.conflict.existingFile': '已有文件',
|
||
'sftp.conflict.newFile': '新文件',
|
||
'sftp.conflict.size': '大小:',
|
||
'sftp.conflict.modified': '修改时间:',
|
||
'sftp.conflict.applyToAll': '将此操作应用到剩余的 {count} 个冲突',
|
||
'sftp.conflict.action.skip': '跳过',
|
||
'sftp.conflict.action.keepBoth': '保留两者',
|
||
'sftp.conflict.action.replace': '替换',
|
||
|
||
// SFTP Upload Phases
|
||
'sftp.upload.phase.compressing': '正在压缩',
|
||
'sftp.upload.phase.uploading': '正在上传',
|
||
'sftp.upload.phase.extracting': '正在解压',
|
||
'sftp.upload.phase.compressed': '压缩传输',
|
||
|
||
// SFTP File Opener
|
||
'sftp.context.copyPath': '复制文件路径',
|
||
'sftp.context.openWith': '打开方式...',
|
||
'sftp.context.edit': '编辑',
|
||
'sftp.context.preview': '预览',
|
||
'sftp.opener.title': '打开方式',
|
||
'sftp.opener.desc': '选择一个应用程序来打开此文件',
|
||
'sftp.opener.builtInEditor': '内置编辑器',
|
||
'sftp.opener.editDescription': '编辑文本文件',
|
||
'sftp.opener.builtInImageViewer': '内置图片预览',
|
||
'sftp.opener.previewDescription': '预览图片',
|
||
'sftp.opener.systemApp': '选择应用程序...',
|
||
'sftp.opener.systemAppDescription': '从本地选择一个应用程序',
|
||
'sftp.opener.onlySystemApp': '此文件只能用外部应用程序打开',
|
||
'sftp.opener.noAppsAvailable': '无可用应用程序',
|
||
'sftp.opener.noExtension': '无扩展名文件',
|
||
'sftp.opener.setDefault': '始终使用此方式打开 {ext} 文件',
|
||
'sftp.opener.confirmTitle': '设为默认?',
|
||
'sftp.opener.confirmDescription': '是否始终使用 {app} 打开 {ext} 文件?',
|
||
'sftp.opener.yesRemember': '是,记住此选择',
|
||
'sftp.opener.justOnce': '仅此一次',
|
||
'sftp.opener.confirm.title': '设置默认应用程序',
|
||
'sftp.opener.confirm.desc': '是否始终使用此应用程序打开 .{ext} 文件?',
|
||
'sftp.editor.title': '文本编辑器',
|
||
'sftp.editor.save': '保存到远程',
|
||
'sftp.editor.saving': '保存中...',
|
||
'sftp.editor.saved': '保存成功',
|
||
'sftp.editor.saveFailed': '保存文件失败',
|
||
'sftp.editor.unsavedChanges': '您有未保存的更改。确定要关闭吗?',
|
||
'sftp.editor.syntaxHighlight': '语法高亮',
|
||
'sftp.preview.title': '图片预览',
|
||
'sftp.preview.zoomIn': '放大',
|
||
'sftp.preview.zoomOut': '缩小',
|
||
'sftp.preview.resetZoom': '重置缩放',
|
||
'sftp.preview.fitToWindow': '适应窗口',
|
||
|
||
// Settings > SFTP File Associations
|
||
'settings.tab.sftpFileAssociations': 'SFTP',
|
||
'settings.sftp.transferConcurrency': '传输并发数',
|
||
'settings.sftp.transferConcurrency.desc': '上传或下载文件夹时并行传输的文件数量。较高的值可能提高速度,但可能导致某些服务器过载。',
|
||
'settings.sftp.defaultOpener': '默认文件打开方式',
|
||
'settings.sftp.defaultOpener.desc': '选择没有特定文件关联时的默认打开方式',
|
||
'settings.sftp.defaultOpener.ask': '每次询问',
|
||
'settings.sftp.defaultOpener.askDesc': '每次打开文件时弹出选择对话框',
|
||
'settings.sftp.defaultOpener.builtInDesc': '默认使用内置编辑器打开文本文件',
|
||
'settings.sftp.defaultOpener.systemApp': '选择应用程序...',
|
||
'settings.sftp.defaultOpener.systemAppDesc': '默认使用指定的外部应用程序打开文件',
|
||
'settings.sftpFileAssociations.title': 'SFTP 文件关联',
|
||
'settings.sftpFileAssociations.desc': '配置按扩展名打开文件的默认应用程序',
|
||
'settings.sftpFileAssociations.extension': '扩展名',
|
||
'settings.sftpFileAssociations.application': '应用程序',
|
||
'settings.sftpFileAssociations.noAssociations': '未配置文件关联',
|
||
'settings.sftpFileAssociations.remove': '移除',
|
||
'settings.sftpFileAssociations.removeConfirm': '确定移除 .{ext} 的关联吗?',
|
||
|
||
// Settings > SFTP Behavior
|
||
'settings.sftp.doubleClickBehavior': '双击行为',
|
||
'settings.sftp.doubleClickBehavior.desc': '选择在 SFTP 视图中双击文件时的操作',
|
||
'settings.sftp.doubleClickBehavior.open': '打开文件',
|
||
'settings.sftp.doubleClickBehavior.transfer': '传输到另一侧',
|
||
'settings.sftp.doubleClickBehavior.openDesc': '使用默认应用程序打开文件',
|
||
'settings.sftp.doubleClickBehavior.transferDesc': '将文件传输到另一窗格的活动主机',
|
||
|
||
// Settings > SFTP Auto Sync
|
||
'settings.sftp.autoSync': '自动同步到远程',
|
||
'settings.sftp.autoSync.desc': '使用外部应用程序打开文件时,自动将文件更改同步回远程服务器',
|
||
'settings.sftp.autoSync.enable': '启用自动同步',
|
||
'settings.sftp.autoSync.enableDesc': '在外部应用程序中保存文件时,更改将自动上传到远程服务器',
|
||
|
||
// Settings > SFTP 自动打开侧栏
|
||
'settings.sftp.autoOpenSidebar': '连接时自动打开侧栏',
|
||
'settings.sftp.autoOpenSidebar.desc': '连接到主机时自动打开 SFTP 文件浏览器侧栏',
|
||
'settings.sftp.autoOpenSidebar.enable': '启用自动打开侧栏',
|
||
'settings.sftp.autoOpenSidebar.enableDesc': '当终端会话连接到远程主机时,SFTP 侧栏将自动打开',
|
||
|
||
'settings.sftp.defaultViewMode': '默认视图模式',
|
||
'settings.sftp.defaultViewMode.desc': '选择打开新 SFTP 标签页时的默认视图模式。每个主机的偏好设置会覆盖此全局设置。',
|
||
'settings.sftp.defaultViewMode.list': '列表视图',
|
||
'settings.sftp.defaultViewMode.listDesc': '以平面列表显示当前目录的文件',
|
||
'settings.sftp.defaultViewMode.tree': '树形视图',
|
||
'settings.sftp.defaultViewMode.treeDesc': '以层级树形结构显示文件',
|
||
|
||
'sftp.autoSync.success': '文件已同步到远程:{fileName}',
|
||
'sftp.autoSync.error': '同步文件失败:{error}',
|
||
|
||
// SFTP Folder Upload Progress
|
||
'sftp.upload.progress': '正在上传 {current}/{total} 个文件...',
|
||
'sftp.upload.uploading': '正在上传...',
|
||
'sftp.upload.compressing': '正在压缩...',
|
||
'sftp.upload.extracting': '正在解压...',
|
||
'sftp.upload.scanning': '正在扫描文件...',
|
||
'sftp.upload.completed': '已完成',
|
||
'sftp.upload.compressed': '压缩传输',
|
||
'sftp.upload.currentFile': '当前: {fileName}',
|
||
'sftp.upload.cancelled': '上传已取消',
|
||
'sftp.upload.cancel': '取消',
|
||
'sftp.upload.completedToPath': '已上传至 {path}',
|
||
|
||
// SFTP Download
|
||
'sftp.download.completed': '已下载',
|
||
'sftp.download.cancelled': '下载已取消',
|
||
|
||
// SFTP Reconnecting
|
||
'sftp.reconnecting.title': '正在重连...',
|
||
'sftp.reconnecting.desc': '连接已断开,正在尝试重新连接',
|
||
'sftp.reconnected': '连接已恢复',
|
||
'sftp.error.reconnectFailed': '重连失败,请重试。',
|
||
'sftp.error.connectionLostManual': '连接已断开,请手动重新连接。',
|
||
'sftp.error.connectionLostReconnecting': '连接已断开,正在重连...',
|
||
'sftp.error.sessionLost': 'SFTP 会话已断开,请重新连接。',
|
||
|
||
// Settings > SFTP Show Hidden Files
|
||
'settings.sftp.showHiddenFiles': '显示隐藏文件',
|
||
'settings.sftp.showHiddenFiles.desc': '在 SFTP 文件浏览器中显示隐藏文件(Unix/macOS 点文件和 Windows 隐藏属性文件)。',
|
||
'settings.sftp.showHiddenFiles.enable': '显示隐藏文件',
|
||
'settings.sftp.showHiddenFiles.enableDesc': '浏览本地和远程文件系统时显示隐藏文件',
|
||
|
||
// Settings > SFTP Compressed Upload
|
||
'settings.sftp.compressedUpload': '文件夹压缩传输',
|
||
'settings.sftp.compressedUpload.desc': '上传前压缩文件夹,可大幅减少传输时间。',
|
||
'settings.sftp.compressedUpload.enable': '启用文件夹压缩',
|
||
'settings.sftp.compressedUpload.enableDesc': '自动使用 tar 压缩文件夹后再传输。需要服务器支持 tar 命令,不支持时自动回退到普通传输。',
|
||
|
||
// Settings > Terminal
|
||
'settings.terminal.section.theme': '终端主题',
|
||
'settings.terminal.themeModal.title': '选择主题',
|
||
'settings.terminal.themeModal.darkThemes': '深色主题',
|
||
'settings.terminal.themeModal.lightThemes': '浅色主题',
|
||
'settings.terminal.theme.selectButton': '选择主题',
|
||
'settings.terminal.section.font': '字体',
|
||
'settings.terminal.section.cursor': '光标',
|
||
'settings.terminal.section.keyboard': '键盘',
|
||
'settings.terminal.section.accessibility': '无障碍',
|
||
'settings.terminal.section.behavior': '行为',
|
||
'settings.terminal.section.scrollback': '回滚',
|
||
'settings.terminal.section.keywordHighlight': '关键字高亮',
|
||
'settings.terminal.font.family': '字体',
|
||
'settings.terminal.font.family.desc': '终端字体',
|
||
'settings.terminal.font.size': '字体大小',
|
||
'settings.terminal.font.size.desc': '终端文字大小',
|
||
'settings.terminal.font.weight': '字重',
|
||
'settings.terminal.font.weight.desc': '常规文本字重 (100-900)',
|
||
'settings.terminal.font.weightBold': '粗体字重',
|
||
'settings.terminal.font.weightBold.desc': '粗体文本字重 (100-900)',
|
||
'settings.terminal.font.linePadding': '行间距',
|
||
'settings.terminal.font.linePadding.desc': '行之间的额外间距 (0-10)',
|
||
'settings.terminal.font.emulationType': '终端仿真类型',
|
||
'settings.terminal.cursor.style': '光标样式',
|
||
'settings.terminal.cursor.style.block': '块',
|
||
'settings.terminal.cursor.style.bar': '竖线',
|
||
'settings.terminal.cursor.style.underline': '下划线',
|
||
'settings.terminal.cursor.blink': '光标闪烁',
|
||
'settings.terminal.keyboard.altAsMeta': '将 Option 作为 Meta 键',
|
||
'settings.terminal.keyboard.altAsMeta.desc': '使用 Option (Alt) 作为 Meta 键,而不是用于输入特殊字符',
|
||
'settings.terminal.accessibility.minimumContrastRatio': '最小对比度',
|
||
'settings.terminal.accessibility.minimumContrastRatio.desc': '调整颜色以满足对比度要求 (1 = 禁用, 21 = 最大)',
|
||
'settings.terminal.behavior.rightClick': '右键行为',
|
||
'settings.terminal.behavior.rightClick.desc': '在终端中右键时执行的操作',
|
||
'settings.terminal.behavior.rightClick.menu': '显示菜单',
|
||
'settings.terminal.behavior.rightClick.paste': '粘贴',
|
||
'settings.terminal.behavior.rightClick.selectWord': '选择单词',
|
||
'settings.terminal.behavior.copyOnSelect': '选择即复制',
|
||
'settings.terminal.behavior.copyOnSelect.desc': '自动复制选中的文本。在 tmux/vim 鼠标模式下,macOS 按住 Option,Windows/Linux 按住 Shift 拖选即可选中文本',
|
||
'settings.terminal.behavior.middleClickPaste': '中键粘贴',
|
||
'settings.terminal.behavior.middleClickPaste.desc': '中键点击时粘贴剪贴板内容',
|
||
'settings.terminal.behavior.bracketedPaste': '括号粘贴模式',
|
||
'settings.terminal.behavior.bracketedPaste.desc':
|
||
'粘贴文本时使用转义序列包裹,以便终端区分粘贴和键入。如果出现 ^[[200~ 字样请关闭此选项。',
|
||
'settings.terminal.behavior.osc52Clipboard': 'OSC-52 剪贴板',
|
||
'settings.terminal.behavior.osc52Clipboard.desc':
|
||
'允许远程程序(tmux、vim 等)通过 OSC-52 转义序列访问本地剪贴板。',
|
||
'settings.terminal.behavior.osc52Clipboard.off': '关闭',
|
||
'settings.terminal.behavior.osc52Clipboard.writeOnly': '仅写入',
|
||
'settings.terminal.behavior.osc52Clipboard.readWrite': '读写',
|
||
'settings.terminal.behavior.osc52Clipboard.prompt': '写入 + 读取时询问',
|
||
'terminal.osc52.readPrompt.title': '剪贴板读取请求',
|
||
'terminal.osc52.readPrompt.desc': '远程程序正在请求读取您的剪贴板,是否允许?',
|
||
'terminal.osc52.readPrompt.allow': '允许',
|
||
'terminal.osc52.readPrompt.deny': '拒绝',
|
||
'settings.terminal.behavior.scrollOnInput': '输入时自动滚动',
|
||
'settings.terminal.behavior.scrollOnInput.desc': '输入时将终端滚动到底部',
|
||
'settings.terminal.behavior.scrollOnOutput': '输出时自动滚动',
|
||
'settings.terminal.behavior.scrollOnOutput.desc': '有新输出时将终端滚动到底部',
|
||
'settings.terminal.behavior.scrollOnKeyPress': '按键时自动滚动',
|
||
'settings.terminal.behavior.scrollOnKeyPress.desc': '按键(例如 Enter)时将终端滚动到底部',
|
||
'settings.terminal.behavior.scrollOnPaste': '粘贴时自动滚动',
|
||
'settings.terminal.behavior.scrollOnPaste.desc': '粘贴文本时将终端滚动到底部',
|
||
'settings.terminal.behavior.smoothScrolling': '平滑滚动',
|
||
'settings.terminal.behavior.smoothScrolling.desc': '滚动终端视口时使用平滑动画',
|
||
'settings.terminal.behavior.linkModifier': '链接修饰键',
|
||
'settings.terminal.behavior.linkModifier.desc': '按住此键再点击终端中的链接',
|
||
'settings.terminal.behavior.linkModifier.none': '无(直接点击)',
|
||
'settings.terminal.behavior.linkModifier.ctrl': 'Ctrl',
|
||
'settings.terminal.behavior.linkModifier.alt': 'Alt / Option',
|
||
'settings.terminal.behavior.linkModifier.meta': 'Cmd / Win',
|
||
'settings.terminal.scrollback.desc': '限制终端行数。设为 0 表示不限制。',
|
||
'settings.terminal.scrollback.rows': '行数 *',
|
||
'settings.terminal.keywordHighlight.title': '关键字高亮',
|
||
'settings.terminal.keywordHighlight.resetColors': '重置为默认颜色',
|
||
'settings.terminal.keywordHighlight.addCustom': '添加自定义规则',
|
||
'settings.terminal.keywordHighlight.editCustom': '编辑规则',
|
||
'settings.terminal.keywordHighlight.labelField': '标签与颜色',
|
||
'settings.terminal.keywordHighlight.labelPlaceholder': '标签(如 Down)',
|
||
'settings.terminal.keywordHighlight.patternField': '正则表达式',
|
||
'settings.terminal.keywordHighlight.patternPlaceholder': '正则表达式(如 \\bdown\\b)',
|
||
'settings.terminal.keywordHighlight.invalidPattern': '无效的正则表达式',
|
||
'settings.terminal.keywordHighlight.preview': '预览',
|
||
'settings.terminal.section.localShell': '本地 Shell',
|
||
'settings.terminal.localShell.shell': 'Shell 可执行文件',
|
||
'settings.terminal.localShell.shell.desc': 'Shell 可执行文件的路径(例如 /bin/zsh、pwsh.exe)。留空使用系统默认。',
|
||
'settings.terminal.localShell.shell.placeholder': '系统默认',
|
||
'settings.terminal.localShell.shell.detected': '检测到',
|
||
'settings.terminal.localShell.shell.notFound': '未找到 Shell 可执行文件',
|
||
'settings.terminal.localShell.shell.isDirectory': '路径是目录,不是可执行文件',
|
||
'settings.terminal.localShell.shell.default': '系统默认',
|
||
'settings.terminal.localShell.shell.custom': '自定义...',
|
||
'settings.terminal.localShell.shell.customPath': 'Shell 可执行文件路径',
|
||
'settings.terminal.localShell.shell.commonPaths': '常用路径',
|
||
'settings.terminal.localShell.shell.pathValid': '路径有效',
|
||
'settings.terminal.localShell.startDir': '起始目录',
|
||
'settings.terminal.localShell.startDir.desc': '打开本地终端时的起始目录。留空使用用户主目录。',
|
||
'settings.terminal.localShell.startDir.placeholder': '用户主目录',
|
||
'settings.terminal.localShell.startDir.notFound': '目录不存在',
|
||
'settings.terminal.localShell.startDir.isFile': '路径是文件,不是目录',
|
||
'settings.terminal.section.connection': '连接',
|
||
'settings.terminal.connection.keepaliveInterval': '会话保持间隔',
|
||
'settings.terminal.connection.keepaliveInterval.desc': '向服务器发送 SSH 级别保活数据包的频率(秒)。设为 0 表示禁用。',
|
||
'settings.terminal.section.serverStats': '服务器状态(Linux)',
|
||
'settings.terminal.serverStats.show': '显示服务器状态',
|
||
'settings.terminal.serverStats.show.desc': '在终端状态栏显示 CPU、内存和磁盘使用情况(仅限 Linux 服务器)。',
|
||
'settings.terminal.serverStats.refreshInterval': '刷新间隔',
|
||
'settings.terminal.serverStats.refreshInterval.desc': '服务器状态刷新的频率。',
|
||
'settings.terminal.serverStats.seconds': '秒',
|
||
|
||
// Settings > Terminal > Rendering
|
||
'settings.terminal.section.rendering': '渲染',
|
||
'settings.terminal.rendering.renderer': '渲染器',
|
||
'settings.terminal.rendering.renderer.desc': '选择终端渲染技术。自动模式会在低内存设备上使用 DOM 渲染。更改将在新终端会话中生效。',
|
||
'settings.terminal.rendering.auto': '自动',
|
||
|
||
// Settings > Terminal > Autocomplete
|
||
'settings.terminal.section.autocomplete': '自动补全',
|
||
'settings.terminal.autocomplete.enabled': '启用自动补全',
|
||
'settings.terminal.autocomplete.enabled.desc': '输入时根据历史命令和命令规范显示补全建议。',
|
||
'settings.terminal.autocomplete.ghostText': '行内建议',
|
||
'settings.terminal.autocomplete.ghostText.desc': '在光标后显示灰色的建议文本(类似 fish shell)。',
|
||
'settings.terminal.autocomplete.popupMenu': '弹出菜单',
|
||
'settings.terminal.autocomplete.popupMenu.desc': '显示包含多个建议的浮动列表。',
|
||
|
||
// Settings > Shortcuts
|
||
'settings.shortcuts.section.scheme': '快捷键方案',
|
||
'settings.shortcuts.scheme.label': '键盘快捷键',
|
||
'settings.shortcuts.scheme.desc': '选择快捷键使用的键盘布局',
|
||
'settings.shortcuts.scheme.disabled': '禁用',
|
||
'settings.shortcuts.scheme.mac': 'Mac (Cmd)',
|
||
'settings.shortcuts.scheme.pc': 'PC (Ctrl)',
|
||
'settings.shortcuts.section.custom': '自定义快捷键',
|
||
'settings.shortcuts.resetAll': '全部重置',
|
||
'settings.shortcuts.recording': '请按键...',
|
||
'settings.shortcuts.none': '无',
|
||
'settings.shortcuts.category.tabs': '标签页',
|
||
'settings.shortcuts.category.terminal': '终端',
|
||
'settings.shortcuts.category.navigation': '导航',
|
||
'settings.shortcuts.category.app': '应用',
|
||
'settings.shortcuts.category.sftp': 'SFTP',
|
||
'settings.shortcuts.binding.switch-tab-1-9': '切换到标签页 [1...9]',
|
||
'settings.shortcuts.binding.next-tab': '下一个标签页',
|
||
'settings.shortcuts.binding.prev-tab': '上一个标签页',
|
||
'settings.shortcuts.binding.close-tab': '关闭标签页',
|
||
'settings.shortcuts.binding.new-tab': '新建本地标签页',
|
||
'settings.shortcuts.binding.copy': '从终端复制',
|
||
'settings.shortcuts.binding.paste': '粘贴到终端',
|
||
'settings.shortcuts.binding.select-all': '全选终端内容',
|
||
'settings.shortcuts.binding.clear-buffer': '清空终端缓冲区',
|
||
'settings.shortcuts.binding.search-terminal': '打开终端搜索',
|
||
'settings.shortcuts.binding.move-focus': '在分屏间移动焦点',
|
||
'settings.shortcuts.binding.split-horizontal': '水平分屏',
|
||
'settings.shortcuts.binding.split-vertical': '垂直分屏',
|
||
'settings.shortcuts.binding.open-hosts': '打开主机列表',
|
||
'settings.shortcuts.binding.open-local': '打开本地终端',
|
||
'settings.shortcuts.binding.open-sftp': '打开 SFTP',
|
||
'settings.shortcuts.binding.port-forwarding': '打开端口转发',
|
||
'settings.shortcuts.binding.command-palette': '打开命令面板',
|
||
'settings.shortcuts.binding.quick-switch': '快速切换',
|
||
'settings.shortcuts.binding.snippets': '打开代码片段',
|
||
'settings.shortcuts.binding.broadcast': '切换广播模式',
|
||
'settings.shortcuts.binding.sftp-copy': '复制文件',
|
||
'settings.shortcuts.binding.sftp-cut': '剪切文件',
|
||
'settings.shortcuts.binding.sftp-paste': '粘贴文件',
|
||
'settings.shortcuts.binding.sftp-select-all': '全选文件',
|
||
'settings.shortcuts.binding.sftp-rename': '重命名文件',
|
||
'settings.shortcuts.binding.sftp-delete': '删除文件',
|
||
'settings.shortcuts.binding.sftp-refresh': '刷新',
|
||
'settings.shortcuts.binding.sftp-new-folder': '新建文件夹',
|
||
|
||
// Host Details (sub-panels)
|
||
'hostDetails.proxyPanel.title': 'Proxy',
|
||
'hostDetails.proxyPanel.hostPlaceholder': 'Proxy host',
|
||
'hostDetails.proxyPanel.credentials': 'Credentials',
|
||
'hostDetails.proxyPanel.usernamePlaceholder': 'Username',
|
||
'hostDetails.proxyPanel.passwordPlaceholder': 'Password',
|
||
'hostDetails.proxyPanel.identities': 'Identities',
|
||
'hostDetails.proxyPanel.remove': '移除 Proxy',
|
||
'hostDetails.envVars.title': '环境变量',
|
||
'hostDetails.envVars.desc': '为 {host} 设置环境变量。',
|
||
'hostDetails.envVars.note': '部分 SSH 服务器默认只允许以 LC_ 和 LANG_ 为前缀的变量。',
|
||
'hostDetails.envVars.variable': '变量',
|
||
'hostDetails.envVars.value': '值',
|
||
'hostDetails.envVars.newVariable': '新变量',
|
||
'hostDetails.envVars.variableName': '变量名',
|
||
'hostDetails.chain.title': '编辑链路',
|
||
'hostDetails.chain.desc': '添加另一台主机将创建到 {host} 的连接。',
|
||
'hostDetails.chain.addHost': '添加主机',
|
||
'hostDetails.chain.target': '目标',
|
||
'hostDetails.chain.availableHosts': '可用主机',
|
||
'hostDetails.chain.clear': '清空',
|
||
'hostDetails.group.title': '新建分组',
|
||
'hostDetails.group.general': '常规',
|
||
'hostDetails.group.namePlaceholder': '分组名称',
|
||
'hostDetails.group.parentPlaceholder': '父分组',
|
||
'hostDetails.group.cloudSync': '云同步',
|
||
'hostDetails.group.addProtocol': '添加协议',
|
||
|
||
// Keychain
|
||
'keychain.filter.key': '密钥',
|
||
'keychain.filter.certificate': '证书',
|
||
'keychain.action.generateKey': '生成密钥',
|
||
'keychain.action.importKey': '导入密钥',
|
||
'keychain.action.newIdentity': '新建身份',
|
||
'keychain.action.importCertificate': '导入证书',
|
||
'keychain.view.grid': '网格',
|
||
'keychain.view.list': '列表',
|
||
'keychain.section.keys': '密钥',
|
||
'keychain.section.identities': '身份',
|
||
'keychain.count.items': '{count} 项',
|
||
'keychain.empty.title': '设置密钥',
|
||
'keychain.empty.desc': '导入或生成 SSH 密钥用于安全认证。',
|
||
'keychain.panel.generateKey': '生成密钥',
|
||
'keychain.panel.newKey': '新建密钥',
|
||
'keychain.panel.keyDetails': '密钥详情',
|
||
'keychain.panel.editKey': '编辑密钥',
|
||
'keychain.panel.editIdentity': '编辑身份',
|
||
'keychain.panel.newIdentity': '新建身份',
|
||
'keychain.panel.keyExport': '密钥导出',
|
||
'keychain.validation.labelRequired': '请填写密钥的 Label',
|
||
'keychain.validation.labelAndPrivateKeyRequired': 'Label 和私钥为必填项',
|
||
'keychain.validation.labelAndUsernameRequired': 'Label 和用户名为必填项',
|
||
'keychain.error.generationUnavailable': '无法生成密钥:请确保应用运行在 Electron 环境',
|
||
'keychain.error.generateKeyPairFailed': '生成密钥对失败',
|
||
'keychain.error.generateKeyFailed': '生成密钥失败',
|
||
'keychain.error.keyGenerationTitle': '密钥生成',
|
||
'keychain.export.exportTo': '导出到 *',
|
||
'keychain.export.selectHost': '选择主机',
|
||
'keychain.export.location': '位置 ~ $1 *',
|
||
'keychain.export.filename': '文件名 ~ $2 *',
|
||
'keychain.export.note': '密钥导出目前仅支持 {unix} 系统。请在 {advanced} 部分自定义导出脚本。',
|
||
'keychain.export.script': '脚本 *',
|
||
'keychain.export.scriptPlaceholder': '导出脚本...',
|
||
'keychain.export.missingCredentials': '主机未保存密码或密钥。请先为该主机添加密码凭据。',
|
||
'keychain.export.successTitle': '导出成功',
|
||
'keychain.export.successMessage': '已导出公钥并绑定到 {host}',
|
||
'keychain.export.failedTitle': '导出失败',
|
||
'keychain.export.failedMessage': '导出密钥失败:{error}',
|
||
'keychain.export.failedPrefix': '导出失败:{error}',
|
||
'keychain.export.exitCode': '命令退出码 {code}',
|
||
'keychain.export.exporting': '导出中...',
|
||
'keychain.export.exportAndAttach': '导出并绑定',
|
||
'keychain.export.title': '密钥导出',
|
||
'keychain.export.exportToRequired': '导出到 *',
|
||
'keychain.export.selectHostPlaceholder': '选择主机...',
|
||
'keychain.export.locationLabel': '位置 ~ $1 *',
|
||
'keychain.export.filenameLabel': '文件名 ~ $2 *',
|
||
'keychain.export.advanced': '高级',
|
||
'keychain.export.note.supportsOnly': '密钥导出目前仅支持',
|
||
'keychain.export.note.systems': '系统。',
|
||
'keychain.export.note.use': '请使用',
|
||
'keychain.export.note.customize': '部分自定义导出脚本。',
|
||
'keychain.export.scriptRequired': '脚本 *',
|
||
'keychain.export.exportToHost': '导出到主机',
|
||
'keychain.export.failedGeneric': '导出失败:{message}',
|
||
'keychain.field.label': 'Label',
|
||
'keychain.field.labelRequired': 'Label *',
|
||
'keychain.field.labelPlaceholder': '密钥 Label',
|
||
'keychain.field.privateKeyRequired': '私钥 *',
|
||
'keychain.field.publicKey': '公钥',
|
||
'keychain.field.certificatePlaceholder': '证书内容(可选)',
|
||
'keychain.generate.keyType': '密钥类型',
|
||
'keychain.generate.keySize': '密钥长度',
|
||
'keychain.generate.labelPlaceholder': '密钥 Label',
|
||
'keychain.generate.passphrasePlaceholder': 'Passphrase(可选)',
|
||
'keychain.generate.savePassphrase': '保存 Passphrase',
|
||
'keychain.generate.generate': '生成',
|
||
'keychain.generate.generateSave': '生成并保存',
|
||
'keychain.import.dropHint': '将密钥文件拖到这里',
|
||
'keychain.import.importFromFile': '从文件导入',
|
||
'keychain.import.saveKey': '保存密钥',
|
||
'keychain.import.importedKeyLabel': '已导入密钥',
|
||
'keychain.identity.usernameRequired': '用户名 *',
|
||
'keychain.identity.method.passwordOnly': '密码',
|
||
'keychain.identity.summary.password': '认证密码',
|
||
'keychain.identity.summary.key': '认证密钥',
|
||
'keychain.identity.summary.certificate': '认证证书',
|
||
'keychain.identity.summary.passwordAndKey': '认证密码与密钥',
|
||
'keychain.identity.summary.passwordAndCertificate': '认证密码与证书',
|
||
'keychain.identity.summary.none': '无凭据',
|
||
'keychain.identity.selectCredential': '选择{kind}',
|
||
'keychain.identity.save': '保存',
|
||
'keychain.identity.update': '更新',
|
||
'keychain.keyDialog.newTitle': '新建密钥',
|
||
'keychain.keyDialog.newDesc': '添加新的 SSH 密钥',
|
||
'keychain.keyDialog.editTitle': '编辑密钥',
|
||
'keychain.keyDialog.editDesc': '更新此 SSH 密钥',
|
||
'keychain.keyDialog.updateKey': '更新密钥',
|
||
|
||
// Tabs
|
||
'tabs.closeSessionAria': '关闭会话',
|
||
'tabs.closeLogViewAria': '关闭日志视图',
|
||
'tabs.logPrefix': '日志:',
|
||
'tabs.logLocal': '本地',
|
||
'tabs.copyTab': '复制标签页',
|
||
'keychain.edit.labelRequired': 'Label *',
|
||
'keychain.edit.keyLabelPlaceholder': '密钥 Label',
|
||
'keychain.edit.privateKeyRequired': '私钥 *',
|
||
'keychain.edit.publicKey': '公钥',
|
||
'keychain.edit.certificate': '证书',
|
||
'keychain.edit.certificatePlaceholder': '证书内容(可选)',
|
||
'keychain.edit.keyExport': '密钥导出',
|
||
'keychain.edit.exportToHost': '导出到主机',
|
||
|
||
// Snippets
|
||
'snippets.searchPlaceholder': '搜索代码片段...',
|
||
'snippets.action.newSnippet': '新建代码片段',
|
||
'snippets.action.newPackage': '新建代码包',
|
||
'snippets.panel.newTitle': '新建代码片段',
|
||
'snippets.panel.editTitle': '编辑代码片段',
|
||
'snippets.field.description': '描述',
|
||
'snippets.field.descriptionPlaceholder': '例如:check network load',
|
||
'snippets.field.package': '添加代码包',
|
||
'snippets.field.packagePlaceholder': '选择或创建代码包',
|
||
'snippets.field.createPackage': '创建代码包',
|
||
'snippets.field.scriptRequired': '脚本 *',
|
||
'snippets.targets.title': '目标主机',
|
||
'snippets.targets.add': '添加目标主机',
|
||
'snippets.history.title': 'Shell 历史',
|
||
'snippets.history.subtitle': '{count} 条命令',
|
||
'snippets.history.emptyTitle': '暂无 Shell 历史',
|
||
'snippets.history.emptyDesc': '你执行过的命令会显示在这里',
|
||
'snippets.history.loadMore': '加载更多',
|
||
'snippets.history.separator': '•',
|
||
'snippets.history.labelPlaceholder': '为此代码片段设置一个 Label',
|
||
'snippets.history.saveAsSnippet': '保存为代码片段',
|
||
'snippets.history.time.justNow': '刚刚',
|
||
'snippets.history.time.minutesAgo': '{count} 分钟前',
|
||
'snippets.history.time.hoursAgo': '{count} 小时前',
|
||
'snippets.history.time.daysAgo': '{count} 天前',
|
||
'snippets.breadcrumb.allPackages': '全部代码包',
|
||
'snippets.breadcrumb.separator': '›',
|
||
'snippets.empty.title': '创建代码片段',
|
||
'snippets.empty.desc': '将常用命令保存为代码片段,一键复用。',
|
||
'snippets.section.packages': '代码包',
|
||
'snippets.section.snippets': '代码片段',
|
||
'snippets.package.count': '{count} 个代码片段',
|
||
'snippets.commandFallback': '命令',
|
||
'snippets.view.grid': '网格',
|
||
'snippets.view.list': '列表',
|
||
'snippets.packageDialog.title': '新建代码包',
|
||
'snippets.packageDialog.parent': '父级:{parent}',
|
||
'snippets.packageDialog.root': '根目录',
|
||
'snippets.packageDialog.placeholder': '例如:ops/maintenance',
|
||
'snippets.packageDialog.hint': '使用 "/" 创建嵌套代码包。',
|
||
|
||
// Snippets Rename Dialog
|
||
'snippets.renameDialog.title': '重命名代码包',
|
||
'snippets.renameDialog.currentPath': '当前路径:{path}',
|
||
'snippets.renameDialog.placeholder': '输入新名称',
|
||
'snippets.renameDialog.error.empty': '代码包名称不能为空',
|
||
'snippets.renameDialog.error.duplicate': '已存在同名的代码包',
|
||
'snippets.renameDialog.error.invalidChars': '代码包名称只能包含字母、数字、连字符和下划线',
|
||
|
||
'snippets.field.noAutoRun': '仅粘贴(不自动执行)',
|
||
// Snippet Shortkey
|
||
'snippets.field.shortkey': '快捷键',
|
||
'snippets.shortkey.placeholder': '点击设置快捷键',
|
||
'snippets.shortkey.recording': '请按下快捷键组合...',
|
||
'snippets.shortkey.hint': '在终端中按下此快捷键可快速发送命令。',
|
||
'snippets.shortkey.clear': '清除快捷键',
|
||
'snippets.shortkey.error.systemConflict': '此快捷键与系统快捷键冲突',
|
||
'snippets.shortkey.error.snippetConflict': '此快捷键已被代码片段使用:{name}',
|
||
|
||
// Serial Port
|
||
'serial.button': '串口',
|
||
'serial.modal.title': '连接串口',
|
||
'serial.modal.desc': '配置串口连接参数',
|
||
'serial.field.port': '串口',
|
||
'serial.field.selectPort': '选择串口...',
|
||
'serial.field.baudRate': '波特率',
|
||
'serial.field.dataBits': '数据位',
|
||
'serial.field.stopBits': '停止位',
|
||
'serial.field.stopBits15Warning': '1.5 停止位在 Windows 下可能不被所有设备支持',
|
||
'serial.field.parity': '校验位',
|
||
'serial.field.flowControl': '流控制',
|
||
'serial.noPorts': '未检测到串口设备。请连接设备后刷新。',
|
||
'serial.field.customPort': '自定义串口路径',
|
||
'serial.field.customPortPlaceholder': '例如 /dev/ttys001 或 COM1',
|
||
'serial.type.hardware': '硬件',
|
||
'serial.type.pseudo': '虚拟终端',
|
||
'serial.type.custom': '自定义',
|
||
'serial.parity.none': '无',
|
||
'serial.parity.even': '偶校验',
|
||
'serial.parity.odd': '奇校验',
|
||
'serial.parity.mark': 'Mark',
|
||
'serial.parity.space': 'Space',
|
||
'serial.flowControl.none': '无',
|
||
'serial.flowControl.xon/xoff': 'XON/XOFF (软件)',
|
||
'serial.flowControl.rts/cts': 'RTS/CTS (硬件)',
|
||
'serial.field.localEcho': '强制本地回显',
|
||
'serial.field.localEchoDesc': '本地回显输入字符(用于没有远程回显的设备)',
|
||
'serial.field.lineMode': '行模式',
|
||
'serial.field.lineModeDesc': '缓冲输入,按回车后发送(而不是逐字符发送)',
|
||
'serial.field.charset': '字符编码',
|
||
'serial.connectionError': '连接串口失败',
|
||
'serial.field.baudRatePlaceholder': '选择或输入波特率...',
|
||
'serial.field.baudRateEmpty': '输入自定义波特率',
|
||
'serial.field.customBaudRate': '使用自定义波特率',
|
||
'serial.field.saveConfig': '保存配置',
|
||
'serial.field.saveConfigDesc': '将此串口配置保存到主机列表以便快速访问',
|
||
'serial.field.configLabel': '配置名称',
|
||
'serial.field.configLabelPlaceholder': '例如 Arduino Uno',
|
||
'serial.connectAndSave': '连接并保存',
|
||
'serial.edit.title': '串口设置',
|
||
|
||
// Keyboard Interactive Authentication (2FA/MFA)
|
||
'keyboard.interactive.title': '需要验证',
|
||
'keyboard.interactive.desc': '服务器需要额外的身份验证。',
|
||
'keyboard.interactive.descWithHost': '服务器 {hostname} 需要额外的身份验证。',
|
||
'keyboard.interactive.response': '响应',
|
||
'keyboard.interactive.enterCode': '输入验证码',
|
||
'keyboard.interactive.enterResponse': '输入响应',
|
||
'keyboard.interactive.submit': '提交',
|
||
'keyboard.interactive.verifying': '验证中...',
|
||
'keyboard.interactive.savePassword': '保存密码',
|
||
|
||
// Passphrase Modal for encrypted SSH keys
|
||
'passphrase.title': 'SSH 密钥密码',
|
||
'passphrase.desc': '请输入 {keyName} 的密码',
|
||
'passphrase.descWithHost': '请输入 {keyName} 的密码以连接到 {hostname}',
|
||
'passphrase.label': '密码',
|
||
'passphrase.keyPath': '密钥',
|
||
'passphrase.unlock': '解锁',
|
||
'passphrase.unlocking': '解锁中...',
|
||
'passphrase.skip': '跳过',
|
||
|
||
// Text Editor
|
||
'sftp.editor.wordWrap': '自动换行',
|
||
|
||
// AI Settings
|
||
'ai.agentSettings': 'Agent 设置',
|
||
'ai.title': 'AI',
|
||
'ai.description': '配置 AI 提供商、Agent 和安全设置',
|
||
'ai.providers': '提供商',
|
||
'ai.providers.empty': '尚未配置提供商。添加一个提供商以开始使用。',
|
||
'ai.providers.add': '添加提供商',
|
||
'ai.providers.active': '活跃',
|
||
'ai.providers.apiKeyConfigured': 'API Key 已配置',
|
||
'ai.providers.noApiKey': '未设置 API Key',
|
||
'ai.providers.configure': '配置',
|
||
'ai.providers.remove': '移除',
|
||
'ai.providers.name': '显示名称',
|
||
'ai.providers.name.placeholder': '例如 我的提供商',
|
||
'ai.providers.apiKey': 'API Key',
|
||
'ai.providers.apiKey.placeholder': '输入 API Key',
|
||
'ai.providers.apiKey.decrypting': '解密中...',
|
||
'ai.providers.baseUrl': 'Base URL',
|
||
'ai.providers.skipTLSVerify': '跳过 TLS 证书验证(用于自签名证书)',
|
||
'ai.providers.defaultModel': '默认模型',
|
||
'ai.providers.defaultModel.placeholder': '例如 gpt-4o, claude-sonnet-4-20250514',
|
||
'ai.providers.refreshModels': '刷新模型列表',
|
||
'ai.providers.searchModel': '搜索或输入模型 ID...',
|
||
'ai.providers.filterModels': '筛选模型...',
|
||
'ai.providers.loadingModels': '加载模型中...',
|
||
'ai.providers.noMatchingModels': '没有匹配的模型',
|
||
'ai.providers.clickToLoadModels': '点击加载模型',
|
||
'ai.providers.showingModels': '显示前 100 个,共 {count} 个模型。输入以筛选。',
|
||
'ai.providers.advancedParams': '高级参数',
|
||
'ai.providers.advancedParams.hint': '留空则使用提供商默认值。',
|
||
'ai.providers.advancedParams.maxTokens.placeholder': '例如 4096',
|
||
'ai.providers.advancedParams.default': '提供商默认',
|
||
|
||
// AI Codex
|
||
'ai.codex': 'Codex',
|
||
'ai.codex.title': 'Codex CLI',
|
||
'ai.codex.description': '使用 codex + codex-acp 进行 ACP 协议流式传输。在此通过 ChatGPT 订阅登录,或配置 OpenAI 提供商的 API Key(将作为 CODEX_API_KEY 传递)。',
|
||
'ai.codex.detecting': '检测中...',
|
||
'ai.codex.notFound': '未找到',
|
||
'ai.codex.awaitingLogin': '等待登录',
|
||
'ai.codex.connectedChatGPT': '已通过 ChatGPT 连接',
|
||
'ai.codex.connectedApiKey': '已通过 API Key 连接',
|
||
'ai.codex.notConnected': '未连接',
|
||
'ai.codex.statusUnknown': '状态未知',
|
||
'ai.codex.path': '路径:',
|
||
'ai.codex.notFoundHint': '在 PATH 中未找到 codex。请安装或在下方指定可执行文件路径。',
|
||
'ai.codex.customPathPlaceholder': '例如 /usr/local/bin/codex',
|
||
'ai.codex.check': '检查',
|
||
'ai.codex.openLogin': '打开登录',
|
||
'ai.codex.logout': '退出登录',
|
||
'ai.codex.connectChatGPT': '连接 ChatGPT',
|
||
'ai.codex.refreshStatus': '刷新状态',
|
||
'ai.codex.apiKeyHint': '检测到已启用的 OpenAI 提供商 API Key。Codex ACP 也可以无需 ChatGPT 登录进行认证。',
|
||
|
||
// AI Claude Code
|
||
'ai.claude.title': 'Claude Code',
|
||
'ai.claude.description': 'Anthropic 的智能编程助手。使用 claude-agent-acp 进行 ACP 协议流式传输。',
|
||
'ai.claude.detecting': '检测中...',
|
||
'ai.claude.detected': '已检测到',
|
||
'ai.claude.notFound': '未找到',
|
||
'ai.claude.path': '路径:',
|
||
'ai.claude.notFoundHint': '在 PATH 中未找到 claude。请安装或在下方指定可执行文件路径。',
|
||
'ai.claude.customPathPlaceholder': '例如 /usr/local/bin/claude',
|
||
'ai.claude.check': '检查',
|
||
|
||
// AI GitHub Copilot CLI
|
||
'ai.copilot.title': 'GitHub Copilot CLI',
|
||
'ai.copilot.description': '通过 ACP over stdio(`copilot --acp --stdio`)接入 GitHub Copilot CLI。检测到后即可作为外部编程 Agent 使用。',
|
||
'ai.copilot.detecting': '检测中...',
|
||
'ai.copilot.detected': '已检测到',
|
||
'ai.copilot.notFound': '未找到',
|
||
'ai.copilot.path': '路径:',
|
||
'ai.copilot.notFoundHint': '在 PATH 中未找到 copilot。请安装或在下方指定可执行文件路径。',
|
||
'ai.copilot.customPathPlaceholder': '例如 /usr/local/bin/copilot',
|
||
'ai.copilot.check': '检查',
|
||
|
||
// AI Default Agent
|
||
'ai.defaultAgent': '默认 Agent',
|
||
'ai.defaultAgent.description': '创建新 AI 会话时使用的 Agent',
|
||
'ai.defaultAgent.catty': 'Catty(内置)',
|
||
|
||
// AI Chat
|
||
'ai.chat.noProvider': '尚未配置 AI 提供商。请前往 **设置 → AI → 提供商** 添加并启用一个提供商。',
|
||
'ai.chat.toolDenied': '操作已被用户拒绝。',
|
||
'ai.chat.toolApproved': '已批准',
|
||
'ai.chat.toolApprovalHint': '按回车批准,按 Esc 拒绝',
|
||
'ai.chat.approve': '批准',
|
||
'ai.chat.reject': '拒绝',
|
||
'ai.chat.toolLabel': '工具',
|
||
'ai.chat.targetLabel': '目标',
|
||
'ai.chat.permissionRequired': '需要权限',
|
||
'ai.chat.permissionDescription': 'AI Agent 希望执行一个需要你批准的工具调用。',
|
||
'ai.chat.commandBlocked': '此命令已被安全策略拦截,无法执行。',
|
||
'ai.chat.recommendAllow': '允许',
|
||
'ai.chat.recommendConfirm': '确认',
|
||
'ai.chat.recommendDeny': '拒绝',
|
||
'ai.chat.exportConversation': '导出对话',
|
||
'ai.chat.exportAs': '导出为',
|
||
'ai.chat.exportMarkdown': 'Markdown',
|
||
'ai.chat.exportJSON': 'JSON',
|
||
'ai.chat.exportPlainText': '纯文本',
|
||
'ai.chat.thinking': '思考中',
|
||
'ai.chat.thoughtFor': '思考了 {duration}',
|
||
'ai.chat.thought': '思考',
|
||
'ai.chat.agents': 'Agents',
|
||
'ai.chat.detectedOnMachine': '在本机检测到',
|
||
'ai.chat.rescan': '重新扫描',
|
||
'ai.chat.permObserver': '观察',
|
||
'ai.chat.permConfirm': '确认',
|
||
'ai.chat.permAuto': '自主',
|
||
'ai.chat.permObserverDesc': '只读模式',
|
||
'ai.chat.permConfirmDesc': '操作前询问',
|
||
'ai.chat.permAutoDesc': '自由执行',
|
||
'ai.chat.emptyHint': '询问服务器相关问题、执行命令或获取配置帮助。',
|
||
'ai.chat.placeholder': '向 {agent} 发送消息 — @ 引用上下文,/ 使用命令',
|
||
'ai.chat.placeholderDefault': '向 Catty Agent 发送消息...',
|
||
'ai.chat.noModel': '未选择模型',
|
||
'ai.chat.recent': '最近',
|
||
'ai.chat.viewAll': '查看全部',
|
||
'ai.chat.untitled': '无标题',
|
||
'ai.chat.justNow': '刚刚',
|
||
'ai.chat.minutesAgo': '{n}分钟前',
|
||
'ai.chat.hoursAgo': '{n}小时前',
|
||
'ai.chat.daysAgo': '{n}天前',
|
||
'ai.chat.newChat': '新对话',
|
||
'ai.chat.allSessions': '所有会话',
|
||
'ai.chat.noSessions': '没有历史会话',
|
||
'ai.chat.retryHint': '你可以重新发送消息来重试。',
|
||
'ai.chat.approvalTimeout': '工具审批已超时(5 分钟)。你可以重新发送消息来重试。',
|
||
'ai.chat.menuHosts': '主机',
|
||
'ai.chat.menuContext': '上下文',
|
||
'ai.chat.menuFiles': '文件',
|
||
'ai.chat.menuImage': '图片',
|
||
'ai.chat.menuMentionHost': '提及主机',
|
||
|
||
// AI Error
|
||
'ai.codex.bridgeError': 'Codex 主进程处理器尚未加载。请完全重启 Netcatty 或重启 Electron 开发进程,然后重试。',
|
||
|
||
// AI Web Search
|
||
'ai.webSearch.title': '网络搜索',
|
||
'ai.webSearch.enable': '启用网络搜索',
|
||
'ai.webSearch.enable.description': '允许 AI 代理搜索互联网获取最新信息。',
|
||
'ai.webSearch.provider': '搜索供应商',
|
||
'ai.webSearch.provider.description': '选择一个网络搜索 API 供应商。',
|
||
'ai.webSearch.apiKey': 'API 密钥',
|
||
'ai.webSearch.apiKey.description': '所选搜索供应商的 API 密钥。',
|
||
'ai.webSearch.apiKey.placeholder': '输入 API 密钥...',
|
||
'ai.webSearch.apiHost': 'API 地址',
|
||
'ai.webSearch.apiHost.description': '自定义 API 端点。除非使用代理,否则保持默认值。',
|
||
'ai.webSearch.apiHost.searxngDescription': 'SearXNG 实例的 URL(必填)。',
|
||
'ai.webSearch.maxResults': '最大结果数',
|
||
'ai.webSearch.maxResults.description': '搜索返回的最大结果数(1-20)。',
|
||
|
||
// AI Safety Settings
|
||
'ai.safety.title': '安全',
|
||
'ai.safety.permissionMode': '权限模式',
|
||
'ai.safety.permissionMode.description': '控制 AI 与终端的交互方式。观察者模式通过 MCP Server 阻止所有写操作,对内置和 ACP Agent 均生效。确认模式对 ACP Agent 仅为建议性(ACP Agent 有自己的工具审批流程)。',
|
||
'ai.safety.permissionMode.observer': '观察者 - 只读,禁止操作',
|
||
'ai.safety.permissionMode.confirm': '确认 - 操作前询问',
|
||
'ai.safety.permissionMode.autonomous': '自主 - 自由执行',
|
||
'ai.safety.commandTimeout': '命令超时',
|
||
'ai.safety.commandTimeout.description': '命令执行的最大秒数,超时将被终止。对内置和 ACP Agent 均生效。',
|
||
'ai.safety.commandTimeout.unit': '秒',
|
||
'ai.safety.maxIterations': '最大迭代次数',
|
||
'ai.safety.maxIterations.description': '防止 AI 失控执行的最大工具调用循环次数。ACP Agent 可能有自己的内部迭代限制,以其为准。',
|
||
'ai.safety.blocklist': '命令黑名单',
|
||
'ai.safety.blocklist.description': '用于拦截危险命令的正则表达式。通过 MCP Server 对内置和 ACP Agent 均生效。',
|
||
'ai.safety.blocklist.placeholder': '正则表达式...',
|
||
'ai.safety.blocklist.reset': '恢复默认',
|
||
'ai.safety.blocklist.add': '添加规则',
|
||
'ai.safety.note': '命令黑名单、命令超时和观察者模式通过 MCP Server 层强制执行,对所有 Agent 类型生效。确认模式和最大迭代次数对内置 Agent 完全强制执行;ACP Agent 可能有自己的内部控制。',
|
||
};
|
||
|
||
export default zhCN;
|