export const orbit = {
  triggerLabel: 'Orbit',
  triggerTooltip: '开始或加入共享收听会话',
  launchCreate: '创建会话',
  launchJoin: '加入会话',
  launchHelp: '这是怎么工作的？',
  launchHelpSoon: '即将推出',
  joinModalTitle: '加入 Orbit 会话',
  joinModalSub: '粘贴主持人发给你的邀请链接。',
  joinModalLinkLabel: '邀请链接',
  joinModalLinkPlaceholder: 'psysonic2-…',
  joinModalLinkHelper: '适用于任何有效的 Orbit 链接。必须指向你当前登录的服务器。',
  joinModalPasteTooltip: '从剪贴板粘贴',
  joinModalSubmit: '加入',
  joinModalBusy: '加入中…',
  joinErrEmpty: '请粘贴一个邀请链接。',
  joinErrInvalid: '这看起来不像 Orbit 邀请链接。',
  closeAria: '关闭',
  heroTitlePrefix: '一起听音乐 —',
  heroTitleBrand: 'Orbit',
  heroSub: '开始会话 — {{server}} 上的其他用户将一起收听并可以推荐曲目。',
  fallbackServer: '此服务器',
  tipLan: '你当前通过本地网络地址连接。网络外的访客无法加入 — 请在启动前切换到公共服务器地址。',
  tipRemote: '为了让家庭网络外的访客能够加入，你的服务器地址必须公开可达。如果你的服务器仅限内部使用，请在启动前切换。',
  labelName: '会话名称',
  namePlaceholder: 'Velvet Orbit',
  reshuffleTooltip: '新建议',
  reshuffleAria: '建议新名称',
  helperName: '会话对访客的显示方式 — 保留或输入自己的名称。',
  labelMax: '最大访客数',
  helperMax: '你不计算在内 — 这仅限制加入的访客。',
  labelLink: '邀请链接',
  tooltipCopied: '已复制',
  tooltipCopy: '复制',
  ariaCopyLink: '复制邀请链接',
  helperLink: '将此链接发送给你的访客。他们可以在 Psysonic 的任何位置使用 Ctrl+V 粘贴。',
  labelClearQueue: '先清空我的队列',
  helperClearQueue: '以空队列启动会话。关闭：你已排队的曲目保留并与访客共享。',
  btnCancel: '取消',
  btnStarting: '启动中…',
  btnStart: '启动 Orbit',
  btnCopyAndStart: '复制链接并启动',
  errNameRequired: '请为你的会话命名。',
  errStartFailed: '无法启动。',
  hostLabel: '主持人：{{name}}',
  participantsTooltip: '参与者',
  settingsTooltip: '会话设置',
  shareTooltip: '分享邀请链接',
  shuffleLabel: '下次洗牌',
  catchUpLabel: '跟上',
  catchUpTooltip: '跳到主持人当前位置',
  hostAway: '主持人离线',
  hostOnline: '主持人在线',
  endTooltip: '结束会话',
  leaveTooltip: '离开会话',
  helpTooltip: 'Orbit 的工作原理',
  diag: {
    openTooltip: '诊断 — 可复制的事件日志',
    title: 'Orbit 诊断',
    role: '角色',
    hostTrack: '主持人曲目 ID',
    hostPos: '主持人位置',
    guestTrack: '我的曲目 ID',
    guestPos: '我的位置',
    drift: '偏差',
    stateAge: '状态时长',
    eventLog: '事件日志 ({{count}})',
    copyLabel: '复制',
    copyTooltip: '将日志复制到剪贴板',
    clearLabel: '清除',
    clearTooltip: '清空缓冲区',
    empty: '暂无事件 — Orbit 同步时会显示。',
    hint: '在重现问题前打开此面板，然后点击复制并粘贴到错误报告中。',
    copied: '已复制 {{count}} 行',
    copyFailed: '无法复制到剪贴板',
    cleared: '缓冲区已清空',
  },
  helpTitle: 'Orbit 的工作原理',
  helpIntro: 'Orbit 将 Psysonic 变成一个共享的收听空间。主持人选择音乐；访客同步收听并可以推荐曲目。',
  helpHostOnly: '（主持人）',
  helpSec1Title: '什么是 Orbit？',
  helpSec1Body: '"一起听"模式 — 主持人驱动播放，访客加入收听。一切都通过你自己的 Navidrome 服务器上的播放列表进行；没有外部基础设施。',
  helpSec2Title: '主持人和访客',
  helpSec2Body: '主持人控制播放（播放 / 暂停 / 跳过 / 跳转），并决定会话何时结束。访客跟随主持人的播放，可以推荐曲目，随时离开或重新加入。只有主持人可以踢出或永久封禁参与者。',
  helpSec2WarnHead: '重要：使用独立账户。',
  helpSec2WarnBody: '每个参与者都需要自己的 Navidrome 账户。如果主持人和访客使用同一用户登录，他们的提交会冲突，主持人将永远看不到访客的建议。',
  helpSec3Title: '启动和邀请',
  helpSec3Body: '点击"Orbit"按钮 → 创建会话 → 启动弹窗显示可复制的邀请链接，并可选清空你当前的队列。以任何方式分享该链接。会话运行时，顶部会话栏中的分享按钮可随时再次复制链接。',
  helpSec4Title: '加入',
  helpSec4Body: '使用 Ctrl+V / Cmd+V 在 Psysonic 的任何位置粘贴邀请链接 — 加入提示会自动弹出。或者：「Orbit」→ 加入会话 → 粘贴到字段中。如果链接指向你有账户的服务器，Psysonic 会为你切换。当你在该服务器上有多个账户时，小型选择器会询问使用哪个。',
  helpSec5Title: '推荐曲目',
  helpSec5Body: '在任何曲目列表中：双击一行，或右键 → "添加到 Orbit 会话"。单击会显示提示而不是将整张专辑扔进共享队列 — 这是有意的。明确的批量操作（如"全部播放"或"播放专辑"）先要求确认然后追加（永不替换）。',
  helpSec6Title: '共享队列',
  helpSec6Body: '队列显示主持人即将播放的曲目 — 所有人可见。批量添加总是追加到末尾，因此访客的建议不会丢失。自动洗牌定期重新排序队列（可配置：1 / 5 / 10 / 15 / 30 分钟）。如果你的播放偏离主持人，会话栏中的"跟上"按钮会让你回到主持人的实时位置。',
  helpSec7Title: '审批',
  helpSec7Body: '默认情况下，访客建议需要手动审批 — 它们出现在队列面板顶部的"审批"栏中，带有接受 / 拒绝按钮。可以在会话设置中打开自动审批，使所有建议直接生效。',
  helpSec8Title: '参与者和设置',
  helpSec8Body: '打开会话栏中的设置图标以配置洗牌频率、自动审批和"立即洗牌"快捷方式。点击参与者数量查看谁已连接 — 踢出（可通过链接重新加入）或封禁（在该会话中被锁定）。访客也可以看到参与者列表，但仅为只读。',
  helpSec9Title: '结束会话',
  helpSec9Body: '主持人 X → 确认对话框 → 会话对所有人关闭，服务器播放列表会自动清理。访客 X → 访客离开，会话继续运行。如果主持人保持静默 5 分钟，访客会自动退出并收到通知；该窗口内的短时间重连不可见。',
  participantsInviteLabel: '邀请链接',
  participantsCountLabel: '{{count}} 人在会话中',
  participantsHost: '主持人',
  participantsEmpty: '还没有访客',
  participantsKickTooltip: '从会话中移除',
  participantsKickAria: '移除 {{user}}',
  participantsRemoveTooltip: '从会话中移除',
  participantsRemoveAria: '从此会话中移除 {{user}}',
  participantsBanTooltip: '永久封禁',
  participantsBanAria: '永久封禁 {{user}}',
  participantsMuteTooltip: '禁止投歌',
  participantsUnmuteTooltip: '允许投歌',
  participantsMuteAria: '禁止 {{user}} 投歌',
  participantsUnmuteAria: '允许 {{user}} 重新投歌',
  confirmRemoveTitle: '从会话中移除？',
  confirmRemoveBody: '{{user}} 将从会话中移除，但可以通过你的邀请链接重新加入。',
  confirmRemoveConfirm: '移除',
  confirmBanTitle: '永久封禁？',
  confirmBanBody: '{{user}} 将被移除并被阻止重新加入此会话。在会话存在期间无法撤销。',
  confirmBanConfirm: '封禁',
  confirmCancel: '取消',
  confirmJoinTitle: '加入 Orbit 会话？',
  confirmJoinBody: '{{host}} 邀请你加入"{{name}}"。加入会话？',
  confirmJoinConfirm: '加入',
  confirmLeaveTitle: '离开会话？',
  confirmLeaveBody: '离开"{{name}}"？你可以随时通过 {{host}} 的邀请链接重新加入。',
  confirmLeaveConfirm: '离开',
  confirmEndTitle: '为所有人结束会话？',
  confirmEndBody: '"{{name}}"将对所有参与者关闭。会话的播放列表会自动清理。',
  confirmEndConfirm: '结束会话',
  invalidLinkTitle: '邀请链接已失效',
  invalidLinkBody: '此 Orbit 会话不再存在或已结束。请主持人提供新的邀请链接。',
  settingsTitle: '会话设置',
  settingAutoApprove: '自动批准建议',
  settingAutoApproveHint: '访客建议立即进入你的队列。关闭：它们保留在会话列表中供稍后审查。',
  settingAutoShuffle: '自动洗牌',
  settingAutoShuffleHint: '即将播放队列的定期 Fisher-Yates 洗牌。关闭：顺序仅在你手动重新排列时改变。',
  settingShuffleInterval: '洗牌间隔',
  settingShuffleIntervalHint: '会话运行时即将播放队列的重新洗牌频率。',
  suggestBlockedMuted: '主持人已禁止你在本场会话投歌。',
  settingShuffleIntervalValue_one: '{{count}} 分钟',
  settingShuffleIntervalValue_other: '{{count}} 分钟',
  settingShuffleNow: '立即洗牌',
  toastSuggested: '{{user}} 推荐了"{{title}}"',
  toastSuggestedMany: '队列中有 {{count}} 个新建议',
  toastSuggestLost: '你的建议可能未送达主持人',
  toastShuffled: '队列已洗牌',
  toastJoined: '已加入会话',
  toastLoginFirst: '加入会话前请先登录',
  toastSwitchServer: '请先切换到 {{url}}，然后再次粘贴',
  toastNoAccountForServer: '你没有 {{url}} 的访问权限。请主持人发送邀请。',
  toastSwitchFailed: '无法切换到 {{url}}',
  accountPickerTitle: '使用哪个账户？',
  accountPickerSub: '你在 {{url}} 上有多个账户。选择用于加入会话的账户。',
  toastJoinFail: '无法加入会话',
  joinErrNotFound: '未找到会话',
  joinErrEnded: '会话已结束',
  joinErrFull: '会话已满',
  joinErrKicked: '你无法重新加入此会话',
  joinErrNoUser: '没有活动服务器',
  joinErrServerError: '无法加入',
  ctxAddToSession: '添加到 Orbit 会话',
  ctxSuggestedToast: '已推荐到会话',
  ctxSuggestFailed: '无法推荐 — 未加入',
  ctxAddToSessionHost: '添加到 Orbit 会话',
  ctxAddedHostToast: '已添加到会话',
  ctxAddHostFailed: '无法添加到会话',
  bulkConfirmTitle: '全部添加到 Orbit 队列？',
  bulkConfirmBody: '这将一次性把 {{count}} 首曲目放入共享队列。对你的访客来说信息量很大。继续？',
  bulkConfirmYes: '全部添加',
  bulkConfirmNo: '取消',
  guestLive: '直播',
  guestPlaying: '正在播放',
  guestPaused: '已暂停',
  guestLoading: '加载中…',
  guestSuggestions: '建议',
  guestUpNext: '接下来',
  guestUpNextEmpty: '队列为空。打开曲目的上下文菜单并选择"添加到 Orbit 会话"来推荐一首。',
  guestPendingTitle: '等待主持人',
  guestPendingHint: '已推荐 — 主持人接受后会出现在队列中。',
  approvalTitle: '待批准',
  approvalFrom: '由 {{user}} 推荐',
  approvalAccept: '接受',
  approvalDecline: '拒绝',
  guestUpNextMore: '+ 主持人队列中还有 {{count}} 首',
  guestSubmitter: '来自 {{user}}',
  queueAddedByHost: '由主持人添加',
  queueAddedByYou: '由你添加',
  queueAddedByUser: '由 {{user}} 添加',
  guestEmpty: '还没有建议。打开曲目的上下文菜单并选择"添加到 Orbit 会话"。',
  guestFooter: '主持人控制播放 — 你无法更改列表。',
  exitKickedTitle: '你已被会话封禁',
  exitRemovedTitle: '你已从会话中移除',
  exitEndedTitle: '主持人已结束会话',
  exitHostTimeoutTitle: '主持人无响应',
  exitHostTimeoutBody: '{{host}} 有一段时间没有发送更新了，所以"{{name}}"在你这边已关闭。你可以随时通过邀请链接重新加入。',
  exitKickedBody: '{{host}} 已将你从"{{name}}"封禁。你无法重新加入。',
  exitRemovedBody: '{{host}} 已将你从"{{name}}"移除。你可以随时通过邀请链接重新加入。',
  exitEndedBody: '"{{name}}"已结束。希望你玩得开心。',
  exitOk: '好的',
};
