mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 14:55:43 +00:00
9fb0d5638b
The community Theme Store grew large enough that browsing it meant scrolling through the whole catalogue. Paginate it (12 per page) with a Prev / "Page X of Y" / Next pager that resets to page 1 on filter changes and scrolls back to the top of the list when paging. Also fix the refresh button resetting the scroll position. It set the top-level loading state, which unmounted the list and collapsed the scroll viewport so it clamped back to the top. Refreshing now keeps the existing list mounted and only spins the refresh icon; the full-page loading and error placeholders are reserved for the initial load. Adds themeStorePagePrev / PageNext / PageStatus across all nine locales and a ThemeStoreSection test covering pagination, filtering, page reset, and the refresh-keeps-scroll behaviour.
641 lines
38 KiB
TypeScript
641 lines
38 KiB
TypeScript
export const settings = {
|
||
title: '设置',
|
||
language: '语言',
|
||
languageEn: 'English',
|
||
languageDe: 'Deutsch',
|
||
languageEs: 'Español',
|
||
languageFr: 'Français',
|
||
languageNl: 'Nederlands',
|
||
languageNb: 'Norsk',
|
||
languageRu: 'Русский',
|
||
languageZh: '中文',
|
||
languageRo: 'Română',
|
||
font: '字体',
|
||
fontHintOpenDyslexic: '阅读障碍友好 · 不支持中文',
|
||
theme: '主题',
|
||
appearance: '外观',
|
||
servers: '服务器',
|
||
serverName: '服务器名称',
|
||
serverUrl: '服务器地址',
|
||
serverUrlPlaceholder: '192.168.1.100:4533 或 https://music.example.com',
|
||
serverAlternateUrl: '备用地址(可选)',
|
||
serverAlternateUrlPlaceholderPublic: 'https://music.example.com',
|
||
serverAlternateUrlPlaceholderLocal: '192.168.1.100:4533',
|
||
serverAlternateUrlHintAddPublic: '可以添加一个公共地址,便于在家庭网络之外访问。',
|
||
serverAlternateUrlHintAddLocal: '可以添加一个本地地址,在家中连接更快。',
|
||
serverBothLanError: '两个地址都是本地地址——保留一个或添加一个公共地址。',
|
||
dualAddressVerifying: '正在确认两个地址指向同一台服务器…',
|
||
dualAddressMismatch: '两个地址指向不同的服务器。请检查拼写后重试。',
|
||
dualAddressInsufficient: '无法确认两个地址是同一台服务器。请删除一个地址以继续。',
|
||
dualAddressUnreachable: '无法连接到 {{host}}。请检查地址和网络后重试。',
|
||
urlRemigrationTitle: '移动你的资料库数据?',
|
||
urlRemigrationMessage: '更改地址将把所有资料库、分析和封面缓存数据从 {{oldKey}} 移动到 {{newKey}}。此操作无法撤销。',
|
||
urlRemigrationConfirm: '移动数据',
|
||
urlRemigrationProgress: '正在移动资料库数据…',
|
||
urlRemigrationFailureInspect: '无法检查将要移动的内容。请重试或打开调试日志。',
|
||
urlRemigrationFailureRun: '资料库数据移动失败。已保存的数据保持不变——请重试。',
|
||
urlRemigrationFailureCoverRename: '资料库数据已移动,但封面文件无法重命名。封面将在下次访问时重新生成。',
|
||
shareUsesLocalUrl: '在分享链接中使用本地地址',
|
||
shareUsesLocalUrlDesc: '影响 Orbit 邀请和资料库分享。默认:公共地址。',
|
||
serverUsername: '用户名',
|
||
serverPassword: '密码',
|
||
addServer: '添加服务器',
|
||
addServerTitle: '添加新服务器',
|
||
editServer: '编辑',
|
||
editServerTitle: '编辑服务器',
|
||
useServer: '使用',
|
||
deleteServer: '删除',
|
||
noServers: '未保存任何服务器。',
|
||
serverActive: '当前使用',
|
||
confirmDeleteServer: '删除服务器 "{{name}}"?',
|
||
serverConnecting: '正在连接…',
|
||
serverConnected: '已连接!',
|
||
serverFailed: '连接失败。',
|
||
testBtn: '测试连接',
|
||
testingBtn: '正在测试…',
|
||
serverCompatible: '专为 Navidrome 构建。其他兼容 Subsonic 的服务器(Gonic、Airsonic 等)可能功能受限,因为 Psysonic 使用了许多 Navidrome 特有的 API 端点。',
|
||
userMgmtTitle: '用户管理',
|
||
userMgmtDesc: '管理此服务器上的用户。需要管理员权限。',
|
||
userMgmtNoAdmin: '需要管理员权限才能管理此服务器上的用户。',
|
||
userMgmtLoadError: '加载用户失败。',
|
||
userMgmtLoadFriendly: '服务器未响应 — 通常是偶发问题。',
|
||
userMgmtRetry: '重试',
|
||
userMgmtEmpty: '未找到用户。',
|
||
userMgmtYouBadge: '您',
|
||
userMgmtAdminBadge: '管理员',
|
||
userMgmtAddUser: '添加用户',
|
||
userMgmtAddUserTitle: '新建用户',
|
||
userMgmtEditUserTitle: '编辑用户',
|
||
userMgmtUsername: '用户名',
|
||
userMgmtName: '显示名称',
|
||
userMgmtEmail: '电子邮箱',
|
||
userMgmtPassword: '密码',
|
||
userMgmtPasswordEditHint: '输入新密码以更新。',
|
||
userMgmtRoleAdmin: '管理员',
|
||
userMgmtLibraries: '音乐库',
|
||
userMgmtLibrariesAdminHint: '管理员用户自动拥有所有音乐库的访问权限。',
|
||
userMgmtLibrariesEmpty: '此服务器上没有可用的音乐库。',
|
||
userMgmtLibrariesValidation: '请至少选择一个音乐库。',
|
||
userMgmtLibrariesUpdateError: '用户已保存,但音乐库分配失败',
|
||
userMgmtNoLibraries: '未分配音乐库',
|
||
userMgmtNeverSeen: '从未',
|
||
userMgmtSave: '保存',
|
||
userMgmtCancel: '取消',
|
||
userMgmtDelete: '删除',
|
||
userMgmtEdit: '编辑',
|
||
userMgmtConfirmDelete: '删除用户 "{{username}}"?此操作无法撤销。',
|
||
userMgmtCreateError: '创建用户失败。',
|
||
userMgmtUpdateError: '更新用户失败。',
|
||
userMgmtDeleteError: '删除用户失败。',
|
||
userMgmtCreated: '用户已创建。',
|
||
userMgmtUpdated: '用户已更新。',
|
||
userMgmtDeleted: '用户已删除。',
|
||
userMgmtValidationMissing: '用户名、显示名称和密码均为必填项。',
|
||
userMgmtValidationMissingIdentity: '用户名和显示名称为必填项。',
|
||
userMgmtMagicStringGenerate: '生成魔法字符串',
|
||
userMgmtSaveAndMagicString: '保存并获取魔法字符串',
|
||
userMgmtMagicStringPasswordNavHint:
|
||
'Navidrome 会保存此密码。若与当前密码不同,服务器上的登录密码将被更新。',
|
||
userMgmtMagicStringPlaintextWarning:
|
||
'请谨慎分享魔法字符串:其中包含未加密的密码(编码不等于加密)。掌握完整字符串的人可以以该用户身份登录。',
|
||
userMgmtMagicStringCopied: '魔法字符串已复制到剪贴板。',
|
||
userMgmtMagicStringCopyFailed: '无法复制到剪贴板。',
|
||
userMgmtMagicStringLoginFailed: '密码验证失败,无法确认凭据。',
|
||
userMgmtMagicStringModalTitle: '生成魔法字符串',
|
||
userMgmtMagicStringModalDesc: '请输入用户「{{username}}」的 Subsonic 密码,它会包含在复制的魔法字符串中。',
|
||
userMgmtMagicStringModalConfirm: '复制字符串',
|
||
audiomuseTitle: 'AudioMuse-AI(Navidrome)',
|
||
audiomuseDesc:
|
||
'若此服务器已配置 <pluginLink>AudioMuse-AI Navidrome 插件</pluginLink>请开启。可从曲目启动即时混音,并在艺人页使用服务器返回的相似艺人,而非 Last.fm。',
|
||
audiomuseIssueHint:
|
||
'近期即时混音失败 — 请检查 Navidrome 插件与 AudioMuse API。若服务器无结果,将回退使用 Last.fm 的相似艺人。',
|
||
connected: '已连接',
|
||
failed: '失败',
|
||
eqTitle: '均衡器',
|
||
eqEnabled: '启用均衡器',
|
||
eqPreset: '预设',
|
||
eqPresetCustom: '自定义',
|
||
eqPresetBuiltin: '内置预设',
|
||
eqPresetCustomGroup: '我的预设',
|
||
eqSavePreset: '保存为预设',
|
||
eqPresetName: '预设名称…',
|
||
eqDeletePreset: '删除预设',
|
||
eqResetBands: '重置为平直',
|
||
eqPreGain: '预增益',
|
||
eqResetPreGain: '重置预增益',
|
||
eqAutoEqTitle: 'AutoEQ 耳机查询',
|
||
eqAutoEqPlaceholder: '搜索耳机/入耳式型号…',
|
||
eqAutoEqSearching: '搜索中…',
|
||
eqAutoEqNoResults: '未找到结果',
|
||
eqAutoEqError: '搜索失败',
|
||
eqAutoEqRateLimit: 'GitHub 请求限制 — 请一分钟后重试',
|
||
eqAutoEqFetchError: '无法获取 EQ 配置',
|
||
lfmTitle: 'Last.fm',
|
||
lfmConnect: '连接 Last.fm',
|
||
lfmConnecting: '等待授权…',
|
||
lfmConfirm: '我已完成授权',
|
||
lfmConnected: '已连接为',
|
||
lfmDisconnect: '断开连接',
|
||
lfmConnectDesc: '连接您的 Last.fm 账户以启用歌曲记录和正在播放更新,直接从 Psysonic 发送 — 无需配置 Navidrome。',
|
||
lfmOpenBrowser: '将打开浏览器窗口。在 Last.fm 上授权 Psysonic,然后点击下方按钮。',
|
||
lfmScrobbles: '{{n}} 次记录',
|
||
lfmMemberSince: '{{year}} 年加入',
|
||
scrobbleEnabled: '启用歌曲记录',
|
||
scrobbleDesc: '播放 50% 后发送歌曲到 Last.fm',
|
||
behavior: '应用行为',
|
||
cacheTitle: '最大存储大小',
|
||
cacheDesc: '浏览器内封面和艺术家图片缓存(IndexedDB)。存满时,最旧的条目将自动移除。',
|
||
cacheUsedImages: '图片:',
|
||
cacheUsedOffline: '离线曲目:',
|
||
cacheUsedHot: '占用空间:',
|
||
hotCacheTrackCount: '缓存曲目数:',
|
||
cacheMaxLabel: '最大容量',
|
||
cacheClearBtn: '清除缓存',
|
||
cacheClearWarning: '将清除所有已缓存的封面和艺术家图片,需要时会重新下载。',
|
||
cacheClearConfirm: '清除图片缓存',
|
||
cacheClearCancel: '取消',
|
||
mediaDirTitle: '媒体文件夹',
|
||
mediaDirDesc: '本地播放根目录。离线音乐库使用 library/;队列预缓冲使用 cache/。',
|
||
mediaDirDefault: '默认(应用数据)',
|
||
mediaDirChange: '更改文件夹',
|
||
mediaDirClear: '重置为默认',
|
||
mediaDirHint: '新下载将保存到此位置。现有文件保留在原路径,直到你删除它们。',
|
||
offlineStorageTitle: '离线存储',
|
||
offlineDirTitle: '离线音乐库(应用内)',
|
||
offlineDirDesc: '用于在 Psysonic 中离线可用的曲目存储位置。',
|
||
offlineDirDefault: '默认(应用数据)',
|
||
offlineDirChange: '更改目录',
|
||
offlineDirClear: '重置为默认',
|
||
offlineDirHint: '新下载将保存到此位置,现有下载保留在原始路径。',
|
||
hotCacheTitle: '热播放缓存',
|
||
hotCacheDisclaimer: '预加载队列中即将播放的曲目并保留近期已播放的。开启后占用磁盘与网络。',
|
||
hotCacheDirDefault: '默认(应用数据)',
|
||
hotCacheDirChange: '更改目录',
|
||
hotCacheDirClear: '重置为默认',
|
||
hotCacheDirHint: '更换目录会重置应用内索引;已下载的文件仍留在原路径,需自行删除。',
|
||
hotCacheEnabled: '启用热播放缓存',
|
||
hotCacheMaxMb: '最大缓存大小',
|
||
hotCacheDebounce: '队列变更去抖',
|
||
hotCacheDebounceImmediate: '立即',
|
||
hotCacheDebounceSeconds: '{{n}} 秒',
|
||
hotCacheClearBtn: '清空热缓存',
|
||
audioOutputDevice: '音频输出设备',
|
||
audioOutputDeviceDesc: '选择 Psysonic 播放音频的设备。更改立即生效并重新开始当前曲目。',
|
||
audioOutputDeviceDefault: '系统默认',
|
||
audioOutputDeviceRefresh: '刷新设备列表',
|
||
audioOutputDeviceOsDefaultNow: '当前系统输出',
|
||
audioOutputDeviceListError: '无法加载音频设备列表。',
|
||
audioOutputDeviceNotInCurrentList: '不在当前列表中',
|
||
audioOutputDeviceMacNotice: '在 macOS 上,出于技术原因,目前播放始终跟随系统输出设备。请通过 系统设置 → 声音 或菜单栏扬声器图标切换目标设备。背景:打开非默认音频流时 CoreAudio 会触发麦克风权限提示 —— 我们通过始终使用系统默认输出来避免此提示。',
|
||
hiResTitle: '原生高清晰度播放',
|
||
hiResEnabled: '启用原生高清晰度播放',
|
||
hiResDesc: "默认强制 44.1 kHz 输出以获得最大稳定性。仅在硬件和网络可靠支持高采样率(88.2 kHz+)时启用。",
|
||
showArtistImages: '显示艺术家图片',
|
||
showArtistImagesDesc: '在艺术家概览中加载并显示艺术家图片。默认关闭以减少大型音乐库的服务器磁盘I/O和网络负载。',
|
||
showOrbitTrigger: '在顶栏显示"Orbit"',
|
||
showOrbitTriggerDesc: '用于启动或加入共享收听会话的顶栏按钮。如果不使用 Orbit,可以隐藏 — 随时可在此重新开启。',
|
||
showTrayIcon: '显示托盘图标',
|
||
showTrayIconDesc: '在系统通知区域 / 菜单栏显示 Psysonic 图标。',
|
||
minimizeToTray: '最小化到托盘',
|
||
minimizeToTrayDesc: '关闭窗口时,Psysonic 将继续在系统托盘中运行,而不是退出。',
|
||
clockFormat: '时间格式',
|
||
clockFormatDesc: '队列预计结束时间和睡眠定时器预览使用的时间格式。',
|
||
clockFormatAuto: '自动(跟随系统)',
|
||
clockFormatTwentyFour: '24 小时制',
|
||
clockFormatTwelve: '12 小时制(AM/PM)',
|
||
preloadMiniPlayer: '预加载迷你播放器',
|
||
preloadMiniPlayerDesc: '在应用启动时于后台构建迷你播放器窗口,使其首次打开即可立即显示内容。会占用少量额外内存。',
|
||
linuxWebkitSmoothScroll: '滚轮平滑(Linux)',
|
||
linuxWebkitSmoothScrollDesc: '开:惯性滚动。关:逐行,类似 GTK。',
|
||
linuxWebkitInputForceRepaint: '获得焦点时重绘输入框(Linux)',
|
||
linuxWebkitInputForceRepaintDesc: '针对 WebKitGTK 2.50.x 文本框点击后冻结的临时方案。聚焦时搜索图标会短暂闪烁。',
|
||
linuxWaylandTextRender: 'Wayland 文本渲染(Linux)',
|
||
linuxWaylandTextRenderDesc: '界面字体平滑立即生效。WebKit 硬件加速策略(锐利 / GPU)会保存并在下次启动应用时应用;运行中反复切换可能导致 WebKitGTK 卡死。',
|
||
linuxWaylandTextRenderBalanced: '平衡',
|
||
linuxWaylandTextRenderSharp: '锐利(偏 CPU)',
|
||
linuxWaylandTextRenderGpu: 'GPU 优先',
|
||
linuxWaylandTextRenderMinimal: '最小(默认 CSS 平滑)',
|
||
discordRichPresence: 'Discord Rich Presence',
|
||
discordRichPresenceDesc: '在 Discord 个人资料上显示当前播放的曲目。需要 Discord 处于运行状态。',
|
||
discordCoverSource: '封面来源',
|
||
discordCoverSourceDesc: '从何处获取 Discord 个人资料上显示的专辑封面。',
|
||
discordCoverNone: '无(仅显示应用图标)',
|
||
discordCoverServer: '服务器(通过专辑信息)',
|
||
discordCoverApple: 'Apple Music',
|
||
discordOptions: 'Discord 高级选项',
|
||
discordTemplates: '自定义文本模板',
|
||
discordTemplatesDesc: '自定义在 Discord 个人资料上显示的信息。变量:{title}, {artist}, {album}',
|
||
discordTemplateDetails: '主行 (details)',
|
||
discordTemplateState: '副行 (state)',
|
||
discordTemplateLargeText: '专辑提示 (largeText)',
|
||
discordTemplateName: '用户列表行 (name)',
|
||
nowPlayingEnabled: '在实时窗口中显示',
|
||
nowPlayingEnabledDesc: '将当前播放的曲目广播到服务器的实时听众视图。禁用以停止发送播放数据。',
|
||
enableBandsintown: 'Bandsintown 巡演日期',
|
||
enableBandsintownDesc: '在信息标签页中显示当前艺术家的即将到来的演出。数据通过公开的 Bandsintown API 获取。',
|
||
lyricsServerFirst: '优先使用服务器歌词',
|
||
lyricsServerFirstDesc: '先查询服务器提供的歌词(内嵌标签、sidecar 文件),再查询 LRCLIB。禁用则优先使用 LRCLIB。',
|
||
enableNeteaselyrics: '网易云音乐歌词',
|
||
enableNeteaselyricsDesc: '当服务器和 LRCLIB 均无结果时,使用网易云音乐作为最终歌词来源。对亚洲及国际音乐覆盖最佳。',
|
||
lyricsSourcesTitle: '歌词来源',
|
||
lyricsSourcesDesc: '选择要查询的歌词来源及其顺序。拖动以排序。已禁用的来源将被跳过。',
|
||
lyricsSourceServer: '服务器',
|
||
lyricsSourceLrclib: 'LRCLIB',
|
||
lyricsSourceNetease: '网易云音乐',
|
||
lyricsYouLyPlus: 'YouLyPlus(卡拉OK)',
|
||
lyricsYouLyPlusDesc: '来自社区后端(Apple Music、Spotify、Musixmatch、QQ 音乐)的逐字同步歌词。优先尝试;下方启用的来源作为后备。',
|
||
lyricsSourcesFallbackHint: 'YouLyPlus 找不到时用作后备。拖动可重新排序。',
|
||
lyricsSourcesPrimaryHint: '按顺序尝试。拖动可重新排序。全部关闭 = 禁用歌词。',
|
||
lyricsStaticOnly: '仅以静态文本显示歌词',
|
||
lyricsStaticOnlyDesc: '同步歌词将不自动滚动、不逐字高亮,以静态文本显示。',
|
||
downloadsTitle: 'ZIP 导出与归档',
|
||
downloadsFolderDesc: '将专辑以 ZIP 文件下载到电脑时的目标文件夹。',
|
||
downloadsDefault: '默认下载文件夹',
|
||
pickFolder: '选择',
|
||
pickFolderTitle: '选择下载文件夹',
|
||
clearFolder: '清除下载文件夹',
|
||
logout: '退出登录',
|
||
aboutTitle: '关于 Psysonic',
|
||
aboutDesc: '一款专为 Navidrome 构建的现代桌面音乐播放器。使用 Subsonic API 以及 Navidrome 特有的扩展。基于 Tauri v2 和原生 Rust 音频引擎——轻量快速,功能丰富:波形进度条、同步歌词、Last.fm 集成、10 段均衡器、交叉淡入淡出、无缝播放、响度增益、流派浏览以及大量精美主题。',
|
||
aboutLicense: '许可证',
|
||
aboutLicenseText: 'GNU GPL v3 — 在相同许可证下可自由使用、修改和分发。',
|
||
aboutRepo: 'GitHub 上的源代码',
|
||
aboutVersion: '版本',
|
||
aboutBuiltWith: '使用 Tauri · React · TypeScript · Rust/rodio 构建',
|
||
aboutReleaseNotesLabel: '版本说明',
|
||
aboutReleaseNotesLink: '打开此版本的新功能',
|
||
aboutContributorsLabel: '贡献者',
|
||
showChangelogOnUpdate: '更新时显示"新功能"',
|
||
showChangelogOnUpdateDesc: '更新后在「正在播放」上方显示一个低调的更新日志横幅。点击打开发行说明,X 按钮关闭。',
|
||
libraryGridMaxColumnsTitle: '资料库卡片网格',
|
||
libraryGridMaxColumnsPerfHint: '列数越多,每行显示的卡片越多,布局与绘制开销通常也越大;在超大曲库或较慢设备上更明显。',
|
||
libraryGridMaxColumnsRangeLabel: '最大列数({{min}}–{{max}})',
|
||
libraryGridMaxColumnsDesc: '适用于专辑、艺人、播放列表、电台、离线及其他卡片式资料库视图。列数越少卡片越大,通常对 CPU 更友好。',
|
||
libraryIndexTitle: '本地资料库索引(预览)',
|
||
libraryIndexDesc: '为每个服务器保留曲目数据库的本地副本,使浏览和搜索保持快速并支持离线使用。初始同步会针对所有已配置的服务器运行;离线的服务器会自动重试。',
|
||
libraryIndexDeltaHint: '后台增量同步每 30 秒检查已绑定的服务器,并在到期时运行——通常每 5–45 分钟一次,取决于资料库大小和负载。',
|
||
libraryIndexEnable: '启用本地资料库索引',
|
||
libraryIndexEnableAllDesc: '在后台为所有已配置的服务器建立索引并同步。',
|
||
libraryIndexNoServer: '请先添加服务器。',
|
||
libraryIndexServerListTitle: '已索引的服务器',
|
||
libraryIndexAllExcluded: '所有服务器均已排除同步。请重新启用索引或添加服务器。',
|
||
libraryIndexServerOffline: '服务器离线——同步已推迟',
|
||
libraryIndexServerDeferred: '已推迟',
|
||
libraryIndexServerSyncing: '同步中…',
|
||
libraryIndexFullResync: '完全重新同步',
|
||
libraryIndexDeltaSync: '增量同步',
|
||
libraryIndexExcludeServer: '排除同步',
|
||
libraryIndexExcludingServer: '正在排除…',
|
||
libraryIndexExcludedTitle: '已排除同步',
|
||
libraryIndexIncludeServer: '重新纳入',
|
||
libraryIndexIncludingServer: '正在纳入…',
|
||
libraryIndexStatus: '状态',
|
||
libraryIndexStatusIdle: '空闲',
|
||
libraryIndexStatusProbing: '正在检查服务器…',
|
||
libraryIndexStatusInitial: '初始同步中…',
|
||
libraryIndexStatusReady: '就绪({{count}} 首曲目)',
|
||
libraryIndexStatusError: '错误——请查看日志',
|
||
libraryIndexProgressIngest: '已索引 {{count}} 首曲目…',
|
||
libraryIndexProgressVerify: '已验证 {{checked}}(移除 {{deleted}})',
|
||
libraryIndexSyncNow: '立即同步',
|
||
libraryIndexVerify: '验证资料库完整性',
|
||
libraryIndexCancel: '取消',
|
||
libraryIndexAutoReconcile: '数量下降时自动核对',
|
||
libraryIndexAutoReconcileDesc: '当服务器报告的曲目少于预期时,自动检查已删除的曲目。',
|
||
libraryIndexSyncError: '资料库同步失败:{{error}}',
|
||
libraryIndexBindError: '无法启用索引:{{error}}',
|
||
randomMixTitle: '随机混音黑名单',
|
||
luckyMixMenuTitle: '在菜单中显示“好运混音”',
|
||
luckyMixMenuDesc: '在“创建混音”中启用“好运混音”,并在分离导航时作为独立菜单项显示。仅当当前服务器启用 AudioMuse 时可见。',
|
||
randomMixBlacklistTitle: '自定义过滤关键词',
|
||
randomMixBlacklistDesc: '当任何关键词匹配流派、标题、专辑或艺术家时,歌曲将被排除(当上方复选框开启时生效)。',
|
||
randomMixBlacklistPlaceholder: '添加关键词…',
|
||
randomMixBlacklistAdd: '添加',
|
||
randomMixBlacklistEmpty: '尚未添加自定义关键词。',
|
||
randomMixHardcodedTitle: '内置关键词(复选框开启时生效)',
|
||
tabAudio: '音频',
|
||
tabStorage: '离线与缓存',
|
||
tabAppearance: '外观',
|
||
tabThemes: '主题',
|
||
themesYourThemesTitle: '你的主题',
|
||
themesCvdTooltip: '色觉障碍友好 — 绿色盲、红色盲、蓝色盲',
|
||
themeStoreTitle: '主题商店',
|
||
themeStoreSubmitText: '做了自己的主题?与社区分享——更多信息见主题仓库。',
|
||
themeStoreSubmitLink: '打开主题仓库',
|
||
themeStoreSearchPlaceholder: '搜索主题…',
|
||
themeStoreFilterMode: '按模式筛选',
|
||
themeStoreModeAll: '全部',
|
||
themeStoreModeDark: '深色',
|
||
themeStoreModeLight: '浅色',
|
||
themeStoreRefresh: '刷新',
|
||
themeStoreLoading: '正在加载主题…',
|
||
themeStoreError: '无法加载主题商店。请检查网络连接。',
|
||
themeStoreRetry: '重试',
|
||
themeStoreEmpty: '没有符合筛选条件的主题。',
|
||
themeStoreActive: '使用中',
|
||
themeStoreEnlarge: '放大预览',
|
||
themeStoreByAuthor: '作者:{{author}}',
|
||
themeMigrationNoticeTitle: '主题已移至商店',
|
||
themeMigrationNoticeBody: '{{themes}} 不再内置于应用中。你可以在主题商店(设置 → 主题)重新安装,或选择其他主题。',
|
||
themeMigrationNoticeOpen: '打开主题商店',
|
||
themeStoreOffline: '正在显示上次缓存的目录——你似乎处于离线状态。',
|
||
themeStoreInstall: '安装',
|
||
themeStoreInstalling: '正在安装…',
|
||
themeStoreApply: '应用',
|
||
themeStoreUpdate: '更新',
|
||
themeStoreUpdating: '正在更新…',
|
||
themeStoreUninstall: '卸载',
|
||
themeStoreInstallFailed: '安装失败',
|
||
themeStorePagePrev: '上一页',
|
||
themeStorePageNext: '下一页',
|
||
themeStorePageStatus: '第 {{page}} 页,共 {{total}} 页',
|
||
tabLibrary: '媒体库',
|
||
tabServers: '服务器',
|
||
tabLyrics: '歌词',
|
||
tabPersonalisation: '个性化',
|
||
tabIntegrations: '集成',
|
||
inputKeybindingsTitle: '键盘快捷键',
|
||
aboutContributorsCount_one: '{{count}} 项贡献',
|
||
aboutContributorsCount_other: '{{count}} 项贡献',
|
||
searchPlaceholder: '搜索设置…',
|
||
searchNoResults: '没有设置匹配您的搜索。',
|
||
aboutMaintainersLabel: '维护者',
|
||
integrationsPrivacyTitle: '隐私说明',
|
||
integrationsPrivacyBody: '此标签页中的所有集成均为 <strong>选择加入</strong>,启用后会向外部服务或您的 Navidrome 服务器发送数据。Last.fm 接收您的收听历史,Discord 在您的个人资料中显示正在播放的曲目,Bandsintown 会按艺人查询以获取巡演日期,"正在播放" 分享会向您 Navidrome 服务器的其他用户公开您当前的曲目。如果您不需要这些功能,只需将相应部分保持停用即可。',
|
||
homeCustomizerTitle: '主舞台',
|
||
queueModeTitle: '队列显示模式',
|
||
queueModeQueueSub: '仅显示即将播放的曲目。当前曲目保留在标题栏中,播放完毕后从列表移除。',
|
||
queueModePlaylistSub: '在列表中保留整个队列,当前曲目在顶部高亮显示;已播放的曲目保留。',
|
||
queueModeTimelineSub: '将当前曲目居中显示,已播放的历史在上方,即将播放的曲目(按随机顺序)在下方。',
|
||
queueToolbarTitle: '队列工具栏',
|
||
queueToolbarReset: '重置为默认',
|
||
queueToolbarSeparator: '分隔符',
|
||
sidebarTitle: '侧边栏',
|
||
sidebarReset: '重置为默认',
|
||
artistLayoutTitle: '艺术家页面板块',
|
||
artistLayoutDesc: '拖动以重新排序,切换以隐藏艺术家页面的各个板块。没有数据的板块会自动跳过。',
|
||
artistLayoutReset: '重置为默认',
|
||
artistLayoutBio: '艺术家简介',
|
||
artistLayoutTopTracks: '热门曲目',
|
||
artistLayoutSimilar: '相似艺术家',
|
||
artistLayoutAlbums: '专辑',
|
||
artistLayoutFeatured: '也参与了',
|
||
playlistLayoutTitle: '播放列表页面布局',
|
||
playlistLayoutDesc: '在播放列表页面上显示或隐藏各个元素。',
|
||
playlistLayoutReset: '重置为默认',
|
||
playerBarTitle: '播放器栏',
|
||
playerBarReset: '重置为默认',
|
||
playerBarStarRating: '星级评分',
|
||
playerBarFavorite: '收藏(心形)',
|
||
playerBarLastfmLove: 'Last.fm 喜欢',
|
||
playerBarPlaybackRate: '播放速度',
|
||
playerBarEqualizer: '均衡器',
|
||
playerBarMiniPlayer: '迷你播放器',
|
||
playbackRateTitle: '播放速度',
|
||
playbackRateEnabled: '启用播放速度',
|
||
playbackRateEnabledDesc: '全局调整所有曲目的播放速度。不适用于电台和预览。',
|
||
playbackRateStrategy: '策略',
|
||
playbackRateStrategySpeed: '速度',
|
||
playbackRateStrategyVarispeed: '随速变调',
|
||
playbackRateStrategyPreserve: '音高',
|
||
playbackRateSpeed: '速度',
|
||
playbackRatePitch: '音高',
|
||
playbackRateDerivedPitch: '速度引起的音高偏移:{{value}}',
|
||
playbackRateAutoPitch: '音高会自动校正。',
|
||
playbackRateHint: '「速度」保持音高不变。「随速变调」会随速度改变音高。「音高」可手动偏移。比「随速变调」占用更多 CPU。不适用于电台、预览或 Orbit。',
|
||
playbackRateNeutral: '在 1.0× 且无音高偏移时,播放为正常速度。',
|
||
playbackRateOrbitPaused: 'Orbit 会话期间不生效 — 播放保持 1.0× 以同步。',
|
||
playbackRateOrbitPausedShort: 'Orbit:1.0× 同步。',
|
||
advancedMode: '高级',
|
||
advancedModeTooltip: '在所有设置选项卡中显示高级选项。由社区贡献,未必体现 Psysonic 维护者的设计理念。',
|
||
advancedBadge: '高级',
|
||
sidebarDrag: '拖动以重新排序',
|
||
sidebarFixed: '始终显示',
|
||
nowPlayingTopTitle: '"正在播放"置顶',
|
||
nowPlayingTopDesc: '将"正在播放"固定在侧边栏顶部,而非底部。',
|
||
randomNavSplitTitle: '拆分混音导航',
|
||
randomNavSplitDesc: '在侧边栏中将“随机混音”、“随机专辑”和“好运混音”显示为独立条目,而非“创建混音”合并入口。',
|
||
tabInput: '输入',
|
||
tabUsers: '用户',
|
||
tabSystem: '系统',
|
||
loggingTitle: '日志记录',
|
||
loggingModeDesc: '控制终端中后端日志的详细程度。',
|
||
loggingModeOff: '关闭',
|
||
loggingModeNormal: '普通',
|
||
loggingModeDebug: '调试',
|
||
loggingExport: '导出日志',
|
||
loggingExportSuccess: '日志已导出({{count}} 行)。',
|
||
loggingExportError: '无法导出日志。',
|
||
ratingsSectionTitle: '评分',
|
||
ratingsSkipStarTitle: '跳过以评 1 星',
|
||
ratingsSkipStarDesc:
|
||
'连续多次跳过后将曲目设为 1 星。仅适用于此前未评分的曲目。',
|
||
ratingsSkipStarThresholdLabel: '跳过次数',
|
||
ratingsMixFilterTitle: '按评分筛选',
|
||
ratingsMixFilterDesc:
|
||
'在{{mix}}与{{albums}}中筛选低评分内容。再次点击所选星标可关闭阈值。',
|
||
ratingsMixMinSong: '歌曲',
|
||
ratingsMixMinAlbum: '专辑',
|
||
ratingsMixMinArtist: '艺人',
|
||
ratingsMixMinThresholdAria: '最低星数:{{label}}',
|
||
backupTitle: '备份与恢复',
|
||
backupExport: '导出设置',
|
||
backupExportDesc: '将所有设置、服务器配置、Last.fm 配置、主题、均衡器和快捷键保存到 .psybkp 文件。密码以明文存储——请妥善保管该文件。',
|
||
backupImport: '导入设置',
|
||
backupImportDesc: '从 .psybkp 文件恢复设置。导入后应用将重新加载。',
|
||
backupImportConfirm: '所有当前设置将被覆盖。是否继续?',
|
||
backupSuccess: '备份已保存',
|
||
backupImportSuccess: '设置已恢复——正在重新加载…',
|
||
backupImportError: '备份文件无效或已损坏。',
|
||
shortcutsReset: '恢复默认',
|
||
shortcutListening: '请按下按键…',
|
||
shortcutUnbound: '—',
|
||
globalShortcutsTitle: '全局快捷键',
|
||
globalShortcutsNote: '即使 Psysonic 在后台也能在系统范围内工作。需要 Ctrl、Alt 或 Super 作为修饰键。',
|
||
shortcutClear: '清除',
|
||
shortcutPlayPause: '播放 / 暂停',
|
||
shortcutNext: '下一首',
|
||
shortcutPrev: '上一首',
|
||
shortcutVolumeUp: '音量增大',
|
||
shortcutVolumeDown: '音量减小',
|
||
shortcutSeekForward: '快进 10 秒',
|
||
shortcutSeekBackward: '快退 10 秒',
|
||
shortcutToggleQueue: '切换队列',
|
||
shortcutOpenFolderBrowser: '打开{{folderBrowser}}',
|
||
shortcutFullscreenPlayer: '全屏播放器',
|
||
shortcutNativeFullscreen: '原生全屏',
|
||
shortcutOpenMiniPlayer: '打开迷你播放器',
|
||
shortcutStartSearch: '开始搜索',
|
||
shortcutStartAdvancedSearch: '开始高级搜索',
|
||
shortcutToggleSidebar: '切换侧边栏',
|
||
shortcutMuteSound: '静音',
|
||
shortcutToggleEqualizer: '打开 / 切换均衡器',
|
||
shortcutToggleRepeat: '切换循环',
|
||
shortcutOpenNowPlaying: '打开"正在播放"',
|
||
shortcutShowLyrics: '显示歌词',
|
||
shortcutFavoriteCurrentTrack: '将当前曲目添加到收藏',
|
||
shortcutOpenHelp: '帮助',
|
||
playbackTitle: '播放',
|
||
replayGain: '回放增益',
|
||
replayGainDesc: '使用 ReplayGain 元数据标准化曲目音量',
|
||
replayGainMode: '模式',
|
||
replayGainAuto: '自动',
|
||
replayGainAutoDesc: '当队列中相邻曲目来自同一专辑时使用专辑增益,否则使用曲目增益。',
|
||
replayGainTrack: '曲目',
|
||
replayGainAlbum: '专辑',
|
||
replayGainPreGain: '预增益(有标签文件)',
|
||
replayGainPreGainDesc: '对所有 ReplayGain 计算结果叠加的统一增益。适合在曲库整体偏轻时用作整体补偿。',
|
||
replayGainFallback: '回退增益(无标签 / 收音机)',
|
||
replayGainFallbackDesc: '应用于没有 ReplayGain 标签的曲目(以及电台流),避免未打标签的内容比其余素材更响。',
|
||
normalization: '响度归一化',
|
||
normalizationDesc: '在曲目、专辑和电台之间统一可感知的响度。',
|
||
normalizationOff: '关闭',
|
||
normalizationReplayGain: 'ReplayGain',
|
||
normalizationLufs: 'LUFS',
|
||
loudnessTargetLufs: '目标 LUFS',
|
||
loudnessTargetLufsDesc: '所有曲目对齐的参考响度。数值越小,输出越响。流媒体服务通常在 -14 LUFS 左右。',
|
||
loudnessPreAnalysisAttenuation: '测量前衰减',
|
||
loudnessPreAnalysisAttenuationDesc:
|
||
'在曲目响度数据保存前的额外压低。流式阶段之后只是粗略估计,不是完整测量。0 dB 为不压低;更负则更安静。右侧显示当前目标下的等效 dB。',
|
||
loudnessPreAnalysisAttenuationRef: '目标 {{tgt}} LUFS 时等效 {{eff}} dB。',
|
||
loudnessPreAnalysisAttenuationReset: '恢复默认',
|
||
loudnessFirstPlayNote:
|
||
'首次播放新曲目时,音量可能在测量过程中略有波动。下一次播放将使用缓存的测量结果,保持稳定。队列中即将播放的曲目通常在上一首播放期间已完成预分析,所以这种情况在实际使用中很少出现。',
|
||
crossfade: '交叉淡入淡出',
|
||
crossfadeDesc: '曲目间淡入淡出',
|
||
crossfadeSecs: '{{n}} 秒',
|
||
notWithGapless: '无缝播放开启时不可用',
|
||
notWithCrossfade: '交叉淡入淡出开启时不可用',
|
||
gapless: '无缝播放',
|
||
gaplessDesc: '预缓冲下一首曲目以消除歌曲间的间隙',
|
||
preservePlayNextOrder: '保留"下一首播放"顺序',
|
||
preservePlayNextOrderDesc: '新添加的"下一首播放"项目排在现有项目之后,而不是插到前面。',
|
||
trackPreviewsTitle: '曲目预览',
|
||
trackPreviewsToggle: '启用曲目预览',
|
||
trackPreviewsDesc: '在曲目列表中显示内联播放与预览按钮,可快速试听歌曲中段。',
|
||
trackPreviewStart: '起始位置',
|
||
trackPreviewStartDesc: '预览从曲目何处开始(占总时长的百分比)。',
|
||
trackPreviewDuration: '时长',
|
||
trackPreviewDurationDesc: '每段预览自动停止前的播放时长。',
|
||
trackPreviewDurationSecs: '{{n}} 秒',
|
||
trackPreviewLocationsTitle: '预览显示位置',
|
||
trackPreviewLocationsDesc: '选择在哪些列表中显示预览按钮。',
|
||
trackPreviewLocation_suggestions: '播放列表建议中',
|
||
trackPreviewLocation_albums: '专辑曲目列表中',
|
||
trackPreviewLocation_playlists: '播放列表中',
|
||
trackPreviewLocation_favorites: '收藏中',
|
||
trackPreviewLocation_artist: '艺人热门曲目中',
|
||
trackPreviewLocation_randomMix: 'Random Mix 中',
|
||
nextTrackBufferingTitle: '缓冲',
|
||
infiniteQueue: '无限队列',
|
||
infiniteQueueDesc: '队列播完时自动追加随机曲目',
|
||
experimental: '实验性',
|
||
sidebarLyricsStyle: '歌词滚动样式',
|
||
sidebarLyricsStyleClassic: '经典',
|
||
sidebarLyricsStyleClassicDesc: '活动行居中显示。',
|
||
sidebarLyricsStyleApple: 'Apple Music-like',
|
||
sidebarLyricsStyleAppleDesc: '活动行固定在顶部,带有平滑弹簧动画。',
|
||
seekbarStyle: '进度条样式',
|
||
seekbarStyleDesc: '选择播放进度条的外观',
|
||
seekbarTruewave: '真实波形',
|
||
seekbarPseudowave: '伪波形',
|
||
seekbarLinedot: '线条与点',
|
||
seekbarBar: '条形',
|
||
seekbarThick: '粗条形',
|
||
seekbarSegmented: '分段式',
|
||
seekbarNeon: '霓虹',
|
||
seekbarPulsewave: '脉冲波',
|
||
seekbarParticletrail: '粒子轨迹',
|
||
seekbarLiquidfill: '液体填充',
|
||
seekbarRetrotape: '复古磁带',
|
||
themeSchedulerTitle: '主题定时切换',
|
||
themeSchedulerEnable: '启用主题定时器',
|
||
themeSchedulerEnableSub: '根据一天中的时间自动在两个主题之间切换',
|
||
themeSchedulerDayTheme: '白天主题',
|
||
themeSchedulerDayStart: '白天开始时间',
|
||
themeSchedulerNightTheme: '夜晚主题',
|
||
themeSchedulerNightStart: '夜晚开始时间',
|
||
themeSchedulerActiveHint: '主题定时器已启用 - 主题将自动切换。',
|
||
visualOptionsTitle: '视觉选项',
|
||
coverArtBackground: '封面背景',
|
||
coverArtBackgroundSub: '在专辑/播放列表标题中显示模糊的封面作为背景',
|
||
playlistCoverPhoto: '播放列表封面照片',
|
||
playlistCoverPhotoSub: '在播放列表详细视图中显示封面照片网格',
|
||
showBitrate: '显示比特率',
|
||
showBitrateSub: '在曲目列表中显示音频比特率',
|
||
floatingPlayerBar: '浮动播放栏',
|
||
floatingPlayerBarSub: '保持播放栏悬浮在内容上方',
|
||
uiScaleTitle: '界面缩放',
|
||
uiScaleLabel: '缩放',
|
||
confirmDeleteServerLibrary: '是否同时删除该服务器的本地库索引?点击“取消”可保留缓存副本以供离线使用。',
|
||
waveformCacheClearBtn: '清除波形缓存',
|
||
waveformCacheCleared: '波形缓存已清除({{count}} 行)。',
|
||
waveformCacheClearFailed: '清除波形缓存失败。',
|
||
useCustomTitlebar: '自定义标题栏',
|
||
useCustomTitlebarDesc: '用与应用主题匹配的内置标题栏替换系统标题栏。关闭后将使用原生 GNOME/GTK 标题栏。',
|
||
analyticsStrategyTitle: '分析策略',
|
||
analyticsStrategyDesc: '选择库的分析方式。',
|
||
analyticsStrategyLabel: '策略',
|
||
analyticsStrategyLazy: '懒加载',
|
||
analyticsStrategyLazyDesc: '仅在播放歌曲或进入热缓存/离线缓存时分析——CPU 和网络占用最低。',
|
||
analyticsStrategyAdvanced: '激进',
|
||
analyticsStrategyAdvancedDesc: '更激进的后台扫描。完成后可获得所有歌曲 BPM,并可即时加载响度与波形。',
|
||
analyticsStrategyPriorityTitle: '分析优先级(始终生效)',
|
||
analyticsStrategyPriorityHigh: '1 — 当前播放:优先下载并分析(播放字节、响度回填,或在需要时走 HTTP)。',
|
||
analyticsStrategyPriorityMiddle: '2 — 即将播放:队列中接下来的约 5 首及热缓存邻近曲目——优先从缓存/已下载字节分析,未命中时才做 HTTP 回填。',
|
||
analyticsStrategyPriorityLow: '3 — 库批处理(仅“激进”):自动后台队列排在末尾;按水位线(约 3× workers)补充,无需等待队列清空。',
|
||
analyticsStrategyServerLabel: '服务器',
|
||
analyticsStrategyProgressLabel: '分析进度:',
|
||
analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})',
|
||
analyticsStrategyActionsLabel: '操作',
|
||
analyticsStrategyParallelismLabel: '并行 worker',
|
||
analyticsStrategyParallelismValue: '{{n}} 线程',
|
||
analyticsStrategyParallelismDesc: '同时下载并分析的歌曲数量(HTTP + CPU)。数值越高,补齐库分析越快,但会占用更多网络和 CPU。',
|
||
analyticsStrategyAdvancedWarning: '“激进”模式在后台库批处理运行期间会占用更多 CPU 和网络带宽。',
|
||
analyticsStrategyServerRemoved: '已移除的服务器',
|
||
analyticsStrategyClearAction: '清除分析',
|
||
analyticsStrategyClearTitle: '清除分析?',
|
||
analyticsStrategyClearDesc: '清除 {{server}} 的分析将删除缓存的波形与响度数据。稍后重新添加该服务器可能需要较长时间重新索引。',
|
||
analyticsStrategyClearCancel: '取消',
|
||
analyticsStrategyClearConfirm: '清除分析',
|
||
analyticsStrategyClearSuccess: '已清除已移除服务器的分析数据。',
|
||
analyticsStrategyClearError: '清除已移除服务器的分析数据失败。',
|
||
analyticsStrategyProgressEmptyAfterFailed: '100%(0/0,受失败歌曲阻塞)',
|
||
analyticsFailedTracksOpenTitle: '失败歌曲:{{count}}',
|
||
analyticsFailedTracksTitle: '分析失败歌曲 — {{server}}',
|
||
analyticsFailedTracksDesc: '这些歌曲在 decode/enrichment 中反复失败,已被排除在自动后台分析之外。',
|
||
analyticsFailedTracksLoading: '正在加载失败歌曲列表…',
|
||
analyticsFailedTracksEmpty: '该服务器没有失败歌曲。',
|
||
analyticsFailedTracksClose: '关闭',
|
||
analyticsFailedTracksExport: '导出列表',
|
||
analyticsFailedTracksExportSuccess: '失败歌曲列表已导出({{count}})。',
|
||
analyticsFailedTracksExportError: '导出失败歌曲列表失败。',
|
||
analyticsFailedTracksRescan: '重新扫描失败歌曲',
|
||
analyticsFailedTracksRescanSuccess: '已为 {{count}} 首失败歌曲安排重新扫描。',
|
||
analyticsFailedTracksRescanError: '无法重新扫描失败歌曲。',
|
||
analyticsFailedTracksLoadError: '无法加载失败歌曲。',
|
||
backupImportAny: '导入备份',
|
||
backupImportAnyConfirm: '导入所选备份文件并应用其内容(设置、库数据库或完整备份)。是否继续?',
|
||
backupModeFull: '完整',
|
||
backupModeLibrary: '库数据库',
|
||
backupModeConfig: '配置',
|
||
backupFullDesc: '将设置与库数据库打包到一个备份文件中。',
|
||
backupFullExport: '导出完整备份',
|
||
backupFullImport: '导入完整备份',
|
||
backupFullImportConfirm: '这将覆盖设置、替换当前库数据库并移动到 .bak。是否继续?',
|
||
backupFullExportSuccess: '完整备份已导出。',
|
||
backupFullImportSuccess: '完整备份已导入——正在重载…',
|
||
backupFullImportError: '无法导入完整备份。',
|
||
backupLibraryExport: '导出数据库',
|
||
backupLibraryExportDesc: '创建一个压缩归档,其中包含干净的库数据库 SQLite 快照。',
|
||
backupLibraryImport: '导入数据库',
|
||
backupLibraryImportDesc: '从归档文件恢复库数据库。切换前会将当前数据库移动到 .bak。',
|
||
backupLibraryImportConfirm: '这将替换当前库数据库并移动到 .bak。是否继续?',
|
||
backupLibraryExportSuccess: '数据库备份已导出。',
|
||
backupLibraryImportSuccess: '数据库备份已导入。',
|
||
backupLibraryImportError: '无法导入数据库备份。',
|
||
backupOverlayExportTitle: '正在创建备份…',
|
||
backupOverlayImportTitle: '正在恢复备份…',
|
||
backupOverlayHint: '处理文件时你可以保持窗口打开。输入会暂时锁定。',
|
||
};
|