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

const zhCN: Messages = {
  // Common
  'common.save': '保存',
  'common.cancel': '取消',
  'common.close': '关闭',
  'common.settings': '设置',
  'common.search': '搜索',
  'common.connect': '连接',
  'common.terminal': '终端',
  'common.create': '创建',
  'common.rename': '重命名',
  'common.refresh': '刷新',
  'common.continue': '继续',
  'common.enabled': '已启用',
  'common.disabled': '已禁用',
  'common.unknownError': '未知错误',
  'common.noResultsFound': '没有匹配结果',
  'common.back': '返回',
  'common.apply': '应用',
  'common.use': '使用',
  '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 > 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': '查看发布说明',

  // 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.errors.required': '分组名称不能为空。',
  'vault.groups.errors.invalidChars': "分组名称不能包含 '/' 或 '\\\\'.",

  '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.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.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.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.download': '下载',
  'sftp.context.copyToOtherPane': '复制到另一侧',
  '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.status.loading': '加载中...',
  'sftp.status.uploading': '上传中...',
  'sftp.status.ready': '就绪',
  'sftp.transfers': '传输',
  'sftp.transfers.active': '{count} 个进行中',
  'sftp.transfers.clearCompleted': '清除已完成',
  '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.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': '本地终端',

  // 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.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.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.legacyAlgorithms': '旧版算法',
  'hostDetails.legacyAlgorithms': '允许旧版算法',
  'hostDetails.legacyAlgorithms.desc': '启用已弃用的 SSH 算法（diffie-hellman-group1、ssh-dss、3des-cbc 等）以连接老旧网络设备。',
  'hostDetails.legacyAlgorithms.warning': '这些算法存在已知安全漏洞，仅建议在老旧设备不支持现代加密时启用。',
  '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.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.fontSize': '字体大小',
  '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.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.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': '在外部应用程序中保存文件时，更改将自动上传到远程服务器',
  '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.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.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.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': '选择终端渲染技术。自动模式会在低内存设备上使用 Canvas。更改将在新终端会话中生效。',
  'settings.terminal.rendering.auto': '自动',

  // 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.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.fill': '填入',
  'keyboard.interactive.fillSaved': '填入已保存的密码',
  'keyboard.interactive.useSaved': '使用已保存',
  'keyboard.interactive.useSavedPassword': '使用已保存的密码',

  // 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 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-code-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 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.toolApprovalTitle': '需要权限确认',
  '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;
