i18n(orbit): translations for fr / nl / zh / nb / ru / es

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-04-24 19:35:57 +02:00
parent b4bb40802d
commit b0c153ec48
6 changed files with 1034 additions and 0 deletions
+172
View File
@@ -175,6 +175,7 @@ export const zhTranslation = {
},
albumDetail: {
back: '返回',
orbitDoubleClickHint: '双击将此曲目添加到 Orbit 队列',
playAll: '全部播放',
shareAlbum: '分享专辑',
enqueue: '加入队列',
@@ -1420,4 +1421,175 @@ export const zhTranslation = {
liveSearch: '实时',
randomAlbumsLabel: '随机专辑',
},
orbit: {
triggerLabel: 'Psy Orbit',
triggerTooltip: '开始或加入共享收听会话',
launchCreate: '创建会话',
launchJoin: '加入会话',
launchHelp: '这是怎么工作的?',
launchHelpSoon: '即将推出',
joinModalTitle: '加入 Orbit 会话',
joinModalSub: '粘贴主持人发给你的邀请链接。',
joinModalLinkLabel: '邀请链接',
joinModalLinkPlaceholder: 'psysonic2://orbit/…',
joinModalLinkHelper: '适用于任何有效的 Orbit 链接。必须指向你当前登录的服务器。',
joinModalPasteTooltip: '从剪贴板粘贴',
joinModalSubmit: '加入',
joinModalBusy: '加入中…',
joinErrEmpty: '请粘贴一个邀请链接。',
joinErrInvalid: '这看起来不像 Orbit 邀请链接。',
closeAria: '关闭',
heroTitlePrefix: '一起听音乐 —',
heroTitleBrand: 'Psy 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 的工作原理',
helpTitle: 'Orbit 的工作原理',
helpIntro: 'Orbit 将 Psysonic 变成一个共享的收听空间。主持人选择音乐;访客同步收听并可以推荐曲目。',
helpHostOnly: '(主持人)',
helpSec1Title: '什么是 Orbit',
helpSec1Body: '"一起听"模式 — 主持人驱动播放,访客加入收听。一切都通过你自己的 Navidrome 服务器上的播放列表进行;没有外部基础设施。',
helpSec2Title: '主持人和访客',
helpSec2Body: '主持人控制播放(播放 / 暂停 / 跳过 / 跳转),并决定会话何时结束。访客跟随主持人的播放,可以推荐曲目,随时离开或重新加入。只有主持人可以踢出或永久封禁参与者。',
helpSec2WarnHead: '重要:使用独立账户。',
helpSec2WarnBody: '每个参与者都需要自己的 Navidrome 账户。如果主持人和访客使用同一用户登录,他们的提交会冲突,主持人将永远看不到访客的建议。',
helpSec3Title: '启动和邀请',
helpSec3Body: '点击"Psy Orbit"按钮 → 创建会话 → 启动弹窗显示可复制的邀请链接,并可选清空你当前的队列。以任何方式分享该链接。会话运行时,顶部会话栏中的分享按钮可随时再次复制链接。',
helpSec4Title: '加入',
helpSec4Body: '使用 Ctrl+V / Cmd+V 在 Psysonic 的任何位置粘贴邀请链接 — 加入提示会自动弹出。或者:「Psy 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}}',
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: '会话运行时即将播放队列的重新洗牌频率。',
settingShuffleIntervalValue_one: '{{count}} 分钟',
settingShuffleIntervalValue_other: '{{count}} 分钟',
settingShuffleNow: '立即洗牌',
toastSuggested: '{{user}} 推荐了"{{title}}"',
toastSuggestedMany: '队列中有 {{count}} 个新建议',
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}}',
guestEmpty: '还没有建议。打开曲目的上下文菜单并选择"添加到 Orbit 会话"。',
guestFooter: '主持人控制播放 — 你无法更改列表。',
exitKickedTitle: '你已被会话封禁',
exitRemovedTitle: '你已从会话中移除',
exitEndedTitle: '主持人已结束会话',
exitHostTimeoutTitle: '主持人无响应',
exitHostTimeoutBody: '{{host}} 有一段时间没有发送更新了,所以"{{name}}"在你这边已关闭。你可以随时通过邀请链接重新加入。',
exitKickedBody: '{{host}} 已将你从"{{name}}"封禁。你无法重新加入。',
exitRemovedBody: '{{host}} 已将你从"{{name}}"移除。你可以随时通过邀请链接重新加入。',
exitEndedBody: '"{{name}}"已结束。希望你玩得开心。',
exitOk: '好的',
},
};