export default {
    // Dashboard
    dashboard: {
      title: '管理控制台',
      description: '系统概览与统计数据',
      apiKeys: 'API 密钥',
      totalApiKeys: 'API 密钥总数',
      activeApiKeys: '活跃密钥',
      users: '用户',
      totalUsers: '用户总数',
      activeUsers: '活跃用户',
      accounts: '账号',
      totalAccounts: '账号总数',
      activeAccounts: '活跃账号',
      todayRequests: '今日请求',
      totalRequests: '总请求数',
      todayCost: '今日消费',
      totalCost: '总消费',
      newUsersToday: '今日新增用户',
      actual: '实际',
      standard: '标准',
      accountCost: '成本',
      todayTokens: '今日 Token',
      totalTokens: '总 Token',
      input: '输入',
      output: '输出',
      cacheToday: '今日缓存',
      performance: '性能指标',
      avgResponse: '平均响应',
      averageTime: '平均时间',
      active: '活跃',
      ok: '正常',
      err: '错误',
      create: '创建',
      timeRange: '时间范围',
      granularity: '粒度',
      day: '按天',
      hour: '按小时',
      modelDistribution: '模型分布',
      groupDistribution: '分组使用分布',
      metricTokens: '按 Token',
      metricActualCost: '按实际消费',
      tokenUsageTrend: 'Token 使用趋势',
      userUsageTrend: '用户使用趋势（Top 12）',
      noDataAvailable: '暂无数据',
      model: '模型',
      group: '分组',
      noGroup: '无分组',
      requests: '请求',
      tokens: 'Token',
      cache: '缓存',
      recentUsage: '最近使用',
      viewModelDistribution: '模型分布',
      viewSpendingRanking: '用户消费榜',
      spendingRankingTitle: '用户消费榜',
      spendingRankingUser: '用户',
      spendingRankingRequests: '请求',
      spendingRankingTokens: 'Token',
      spendingRankingSpend: '消费',
      spendingRankingOther: '其他',
      spendingRankingUsage: '用量',
      spendShort: '消费',
      requestsShort: '请求',
      tokensShort: 'Token',
      last7Days: '近 7 天',
      noUsageRecords: '暂无使用记录',
      startUsingApi: '开始使用 API 后，使用历史将显示在这里。',
      viewAllUsage: '查看全部',
      quickActions: '快捷操作',
      manageUsers: '管理用户',
      viewUserAccounts: '查看和管理用户账户',
      manageAccounts: '管理账号',
      configureAiAccounts: '配置 AI 平台账号',
      batchImage: '批量生图',
      batchImageDesc: '提交任务、复制 Agent 调用说明',
      groupPricing: '分组定价',
      groupPricingDesc: '设置批量折扣和冻结比例',
      systemSettings: '系统设置',
      configureSystem: '配置系统设置',
      failedToLoad: '加载仪表盘数据失败'
    },

    backup: {
      title: '数据库备份',
      description: '全量数据库备份到 S3 兼容存储，支持定时备份与恢复',
      s3: {
        title: 'S3 存储配置',
        description: '配置 S3 兼容存储（支持 Cloudflare R2）',
        descriptionPrefix: '配置 S3 兼容存储（支持',
        descriptionSuffix: '）',
        enabled: '启用 S3 存储',
        endpoint: '端点地址',
        region: '区域',
        bucket: '存储桶',
        prefix: 'Key 前缀',
        accessKeyId: 'Access Key ID',
        secretAccessKey: 'Secret Access Key',
        secretConfigured: '已配置，留空保持不变',
        forcePathStyle: '强制路径风格',
        testConnection: '测试连接',
        testSuccess: 'S3 连接测试成功',
        testFailed: 'S3 连接测试失败',
        saved: 'S3 配置已保存'
      },
      imageStorage: {
        title: '异步生图对象存储',
        description: '开启后，异步生图接口可用，生成结果转存到对象存储，只把短链接写入 Redis。与备份共用同一套 S3 客户端，保存后立即生效，无需重启。',
        enabled: '启用异步生图',
        reuseBackupS3: '复用上方备份的 S3 配置（只用不同的存储桶/前缀）',
        bucket: '存储桶',
        bucketInherited: '留空则沿用备份存储桶',
        prefix: 'Key 前缀',
        publicBaseUrl: '公开访问域名',
        publicBaseUrlPlaceholder: '留空则返回预签名临时链接',
        presignExpiryHours: '预签名链接有效期（小时）',
        saved: '异步生图对象存储配置已保存'
      },
      schedule: {
        title: '定时备份',
        description: '配置自动定时备份',
        enabled: '启用定时备份',
        cronExpr: 'Cron 表达式',
        cronHint: '例如 "0 2 * * *" 表示每天凌晨 2 点',
        retainDays: '备份过期天数',
        retainDaysHint: '备份文件超过此天数后自动删除，0 = 永不过期',
        retainCount: '最大保留份数',
        retainCountHint: '最多保留的备份数量，0 = 不限制',
        saved: '定时备份配置已保存'
      },
      operations: {
        title: '备份记录',
        description: '创建手动备份和管理已有备份记录',
        createBackup: '创建备份',
        backing: '备份中...',
        backupCreated: '备份创建成功',
        expireDays: '过期天数',
        alreadyInProgress: '已有备份正在进行中',
        backupRunning: '备份进行中...',
        backupFailed: '备份失败',
        restoreRunning: '恢复进行中...',
        restoreFailed: '恢复失败',
      },
      columns: {
        status: '状态',
        fileName: '文件名',
        size: '大小',
        parts: '分卷数',
        expiresAt: '过期时间',
        triggeredBy: '触发方式',
        startedAt: '开始时间',
        actions: '操作'
      },
      status: {
        pending: '等待中',
        running: '执行中',
        completed: '已完成',
        failed: '失败'
      },
      progress: {
        pending: '准备中',
        dumping: '导出数据库',
        uploading: '上传中',
      },
      trigger: {
        manual: '手动',
        scheduled: '定时'
      },
      neverExpire: '永不过期',
      empty: '暂无备份记录',
      actions: {
        download: '下载',
        downloadParts: '下载分卷',
        downloadPartsHint: '请按顺序下载全部分卷后拼接 gzip 字节流：Linux/macOS 使用 cat payload.part-* > backup.sql.gz；Windows 使用 copy /b payload.part-000001+payload.part-000002 backup.sql.gz。',
        partLabel: '第 {index} 卷',
        downloadFailed: '下载地址为空',
        restore: '恢复',
        restoreConfirm: '确定要从此备份恢复吗？这将覆盖当前数据库！',
        restorePasswordPrompt: '请输入管理员密码以确认恢复操作',
        restoreSuccess: '数据库恢复成功',
        deleteConfirm: '确定要删除此备份吗？',
        deleted: '备份已删除'
      },
      r2Guide: {
        title: 'Cloudflare R2 配置教程',
        intro: 'Cloudflare R2 提供 S3 兼容的对象存储，免费额度为 10GB 存储 + 每月 100 万次 A 类请求，非常适合数据库备份。',
        step1: {
          title: '创建 R2 存储桶',
          line1: '登录 Cloudflare Dashboard (dash.cloudflare.com)，左侧菜单选择「R2 对象存储」',
          line2: '点击「创建存储桶」，输入名称（如 sub2api-backups），选择区域',
          line3: '点击创建完成'
        },
        step2: {
          title: '创建 API 令牌',
          line1: '在 R2 页面，点击右上角「管理 R2 API 令牌」',
          line2: '点击「创建 API 令牌」，权限选择「对象读和写」',
          line3: '建议指定存储桶范围（仅允许访问备份桶，更安全）',
          line4: '创建后会显示 Access Key ID 和 Secret Access Key',
          warning: 'Secret Access Key 只会显示一次，请立即复制保存！'
        },
        step3: {
          title: '获取 S3 端点地址',
          desc: '在 R2 概览页面找到你的账户 ID（在 URL 或右侧面板中），端点格式为：',
          accountId: '你的账户 ID'
        },
        step4: {
          title: '填写以下配置',
          checkEnabled: '勾选',
          bucketValue: '你创建的存储桶名称',
          fromStep2: '第 2 步获取的值',
          unchecked: '不勾选'
        },
        freeTier: 'R2 免费额度：10GB 存储 + 每月 100 万次 A 类请求 + 1000 万次 B 类请求，对数据库备份完全够用。'
      }
    },

    dataManagement: {
      title: '数据管理',
      description: '统一管理数据管理代理状态、对象存储配置和备份任务',
      agent: {
        title: '数据管理代理状态',
        description: '系统会自动探测固定 Unix Socket，仅在可连通时启用数据管理功能。',
        enabled: '数据管理代理已就绪，可继续进行数据管理操作。',
        disabled: '数据管理代理不可用，当前仅可查看诊断信息。',
        socketPath: 'Socket 路径',
        version: '版本',
        status: '状态',
        uptime: '运行时长',
        reasonLabel: '不可用原因',
        reason: {
          DATA_MANAGEMENT_AGENT_SOCKET_MISSING: '未检测到数据管理 Socket 文件',
          DATA_MANAGEMENT_AGENT_UNAVAILABLE: '数据管理代理不可连通',
          BACKUP_AGENT_SOCKET_MISSING: '未检测到备份 Socket 文件',
          BACKUP_AGENT_UNAVAILABLE: '备份代理不可连通',
          UNKNOWN: '未知原因'
        }
      },
      sections: {
        config: {
          title: '备份配置',
          description: '配置备份源、保留策略与 S3 存储参数。'
        },
        s3: {
          title: 'S3 对象存储',
          description: '配置并测试备份产物上传到标准 S3 对象存储。'
        },
        backup: {
          title: '备份操作',
          description: '触发 PostgreSQL、Redis 与全量备份任务。'
        },
        history: {
          title: '备份历史',
          description: '查看备份任务执行状态、错误与产物信息。'
        }
      },
      form: {
        sourceMode: '源模式',
        backupRoot: '备份根目录',
        activePostgresProfile: '当前激活 PostgreSQL 配置',
        activeRedisProfile: '当前激活 Redis 配置',
        activeS3Profile: '当前激活 S3 账号',
        retentionDays: '保留天数',
        keepLast: '至少保留最近任务数',
        uploadToS3: '上传到 S3',
        useActivePostgresProfile: '使用当前激活 PostgreSQL 配置',
        useActiveRedisProfile: '使用当前激活 Redis 配置',
        useActiveS3Profile: '使用当前激活账号',
        idempotencyKey: '幂等键（可选）',
        secretConfigured: '已配置，留空不变',
        source: {
          profileID: '配置 ID（唯一）',
          profileName: '配置名称',
          setActive: '创建后立即设为激活配置'
        },
        postgres: {
          title: 'PostgreSQL',
          host: '主机',
          port: '端口',
          user: '用户名',
          password: '密码',
          database: '数据库',
          sslMode: 'SSL 模式',
          containerName: '容器名（docker_exec 模式）'
        },
        redis: {
          title: 'Redis',
          addr: '地址（host:port）',
          username: '用户名',
          password: '密码',
          db: '数据库编号',
          containerName: '容器名（docker_exec 模式）'
        },
        s3: {
          enabled: '启用 S3 上传',
          profileID: '账号 ID（唯一）',
          profileName: '账号名称',
          endpoint: 'Endpoint（可选）',
          region: 'Region',
          bucket: 'Bucket',
          accessKeyID: 'Access Key ID',
          secretAccessKey: 'Secret Access Key',
          prefix: '对象前缀',
          forcePathStyle: '强制 path-style',
          useSSL: '使用 SSL',
          setActive: '创建后立即设为激活账号'
        }
      },
      sourceProfiles: {
        createTitle: '创建数据源配置',
        editTitle: '编辑数据源配置',
        empty: '暂无配置，请先创建',
        deleteConfirm: '确定删除配置 {profileID} 吗？',
        columns: {
          profile: '配置',
          active: '激活状态',
          connection: '连接信息',
          database: '数据库',
          updatedAt: '更新时间',
          actions: '操作'
        }
      },
      s3Profiles: {
        createTitle: '创建 S3 账号',
        editTitle: '编辑 S3 账号',
        empty: '暂无 S3 账号，请先创建',
        editHint: '点击“编辑”将在右侧抽屉中修改账号信息。',
        deleteConfirm: '确定删除 S3 账号 {profileID} 吗？',
        columns: {
          profile: '账号',
          active: '激活状态',
          storage: '存储配置',
          updatedAt: '更新时间',
          actions: '操作'
        }
      },
      history: {
        total: '共 {count} 条',
        empty: '暂无备份任务',
        columns: {
          jobID: '任务 ID',
          type: '类型',
          status: '状态',
          triggeredBy: '触发人',
          pgProfile: 'PostgreSQL 配置',
          redisProfile: 'Redis 配置',
          s3Profile: 'S3 账号',
          finishedAt: '完成时间',
          artifact: '产物',
          error: '错误'
        },
        status: {
          queued: '排队中',
          running: '执行中',
          succeeded: '成功',
          failed: '失败',
          partial_succeeded: '部分成功'
        }
      },
      actions: {
        refresh: '刷新状态',
        disabledHint: '请先启动 datamanagementd 并确认 Socket 可连通。',
        reloadConfig: '加载配置',
        reloadSourceProfiles: '刷新数据源配置',
        reloadProfiles: '刷新账号列表',
        newSourceProfile: '新建数据源配置',
        saveConfig: '保存配置',
        configSaved: '配置保存成功',
        testS3: '测试 S3 连接',
        s3TestOK: 'S3 连接测试成功',
        s3TestFailed: 'S3 连接测试失败',
        newProfile: '新建账号',
        saveProfile: '保存账号',
        activateProfile: '设为激活',
        profileIDRequired: '请输入账号 ID',
        profileNameRequired: '请输入账号名称',
        profileSelectRequired: '请先选择要编辑的账号',
        profileCreated: 'S3 账号创建成功',
        profileSaved: 'S3 账号保存成功',
        profileActivated: 'S3 账号已切换为激活',
        profileDeleted: 'S3 账号删除成功',
        sourceProfileCreated: '数据源配置创建成功',
        sourceProfileSaved: '数据源配置保存成功',
        sourceProfileActivated: '数据源配置已切换为激活',
        sourceProfileDeleted: '数据源配置删除成功',
        createBackup: '创建备份任务',
        jobCreated: '备份任务已创建：{jobID}（{status}）',
        refreshJobs: '刷新任务',
        loadMore: '加载更多'
      }
    },

    affiliates: {
      invitesDescription: '查看全站邀请关系和被邀请用户累计返利',
      rebatesDescription: '查看每一笔产生返利的充值订单',
      transfersDescription: '查看返利额度转入账户余额的提取流水',
      errors: {
        loadFailed: '加载邀请返利记录失败'
      },
      records: {
        search: '搜索',
        searchPlaceholder: '邮箱、用户名、用户 ID、订单号',
        startAt: '开始日期',
        endAt: '结束日期',
        inviter: '邀请人',
        invitee: '被邀请人',
        user: '用户',
        affCode: '邀请码',
        order: '订单',
        totalRebate: '累计返利',
        orderAmount: '充值金额',
        payAmount: '支付金额',
        rebateAmount: '返利金额',
        paymentType: '支付方式',
        orderStatus: '订单状态',
        transferAmount: '提取金额',
        balanceAfter: '提取后余额',
        availableQuotaAfter: '提取后可提',
        frozenQuotaAfter: '提取后冻结',
        historyQuotaAfter: '提取后历史返利',
        invitedAt: '邀请时间',
        rebatedAt: '返利时间',
        transferredAt: '提取时间'
      },
      overview: {
        title: '用户返利概览',
        affCode: '邀请码',
        rebateRate: '返利比例',
        invitedCount: '邀请人数',
        rebatedInviteeCount: '已产生返利人数',
        availableQuota: '可提余额',
        historyQuota: '历史返利'
      }
    },

    // Users Management
    users: {
      title: '用户管理',
      description: '管理用户账户和权限',
      createUser: '创建用户',
      bulkLimits: {
        action: '批量设置限制（{count}）',
        title: '批量设置用户限制',
        selectedCount: '已选择 {count} 个用户',
        selectionLimit: '一次最多选择 {max} 个用户。',
        selectUser: '选择 {email}',
        enableConcurrency: '修改并发数',
        enableRPMLimit: '修改 RPM 限制',
        unlimited: '不限制',
        nonNegativeInteger: '请输入非负整数。',
        apply: '应用限制',
        applying: '应用中...',
        concurrencyValue: '并发数：{value}',
        rpmValue: 'RPM：{value}',
        rpmUnlimitedValue: 'RPM：不限制',
        confirm: '确定覆盖 {count} 个用户的限制吗？\n{fields}',
        success: '已更新 {count} 个用户的限制',
        failed: '批量更新用户限制失败'
      },
      editUser: '编辑用户',
      deleteUser: '删除用户',
      deleteConfirmMessage: "确定要删除用户 '{email}' 吗？此操作无法撤销。",
      searchPlaceholder: '邮箱/用户名/备注/API Key 模糊搜索...',
      searchUsers: '邮箱/用户名/备注/API Key 模糊搜索',
      roleFilter: '角色筛选',
      allRoles: '全部角色',
      allStatus: '全部状态',
      allGroups: '全部分组',
      searchGroups: '搜索分组...',
      fuzzySearch: '模糊搜索',
      apiKeyGroupFilter: 'API Key 分组',
      apiKeyGroupExclusive: '专用分组',
      apiKeyGroupPublic: '公开分组',
      apiKeyGroupSubscription: '订阅分组',
      apiKeyGroupDisabled: '已禁用分组',
      authorizedGroupFilter: '授权分组',
      allAuthorizedGroups: '全部授权分组',
      searchAuthorizedGroups: '搜索授权分组...',
      allApiKeyGroups: '全部 API Key 分组',
      searchApiKeyGroups: '搜索 API Key 分组...',
      statusFilter: '状态筛选',
      allStatuses: '全部状态',
      admin: '管理员',
      user: '用户',
      disabled: '禁用',
      email: '邮箱',
      password: '密码',
      username: '用户名',
      notes: '备注',
      enterEmail: '请输入邮箱',
      enterPassword: '请输入密码',
      enterUsername: '请输入用户名（选填）',
      enterNotes: '请输入备注（仅管理员可见）',
      notesHint: '此备注仅对管理员可见',
      enterNewPassword: '请输入新密码（选填）',
      leaveEmptyToKeep: '留空则保持原密码不变',
      generatePassword: '生成随机密码',
      copyPassword: '复制密码',
      creating: '创建中...',
      updating: '更新中...',
      columns: {
        user: '用户',
        id: 'ID',
        email: '邮箱',
        username: '用户名',
        notes: '备注',
        role: '角色',
        groups: '分组',
        subscriptions: '订阅分组',
        balance: '余额',
        balancePlatformQuota: '余额(平台配额)',
        usage: '用量',
        usageAnthropic: '用量 (Claude)',
        usageOpenAI: '用量 (OpenAI)',
        usageGemini: '用量 (Gemini)',
        usageAntigravity: '用量 (Antigravity)',
        concurrency: '并发数',
        status: '状态',
        lastActive: '最后活跃时间',
        lastUsed: '最后使用时间',
        created: '创建时间',
        actions: '操作'
      },
      today: '今日',
      total: '近30天',
      sortBy: '排序方式',
      sortCurrentPageOnly: '仅对本页数据排序',
      noSubscription: '暂无订阅',
      publicGroupCount: '+{count} 公开',
      exclusiveLabel: '专属',
      publicLabel: '公开',
      daysRemaining: '{days}天',
      expired: '已过期',
      disable: '禁用',
      enable: '启用',
      disableUser: '禁用用户',
      enableUser: '启用用户',
      viewApiKeys: '查看 API 密钥',
      groups: '分组',
      apiKeys: 'API密钥',
      userApiKeys: '用户 API 密钥',
      noApiKeys: '此用户暂无 API 密钥',
      group: '分组',
      none: '无',
      groupChangedSuccess: '分组修改成功',
      groupChangedWithGrant: '分组修改成功，已自动为用户添加「{group}」分组权限',
      groupChangeFailed: '分组修改失败',
      noUsersYet: '暂无用户',
      createFirstUser: '创建您的第一个用户以开始使用系统',
      userCreated: '用户创建成功',
      userUpdated: '用户更新成功',
      userDeleted: '用户删除成功',
      userEnabled: '用户已启用',
      userDisabled: '用户已禁用',
      failedToLoad: '加载用户列表失败',
      failedToCreate: '创建用户失败',
      failedToUpdate: '更新用户失败',
      failedToDelete: '删除用户失败',
      failedToToggle: '更新用户状态失败',
      failedToLoadApiKeys: '加载用户 API 密钥失败',
      deleteConfirm: "确定要删除用户 '{email}' 吗？此操作无法撤销。",
      roles: {
        admin: '管理员',
        user: '用户'
      },
      form: {
        emailLabel: '邮箱',
        emailPlaceholder: '请输入邮箱',
        usernameLabel: '用户名',
        usernamePlaceholder: '请输入用户名（选填）',
        notesLabel: '备注',
        notesPlaceholder: '请输入备注（仅管理员可见）',
        notesHint: '此备注仅对管理员可见',
        passwordLabel: '密码',
        passwordPlaceholder: '请输入密码（留空则不修改）',
        roleLabel: '角色',
        selectRole: '选择角色',
        balanceLabel: '余额',
        concurrencyLabel: '并发数',
        statusLabel: '状态',
        selectStatus: '选择状态',
        rpmLimit: '每分钟请求数 (RPM)',
        rpmLimitPlaceholder: '0 表示不限制',
        rpmLimitHint: '该用户每分钟最大请求数，0 = 不限制；仅在所用分组未设置 rpm_limit 时作为兜底生效'
      },
      adjustBalance: '调整余额',
      adjustConcurrency: '调整并发数',
      adjustmentAmount: '调整金额',
      adjustmentAmountHint: '正数增加，负数减少',
      currentBalance: '当前余额',
      currentConcurrency: '当前并发数',
      saving: '保存中...',
      noUsers: '暂无用户',
      noUsersDescription: '创建您的第一个用户以开始使用系统。',
      userCreatedSuccess: '用户创建成功',
      userUpdatedSuccess: '用户更新成功',
      userDeletedSuccess: '用户删除成功',
      balanceAdjustedSuccess: '余额调整成功',
      concurrencyAdjustedSuccess: '并发数调整成功',
      failedToSave: '保存用户失败',
      failedToAdjust: '调整失败',
      emailRequired: '请输入邮箱',
      concurrencyMin: '并发数不能小于1',
      amountRequired: '请输入有效金额',
      insufficientBalance: '余额不足',
      setAllowedGroups: '设置允许分组',
      allowedGroupsHint: '选择此用户可以使用的标准分组。订阅类型分组请在订阅管理中配置。',
      noStandardGroups: '暂无标准分组',
      allowAllGroups: '允许全部分组',
      allowAllGroupsHint: '用户可以使用任何非专属分组',
      allowedGroupsUpdated: '允许分组更新成功',
      failedToLoadGroups: '加载分组列表失败',
      failedToUpdateAllowedGroups: '更新允许分组失败',
      // 用户分组配置
      groupConfig: '用户分组配置',
      groupConfigHint: '为用户 {email} 配置专属分组倍率（覆盖分组默认倍率）',
      exclusiveGroups: '专属分组',
      publicGroups: '公开分组（默认可用）',
      defaultRate: '默认倍率',
      customRate: '专属倍率',
      useDefaultRate: '使用默认',
      customRatePlaceholder: '留空使用默认',
      groupConfigUpdated: '分组配置更新成功',
      replaceGroup: '替换分组',
      clickToReplace: '点击替换分组',
      replaceGroupTitle: '替换专属分组',
      replaceGroupHint: '选择新分组替换「{old}」，将自动迁移绑定的 Key 并更新分组权限',
      replaceGroupConfirm: '确认替换',
      replaceGroupSuccess: '分组替换成功，已迁移 {count} 个 Key',
      selectNewGroup: '请选择目标分组',
      noOtherGroups: '没有其他可用的专属分组',
      deposit: '充值',
      withdraw: '退款',
      depositAmount: '充值金额',
      withdrawAmount: '退款金额',
      withdrawAll: '全部',
      depositNotesPlaceholder: '例如：新用户注册奖励、活动充值、补偿充值等',
      withdrawNotesPlaceholder: '例如：服务问题退款、错误充值退回、账户注销退款等',
      notesOptional: '备注为可选项，有助于未来查账',
      amountHint: '请输入正数金额',
      newBalance: '操作后余额',
      depositing: '充值中...',
      withdrawing: '退款中...',
      confirmDeposit: '确认充值',
      confirmWithdraw: '确认退款',
      depositSuccess: '充值成功',
      withdrawSuccess: '退款成功',
      failedToDeposit: '充值失败',
      failedToWithdraw: '退款失败',
      useDepositWithdrawButtons: '请使用充值/退款按钮调整余额',
      // 余额变动记录
      balanceHistory: '充值记录',
      balanceHistoryTip: '点击查看充值记录',
      columnAlwaysVisible: '该列固定显示，不可隐藏',
      // 平台用量明细（悬浮显示）
      platformBreakdown: '按平台拆分',
      platformBreakdownEmpty: '暂无平台明细',
      platformBreakdownHint: '悬浮查看各平台用量',
      platformOther: '其他',
      balanceHistoryTitle: '用户充值和并发变动记录',
      noBalanceHistory: '暂无变动记录',
      allTypes: '全部类型',
      typeBalance: '余额（兑换码）',
      typeAffiliateBalance: '余额（返利转入）',
      typeAdminBalance: '余额（管理员调整）',
      typeConcurrency: '并发（兑换码）',
      typeAdminConcurrency: '并发（管理员调整）',
      typeSubscription: '订阅',
      failedToLoadBalanceHistory: '加载余额记录失败',
      createdAt: '创建时间',
      totalRecharged: '总充值',
      // Settings Dropdowns
      filterSettings: '筛选设置',
      columnSettings: '列设置',
      filterValue: '输入值',
      // User Attributes
      attributes: {
        title: '用户属性配置',
        description: '配置用户的自定义属性字段',
        configButton: '属性配置',
        addAttribute: '添加属性',
        editAttribute: '编辑属性',
        deleteAttribute: '删除属性',
        deleteConfirm: "确定要删除属性 '{name}' 吗？所有用户的该属性值将被删除。",
        noAttributes: '暂无自定义属性',
        noAttributesHint: '点击上方按钮添加自定义属性',
        key: '属性键',
        keyHint: '用于程序引用，只能包含字母、数字和下划线',
        name: '显示名称',
        nameHint: '在表单中显示的名称',
        type: '属性类型',
        fieldDescription: '描述',
        fieldDescriptionHint: '属性的说明文字',
        placeholder: '占位符',
        placeholderHint: '输入框的提示文字',
        required: '必填',
        enabled: '启用',
        options: '选项配置',
        optionsHint: '用于单选/多选类型',
        addOption: '添加选项',
        optionValue: '选项值',
        optionLabel: '显示文本',
        validation: '验证规则',
        minLength: '最小长度',
        maxLength: '最大长度',
        min: '最小值',
        max: '最大值',
        pattern: '正则表达式',
        patternMessage: '验证失败提示',
        types: {
          text: '单行文本',
          textarea: '多行文本',
          number: '数字',
          email: '邮箱',
          url: '链接',
          date: '日期',
          select: '单选',
          multi_select: '多选'
        },
        created: '属性创建成功',
        updated: '属性更新成功',
        deleted: '属性删除成功',
        reordered: '属性排序更新成功',
        failedToLoad: '加载属性列表失败',
        failedToCreate: '创建属性失败',
        failedToUpdate: '更新属性失败',
        keyRequired: '请输入属性键',
        nameRequired: '请输入显示名称',
        optionsRequired: '请至少添加一个选项',
        failedToDelete: '删除属性失败',
        failedToReorder: '更新排序失败',
        keyExists: '属性键已存在',
        dragToReorder: '拖拽排序'
      },
      platformQuota: {
        menuItem: '平台限额',
        title: '平台限额',
        subtitle: '为用户 {email} 配置各上游平台的日 / 周 / 月用量上限',
        columns: {
          platform: '平台',
          daily: '日 (USD)',
          weekly: '周 (USD)',
          monthly: '月 (USD, 30天滚动)',
          usage: '当前用量',
        },
        placeholder: '不限制',
        save: '保存',
        saving: '保存中...',
        cancel: '取消',
        clearAll: '全部清空（取消所有限额）',
        clearAllConfirm: '确认清空全部平台的日 / 周 / 月限额？所有平台将变为"无限额"，本地无法撤销，需要在保存前手动重填。',
        reset: {
          button: '重置该窗口',
          confirm: '确认重置该用户 {platform} 平台的 {window} 用量？此操作立即生效。',
          success: '已重置 {platform} {window} 用量',
          failed: '重置失败',
        },
        updateSuccess: '平台限额已更新',
        updateFailed: '保存失败',
        loadFailed: '加载失败',
        hint: '留空 = 不限制该窗口。',
        windowDaily: '日',
        windowWeekly: '周',
        windowMonthly: '月',
        cellNotConfigured: '未配置',
        cellColumnTooltip: '仅展示已设限额的平台',
        subscriptionWarning: '此用户有活跃订阅，平台限额仅在余额（标准）模式下生效，订阅模式请求不受此限额约束。',
        invalidNumber: '以下字段填写不是合法数字，请修正后再保存：{fields}',
      }
    },

    // Groups Management
    groups: {
      title: '分组管理',
      description: '管理 API 密钥分组和费率配置',
      searchGroups: '搜索分组...',
      createGroup: '创建分组',
      editGroup: '编辑分组',
      deleteGroup: '删除分组',
      duplicate: '复制',
      duplicating: '复制中',
      duplicateSuccess: '分组已复制为「{name}」，已默认停用，请确认配置后再启用',
      duplicateFailed: '复制分组失败',
      sortOrder: '排序',
      columnSettings: '列设置',
      sortOrderHint: '拖拽分组调整显示顺序，排在前面的分组会优先显示',
      sortOrderUpdated: '排序已更新',
      failedToUpdateSortOrder: '更新排序失败',
      deleteConfirm: "确定要删除分组 '{name}' 吗？所有关联的 API 密钥将不再属于任何分组。",
      deleteConfirmSubscription:
        "确定要删除订阅分组 '{name}' 吗？此操作会让所有绑定此订阅的用户的 API Key 失效，并删除所有相关的订阅记录。此操作无法撤销。",
      columns: {
        name: '名称',
        id: 'ID',
        platform: '平台',
        rateMultiplier: '费率倍数',
        rpmOverride: 'RPM 覆盖',
        rpmOverrideHint: '该用户在此分组的 RPM 上限；留空 = 使用分组默认；0 = 不限制',
        rateDefault: '默认',
        rpmDefault: '默认',
        exclusive: '独占',
        type: '类型',
        priority: '优先级',
        apiKeys: 'API 密钥数',
        accounts: '账号数',
        capacity: '容量',
        usage: '用量',
        status: '状态',
        actions: '操作',
        billingType: '计费类型',
        userName: '用户名',
        userEmail: '邮箱',
        userNotes: '备注',
        userStatus: '状态'
      },
      usageToday: '今日',
      usageYesterday: '昨日',
      usageTotal: '累计',
      accountsAvailable: '可用:',
      accountsRateLimited: '限流:',
      accountsTotal: '总量:',
      accountsUnit: '个账号',
      form: {
        name: '名称',
        description: '描述',
        platform: '平台',
        rateMultiplier: '费率倍数',
        status: '状态',
        exclusive: '专属分组',
        nameLabel: '分组名称',
        namePlaceholder: '请输入分组名称',
        descriptionLabel: '描述',
        descriptionPlaceholder: '请输入描述（可选）',
        rateMultiplierLabel: '费率倍数',
        rateMultiplierHint: '1.0 = 标准费率，0.5 = 半价，2.0 = 双倍',
        rpmLimit: '每分钟请求数 (RPM)',
        rpmLimitPlaceholder: '0 表示不限制',
        rpmLimitHint: '每用户在本分组每分钟最大请求数，0 = 不限制；一旦设置即接管该用户的限流（覆盖用户级 rpm_limit）',
        maxReasoningEffort: '推理强度上限',
        maxReasoningEffortUnlimited: '不限制（跟随请求）',
        maxReasoningEffortHint: '仅限制客户端主动请求的 OpenAI reasoning effort；Composite 分组仅对解析到 OpenAI 的请求生效。超过上限时自动降档，不会为缺省请求主动开启推理。上限优先级高于推理强度映射。',
        reasoningEffortMappings: '推理强度映射',
        addReasoningEffortMapping: '添加映射',
        removeReasoningEffortMapping: '删除映射',
        reasoningEffortFrom: '请求值',
        reasoningEffortTo: '转发值',
        reasoningEffortFromPlaceholder: '请选择 A',
        reasoningEffortToPlaceholder: '请选择 B',
        fromRequired: '请选择请求值 A',
        toRequired: '请选择转发值 B',
        unsupportedFrom: '请求值不受当前平台支持',
        unsupportedTo: '转发值不受当前平台支持',
        duplicateFrom: '请求值 A 不能重复',
        exclusiveLabel: '专属分组',
        exclusiveHint: '专属分组，可以手动指定给用户',
        platformLabel: '平台限制',
        platformPlaceholder: '选择平台（留空则不限制）',
        accountsLabel: '指定账号',
        accountsPlaceholder: '选择账号（留空则不限制）',
        priorityLabel: '优先级',
        priorityHint: '数值越小优先级越高，用于账号调度',
        statusLabel: '状态'
      },
      exclusiveObj: {
        yes: '是',
        no: '否'
      },
      exclusive: '专属',
      exclusiveHint: '专属分组，可以手动指定给特定用户',
      exclusiveTooltip: {
        title: '什么是专属分组？',
        description:
          '开启后，用户在创建 API Key 时将无法看到此分组。只有管理员手动将用户分配到此分组后，用户才能使用。',
        example: '使用场景：',
        exampleContent:
          '公开分组费率 0.8，您可以创建一个费率 0.7 的专属分组，手动分配给 VIP 用户，让他们享受更优惠的价格。'
      },
      rateMultiplierHint: '1.0 = 标准费率，0.5 = 半价，2.0 = 双倍',
      platforms: {
        all: '全部平台',
        anthropic: 'Anthropic',
        openai: 'OpenAI',
        gemini: 'Gemini',
        antigravity: 'Antigravity',
        grok: 'Grok',
        kimi: 'Kimi',
        zhipu: 'Zhipu GLM',
        deepseek: 'DeepSeek',
        composite: 'Composite',
      },
      saving: '保存中...',
      noGroups: '暂无分组',
      noGroupsDescription: '创建分组以更好地管理 API 密钥和费率。',
      groupCreatedSuccess: '分组创建成功',
      groupUpdatedSuccess: '分组更新成功',
      groupDeletedSuccess: '分组删除成功',
      failedToLoad: '加载分组列表失败',
      failedToSave: '保存分组失败',
      failedToDelete: '删除分组失败',
      allPlatforms: '全部平台',
      allStatus: '全部状态',
      allGroups: '全部分组',
      exclusiveFilter: '专属',
      nonExclusive: '公开',
      public: '公开',
      rateAndAccounts: '{rate}x 费率 · {count} 个账号',
      accountsCount: '{count} 个账号',
      rateLabel: '倍率',
      accountFilters: {
        title: '账号过滤控制',
        oauthOnly: '仅允许 OAuth 账号',
        oauthOnlyEnabled: '已启用 — 排除 API Key 类型账号',
        privacySetOnly: '仅允许隐私保护已设置的账号',
        privacySetOnlyEnabled: '已启用 — Privacy 未设置的账号将被排除',
        disabled: '未启用'
      },
      enterGroupName: '请输入分组名称',
      optionalDescription: '可选描述',
      platformHint: '选择此分组关联的平台',
      platformNotEditable: '创建后不可更改平台',
      noGroupsYet: '暂无分组',
      createFirstGroup: '创建您的第一个分组来组织 API 密钥。',
      creating: '创建中...',
      updating: '更新中...',
      limitDay: '日',
      limitWeek: '周',
      limitMonth: '月',
      groupCreated: '分组创建成功',
      groupUpdated: '分组更新成功',
      groupDeleted: '分组删除成功',
      failedToCreate: '创建分组失败',
      failedToUpdate: '更新分组失败',
      nameRequired: '请输入分组名称',
      rateMultipliers: '专属倍率',
      rateMultipliersTitle: '分组专属倍率管理',
      addUserRate: '添加用户专属倍率',
      rpmOverrides: '专属 RPM',
      rpmOverridesTitle: '分组专属 RPM 管理',
      addUserRpm: '添加用户专属 RPM',
      noRpmOverrides: '暂无用户设置了专属 RPM',
      rpmSaved: '专属 RPM 已保存',
      groupRpmDefault: '分组默认 RPM',
      searchUserPlaceholder: '搜索用户邮箱...',
      noRateMultipliers: '暂无用户设置了专属倍率',
      rateUpdated: '专属倍率已更新',
      rateDeleted: '专属倍率已删除',
      rateAdded: '专属倍率已添加',
      clearAll: '全部清空',
      confirmClearAll: '确定要清空该分组所有用户的专属倍率设置吗？此操作不可撤销。',
      rateCleared: '已清空所有专属倍率',
      batchAdjust: '批量调整倍率',
      multiplierFactor: '乘数',
      applyMultiplier: '应用',
      rateAdjusted: '倍率已批量调整',
      rateSaved: '专属倍率已保存',
      finalRate: '最终倍率',
      unsavedChanges: '有未保存的修改',
      revertChanges: '撤销修改',
      userInfo: '用户信息',
      subscription: {
        title: '订阅设置',
        type: '计费类型',
        typeHint: '标准计费从用户余额扣除。订阅模式使用配额限制。',
        typeNotEditable: '分组创建后无法修改计费类型。',
        standard: '标准（余额）',
        subscription: '订阅（配额）',
        dailyLimit: '每日限额（USD）',
        weeklyLimit: '每周限额（USD）',
        monthlyLimit: '每月限额（USD）',
        defaultValidityDays: '默认有效期（天）',
        validityHint: '分配给用户时订阅的有效天数',
        noLimit: '无限制'
      },
      imagePricing: {
        title: '图片生成计费',
        description: '配置图片生成能力和图片基础单价，留空则使用默认价格',
        allowImageGeneration: '允许当前分组生图',
        allowBatchImageGeneration: '允许当前分组批量生图',
        independentMultiplier: '生图倍率独立',
        imageMultiplier: '生图独立倍率',
        batchDiscountMultiplier: '批量生图折扣倍率',
        batchHoldMultiplier: '批量冻结价格比例',
        batchSectionHint: '批量生图仅影响批量任务：结算价格会叠加批量折扣倍率，提交时冻结金额按普通生图原价 × 批量冻结价格比例计算。参考图也会产生上游输入 token 消耗，建议批量生图折扣倍率设置大于 0.5。',
        batchDisabledHint: '请先开启当前分组生图，才能开启批量生图。',
        batchGeminiOnlyHint: '批量生图当前仅支持 Gemini 分组。',
        modeHint: '默认关闭独立倍率时，图片费用 = 图片价格 × 当前分组有效倍率；开启独立倍率后，图片费用 = 图片价格 × 生图独立倍率。',
        finalPricePreview: '最终单张价格预览',
        notConfigured: '未配置'
      },
      videoPricing: {
        title: '视频生成计费',
        description:
          '配置 Grok 视频生成的每秒单价（USD/秒），留空则使用默认每秒价（grok-imagine-video：480p $0.05/s、720p $0.07/s；video-1.5：480p $0.08/s、720p $0.14/s、1080p $0.25/s）',
        modelOverridesTitle: '按模型覆盖视频价格',
        modelOverridesDescription: '已填写的单元格会覆盖该模型族的平面分辨率价格。video-1.5 的 preview 与 legacy 别名共用同一模型族；留空则回退到平面分辨率价格。',
        independentMultiplier: '视频倍率独立',
        videoMultiplier: '视频独立倍率',
        modeHint:
          '视频按秒计费：费用 = 每秒价格 × 时长（1-15 秒，未指定默认 8 秒）。默认叠加当前分组有效倍率；开启独立倍率后改用视频独立倍率。',
        finalPricePreview: '最终每秒价格预览',
        notConfigured: '未配置'
      },
      explicitPricing: {
        title: 'Grok 搜索与 Voice 定价',
        description: '分组级 web_search（每千次）与 Voice realtime / TTS / STT 单价（USD）。留空表示未配置。',
        searchPricePer1k: '搜索每千次价格（USD）',
        pricePlaceholder: '可选'
      },
      modelPricing: {
        title: '分组逐模型定价',
        description: '匹配模型后覆盖渠道和内置价格。长上下文阶梯沿用官方/预设价卡，无需再手填区间。音频可用按次层级配置 realtime、tts、stt。',
        longContext: '启用长上下文阶梯定价',
        longContextHint: '勾选后按渠道区间或官方预设阶梯计费；关闭后默认按第一档，账号显式开启时除外。',
        add: '添加模型价格'
      },
      voicePricing: {
        title: 'Grok Voice 定价',
        description: '分组级 Voice realtime / TTS / STT 单价（USD）。留空表示未配置。',
        audioRealtimePerMin: 'Realtime 每分钟价格（USD）',
        audioTtsPerMillionChars: 'TTS 每百万字符价格（USD）',
        audioSttPerHour: 'STT 每小时价格（USD）',
        pricePlaceholder: '可选'
      },
      webSearchPricing: {
        title: 'Codex 网页搜索计费',
        pricePerCall: '搜索单次价格（USD/次）',
        pricePerCallHint:
          '留空使用默认价 $0.01/次（官方定价 $10/1000 次）；填 0 表示免费。实际扣费会叠加分组费率倍数。',
        finalPricePreview: '应用当前倍率后的单次价格：{price}'
      },
      peakRate: {
        enable: '启用高峰倍率',
        peakStart: '高峰开始',
        peakEnd: '高峰结束',
        peakMultiplier: '高峰倍率',
        multiplierHint: '作用于 token 计费倍率；token 计费的图片 token 同样适用，0 表示高峰 token 请求按 0 倍计费'
      },
      profitControl: {
        enable: '启用利润控制',
        enabledHint: '调度时仅允许"账号倍率 ≤ 请求实际下游倍率 ×（1 − 最低毛利率 − 安全缓冲）"的账号进入候选池；账号倍率可手工维护或由探测同步，既有排序、粘性与熔断在合格账号间照常工作。图片/视频调度暂不参与。',
        disabledHint: '关闭后调度不做利润过滤，账号倍率高于下游倍率的账号也会被选中，可能产生亏损请求。',
        minMargin: '最低毛利率（%）',
        minMarginHint: '百分比输入，如 30 表示 30%；后端按小数存储',
        safetyBuffer: '安全缓冲（%）',
        safetyBufferHint: '与最低毛利率相加后从下游倍率中扣除，默认 0',
        marginRangeError: '最低毛利率应在 0 到 99.99 之间',
        bufferRangeError: '安全缓冲应在 0 到 99.99 之间',
        sumTooHigh: '最低毛利率与安全缓冲之和必须小于 100%，否则将排除全部账号'
      },
      modelsList: {
        title: '自定义 /v1/models 模型列表',
        hint: '仅影响 /v1/models 展示结果，不影响白名单模型调用和账号调度。',
        loading: '正在加载模型列表...',
        empty: '暂无可展示模型',
        selectedSummary: '已选 {selected} / {total}',
        selectAll: '全选',
        invertSelection: '反选'
      },
      compositeRoutes: {
        action: '路由',
        title: 'Composite 路由',
        titleWithGroup: 'Composite 路由：{name}',
        routes: '已保存路由',
        empty: '暂无 Composite 路由',
        publicModel: '公开模型',
        target: '目标',
        scope: '范围',
        priority: '优先级',
        addRoute: '添加路由',
        editRoute: '编辑路由',
        matchType: '匹配方式',
        endpoint: '端点',
        targetPlatform: '目标平台',
        upstreamModel: '上游模型',
        upstreamModelHint: '留空表示透传原始请求模型：前缀匹配下每个命中模型各自原样转发（如 deepseek-v4-flash、deepseek-v4-pro 分别转发）；填写则所有命中请求都固定转发该模型。',
        notes: '备注',
        enabled: '启用',
        preview: '预览',
        matched: '已匹配',
        notMatched: '未匹配',
        publicModelRequired: '请输入公开模型',
        routeCreated: 'Composite 路由已创建',
        routeUpdated: 'Composite 路由已更新',
        routeDeleted: 'Composite 路由已删除',
        failedToLoad: '加载 Composite 路由失败',
        failedToSave: '保存 Composite 路由失败',
        failedToDelete: '删除 Composite 路由失败',
        failedToPreview: '预览 Composite 路由失败',
        deleteConfirm: '确定删除此 Composite 路由？',
        endpoints: {
          any: '任意',
          messages: 'Messages',
          countTokens: 'Count Tokens',
          responses: 'Responses',
          chatCompletions: 'Chat Completions',
          embeddings: 'Embeddings',
          images: 'Images',
          gemini: 'Gemini 原生'
        },
        match: {
          exact: '精确',
          prefix: '前缀'
        },
        sources: {
          route: '路由',
          detector: '内置识别'
        }
      },
      claudeCode: {
        title: 'Claude Code 客户端限制',
        tooltip:
          '启用后，此分组仅允许 Claude Code 官方客户端访问。非 Claude Code 请求将被拒绝或降级到指定分组。',
        enabled: '仅限 Claude Code',
        disabled: '允许所有客户端',
        fallbackGroup: '降级分组',
        fallbackHint: '非 Claude Code 请求将使用此分组，留空则直接拒绝',
        noFallback: '不降级（直接拒绝）'
      },
      openaiMessages: {
        title: 'OpenAI Messages 调度配置',
        allowDispatch: '允许 /v1/messages 调度',
        allowDispatchHint: '启用后，此 OpenAI 分组的 API Key 可以通过 /v1/messages 端点调度请求',
        familyMappingTitle: '系列默认映射',
        familyMappingHint: '当请求命中 Opus、Sonnet、Haiku 系列时，会优先使用这里配置的目标模型。',
        opusModel: 'Opus 映射模型',
        opusModelPlaceholder: '例如: gpt-5.4',
        sonnetModel: 'Sonnet 映射模型',
        sonnetModelPlaceholder: '例如: gpt-5.3-codex',
        haikuModel: 'Haiku 映射模型',
        haikuModelPlaceholder: '例如: gpt-5.4-mini',
        exactMappingTitle: '精确模型覆盖',
        exactMappingHint: '精确 Claude 模型覆盖优先级高于系列默认映射，可将某个具体 Claude 模型单独映射到不同的目标模型。',
        noExactMappings: '暂无精确模型覆盖规则',
        addExactMapping: '添加精确映射',
        claudeModel: 'Claude 模型',
        claudeModelPlaceholder: '例如: claude-sonnet-4-5-20250929',
        targetModel: '目标模型',
        targetModelPlaceholder: '例如: gpt-5.4',
        removeExactMapping: '删除精确映射'
      },
      openaiLive: {
        title: 'OpenAI Live',
        allow: '允许访问 Live',
        hint: '启用后，此 OpenAI 分组的 API Key 可以创建并控制 Live 语音会话。默认关闭。运行 Sub2API 的服务端必须是 Apple Silicon Mac，并安装官方 ChatGPT App；客户端平台不受限制。',
        unsupportedTitle: '当前服务端不支持 Live',
        unsupportedMessage: '当前 Sub2API 服务端无法生成 Live 所需的设备证明，即使开启也不能使用。是否仍然开启？',
        enableAnyway: '仍然开启'
      },
      invalidRequestFallback: {
        title: '无效请求兜底分组',
        hint: '仅当上游明确返回 prompt too long 时才会触发，留空表示不兜底',
        noFallback: '不兜底'
      },
      copyAccounts: {
        title: '从分组复制账号',
        tooltip: '选择一个或多个相同平台的分组，创建后会自动将这些分组的所有账号绑定到新分组（去重）。',
        tooltipEdit: '选择一个或多个相同平台的分组，保存后当前分组的账号会被替换为这些分组的账号（去重）。',
        selectPlaceholder: '选择分组以复制其账号...',
        hint: '可选多个分组，账号会自动去重',
        hintEdit: '⚠️ 注意：这会替换当前分组的所有账号绑定'
      },
      modelRouting: {
        title: '模型路由配置',
        tooltip:
          '配置特定模型请求优先路由到指定账号。支持通配符匹配，如 claude-opus-* 匹配所有 opus 模型。',
        enabled: '已启用',
        disabled: '已禁用',
        disabledHint: '启用后，配置的路由规则才会生效',
        addRule: '添加路由规则',
        modelPattern: '模型模式',
        modelPatternPlaceholder: 'claude-opus-*',
        modelPatternHint: '支持 * 通配符，如 claude-opus-* 匹配所有 opus 模型',
        accounts: '优先账号',
        selectAccounts: '选择账号',
        noAccounts: '此分组暂无账号',
        loadingAccounts: '加载账号中...',
      claudeMaxSimulation: {
        title: 'Claude Max 用量模拟',
        tooltip:
          '启用后，对于没有上游缓存写入用量的 Claude 模型，系统会确定性地将 token 映射为少量输入加 1h 缓存创建，同时保持总 token 不变。',
        enabled: '已启用（模拟 1h 缓存）',
        disabled: '已禁用',
        hint: '仅调整用量计费日志中的 token 类别。不会持久化每个请求的映射状态。'
      },
        removeRule: '删除规则',
        noRules: '暂无路由规则',
        noRulesHint: '添加路由规则以将特定模型请求优先路由到指定账号',
        searchAccountPlaceholder: '搜索账号...',
        accountsHint: '选择此模型模式优先使用的账号'
      },
      mcpXml: {
        title: 'MCP XML 协议注入',
        tooltip: '启用后，当请求包含 MCP 工具时，会在 system prompt 中注入 XML 格式调用协议提示词。关闭此选项可避免对某些客户端造成干扰。',
        enabled: '已启用',
        disabled: '已禁用'
      },
      supportedScopes: {
        title: '支持的模型系列',
        tooltip: '选择此分组支持的模型系列。未勾选的系列将不会被路由到此分组。',
        claude: 'Claude',
        geminiText: 'Gemini Text',
        geminiImage: 'Gemini Image',
        hint: '至少选择一个模型系列'
      }
    },

    // Available Channels (aggregated read-only view)
}
