import type { Messages } from '../types';

export const zhCNCoreMessages: 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.manual': '手动顺序',
  '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}"？',
  'confirm.closeBusyTerminal.title': '确认关闭',
  'confirm.closeBusyTerminal.message': '进程 "{command}" 仍在运行，关闭后会被终止。',
  'confirm.closeBusyTerminal.messageWithMore': '进程 "{command}" 及其他 {count} 个正在运行的进程将被终止。',
  'confirm.closeBusyTerminal.cancel': '取消',
  'confirm.closeBusyTerminal.close': '关闭',
  '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.timestamps': '添加时间戳',
  'settings.sessionLogs.timestampsDesc': '为纯文本和 HTML 日志的每一行添加本地时间。',
  'settings.sessionLogs.hint': '会话日志用于记录终端输出，便于故障排查和审计。',

  // Settings > SSH Debug Logs
  'settings.sshDebugLogs.title': 'SSH 调试日志',
  'settings.sshDebugLogs.enable': '启用 SSH 调试日志',
  'settings.sshDebugLogs.enableDesc': '记录连接、认证、握手、断开和错误原因，不记录终端输出。',
  'settings.sshDebugLogs.location': '日志位置',
  'settings.sshDebugLogs.status': '状态',
  'settings.sshDebugLogs.statusOn': '已开启',
  'settings.sshDebugLogs.statusOff': '未开启',
  'settings.sshDebugLogs.size': '大小',
  'settings.sshDebugLogs.hint': '开启后，新发起的 SSH 连接会写入诊断信息，方便排查堡垒机、认证和异常断开问题。',

  // 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': '展开侧边栏',
  'vault.sidebar.resize': '调整侧边栏宽度',

  // 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.application.openExternal.failedTitle': '无法打开链接',
  'settings.application.openExternal.failedBody': '系统浏览器和内置浏览器窗口都无法打开该链接。',
  'settings.vault.title': '主机库',
  'settings.vault.showRecentHosts': '显示最近连接的主机',
  'settings.vault.showRecentHostsDesc': '在主机列表顶部显示最近连接过的主机',
  'settings.vault.showOnlyUngroupedHostsInRoot': '根目录只显示未分组主机',
  'settings.vault.showOnlyUngroupedHostsInRootDesc': '开启后，主机库根目录的主机列表只显示没有分组的主机，已分组主机请从左侧分组进入查看。',
  'settings.vault.showSftpTab': '显示 SFTP 标签页',
  'settings.vault.showSftpTabDesc': '在顶部标签栏显示独立的 SFTP 视图。关闭后可改用会话内左侧的 SFTP 侧栏。',
  'settings.vault.showHostTreeSidebar': '显示主机列表侧栏',
  'settings.vault.showHostTreeSidebarDesc': '在终端和编辑器标签页显示主机列表侧栏及顶部开关。',

  // 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.needsSave.title': '有未保存内容',
  'update.needsSave.message': '请先保存已打开的编辑器，然后再次点击「立即重启」以安装更新。',
  '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 个性化界面，修改会立即生效。主要 UI 区块都暴露了 [data-section="..."] 属性供你定位，比如：snippets-panel、host-details-panel、group-details-panel、serial-host-details-panel、ai-chat-panel、vault-sidebar、vault-main、vault-hosts-header、vault-host-list、vault-view、terminal-workspace、terminal-workspace-sidebar（Focus 模式终端列表）、terminal-host-tree-sidebar、terminal-host-tree-sidebar-content、terminal-host-tree-sidebar-row、terminal-side-panel（SFTP/脚本/主题/AI 侧栏，打开时生效）、terminal-side-panel-tabs、terminal-side-panel-content、terminal-sftp-panel、terminal-sftp-host-header、terminal-sftp-pane、terminal-sftp-toolbar、terminal-sftp-path、terminal-sftp-filter-bar、terminal-sftp-list、terminal-sftp-list-header、terminal-sftp-list-row、terminal-sftp-tree、terminal-sftp-tree-row、terminal-sftp-transfer-queue、terminal-sftp-transfer-row、terminal-split-pane、terminal-split-resizer、top-tabs、top-tabs-host-tree-toggle、top-tabs-quick-switcher-toggle。',
  'settings.appearance.customCss.placeholder':
    '/* 示例 — 由于 Tailwind 优先级较高，需要使用 !important */\n\n/* 隐藏顶部标签栏里的主机列表开关 */\n[data-section="top-tabs-host-tree-toggle"] {\n  width: 0 !important;\n  opacity: 0 !important;\n  pointer-events: none !important;\n}\n\n/* 隐藏打开快速切换器的加号按钮 */\n[data-section="top-tabs-quick-switcher-toggle"] {\n  display: none !important;\n}\n\n/* SFTP / 操作侧栏边框（关闭侧栏后不会残留） */\n[data-section="terminal-side-panel"] {\n  border: 2px solid #00c851 !important;\n  border-radius: 6px !important;\n}\n\n/* 修改整个操作侧栏背景，而不只是顶部标签 */\n[data-section="terminal-side-panel"],\n[data-section="terminal-side-panel-tabs"],\n[data-section="terminal-side-panel-content"],\n[data-section="terminal-sftp-panel"],\n[data-section="terminal-sftp-pane"],\n[data-section="terminal-sftp-list"],\n[data-section="terminal-sftp-tree"],\n[data-section="terminal-sftp-transfer-queue"] {\n  background-color: #1c384a !important;\n}\n\n/* 修改选中的 SFTP 文件行 */\n[data-section="terminal-sftp-list-row"][data-selected="true"] {\n  background-color: #00c851 !important;\n  color: #001b10 !important;\n}\n\n/* 加粗分屏分割线 */\n[data-section="terminal-split-resizer-bar"] {\n  background-color: hsl(var(--primary)) !important;\n  transform: scale(2) !important;\n}\n\n/* 高亮当前聚焦的分屏 */\n[data-section="terminal-split-pane"][data-focused="true"] {\n  outline: 2px solid hsl(var(--primary)) !important;\n  outline-offset: -2px;\n}\n\n/* 也可在 设置 → 终端 → 工作区聚焦指示 → 聚焦窗格显示边框 */',
  'settings.appearance.language': '语言',
  'settings.appearance.language.desc': '选择界面语言',
  'settings.appearance.uiFont': '界面字体',
  'settings.appearance.uiFont.desc': '选择软件界面使用的字体',
  'settings.appearance.windowOpacity': '窗口透明度',
  'settings.appearance.windowOpacity.desc': '调节整个应用窗口的透明度，方便叠在其他内容上方。较低时终端文字也会变淡；部分 Linux 桌面环境可能不支持。',
  // 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.inspectFailedTitle': '同步已暂停',
  'sync.autoSync.inspectFailedMessage': '无法访问云端以检查变更。数据改动或下次启动时会自动重试。',
  'sync.autoSync.syncedTitle': '已从云端同步',
  'sync.autoSync.syncedMessage': '你的数据已从云端更新。',
  'sync.autoSync.noProvider': '未连接云同步 provider。请打开 设置 → Sync & Cloud 进行连接。',
  'sync.autoSync.alreadySyncing': '同步正在进行中。',
  'sync.autoSync.restoreInProgress': '另一个窗口中的本地备份恢复正在进行中，请等待其完成。',
  'sync.autoSync.interruptedApplyTitle': '同步已暂停 — 上次恢复未完成',
  'sync.autoSync.interruptedApplyMessage': '上次本地恢复过程未正常结束，本地数据可能处于半应用状态。请打开「设置 → Sync & Cloud → 恢复」，从保护性备份中恢复后再让自动同步继续。',
  'sync.autoSync.vaultLocked': 'Vault 处于锁定状态。请打开 设置 → Sync & Cloud 解锁。',
  'sync.autoSync.conflictDetected': '检测到同步冲突。请打开 设置 → Sync & Cloud 处理。',
  'sync.autoSync.syncFailed': '同步失败',
  'sync.autoSync.restoredTitle': '已恢复',
  'sync.autoSync.restoredMessage': '已从云端恢复主机库数据。',
  'sync.autoSync.keptLocalTitle': '已保留本地数据',
  'sync.autoSync.keptLocalMessage': '保留了空的本地主机库，未应用云端数据。',
  'sync.autoSync.emptyVaultConflict.title': '检测到空主机库',
  'sync.autoSync.emptyVaultConflict.description': '本地主机库为空，但云端有数据。这通常发生在应用更新或存储重置之后。请选择如何处理：',
  'sync.autoSync.emptyVaultConflict.cloudLabel': '云端',
  'sync.autoSync.emptyVaultConflict.restore': '从云端恢复',
  'sync.autoSync.emptyVaultConflict.restoreDesc': '推荐 — 从云端备份恢复主机、密钥和代码片段',
  'sync.autoSync.emptyVaultConflict.keepEmpty': '保持为空',
  'sync.autoSync.emptyVaultConflict.keepEmptyDesc': '从头开始，使用空的主机库',
  'sync.autoSync.emptyVaultConflict.cloudSummary': '{hosts} 台主机，{keys} 个密钥，{snippets} 个代码片段，{proxyProfiles} 个代理',
  'sync.autoSync.emptyVaultManual': '无法同步：本地 vault 为空。请先从本地备份恢复，或在同步面板里使用"强制推送"。',

  'sync.blocked.title': '同步已暂停',
  'sync.blocked.reason.bulkShrink': '即将从云端删除 {baseCount} 条 {entityType} 中的 {lost} 条（缩减 {percent}%）。',
  'sync.blocked.reason.largeShrink': '即将从云端删除 {lost} 条 {entityType}。',
  'sync.blocked.detail': '通常是本地状态异常（钥匙串故障、数据加载不全）导致。请从本地备份恢复，如果确实要删这些条目请使用强制推送。',
  'sync.blocked.restoreButton': '从本地备份恢复',
  'sync.blocked.forcePushButton': '强制推送',

  'sync.forcePush.title': '确认强制推送',
  'sync.forcePush.body': '你将从云端移除 {lost} 条 {entityType}，此操作不可撤销。继续？',
  'sync.forcePush.confirm': '确认推送',
  'sync.forcePush.cancel': '取消',

  'sync.entityType.hosts': '主机',
  'sync.entityType.keys': '密钥',
  'sync.entityType.identities': '身份',
  'sync.entityType.proxyProfiles': '代理配置',
  'sync.entityType.snippets': '代码片段',
  'sync.entityType.customGroups': '分组',
  'sync.entityType.snippetPackages': '片段包',
  'sync.entityType.knownHosts': '主机密钥记录',
  'sync.entityType.portForwardingRules': '端口转发规则',
  'sync.entityType.groupConfigs': '分组配置',

  'sync.credentialsUnavailable': '当前设备无法解密部分已保存凭据。请先在本地重新输入凭据后再同步。',
  'time.never': '从未',
  'time.justNow': '刚刚',
  'time.minutesAgo': '{minutes} 分钟前',

  // Vault navigation
  'vault.nav.hosts': '主机',
  'vault.nav.keychain': '钥匙串',
  'vault.nav.proxies': '代理',
  'vault.nav.portForwarding': '端口转发',
  'vault.nav.snippets': '代码片段',
  'vault.nav.knownHosts': '已知主机',
  'vault.nav.logs': '日志',

  'proxyProfiles.action.add': '添加代理',
  'proxyProfiles.search.placeholder': '搜索代理…',
  'proxyProfiles.section.proxies': '代理',
  'proxyProfiles.count.items': '{count} 项',
  'proxyProfiles.empty.title': '暂无代理',
  'proxyProfiles.empty.desc': '创建可复用的 HTTP、SOCKS5 或命令代理，然后在主机详情里选择。',
  'proxyProfiles.usage': '已关联 {count} 处',
  'proxyProfiles.copyName': '{name} 副本',
  'proxyProfiles.panel.newTitle': '新建代理',
  'proxyProfiles.field.name': '代理名称',
  'proxyProfiles.error.required': '名称和代理详情不能为空。',
  'proxyProfiles.error.port': '端口必须在 1 到 65535 之间。',
  'proxyProfiles.viewMode': '代理显示方式',
  'proxyProfiles.delete.title': '删除代理？',
  'proxyProfiles.delete.desc': '删除 "{name}" 会同时从 {count} 个主机或分组设置中解除关联。',

  'vault.groups.title': '分组',
  'vault.groups.total': '共 {count} 个',
  'vault.groups.hostsCount': '{count} 台主机',
  'vault.groups.newSubgroup': '新建子分组',
  'vault.groups.rename': '重命名分组',
  'vault.groups.unnamed': '未命名分组',
  '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.connectSelected': '连接 ({count})',
  'vault.hosts.connectMultiple.success': '正在连接 {count} 个主机',
  'vault.hosts.moveToGroup.success': '已将 {host} 移动到 {group}',
  'vault.hosts.errors.nameRequired': '主机名称不能为空。',
  '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.list': '收藏路径',
  '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.viewMode.switchToList': '切换到列表视图',
  'sftp.viewMode.switchToTree': '切换到树形视图',
  'sftp.tree.loadError': '加载目录失败',
  'sftp.tree.loading': '加载中...',
  'sftp.kind.folder': '文件夹',
  'sftp.context.rename': '重命名',
  'sftp.context.permissions': '权限',
  'sftp.context.delete': '删除',
  'sftp.context.refresh': '刷新',
  'sftp.context.uploadFiles': '上传文件...',
  'sftp.context.uploadFilesHere': '上传文件到这里...',
  'sftp.context.uploadFolder': '上传文件夹...',
  'sftp.context.uploadFolderHere': '上传文件夹到这里...',
  '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.retryAction': '重试',
  'sftp.transfers.dismissAction': '移除',
  'sftp.transfers.openTargetFolder': '打开目标目录',
  'sftp.transfers.openTargetFolderError': '无法打开目标目录',
  'sftp.transfers.copyTargetPath': '复制目标路径',
  'sftp.transfers.copyTargetPathSuccess': '已复制目标路径',
  'sftp.transfers.copyTargetPathError': '无法复制目标路径',
  'sftp.transfers.resizeNameColumn': '调整文件名列宽',
  'sftp.transfers.dragToResize': '拖拽调整高度',
  'sftp.goUp': '上一级',
  'sftp.goToTerminalCwd': '定位到终端当前目录',
  'sftp.followTerminalCwd': '追随终端目录',
  'sftp.followTerminalCwd.enable': '开启追随终端目录',
  'sftp.followTerminalCwd.disable': '关闭追随终端目录',
  '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': '默认',

};
