export default {
    scheduledTests: {
      title: '定时测试',
      addPlan: '添加计划',
      editPlan: '编辑计划',
      deletePlan: '删除计划',
      model: '模型',
      cronExpression: 'Cron 表达式',
      enabled: '启用',
      lastRun: '上次运行',
      nextRun: '下次运行',
      maxResults: '最大结果数',
      noPlans: '暂无定时测试计划',
      confirmDelete: '确定要删除此计划吗？',
      createSuccess: '计划创建成功',
      updateSuccess: '计划更新成功',
      deleteSuccess: '计划删除成功',
      results: '测试结果',
      noResults: '暂无测试结果',
      responseText: '响应',
      errorMessage: '错误',
      success: '成功',
      failed: '失败',
      running: '运行中',
      schedule: '定时测试',
      cronHelp: '标准 5 字段 cron 表达式（例如 */30 * * * *）',
      cronTooltipTitle: 'Cron 表达式示例：',
      cronTooltipMeaning: '用于定义自动执行测试的时间规则，格式依次为：分钟 小时 日 月 星期。',
      cronTooltipExampleEvery30Min: '*/30 * * * *：每 30 分钟运行一次',
      cronTooltipExampleHourly: '0 * * * *：每小时整点运行一次',
      cronTooltipExampleDaily: '0 9 * * *：每天 09:00 运行一次',
      cronTooltipExampleWeekly: '0 9 * * 1：每周一 09:00 运行一次',
      cronTooltipRange: '推荐填写范围：使用标准 5 字段 cron；如果只是健康检查，建议从每 30 分钟、每 1 小时或每天固定时间开始，不建议一开始就设置过高频率。',
      maxResultsTooltipTitle: '最大结果数说明：',
      maxResultsTooltipMeaning: '用于限制单个计划最多保留多少条历史测试结果，避免结果列表无限增长。',
      maxResultsTooltipBody: '系统只会保留最近的测试结果；当保存数量超过这个值时，更早的历史记录会自动清理，避免列表过长和存储持续增长。',
      maxResultsTooltipExample: '例如填写 100，表示最多保存最近 100 次测试结果；第 101 次结果写入后，最早的一条会被清理。',
      maxResultsTooltipRange: '推荐填写范围：一般可填 20 到 200。只关注近期可用性时可填 20-50；需要回看较长时间的波动趋势时可填 100-200。',
      autoRecover: '自动恢复',
      autoRecoverHelp: '测试成功后自动恢复异常状态的账号'
    },

    // Proxies Management
    proxies: {
      title: 'IP管理',
      description: '管理代理服务器配置',
      createProxy: '添加代理',
      editProxy: '编辑代理',
      deleteProxy: '删除代理',
      ad: {
        inline: '正在寻找合适的代理 IP？'
      },
      deleteConfirmMessage: "确定要删除代理 '{name}' 吗？",
      testProxy: '测试代理',
      dataImport: '导入',
      dataExportSelected: '导出选中',
      dataImportTitle: '导入代理',
      dataImportHint: '上传代理导出的 JSON 文件以批量导入代理。',
      dataImportWarning: '导入将创建或复用代理，保留状态并在完成后自动触发延迟检测。',
      dataImportFile: '数据文件',
      dataImportButton: '开始导入',
      dataImporting: '导入中...',
      dataImportSelectFile: '请选择数据文件',
      dataImportParseFailed: '数据解析失败',
      dataImportFailed: '数据导入失败',
      dataImportResult: '导入结果',
      dataImportResultSummary: '创建 {proxy_created}，复用 {proxy_reused}，失败 {proxy_failed}',
      dataImportErrors: '失败详情',
      dataImportSuccess: '导入完成：创建 {proxy_created}，复用 {proxy_reused}',
      dataImportCompletedWithErrors: '导入完成但有错误：失败 {proxy_failed}',
      dataExport: '导出',
      dataExportConfirmMessage: '导出的数据包含代理的敏感信息，请妥善保存。',
      dataExportConfirm: '确认导出',
      dataExported: '数据导出成功',
      dataExportFailed: '数据导出失败',
      columns: {
        name: '名称',
        protocol: '协议',
        address: '地址',
        auth: '认证',
        location: '地理位置',
        status: '状态',
        accounts: '账号数',
        latency: '延迟',
        expiry: '有效期',
        createdAt: '创建时间',
        actions: '操作',
        nameLabel: '名称',
        namePlaceholder: '请输入代理名称',
        protocolLabel: '协议',
        selectProtocol: '选择协议',
        hostLabel: '主机',
        hostPlaceholder: '请输入主机地址',
        portLabel: '端口',
        portPlaceholder: '请输入端口',
        usernameLabel: '用户名（可选）',
        usernamePlaceholder: '请输入用户名',
        passwordLabel: '密码（可选）',
        passwordPlaceholder: '请输入密码',
        priorityLabel: '优先级',
        statusLabel: '状态'
      },
      filters: {
        protocol: '协议',
        allProtocols: '全部协议',
        status: '状态',
        allStatuses: '全部状态'
      },
      // Additional keys used in ProxiesView
      copyProxyUrl: '复制代理 URL',
      urlCopied: '代理 URL 已复制',
      allProtocols: '全部协议',
      allStatus: '全部状态',
      searchProxies: '搜索代理...',
      protocols: {
        http: 'HTTP',
        https: 'HTTPS',
        socks5: 'SOCKS5',
        socks5h: 'SOCKS5H (远程 DNS)',
      },
      name: '名称',
      protocol: '协议',
      host: '主机',
      port: '端口',
      username: '用户名（可选）',
      password: '密码（可选）',
      status: '状态',
      enterProxyName: '请输入代理名称',
      optionalAuth: '可选认证信息',
      leaveEmptyToKeep: '留空保持不变',
      form: {
        hostPlaceholder: '请输入主机地址',
        portPlaceholder: '请输入端口'
      },
      noProxiesYet: '暂无代理',
      createFirstProxy: '添加您的第一个代理以开始使用。',
      testConnection: '测试连接',
      qualityCheck: '质量检测',
      batchQualityCheck: '批量质量检测',
      batchTest: '批量测试',
      testFailed: '失败',
      latencyFailed: '链接失败',
      batchTestEmpty: '暂无可测试的代理',
      batchTestDone: '批量测试完成，共测试 {count} 个代理',
      batchTestFailed: '批量测试失败',
      batchDeleteAction: '删除',
      batchDelete: '批量删除',
      batchDeleteConfirm: '确定删除选中的 {count} 个代理吗？已被账号使用的将自动跳过。',
      batchDeleteDone: '已删除 {deleted} 个代理，跳过 {skipped} 个',
      batchDeleteSkipped: '已跳过 {skipped} 个代理',
      batchDeleteFailed: '批量删除失败',
      deleteBlockedInUse: '该代理已有账号使用，无法删除',
      accountsTitle: '使用该IP的账号',
      accountsEmpty: '暂无账号使用此代理',
      accountsFailed: '获取账号列表失败',
      accountName: '账号名称',
      accountPlatform: '所属平台',
      accountNotes: '备注',
      // Batch import
      standardAdd: '标准添加',
      batchAdd: '快捷添加',
      batchInput: '代理列表',
      batchInputPlaceholder:
        "每行输入一个代理，支持以下格式：\nsocks5://user:pass{'@'}192.168.1.1:1080\nhttp://192.168.1.1:8080\nhttps://user:pass{'@'}proxy.example.com:443",
      batchInputHint: "支持 http、https、socks5 协议，格式：协议://[用户名:密码{'@'}]主机:端口",
      parsedCount: '有效 {count} 个',
      invalidCount: '无效 {count} 个',
      duplicateCount: '重复 {count} 个',
      importing: '导入中...',
      importProxies: '导入 {count} 个代理',
      batchImportSuccess: '成功导入 {created} 个代理，跳过 {skipped} 个重复',
      batchImportAllSkipped: '全部 {skipped} 个代理已存在，跳过导入',
      failedToImport: '批量导入失败',
      // Other messages
      saving: '保存中...',
      testing: '测试中...',
      creating: '创建中...',
      updating: '更新中...',
      noProxies: '暂无代理',
      noProxiesDescription: '添加代理服务器以增强 API 访问稳定性。',
      proxyCreated: '代理添加成功',
      proxyUpdated: '代理更新成功',
      proxyDeleted: '代理删除成功',
      proxyWorking: '代理连接正常',
      proxyWorkingWithLatency: '代理连接正常，延迟 {latency}ms',
      proxyTestFailed: '代理测试失败',
      qualityCheckDone: '质量检测完成：评分 {score}（{grade}）',
      qualityCheckFailed: '代理质量检测失败',
      batchQualityDone: '批量质量检测完成，共检测 {count} 个；优质 {healthy} 个，告警 {warn} 个，挑战 {challenge} 个，异常 {failed} 个',
      batchQualityFailed: '批量质量检测失败',
      batchQualityEmpty: '暂无可检测质量的代理',
      qualityReportTitle: '代理质量检测报告',
      qualityGrade: '等级 {grade}',
      qualityExitIP: '出口 IP',
      qualityCountry: '出口地区',
      qualityBaseLatency: '基础延迟',
      qualityCheckedAt: '检测时间',
      qualityTableTarget: '检测项',
      qualityTableStatus: '状态',
      qualityTableLatency: '延迟',
      qualityTableMessage: '说明',
      qualityInline: '质量 {grade}/{score}',
      qualityStatusHealthy: '优质',
      qualityStatusPass: '通过',
      qualityStatusWarn: '告警',
      qualityStatusFail: '失败',
      qualityStatusChallenge: '挑战',
      qualityTargetBase: '基础连通性',
      proxyCreatedSuccess: '代理添加成功',
      proxyUpdatedSuccess: '代理更新成功',
      proxyDeletedSuccess: '代理删除成功',
      testSuccess: '代理测试通过',
      failedToLoad: '加载代理列表失败',
      failedToSave: '保存代理失败',
      failedToDelete: '删除代理失败',
      failedToCreate: '创建代理失败',
      failedToUpdate: '更新代理失败',
      failedToTest: '测试代理失败',
      nameRequired: '请输入代理名称',
      hostRequired: '请输入主机地址',
      portInvalid: '端口必须在 1-65535 之间',
      deleteConfirm: "确定要删除代理 '{name}' 吗？使用此代理的账号将被移除代理设置。",
      neverExpires: '永不过期',
      expired: '已过期',
      overdueDays: '已超期 {days} 天',
      expiringInDays: '{days} 天后到期',
      remainingDays: '剩余 {days} 天',
      expiresAt: '有效期',
      nDays: '{days} 天',
      expiryDaysPlaceholder: '自定义天数，留空 = 永不过期',
      expiryWarnDays: '到期提醒提前天数',
      fallbackMode: '到期回退',
      fallbackNone: '不回退',
      fallbackProxy: '指定备用代理',
      fallbackDirect: '回退直连',
      backupProxy: '备用代理',
    },

    // Redeem Codes Management
    redeem: {
      title: '兑换码管理',
      description: '生成和管理兑换码',
      generateCodes: '生成兑换码',
      columns: {
        code: '兑换码',
        type: '类型',
        value: '面值',
        status: '状态',
        usedBy: '使用者',
        usedAt: '使用时间',
        expiresAt: '过期时间',
        createdAt: '创建时间',
        actions: '操作'
      },
      types: {
        balance: '余额',
        concurrency: '并发数',
        subscription: '订阅',
        invitation: '邀请码',
        // 管理员在用户管理页面调整余额/并发时产生的记录
        admin_balance: '余额（管理员）',
        admin_concurrency: '并发数（管理员）'
      },
      // 用于选择器和筛选器的直接键
      balance: '余额',
      concurrency: '并发数',
      subscription: '订阅',
      invitation: '邀请码',
      invitationHint: '邀请码用于限制用户注册，使用后自动标记为已使用。',
      allTypes: '全部类型',
      allStatus: '全部状态',
      unused: '未使用',
      used: '已使用',
      searchCodes: '搜索兑换码或邮箱...',
      exportCsv: '导出 CSV',
      batchUpdate: '批量修改',
      batchUpdateTitle: '批量修改兑换码',
      selectedCount: '已选择 {count} 个兑换码',
      clearSelection: '清空选择',
      selectCodesFirst: '请先选择兑换码',
      noBatchFieldsSelected: '请至少勾选一个要修改的字段',
      batchUpdateSuccess: '成功修改 {count} 个兑换码',
      failedToBatchUpdate: '批量修改兑换码失败',
      batchFields: {
        status: '状态',
        expiresAt: '过期时间',
        notes: '备注',
        group: '分组'
      },
      batchNotesPlaceholder: '输入新的备注，留空可清空备注',
      clearGroup: '清空分组',
      deleteAllUnused: '删除全部未使用',
      deleteCodeConfirm: '确定要删除此兑换码吗？此操作无法撤销。',
      deleteAllUnusedConfirm: '确定要删除全部未使用的兑换码吗？此操作无法撤销。',
      deleteAll: '全部删除',
      generateCodesTitle: '生成兑换码',
      generatedSuccessfully: '生成成功',
      codesCreated: '已创建 {count} 个兑换码',
      codeType: '类型',
      amount: '金额 ($)',
      value: '面值',
      count: '数量',
      generate: '生成',
      copyAll: '全部复制',
      download: '下载',
      codesExported: '兑换码导出成功',
      codeDeleted: '兑换码删除成功',
      codesDeleted: '成功删除 {count} 个未使用的兑换码',
      noUnusedCodes: '没有未使用的兑换码可删除',
      userPrefix: '用户 #{id}',
      failedToExport: '导出兑换码失败',
      failedToDeleteUnused: '删除未使用的兑换码失败',
      failedToCopy: '复制失败',
      selectGroup: '选择分组',
      selectGroupPlaceholder: '选择订阅分组',
      validityDays: '有效天数',
      codeExpiry: '兑换码过期',
      neverExpires: '永不过期',
      expiryPresetDays: '{days} 天',
      customExpiry: '自定义',
      customExpiryDays: '自定义天数',
      expiryDaysRequired: '请输入有效的过期天数',
      groupRequired: '请选择订阅分组',
      days: '天',
      status: {
        unused: '未使用',
        used: '已使用',
        expired: '已过期',
        disabled: '已禁用'
      },
      form: {
        typeLabel: '类型',
        selectType: '选择类型',
        valueLabel: '面值',
        valuePlaceholder: '请输入面值',
        balanceHint: '余额金额（美元）',
        concurrencyHint: '并发数增量',
        countLabel: '数量',
        countPlaceholder: '请输入数量',
        countHint: '要生成的兑换码数量',
        prefixLabel: '前缀（可选）',
        prefixPlaceholder: '例如：GIFT',
        expiresLabel: '过期时间（可选）'
      },
      filters: {
        type: '类型',
        allTypes: '全部类型',
        status: '状态',
        allStatuses: '全部状态',
        search: '搜索兑换码'
      },
      generating: '生成中...',
      copyCode: '复制',
      copied: '已复制！',
      disableCode: '禁用',
      enableCode: '启用',
      deleteCode: '删除',
      deleteConfirmMessage: '确定要删除此兑换码吗？',
      noCodes: '暂无兑换码',
      noCodesDescription: '生成兑换码以向用户分发余额或并发数。',
      codesGeneratedSuccess: '兑换码生成成功，共 {count} 个',
      codeDisabledSuccess: '兑换码已禁用',
      codeEnabledSuccess: '兑换码已启用',
      codeDeletedSuccess: '兑换码删除成功',
      failedToLoad: '加载兑换码列表失败',
      failedToGenerate: '生成兑换码失败',
      failedToUpdate: '更新兑换码失败',
      failedToDelete: '删除兑换码失败'
    },

    // Announcements
    announcements: {
      title: '公告管理',
      description: '创建公告并按条件投放',
      createFirstAnnouncement: '还没有公告，创建您的第一条公告。',
      createAnnouncement: '创建公告',
      editAnnouncement: '编辑公告',
      deleteAnnouncement: '删除公告',
      searchAnnouncements: '搜索公告...',
      status: '状态',
      allStatus: '全部状态',
      columns: {
        title: '标题',
        status: '状态',
        notifyMode: '通知方式',
        targeting: '展示条件',
        timeRange: '有效期',
        createdAt: '创建时间',
        actions: '操作'
      },
      statusLabels: {
        draft: '草稿',
        active: '展示中',
        archived: '已归档'
      },
      notifyModeLabels: {
        silent: '静默',
        popup: '弹窗'
      },
      form: {
        title: '标题',
        content: '内容（支持 Markdown）',
        status: '状态',
        notifyMode: '通知方式',
        notifyModeHint: '弹窗模式会自动弹出通知给用户',
        startsAt: '开始时间',
        endsAt: '结束时间',
        startsAtHint: '留空表示立即生效',
        endsAtHint: '留空表示永久生效',
        targetingMode: '展示条件',
        targetingAll: '所有用户',
        targetingCustom: '按条件',
        addOrGroup: '添加 OR 条件组',
        addAndCondition: '添加 AND 条件',
        conditionType: '条件类型',
        conditionSubscription: '订阅套餐',
        conditionBalance: '余额',
        operator: '运算符',
        balanceValue: '余额阈值',
        selectPackages: '选择套餐'
      },
      operators: {
        gt: '>',
        gte: '≥',
        lt: '<',
        lte: '≤',
        eq: '='
      },
      targetingSummaryAll: '全部用户',
      targetingSummaryCustom: '自定义（{groups} 组）',
      timeImmediate: '立即',
      timeNever: '永久',
      readStatus: '已读情况',
      preview: '预览',
      eligible: '符合条件',
      readAt: '已读时间',
      unread: '未读',
      searchUsers: '搜索用户...',
      failedToLoad: '加载公告失败',
      failedToCreate: '创建公告失败',
      failedToUpdate: '更新公告失败',
      failedToDelete: '删除公告失败',
      failedToLoadReadStatus: '加载已读情况失败',
      deleteConfirm: '确定要删除该公告吗？此操作无法撤销。'
    },

    // Promo Codes
    promo: {
      title: '优惠码管理',
      description: '创建和管理注册优惠码',
      createCode: '创建优惠码',
      editCode: '编辑优惠码',
      deleteCode: '删除优惠码',
      searchCodes: '搜索优惠码...',
      allStatus: '全部状态',
      columns: {
        code: '优惠码',
        bonusAmount: '赠送金额',
        maxUses: '最大使用次数',
        usedCount: '已使用',
        usage: '使用量',
        status: '状态',
        expiresAt: '过期时间',
        createdAt: '创建时间',
        actions: '操作'
      },
      // 表单标签（扁平结构便于模板使用）
      code: '优惠码',
      autoGenerate: '留空自动生成',
      codePlaceholder: '输入优惠码或留空',
      bonusAmount: '赠送金额 ($)',
      maxUses: '最大使用次数',
      zeroUnlimited: '0 = 无限制',
      expiresAt: '过期时间',
      notes: '备注',
      notesPlaceholder: '可选备注信息',
      status: '状态',
      neverExpires: '永不过期',
      // 状态标签
      statusActive: '启用',
      statusDisabled: '禁用',
      statusExpired: '已过期',
      statusMaxUsed: '已用完',
      // 使用记录
      usageRecords: '使用记录',
      viewUsages: '查看使用记录',
      noUsages: '暂无使用记录',
      userPrefix: '用户 #{id}',
      copied: '已复制！',
      // 消息
      noCodesYet: '暂无优惠码',
      createFirstCode: '创建您的第一个优惠码，为新用户提供注册奖励。',
      codeCreated: '优惠码创建成功',
      codeUpdated: '优惠码更新成功',
      codeDeleted: '优惠码删除成功',
      deleteCodeConfirm: '确定要删除此优惠码吗？此操作无法撤销。',
      copyRegisterLink: '复制注册链接',
      registerLinkCopied: '注册链接已复制到剪贴板',
      failedToLoad: '加载优惠码失败',
      failedToCreate: '创建优惠码失败',
      failedToUpdate: '更新优惠码失败',
      failedToDelete: '删除优惠码失败',
      failedToLoadUsages: '加载使用记录失败'
    },

    // Usage Records
    usage: {
      title: '使用记录',
      description: '查看和管理所有用户的使用记录',
      userFilter: '用户',
      searchUserPlaceholder: '按邮箱搜索用户...',
      searchApiKeyPlaceholder: '按名称搜索 API 密钥...',
      searchAccountPlaceholder: '按名称搜索账号...',
      selectedUser: '已选择',
      user: '用户',
      account: '账户',
      group: '分组',
      requestId: '请求ID',
      requestIdCopied: '请求ID已复制',
      allModels: '全部模型',
      allAccounts: '全部账户',
      allGroups: '全部分组',
      allTypes: '全部类型',
      inputCost: '输入费用',
      outputCost: '输出费用',
      cacheCreationCost: '缓存创建费用',
      cacheReadCost: '缓存读取费用',
      inputTokens: '输入 Token',
      outputTokens: '输出 Token',
      cacheCreationTokens: '缓存创建 Token',
      cacheCreation5mTokens: '缓存创建',
      cacheCreation1hTokens: '缓存创建',
      cacheReadTokens: '缓存读取 Token',
      failedToLoad: '加载使用记录失败',
      billingType: '计费类型',
      allBillingTypes: '全部计费类型',
      billingTypeBalance: '钱包余额',
      billingTypeSubscription: '订阅套餐',
      billingMode: '计费模式',
      billingModeToken: '按量',
      billingModePerRequest: '按次',
      billingModeImage: '按次(图片)',
      billingModeVideo: '按次(视频)',
      allBillingModes: '全部计费模式',
	  upstreamModelAudit: '上游模型审计',
	  allUpstreamModelAudit: '全部响应模型状态',
	  upstreamModelMismatchOnly: '仅不一致',
	  upstreamModelMatchedOnly: '仅一致',
      ipAddress: 'IP',
      clickToViewBalance: '点击查看充值记录',
      failedToLoadUser: '加载用户信息失败',
      userDeletedBadge: '已删除',
      tokenRanking: {
        subtitle: '按当前筛选与时间范围统计每个用户的 Token 用量',
        rowHint: '点击查看该用户的用量明细',
        userCount: '共 {count} 位用户',
        columns: {
          user: '用户',
          requests: '请求数',
          inputTokens: '输入 Token',
          outputTokens: '输出 Token',
          cacheTokens: '缓存 Token',
          totalTokens: '总 Token',
          cost: '费用'
        }
      },
      cleanup: {
        button: '清理',
        title: '清理使用记录',
        warning: '清理不可恢复，且会影响历史统计回看。',
        submit: '提交清理',
        submitting: '提交中...',
        confirmTitle: '确认清理',
        confirmMessage: '确定要提交清理任务吗？清理不可恢复。',
        confirmSubmit: '确认清理',
        cancel: '取消任务',
        cancelConfirmTitle: '确认取消',
        cancelConfirmMessage: '确定要取消该清理任务吗？',
        cancelConfirm: '确认取消',
        cancelSuccess: '清理任务已取消',
        cancelFailed: '取消清理任务失败',
        recentTasks: '最近清理任务',
        loadingTasks: '正在加载任务...',
        noTasks: '暂无清理任务',
        range: '时间范围',
        deletedRows: '删除数量',
        missingRange: '请选择时间范围',
        submitSuccess: '清理任务已创建',
        submitFailed: '创建清理任务失败',
        loadFailed: '加载清理任务失败',
        status: {
          pending: '待执行',
          running: '执行中',
          succeeded: '已完成',
          failed: '失败',
          canceled: '已取消'
        }
      }
    },

    // Ops Monitoring
}
