export const zhCN = {
  common: {
    ok: '确定',
    cancel: '取消',
    close: '关闭',
    save: '保存',
    saving: '正在保存...',
    enabled: '已启用',
    disabled: '已禁用',
    add: '添加',
    remove: '移除',
    on: '开',
    off: '关',
    loading: '加载中...',
    error: '错误',
    retry: '重试',
    refresh: '刷新',
    go: '确认',
    edit: '编辑',
    copy: '复制',
    copied: '已复制',
    unsaved: '未保存',
  },
  app: {
    title: 'Suzent',
    initializing: '初始化中',
    connectingToCore: '正在连接核心服务...',
    backendErrorTitle: '连接失败',
    desktopRequiredTitle: '需要桌面端',
    desktopRequiredDesc: 'Suzent 仅支持桌面端运行。请使用原生桌面启动器打开该应用。',
    logoAriaLabel: 'Suzent 标志',
  },
  bootstrap: {
    title: '设置 Suzent',
    windowTitle: 'Suzent 安装',
    start: '安装',
    running: '正在安装...',
    changeDir: '更改',
    chooseInstallDir: '选择 Suzent 安装文件夹',
    installerMissing: '尚未安装 Suzent。请下载并运行 Suzent Installer，然后重新打开应用。',
    stageFailed: '{stage} 失败',
    state: {
      pending: '等待中',
      running: '运行中',
      succeeded: '完成',
      skipped: '已跳过',
      failed: '失败',
    },
    stages: {
      git: '安装 Git',
      uv: '安装 uv',
      python: '检查 Python',
      repository: '克隆工作区',
      env: '写入环境配置',
      dependencies: '安装依赖',
      ui: '下载桌面应用',
      playwright: '安装 Chromium',
      shortcuts: '创建快捷方式',
      shim: '写入启动器',
    },
  },
  nav: {
    chat: '对话',
    memory: '记忆',
    skills: '技能',
  },
  views: {
    memorySystem: '记忆系统',
    skillsLibrary: '技能库',
    robotGallery: '机器人画廊',
  },
  sidebar: {
    open: '打开侧栏',
    close: '关闭侧栏',
    tabs: {
      chats: '对话列表',
      config: '配置',
      files: '文件',
      browser: '网页',
      canvas: '画布',
      agents: '子代理',
      plan: '目标',
      project: '看板',
    },
    settings: '设置',
    settingsDesc: '',
  },
  subAgents: {
    model: '模型',
  },
  titlebar: {
    minimize: '最小化',
    maximize: '最大化',
    restore: '还原',
    close: '关闭',
  },
  updates: {
    available: '有可用更新',
    availableTitle: '有可用更新：{version}',
    updateNow: '更新',
    starting: '更新中...',
    latestVersion: '最新版本',
    confirmRestart: 'Suzent 将关闭、更新到 {version}，然后自动重启。是否继续？',
    startFailed: '启动更新失败：{error}',
  },
  config: {
    loading: '正在加载配置...',
    agentLabel: '智能体',
    agent: {
      code: '编写并执行 Python 代码',
      toolcalling: '🔧 直接调用工具（无需写代码）',
    },
    toolsLabel: '工具',
    toolsEmpty: '暂无可用工具',
    memory: {
      label: '记忆系统',
      button: '记忆工具',
      enabledDesc: '✓ 智能体可搜索与更新记忆',
      disabledDesc: '记忆工具已禁用',
    },
    sandbox: {
      label: '沙箱系统',
      button: '沙箱执行',
      enabledDesc: '✓ 智能体可在隔离沙箱中运行代码',
      disabledDesc: '沙箱执行已禁用',
    },
    mcp: {
      label: 'MCP 服务器',
      name: '名称',
      url: 'URL',
      stdio: 'Stdio',
      enableServer: '启用服务器',
      noneConfigured: '尚未配置 MCP 服务器。',
      manageInSettings: '请在设置中管理',
      noneConfiguredManageInSettings: '尚未配置 MCP 服务器，请到设置中添加。',
      enabledUrls: '已启用：{count} 个 URL',
      envPrefix: 'env:{json}',
      urlPlaceholder: 'https://主机/路径',
      commandPlaceholder: '命令',
      argsPlaceholder: '参数',
      envPlaceholder: '环境变量',
    },
  },
  settings: {
    title: '设置',
    language: '语言',
    usingSuzent: 'SUZENT 设置',
    memoryConfig: {
      title: '记忆配置',
      subtitle: '管理后台记忆整理与笔记库',
      systemConfigTitle: '系统配置',
      systemConfigDesc: '配置工作区的笔记目录挂载路径。',
      globalMemory: '全局记忆',
      modelsLabel: '模型',
      editInModelRoles: '模型角色',
      embeddingModelLabel: '向量模型',
      extractionModelLabel: '抽取模型',
      modelNotConfigured: '未配置',
      dreamTitle: '梦境智能体',
      dreamDesc: '后台记忆整理：把每日日志归并进笔记库。',
      consolidatedThrough: '已整理至',
      pendingLogs: '待处理日志',
      pendingFacts: '待处理事实',
      backlogProgress: '积压进度',
      progressCount: '{current}/{total} 条日志',
      complete: '完成',
      lastRun: '上次运行',
      lastResult: '上次结果',
      nextBatch: '下一批',
      runNow: '立即运行',
      runIngest: '运行摄取',
      runLint: '运行梳理',
      runningNow: '运行中...',
      never: '从未',
      noRunsYet: '尚未运行',
      lastResultSkipped: '多次无变化后已跳过',
      lastResultAdvanced: '已推进至 {watermark}',
      lastResultNotAdvanced: '没有持久页面变更',
      lastResultRan: '运行完成',
      ingestPhase: '摄取',
      lintPhase: '梳理',
      lintTitle: '每周梳理',
      lintEvery: '周期',
      lintLastRun: '上次梳理',
      lintDue: '待执行',
      lintScheduled: '已是最新',
      lintNever: '尚未运行',
      lintEveryDays: '每 {days} 天',
      statusBarIdle: '记忆空闲',
      statusBarNeedsReview: '记忆需检查',
      statusBarPending: '记忆待处理 {count}',
      statusBarWatermark: '已整理至 {watermark}',
      dreamStatus: {
        loading: '加载中',
        error: '需检查',
        inactive: '未激活',
        disabled: '已禁用',
        preparing: '准备中...',
        running: '梦境中...',
        finalizing: '收尾中...',
        pending: '待处理',
        idle: '空闲',
      },
    },
    providers: {
      title: '模型提供商',
      subtitle: '配置提供商 API 密钥并管理可用模型',
      apiKeysTab: 'API 密钥',
      modelsTab: '模型',
      addModelIdPlaceholder: '添加模型 ID...',
      fetch: '获取',
      fetching: '获取中...',
      noModelsFound: '未找到模型',
      fetchModels: '获取模型',
      modelsAvailable: '{count} 个可用',
      noCredentials: '无凭据字段，请通过环境变量配置。',
      changeKey: '修改',
      showKey: '显示',
      hideKey: '隐藏',
      addProvider: '+ 添加提供商',
      deleteProvider: '删除提供商',
      sync: '同步能力数据',
      syncing: '同步中...',
      syncTooltip: '从 LiteLLM 拉取定价、上下文窗口和功能标志',
      syncDone: '已同步 {providers} 个提供商，{models} 个模型',
      syncFailed: '同步失败',
      chatgpt: {
        title: 'ChatGPT 订阅',
        subtitle: '使用 ChatGPT 账号登录',
        loadingStatus: '正在检查登录状态...',
        signIn: '登录',
        disconnect: '断开连接',
        awaitingAuth: '请访问以下链接并输入验证码完成登录：',
        waiting: '正在等待授权...',
        status: {
          connected: '已连接',
          not_logged_in: '未登录',
          token_expired: '已过期',
        },
      },
      addForm: {
        title: '添加自定义提供商',
        id: '提供商 ID',
        label: '显示名称',
        apiType: 'API 类型',
        baseUrl: 'Base URL（可选）',
        apiKeySection: 'API 密钥字段（可选）',
        envVar: '环境变量名',
        fieldLabel: '字段标签',
        placeholder: '占位符',
        requiredFields: '提供商 ID 和显示名称为必填项。',
        save: '添加提供商',
      },
    },
    mcp: {
      title: 'MCP 服务器',
      subtitle: '通过 MCP 连接外部工具与资源',
      addNewServerTitle: '添加新服务器',
      addNewServerDesc: '添加一个 MCP 服务器，用于连接外部工具与资源。',
      nameOptionalPlaceholder: '名称（可选）',
      headersPlaceholder: '请求头（Header-Name=value, X-Api-Key=abc123）',
      commandPlaceholder: '命令（例如 uv、npx、python）',
      argsPlaceholder: '参数（逗号分隔：run, mcp-server, --option）',
      envPlaceholder: '环境变量（KEY=value, KEY2=value2）',
      adding: '添加中...',
      addServer: '添加服务器',
      configuredServersTitle: '已配置服务器',
      configuredServersDesc: '管理 MCP 服务器，可为当前会话启用/禁用。',
      noServersConfigured: '暂无已配置的服务器。',
      test: '测试',
      testing: '测试中...',
      reachable: '可连接',
      unreachable: '无法连接',
      editServerTitle: '编辑服务器',
      saveServer: '保存更改',
      saving: '保存中...',
      transportLabel: '传输方式',
      toggle: '切换',
      commandLabel: '命令',
      stdinMode: '标准输入模式',
    },
    categories: {
      providers: '提供商',
      roles: '模型角色',
      memory: '记忆系统',
      security: '安全',
      social: '社交频道',
      mcp: 'MCP 服务器',
      automation: '自动化',
      data: '数据',
      usage: '用量',
      appearance: '外观',
    },
    security: {
      title: '安全',
      subtitle: '沙箱与执行隔离设置',
    },
    data: {
      title: '数据',
      subtitle: '在多设备间同步可移植配置、技能与记忆',
      githubTitle: 'GitHub 同步',
      githubDesc: '通过带 GitHub remote 的本地 Git 仓库同步可迁移配置、技能和 Markdown 记忆。对话、运行时数据、索引和明文密钥只保留在本机。',
      githubQuickStartTitle: '快速开始',
      githubQuickStartDesc: '创建私有 GitHub 仓库（默认 suzent-brain）并连接。一次登录即可，无需 CLI 或个人访问令牌。',
      githubQuickStartDefaultPath: '默认目录：{path}',
      githubQuickStartRepoPlaceholder: '可选：your-username/suzent-brain 或 GitHub 克隆地址',
      githubQuickStartButton: '快速开始',
      githubQuickStartRunning: '正在设置 GitHub 同步...',
      githubQuickStartDone: '已连接到 {repo}。{summary}',
      githubRepoNameLabel: 'GitHub 仓库名称',
      githubRepoNameHint: '在 GitHub 上创建或关联 用户名/{name}（私有）。开始前可修改名称。',
      githubSignInButton: '使用 GitHub 登录',
      githubSignInDesc: '授权 Suzent 访问您的 GitHub 仓库。',
      githubSignInCode: '打开 {url} 并输入此验证码：',
      githubSignInWaiting: '等待授权…',
      githubSignInExpired: '验证码已过期，请点击登录重试。',
      githubSignInDenied: '授权被拒绝。',
      githubSignInDone: '已登录为 {username}',
      githubSignOut: '退出登录',
      githubAdvanced: '高级选项',
      githubConnected: '已连接',
      githubSignedIn: '已登录 GitHub',
      githubRepoPlaceholder: '本地 Git 仓库文件夹（高级）',
      githubBranch: '分支',
      githubRemote: 'Remote',
      githubAutoSync: '自动同步',
      githubAutoResolve: '智能体解决冲突',
      githubInterval: '小时',
      githubSecretSync: '同步加密 API 密钥',
      githubSecretWarning: '默认关闭。GitHub 只接收密文；恢复依赖受信设备或本地恢复材料。',
      shibbolethTitle: '加密 API 密钥',
      shibbolethDesc: 'API 密钥在推送到 GitHub 前会先加密。每台需要解密的设备都要使用相同口令。',
      shibbolethLabel: '口令',
      shibbolethPlaceholder: '至少 12 个字符',
      shibbolethConfirm: '确认口令',
      shibbolethHint: '可选。GitHub 中只存储密文，不存储明文密钥。',
      shibbolethWarning: '如果忘记此口令，加密的 API 密钥将无法恢复。Suzent 不会把它写入磁盘。',
      shibbolethSetup: '启用',
      shibbolethEnable: '启用',
      shibbolethDisable: '停用',
      shibbolethUnlockAction: '解锁',
      shibbolethLockAction: '锁定',
      shibbolethOn: '开启',
      shibbolethOff: '关闭',
      shibbolethUnlockedBadge: '已解锁',
      shibbolethLockedBadge: '已锁定',
      shibbolethEnabled: '已启用加密 API 密钥同步。推送或拉取前请先解锁。',
      shibbolethDisabled: '已停用加密 API 密钥同步。',
      shibbolethUnlocked: '本会话已解锁加密。',
      shibbolethLocked: '加密已锁定。',
      shibbolethTooShort: '口令至少需要 {min} 个字符。',
      shibbolethMismatch: '两次输入的口令不一致。',
      shibbolethHasBundles: '同步仓库中已有加密的 API 密钥包，拉取前解锁可导入。',
      shibbolethNoBundles: '仓库中还没有加密包，解锁后推送即可发布密文。',
      shibbolethRequiredForSync: '已启用加密 API 密钥同步时，推送或拉取前请先解锁。',
      githubSave: '保存配置',
      githubValidate: '验证',
      githubSaveAuto: '保存自动同步',
      githubPush: '推送',
      githubPull: '拉取',
      githubSaved: 'GitHub 同步设置已保存。',
      githubValid: 'GitHub 仓库验证通过。',
      githubPushed: 'GitHub 同步内容已推送。',
      githubPulled: 'GitHub 同步内容已拉取。',
      githubFailed: 'GitHub 同步失败：{error}',
      githubPullConfirm: '从 GitHub 同步拉取并替换本机可迁移配置、技能和 Markdown 记忆？',
      githubLastRevision: '上次修订',
      githubNone: '无',
    },
    roles: {
      title: '模型角色',
      subtitle: '为每个逻辑角色分配模型。优先使用第一个可用模型，多个模型自动降级。',
      primary: '主要',
      primaryDesc: '主聊天 Agent，需要工具调用和大上下文支持。',
      cheap: '轻量',
      cheapDesc: '自动标题、摘要等轻量任务。',
      vision: '视觉',
      visionDesc: '图像分析，必须支持多模态输入。',
      embedding: '向量嵌入',
      embeddingDesc: '向量检索与记忆召回。',
      imageGeneration: '图像生成',
      imageGenerationDesc: '文生图。',
      tts: '语音合成',
      ttsDesc: '文字转语音。',
      modelsPlaceholder: 'provider/model（每行一个）',
      notConfigured: '未配置',
      fallbackHint: '每行输入一个模型 ID，第一行为主模型，其余为降级备选。',
      addFromAvailable: '添加模型...',
      customPlaceholder: 'provider/model-name',
      searchPlaceholder: '搜索或输入 provider/model-name...',
      noModelsFound: '未找到模型',
      addCustom: '添加 "{id}"',
      moveUp: '上移（提高优先级）',
    },
    sandbox: {
      title: '笔记目录',
      subtitle: '选择一个目录，作为所有对话统一挂载到 /mnt/notebook。',
      mountTarget: '容器路径',
      hostFolder: '主机目录',
      notConfigured: '未配置',
      chooseFolder: '选择目录',
      saveHint: '更改会自动生效。',
    },
    appearance: {
      title: '外观',
      subtitle: '选择强调色主题',
      colorScheme: '颜色方案',
      schemes: { warm: '暖色', cold: '冷色', green: '绿色' },
    },
    usage: {
      title: '用量',
      subtitle: '跟踪 LLM API 花费和 Token 使用情况',
      totalSpend: '总花费',
      avgDaily: '日均花费',
      totalCalls: 'API 调用',
      totalTokens: 'Token 数',
      lastNDays: '最近 {count} 天',
      perDay: '每天',
      apiCalls: '次 API 调用',
      days: '{count}天',
      dailySpend: '每日花费',
      today: '今天',
      tooltipCalls: '{count} 次调用',
      tokenBreakdown: 'Token 分布',
      inputTokens: '输入 Token',
      outputTokens: '输出 Token',
      noUsageYet: '暂无用量数据。开始对话后即可在此查看花费。',
    },
    switchToLight: '切换到浅色模式',
    switchToDark: '切换到深色模式',
    saveChanges: '保存更改',
    saving: '正在保存...',
    verifyFailed: '验证失败或未找到可用模型。',
    social: {
      title: '社交频道',
      subtitle: '配置社交平台智能体与访问控制',
      generalSettingsTitle: '通用设置',
      generalSettingsDesc: '配置全局社交互动设置。',
      socialModel: '社交模型',
      useDefaultModel: '使用默认系统模型',
      selectModelPlaceholder: '选择模型…',
      globalAllowedUsers: '全局允许的用户（逗号分隔 ID）',
      allowedUsersPlaceholder: 'user123, 987654...',
      agentCapabilitiesTitle: '智能体能力',
      agentCapabilitiesDesc: '配置社交智能体可使用的工具。',
      enableMemoryTools: '启用记忆工具',
      tools: '工具',
      allTools: '所有工具',
      custom: '自定义',
      noToolsAvailable: '暂无可用工具',
      mcpServers: 'MCP 服务器',
      systemDefault: '系统默认',
      enable: '启用',
      allowedUsersSpecific: '允许的用户（本平台）',
      allowedUsersSpecificPlaceholder: 'user_id_1, user_id_2...',
      pairingTitle: '配对与访问控制',
      pairingDesc: '要求陌生人在聊天前进行验证',
      pairingDisabled: '配对已禁用 —— 仅允许列表中的用户可以聊天。',
      noPendingRequests: '没有待处理的请求。',
      approve: '批准',
      deny: '拒绝',
    },
    automation: {
      title: '自动化',
      subtitle: '调度周期性智能体任务并管理调度器',
      heartbeatToolsTitle: '心跳工具授权',
      heartbeatToolsDesc: '心跳运行时自动批准的工具。保持「全部工具」可批准所有工具，或选择「自定义」进行限制。',
      noToolsSelected: '未选择任何工具',
      failedToCreateJob: '创建任务失败',
      failedToUpdateJob: '更新任务失败',
      defaultModel: '默认',
      schedulerStatusTitle: '调度器状态',
      running: '运行中',
      stopped: '已停止',
      activeOfTotal: '{active} 个活跃 / 共 {total} 个任务',
      heartbeatTitle: '心跳',
      heartbeatDesc: '使用以下清单进行定期智能体签到',
      heartbeatChecklist: '清单。',
      heartbeatRunning: '每 {minutes} 分钟在持续会话中运行一次。',
      heartbeatDisabled: '已禁用。启用以开始定期签到。',
      heartbeatCreate: '创建 /shared/HEARTBEAT.md 以启用。',
      disable: '禁用',
      runNow: '立即运行',
      collapse: '收起',
      heartbeatMdEdit: '编辑',
      heartbeatIntervalLabel: '间隔',
      heartbeatMinutesUnit: '分钟',
      lastRun: '上次运行：',
      result: '结果：',
      resultOk: 'OK（无需关注的事项）',
      errorLabel: '错误：',
      addNewJobTitle: '添加新任务',
      addNewJobDesc: '安排提示词按重复计划自动运行。',
      jobNamePlaceholder: '任务名称',
      cronExprPlaceholder: 'Cron 表达式（例如 */5 * * * *）',
      repeat: '重复',
      freqMinutes: '每隔几分钟',
      freqHourly: '每小时',
      freqDaily: '每天',
      freqWeekly: '每周',
      freqMonthly: '每月',
      freqAdvanced: '高级（cron）',
      intervalLabel: '分钟数',
      atMinuteLabel: '在第几分钟',
      atTimeLabel: '时间',
      onDaysLabel: '在以下日期',
      onDayOfMonthLabel: '每月第几天',
      weekdaysShort: '工作日',
      everyDayShort: '每天',
      weekdays: '周日,周一,周二,周三,周四,周五,周六',
      advancedHint: '五个字段：分 时 日 月 周。某字段填 * 表示“任意”。',
      summaryMinutes: '每 {n} 分钟运行一次',
      summaryHourly: '每小时在第 {m} 分运行',
      summaryDaily: '每天 {time} 运行',
      summaryWeekly: '每个{day} {time} 运行',
      summaryMonthly: '每月第 {day} 天 {time} 运行',
      promptPlaceholder: '按计划执行的提示词…',
      announce: '通知',
      silent: '静默',
      delivery: '投递方式',
      model: '模型',
      active: '活跃',
      creating: '创建中...',
      addJob: '添加任务',
      scheduledJobsTitle: '定时任务',
      scheduledJobsDesc: '管理自动化任务。可切换、触发、编辑或删除任务。',
      noCronJobs: '尚未配置定时任务。',
      cronExpression: 'Cron 表达式',
      run: '运行',
      nextRun: '下次运行：',
      hideHistory: '隐藏历史',
      showHistory: '查看历史',
      noRunHistory: '暂无运行记录。',
    },
  },
  chat: {
    newChat: '新对话',
    send: '发送',
    placeholder: '输入消息...',
  },
  chatList: {
    searchChatsPlaceholder: '搜索对话…',
    clearSearch: '清空搜索',
    newChat: '新对话',
    newProject: '新建项目',
    newProjectPlaceholder: '项目名称…',
    moveToProject: '移动到项目',
    currentLabel: '当前',
    filter: {
      in: '位于',
      all: '所有项目',
      recentAll: '所有项目近期对话',
      recentIn: '{name} 近期对话',
    },
    kind: {
      you: '你',
      subagents: '子智能体',
      scheduled: '计划任务',
      all: '全部',
    },
    labels: {
      heartbeat: '心跳',
      subagentOf: '隶属于 {name}',
      subagentsCount: '{count} 个子智能体',
    },
    menu: {
      title: '操作',
      rename: '重命名',
      moveToProject: '移动到项目',
      delete: '删除',
      deleteFailed: '无法删除项目',
      deleteConfirmTitle: '删除 {name}？',
      deleteConfirmEmpty: '该项目没有对话，删除后无法恢复。',
      deleteConfirmWithChats: '该项目有 {count} 个对话，将被移动到 {target}，然后删除该项目。',
    },
    empty: {
      noResultsTitle: '未找到结果',
      noResultsDesc: '试试换一个关键词',
      noChatsTitle: '暂无对话',
      noChatsDesc: '开始一个新对话以继续',
    },
    delete: {
      confirmTitle: '确定删除这个对话吗？',
      confirm: '删除',
      deleting: '正在删除...',
      buttonTitle: '删除对话',
      confirmMessage: '此操作将永久删除该对话及其所有消息。',
      cascadeMessage: '此对话包含子 Agent。是否一并删除？',
      cascadeYes: '连同子 Agent 一起删除',
      cascadeNo: '仅删除此对话',
    },
    rename: {
      buttonTitle: '重命名对话',
      placeholder: '对话名称...',
      confirm: '确定',
      cancel: '取消',
    },
    untitled: '未命名对话',
    messagesCount: '{count} 条消息',
    loadMore: '加载更多（还有 {count} 条）',
    loadingMore: '加载中...',
  },
  chatInput: {
    removeFile: '移除文件',
    placeholderReady: '我能如何帮助你？',
    placeholderLoading: '系统加载中...',
    attachFiles: '添加附件（图片、PDF、文档等）',
    modelPlaceholder: '模型',
    stopGenerating: '停止生成',
    sendMessage: '发送消息',
    redirectAgent: '重定向助手',
    placeholderRedirect: '输入以重定向助手...',
    fileMentions: '文件',
    fileMentionTypeToSearch: '输入以搜索已挂载文件',
    fileMentionSearching: '正在搜索文件...',
    fileMentionNoResults: '没有匹配的文件',
    stop: '停止',
    send: '发送',
    redirect: '重定向',
  },
  chatWindow: {
    dragDropTitle: '将文件拖到这里',
    dragDropDesc: '支持图片、PDF、文档等',
    scrollToBottom: '滚动到底部',
    connecting: '正在连接核心服务...',
    outputValidationRetryError: '模型输出格式校验多次失败，请重试这条消息。',
    genericError: '发生错误，请重试。',
    heartbeatOff: '心跳已关闭',
    permissionModeTitle: '工具权限模式',
    permissionModeLabel: '模式',
    autoModeConfirmation: '自动模式会使用安全分类器在不询问的情况下批准低风险操作，强制拒绝规则仍然生效。是否启用自动模式？',
    autoModeDialogTitle: '启用自动模式？',
    autoModeCancel: '取消',
    autoModeEnable: '启用',
    permissionModes: {
      default: '询问',
      accept_edits: '自动编辑',
      plan: '计划',
      auto: '自动',
      strict_readonly: '只读',
    },
    permissionModeInputLabels: {
      default: '询问权限',
      accept_edits: '自动编辑',
      plan: '计划模式',
      auto: '自动模式',
      strict_readonly: '只读模式',
    },
    permissionModeDescriptions: {
      default: '执行会改变状态的工具操作前先询问。',
      accept_edits: '允许已验证的工作区编辑，其他风险操作仍会询问。',
      plan: '仅允许只读探索，但可编辑项目 plan.md。',
      auto: '自动分类未决操作，强制安全规则仍然生效。',
      strict_readonly: '拒绝所有非只读的延迟工具操作。',
    },
    heartbeatRunning: '心跳运行中',
    heartbeatHealthy: '心跳健康',
    heartbeatEnabled: '心跳已启用',
    heartbeatLastRun: '上次心跳 {time}',
    heartbeatLabel: '心跳',
    heartbeatConfigure: '配置心跳',
    heartbeatInterval: '运行间隔',
    heartbeatMinutes: '{minutes}分钟',
    heartbeatHours: '{hours}小时',
    heartbeatMinutesUnit: '分钟',
    heartbeatInstructions: '指令',
    heartbeatInstructionsPlaceholder: '每次心跳时智能体应该做什么？',
    hideToolCalls: '折叠工具',
    showToolCalls: '展开工具',
  },
  newChat: {
    creatingIn: '将创建于',
    greetings: {
      nightOwl: '夜猫子？',
      goodMorning: '早上好。',
      keepBuilding: '继续创造。',
      goodEvening: '晚上好。',
      bedTime: '该睡了？还是深夜爆肝？',
    },
  },
  chatMessage: {
    viewFile: '查看文件（按住 Shift 点击全屏）',
    downloadFile: '下载文件',
    userLabel: '用户',
  },
  fileViewer: {
    title: '文件预览',
    revealInExplorer: '在文件管理器中显示',
    closeEsc: '关闭（Esc）',
    fetchFailed: '获取文件内容失败',
    errorPrefix: '错误：',
  },
  goal: {
    title: '当前目标',
    noGoal: '暂无目标。',
    turns: '{elapsed}/{max} 轮',
    subgoals: '子目标',
    pause: '暂停',
    resume: '继续',
    clear: '清除',
    status: {
      active: '进行中',
      paused: '已暂停',
      completed: '已完成',
      cancelled: '已取消',
    },
  },
  task: {
    title: '任务',
    noTasks: '暂无任务。',
    noTasksForChat: '本对话暂无分配任务。',
    assignee: '{name}',
    blocks: '阻塞 {ids}',
    blockedBy: '被 {ids} 阻塞',
    status: {
      pending: '待办',
      inprogress: '进行中',
      completed: '已完成',
      blocked: '被阻塞',
      cancelled: '已取消',
    },
  },
  projectBoard: {
    title: '项目看板',
    noTasks: '本项目暂无任务。',
    noGoals: '暂无活跃目标。',
    taskCount: '个项目任务',
    open: '打开看板',
  },
  archival: {
    title: '归档记忆',
    filters: '筛选',
    searchPlaceholder: '搜索记忆…（可尝试添加关键词）',
    searching: '正在搜索...',
    sortBy: '排序方式',
    sort: {
      newestFirst: '最新优先',
      oldestFirst: '最早优先',
      highToLow: '高 → 低',
      lowToHigh: '低 → 高',
      mostAccessed: '访问最多',
      mostRelevant: '最相关',
    },
    importanceLevel: '重要性',
    importance: {
      all: '全部',
      high: '高',
      medium: '中',
      low: '低',
      highRange: '高（≥0.8）',
      mediumRange: '中（0.5-0.8）',
      lowRange: '低（<0.5）',
    },
    clearFilters: '清除筛选',
    clearAllFilters: '清除全部筛选',
    view: {
      list: '列表',
      cards: '卡片',
      switchToCards: '切换到卡片视图',
      switchToList: '切换到精简列表',
    },
    showingCount: '正在显示 {count} 条记忆',
    filteredBy: '按"{importance}"重要性筛选',
    errorTitle: '加载记忆失败',
    empty: {
      noMatchesTitle: '未找到匹配项',
      noMatchesDesc: '试试更换关键词或调整筛选条件',
      noMemoriesTitle: '暂无记忆',
      noMemoriesDesc: '开始对话后，重要信息会自动保存到这里',
      noImportanceDesc: '未找到"{importance}"重要性的记忆，可尝试修改筛选条件。',
    },
    loading: '正在加载记忆...',
    loadMore: '加载更多',
  },
  memoryCard: {
    today: '今天',
    yesterday: '昨天',
    daysAgo: '{count} 天前',
    importance: {
      highShort: '高',
      medShort: '中',
      lowShort: '低',
      tooltip: '重要性：{value}',
    },
    delete: {
      confirmTitleCompact: '删除？',
      confirmYes: '是',
      confirmTitle: '确定删除这条记忆吗？',
      confirmDelete: '确定删除',
      cancel: '取消',
      button: '删除',
      buttonTitle: '删除记忆',
    },
    badges: {
      new: '新',
      hot: '热',
    },
    showMore: '展开',
    showLess: '收起',
    meta: {
      created: '创建：',
      views: '访问：',
      match: '匹配：',
    },
  },
  status: {
    copiedToClipboard: '已复制到剪贴板',
    codeCopiedToClipboard: '代码已复制到剪贴板',
    logCopiedToClipboard: '日志已复制到剪贴板',
    copyToClipboard: '复制到剪贴板',
  },
  codeBlock: {
    copyText: '复制文本',
    copyCode: '复制代码',
    collapse: '收起',
    expand: '展开',
    code: '代码',
    lines: '{count} 行',
  },
  logBlock: {
    systemLog: '系统日志',
    collapse: '收起',
    expand: '展开',
    lines: '{count} 行',
    chars: '{count} 字符',
  },
  toolCallBlock: {
    permissionRejectPlaceholder: '可选：说明原因或建议更安全的做法',
    permissionContractUnavailable: '此审批缺少服务端权限契约，请重试该请求。',
    ruleScopeSession: '当前对话',
    ruleScopeGlobal: '所有对话',
    ruleExplanationCommand: '{action} 将为{scope}创建命令规则：`{command}`',
    ruleExplanationTool: '{action} 将为{scope}创建覆盖 {tool} 工具的规则。',
    ruleExplanationGeneric: '{action} 将为{scope}创建作用域规则。',
    permissionActions: {
      allowOnce: '允许',
      allowSession: '本次会话始终允许',
      allowGlobal: '全局始终允许',
      allowCommandSession: '本次会话允许此命令',
      allowCommandGlobal: '始终允许此命令',
      reject: '拒绝',
    },
    done: '完成',
    arguments: '参数',
    output: '输出',
  },
  permissionDock: {
    title: '我可以{action}吗？',
    useTool: '使用 {tool}',
    localProject: '项目（本地）',
    deny: '拒绝',
    allowOnce: '仅允许一次',
    allowSession: '本次会话允许',
    allowGlobal: '始终允许',
    ctrlEnter: 'Ctrl+Enter',
    yes: '是',
    yesAnd: '是，并{action}',
    yesAllowCommandSession: '是，在本次会话中允许 {command}',
    yesAllowCommandGlobal: '是，始终允许 {command}',
    no: '否',
    feedbackPlaceholder: '否，并告诉 Suzent 应该如何调整',
    submit: '提交',
  },
  codeStepBlock: {
    thought: '思考',
    code: '代码',
    executionLogs: '执行日志',
    result: '结果',
  },
  sandbox: {
    selectChat: '请选择一个对话',
    back: '返回',
    maximize: '最大化（全屏）',
    refresh: '刷新',
    openInExplorer: '在文件管理器中打开',
    uploadFile: '上传文件',
    workspace: '工作区',
    shared: '共享',
    mounts: '挂载',
    scanning: '扫描中...',
    up: '.. / 上一级',
    emptyDirectory: '空目录',
    itemsCount: '{count} 个项目',
    errorPrefix: '错误：',
    status: {
      syncing: '同步中',
      ready: '就绪',
    },
  },
  deleteOverlay: {
    title: '删除？',
    confirm: '确定',
    cancel: '取消',
    buttonTitle: '删除',
  },
  select: {
    placeholder: '请选择…',
  },
  multiSelect: {
    placeholder: '选择工具…',
    emptyMessage: '暂无选项',
  },
  skills: {
    loading: '正在加载技能...',
    errorTitle: '错误',
    retry: '重试',
    title: '技能库',
    subtitle: '可用能力索引',
    reload: '从磁盘重新加载',
    enableSkill: '启用技能',
    disableSkill: '禁用技能',
    openSkill: '打开技能',
    closeSkill: '关闭技能',
    description: '描述',
    mainBody: '正文',
    emptyTitle: '未找到技能',
    emptyDesc: "将用户技能放入 '~/.suzent/skills' 后会在此显示。",
  },
  memoryStats: {
    totalMemories: '记忆总数',
    memoryUtilization: '记忆利用率',
    utilizedCount: '已使用 {active}/{total} 条',
    activity7d: '7天活跃率',
    recentCount: '最近访问 {recent}/{total} 条',
    coldMemoryRatio: '未访问占比',
    coldCount: '仍未访问 {cold}/{total} 条',
    accessDistribution: '访问分层',
    distributionTooltipUnaccessed: '未访问：{count}',
    distributionTooltipLight: '轻度（1-2次）：{count}',
    distributionTooltipEngaged: '高频（3次以上）：{count}',
    unaccessedCount: '未访问：{count}',
    lightCount: '轻度（1-2次）：{count}',
    engagedCount: '高频（3次以上）：{count}',
  },
  coreMemory: {
    saveFailed: '保存失败',
    failedToSave: '保存失败',
    copiedText: '✓ 已复制',
    placeholder: '请输入{title}…',
    charactersOfMax: '{current} / {max} 字符',
    overLimit: '超出限制！',
    usedPercent: '已使用 {percent}%',
    noContent: '暂无内容，点击"编辑"进行添加',
    charactersCount: '{count} 字符',
    wordsApprox: '约 {count} 个词',
    labels: {
      persona: { title: 'Persona', desc: '身份、角色与工作原则 — persona.md' },
      user: { title: '用户', desc: '偏好、技术栈与沟通习惯 — user.md' },
      facts: { title: '长期记忆', desc: '浓缩的上下文与关键决策 — MEMORY.md' },
      context: { title: '会话上下文', desc: '当前任务状态与草稿 — sessions/{id}/context.md' },
    },
  },
  planProgress: {
    noActivePlan: '暂无进行中的计划。',
    progress: '进度',
    taskProgress: '任务进度 {completed}/{total}',
    current: '当前：{title}',
    active: '进行中',
  },
  errorBoundary: {
    systemFailure: '系统故障',
    unexpected: '发生了意外错误',
    reboot: '重启系统',
    details: '错误详情',
  },
  folderContext: {
    activeContexts: '已挂载上下文',
    noFoldersMounted: '未挂载任何文件夹',
    remove: '移除',
    recentFolders: '最近使用',
    noRecentFolders: '暂无最近文件夹',
    chooseDifferent: '选择其他文件夹…',
    context: '工作目录',
  },
  fileLink: {
    clickToView: '点击查看 {path}（按住 Shift 点击全屏）',
  },
  imageViewer: {
    fullScreenAlt: '全屏预览',
  },
  memoryView: {
    initializing: '正在初始化记忆系统...',
    systemError: '系统错误',
    retryConnection: '重试连接',
    coreMemoryTitle: '核心记忆文件',
    coreMemoryDesc: '始终注入 Prompt 的 Markdown 文件：persona.md、user.md、MEMORY.md',
    archivalTitle: '归档数据库',
    archivalDesc: '只读搜索索引',
    indexingArchives: '索引归档数据',
    waiting: '等待中',
    tabs: {
      overview: '概览',
      dreaming: '梦境',
      dailyLogs: '每日日志',
      memoryFile: 'MEMORY.md',
      transcripts: '会话记录',
    },
  },
  dailyLogs: {
    title: '每日日志',
    entries: '{count} 条',
    loading: '正在加载每日日志...',
    loadLogFailed: '加载日志失败',
    loadDatesFailed: '加载日志列表失败',
    emptyTitle: '暂无每日日志',
    emptyDesc: '当智能体从对话中抽取事实后，每日记忆日志会显示在这里。',
    today: '今天',
    yesterday: '昨天',
    daysAgo: '{count} 天前',
  },
  memoryFile: {
    fileName: 'MEMORY.md',
    loadFailed: '加载 MEMORY.md 失败',
    loading: '正在加载 MEMORY.md...',
    headerWithSize: '{size} • 长期记忆',
    notCreatedYet: '尚未生成',
    reindex: '重建索引',
    reindexing: '重建中...',
    reindexSuccess: '重建索引完成',
    reindexFailed: '重建索引失败',
    emptyTitle: '暂无 MEMORY.md',
    emptyDesc: '长期记忆文件会在智能体处理对话并抽取关键事实后自动生成。',
  },
  transcripts: {
    title: '会话记录',
    desc: 'JSONL 对话日志',
    sessionLabel: '会话',
    selectPlaceholder: '选择会话...',
    lastNLabel: '最近 N 条',
    all: '全部',
    entriesCount: '{count} 条',
    lastN: '最近 {n} 条',
    loading: '正在加载记录...',
    loadFailed: '加载记录失败',
    selectTitle: '请选择会话',
    selectDesc: '从上方下拉框选择会话以查看对话记录。',
    emptyTitle: '暂无记录',
    emptyDesc: '该会话暂时没有记录。启用 JSONL 记录后会自动生成。',
    actionsCount: '{count} 个动作',
  },
  browser: {
    title: '浏览器',
    navigate: '导航',
    execute: '执行',
    executeHint: '执行浏览器命令以开始…',
    streamAlt: '浏览器画面',
    status: {
      connected: '已连接',
      connecting: '连接中',
      disconnected: '已断开',
    },
    takeControl: '接管控制',
    liveControlActive: '实时控制中',
  },
} as const;
