use super::Strings;
use crate::providers::ProviderId;
pub const STRINGS: Strings = Strings {
search: "搜索",
downloads: "下载",
settings: "设置",
library: "媒体库",
nothing_saved_yet: "还没有保存任何内容",
new_playlist_name: "新播放列表名称",
queue: "播放队列",
recently_played: "最近播放",
now_playing_from: "正在播放来自",
now_playing: "正在播放",
up_next: "接下来播放",
no_track_playing: "没有正在播放的曲目",
no_more_tracks_in_queue: "队列中没有更多曲目",
no_recently_played_tracks: "没有最近播放的曲目",
not_playing: "未播放",
no_tracks_found: "未找到曲目",
searching: "搜索中…",
loading: "加载中…",
load_more: "加载更多",
no_results_found: "未找到结果",
no_recent_searches: "没有最近的搜索",
generating_radio: "正在生成电台…",
not_an_artist_page: "不是艺术家页面",
provided_by: "由……提供",
retry: "重试",
nothing_here: "这里什么都没有",
most_popular_songs: "最受欢迎的歌曲",
albums: "专辑",
playlists: "播放列表",
fans_also_like: "粉丝也喜欢",
looking_up_lyrics: "正在查找歌词…",
play_a_track_for_lyrics: "播放一首曲目以查看其歌词。",
lyrics_selectable: "可选中",
lyrics_synced: "已同步",
lyrics_plain: "纯文本",
lyrics_translations: "翻译",
lyrics_original: "原文",
add_custom: "添加歌词",
lyrics_name: "名称",
translate_with_ai: "用 AI 翻译",
translate_title: "用 AI 翻译歌词",
translate_language_lbl: "目标语言",
translate_prompt_lbl: "提示词",
translate_submit: "翻译",
translate_reset: "重置提示词",
translating: "翻译中…",
translation_ready: "翻译完成 — 请检查并保存",
translation_language_empty: "请输入目标语言",
no_lyrics_to_translate: "这首歌曲没有可翻译的歌词。",
translation_not_configured: "请在设置中填写服务器 URL 和模型。",
translation_failed: |e| format!("翻译失败:{e}"),
sec_translation: "AI 翻译",
translation_base_url_lbl: "服务器 URL(兼容 OpenAI)",
translation_api_key_lbl: "API 密钥(本地服务器留空)",
translation_model_lbl: "模型",
translation_refresh_models: "获取模型列表",
translation_no_models: "在此服务器上未找到模型。",
translation_models_failed: |e| format!("加载模型列表失败:{e}"),
edit_lyrics: "编辑歌词",
lyrics_editor_hint: "每行一句。在行首添加 [mm:ss.xx] 可作为同步歌词,否则为纯文本。在任意一句下方添加 `# note` 行,即可在歌词下方显示注释。",
playlist_not_found: "未找到播放列表",
add_local: "添加本地",
downloaded_tracks: "已下载的曲目",
no_downloaded_tracks: "没有已下载的曲目",
ctx_play: "播放",
ctx_play_local: "播放本地文件",
ctx_edit: "编辑",
ctx_go_to_artist: "转到艺术家",
ctx_add_to_queue: "添加到队列",
ctx_add_to_playlist: "添加到播放列表",
ctx_download: "下载",
ctx_song_radio: "歌曲电台",
ctx_artist_radio: "艺术家电台",
ctx_remove_from_queue: "从队列移除",
ctx_remove_from_playlist: "从播放列表移除",
ctx_remove_from_recent: "从最近播放移除",
ctx_clear_cache: "清除缓存",
sub_play_via: "通过……播放",
sub_download_from: "从……下载",
sub_via: "通过",
sub_on: "在",
sub_clear_cache_from: "从……清除",
via_search_suffix: "(搜索)",
current: "(当前)",
select: "选择",
find: "查找",
finding: "查找中…",
found_on: |p| format!("在 {p} 上找到"),
not_linked: "未关联",
providers: "提供方",
no_provider_data: "该曲目没有提供方数据。",
save: "保存",
cancel: "取消",
edit_track: "编辑曲目",
lbl_title: "标题",
lbl_artist: "艺术家",
ph_track_title: "曲目标题",
ph_track_artist: "曲目艺术家",
delete: "删除",
delete_playlist_q: "删除播放列表?",
tracks_wont_be_deleted: "曲目不会被删除。",
lbl_id: "ID",
lbl_url: "网址",
lbl_artist_id: "艺术家 ID",
lbl_duration_secs: "时长(秒)",
lbl_thumbnail: "缩略图",
lbl_album: "专辑",
sec_playback: "播放",
sec_storage: "存储",
sec_history: "历史记录",
sec_appearance: "外观",
sec_dependencies: "依赖项",
theme_lbl: "主题",
language_lbl: "语言",
default_provider_lbl: "默认的流媒体与下载提供方",
cookie_browser_lbl: "浏览器 Cookie(用于年龄限制视频)",
cookies_off: "关闭",
normalize_volume_lbl: "在各曲目间统一音量",
download_dir_lbl: "下载目录",
cache_size_lbl: "流媒体缓存最大大小(MB)",
hist_rows_lbl: "显示的搜索历史行数",
hist_entries_lbl: "保留的搜索历史条目数",
recent_kept_lbl: "保留的最近播放曲目数",
reset_defaults: "恢复默认",
find_in_list: "在列表中查找…",
scope_songs: "歌曲",
scope_videos: "视频",
scope_artists: "艺术家",
scope_albums: "专辑",
scope_playlists: "播放列表",
radio_word_song: "歌曲",
radio_word_artist: "艺术家",
lyrics_copied: "歌词已复制到剪贴板",
saved_to_library: "已保存到媒体库",
removed_from_library: "已从媒体库移除",
no_lyrics_found: "未找到该曲目的歌词。",
lyrics_saved: "已保存自定义歌词",
lyrics_deleted: "已删除自定义歌词",
lyrics_empty: "歌词不能为空",
lyrics_name_empty: "请为歌词起个名字",
select_playlist_drop: "选择一个播放列表以放入曲目",
reordered_playlist: "播放列表已重新排序",
max_panes_reached: "已达到最大窗格数",
n_saved: |n| format!("已保存 {n} 项"),
n_plays: |n| format!("{} 次播放", crate::util::format_count(n)),
search_placeholder: |p| match p {
ProviderId::YouTube => "在 YouTube Music 中搜索…".into(),
ProviderId::Local => "搜索…".into(),
other => format!("在 {} 中搜索…", other.label()),
},
added: |n| format!("已添加 {}", zh_tracks(n)),
added_to: |n, to| format!("已添加 {} 到 {to}", zh_tracks(n)),
removed_n: |n| format!("已移除 {}", zh_tracks(n)),
removed_from: |n, from| format!("已从 {from} 移除 {}", zh_tracks(n)),
pasted_into: |n, into| format!("已粘贴 {} 到 {into}", zh_tracks(n)),
saved_title: |t| format!("已将“{t}”保存到媒体库"),
playlist_created: |n| format!("已创建播放列表“{n}”"),
added_local: |n| format!("已添加 {}(选择一个播放列表进行整理)", zh_tracks(n)),
downloading_n: |n| format!("正在下载 {}…", zh_tracks(n)),
resolving_on: |title, p| format!("正在解析“{title}”于 {p}…"),
resolving_player_client: "正在解析兼容的播放器客户端…",
resolved_player_client: |c| format!("已解析播放器客户端:{c}"),
player_client_unavailable: "未找到兼容的播放器客户端,使用默认客户端…",
provider_no_radio: |p| format!("{p} 不支持电台"),
generating_radio_for: |w, name| format!("正在为 {w} 生成电台:{name}…"),
could_not_find_on: |name, p| format!("在 {p} 上找不到“{name}”"),
opening: |l| format!("正在打开:{l}…"),
opening_artist: |name| format!("正在打开艺术家:{name}…"),
download_complete: |path| format!("下载完成!已保存到 {path}"),
failed_resolve_on: |title, p, e| format!("在 {p} 上解析“{title}”失败:{e}"),
couldnt_load: |e| format!("无法加载:{e}"),
couldnt_load_lyrics: |e| format!("无法加载歌词:{e}"),
search_failed: |e| format!("搜索失败:{e}"),
cache_cleared_for: |p| format!("已清除 {p} 的缓存"),
radio_label: |w, name| format!("电台({w}):{name}"),
ctx_add_to_playlist_n: |n| format!("添加 {} 到播放列表", zh_tracks(n)),
ctx_add_to_queue_n: |n| format!("添加{}到队列", zh_tracks(n)),
ctx_download_n: |n| format!("下载 {}", zh_tracks(n)),
ctx_remove_from_queue_n: |n| format!("从队列移除 {}", zh_tracks(n)),
ctx_remove_from_playlist_n: |n| format!("从播放列表移除 {}", zh_tracks(n)),
ctx_remove_from_recent_n: |n| format!("从最近播放移除 {}", zh_tracks(n)),
import_playlist: "导入播放列表",
import_method_native: "原生",
import_method_filelist: "文件列表",
import_method_csv: "CSV",
import_native_hint: "从 playlists.json 文件导入播放列表。",
import_csv_name_col: "名称列",
import_csv_artist_col: "艺术家列",
import_csv_album_col: "专辑列",
import_csv_preset: "预设",
import_csv_preset_default: "默认",
import_csv_preset_exportify: "Exportify",
import_csv_exportify_note: "支持从 https://exportify.net/ 导出的 Spotify 播放列表。",
import_pattern_lbl: "文件名模式",
import_playlist_name: "播放列表名称",
import_add_pattern: "添加模式",
import_select_file: "选择文件",
import_select_folder: "选择文件夹",
import_pattern_conflict: |a, b| {
format!(
"模式“{a}”和“{b}”可能匹配同一文件且字段冲突。请移除或修复其中一个。"
)
},
import_playlists_imported: |n| format!("已导入 {}", zh_tracks(n)),
import_imported_into: |n, into| format!("已将 {} 导入到 {}", zh_tracks(n), into),
import_no_tracks: "没有找到可导入的曲目。",
import_no_match: "没有文件匹配这些模式。",
import_bad_file: "无法读取所选文件。",
deps_title: "缺少依赖项",
deps_intro: "应用使用的部分工具缺失。选择要安装的项,或丢弃以继续(在它们就位前,搜索和流媒体可能无法使用)。",
deps_install: "安装",
deps_install_selected: "安装所选",
deps_discard: "丢弃",
deps_installing: "正在安装…",
deps_installed: "已安装",
deps_failed: "失败",
deps_installed_toast: "已安装所选依赖项。",
deps_yt_dlp_desc: "流式传输并下载音频(YouTube 和 SoundCloud 必需)",
deps_ytmusicapi_desc: "YouTube Music 搜索(可选,回退到 yt-dlp)",
deps_python3_desc: "ytmusicapi 所需(YouTube Music 搜索)",
deps_ytmusicapi_requires_python: "需要 Python 3(请先安装)",
deps_play_requires_yt_dlp: "播放需要 yt-dlp——请从启动对话框安装以播放此项。",
deps_source_not_playable: "此来源无法播放。",
deps_found_section_title: "在你的系统中找到",
deps_found_section_intro: "这些已经可用。勾选任一项以通过应用安装受管理的副本(应用副本优先于系统副本)。",
deps_found_on_system: "在系统中找到",
deps_managed_by_app: "已安装(由应用管理)",
deps_not_installed: "未安装",
deps_delete: "删除",
deps_deleting: "删除中…",
deps_deleted: "已删除",
deps_delete_failed: "删除失败",
sec_updates: "更新",
check_for_updates: "检查更新",
checking_for_updates: "检查更新中…",
up_to_date: "已是最新",
current_version: |v| format!("版本 {v}"),
update_available: |v| format!("版本 {v} 可用。前往设置更新应用。"),
update_now: "立即更新",
updating: "更新中…",
update_applied: |v| format!("已更新到 {v}。正在重启…"),
package_managed: "无法自动更新(没有对应用程序目录的写入权限)。如果通过包管理器安装,请使用它进行更新。",
update_failed: |e| format!("更新失败:{e}"),
percent: |pct| format!("{pct}%"),
list_match_pos: |pos, total| format!("{pos}/{total}"),
sub_menu_label: |base, provider, suffix| format!("{base} {provider} {suffix}"),
deps_failed_detail: |e| format!("Failed: {e}"),
deps_delete_failed_detail: |e| format!("Delete failed: {e}"),
sc_title: "键盘快捷键",
sc_sec_list: "曲目列表",
sc_move: "在列表中移动(循环)",
sc_focus_panel: "聚焦播放队列或列表",
sc_first_last: "首行 / 末行",
sc_page: "翻页 / 半页",
sc_play: "播放聚焦的曲目",
sc_sec_select: "选择与编辑",
sc_extend: "扩展选择",
sc_toggle_sel: "切换该行的选择状态",
sc_select_all: "全选列表内容",
sc_copy_paste: "复制 / 粘贴选中的曲目",
sc_delete: "删除选中的曲目",
sc_esc: "关闭弹窗,然后清除选择,然后返回搜索",
sc_sec_search: "搜索",
sc_focus_search: "聚焦搜索框",
sc_stage_provider: "预设搜索来源(待执行)",
sc_stage_scope: "预设搜索范围(待执行)",
sc_run_search: "执行预设的搜索",
sc_find_list: "列表内模糊搜索(切换匹配项)",
sc_sec_playlists: "播放列表与历史",
sc_prev_next_pl: "上一个 / 下一个播放列表",
sc_jump: "播放列表跳转(Enter 打开,Shift+Enter 播放)",
sc_back_fwd: "在窗格中后退 / 前进",
sc_sec_playback: "播放",
sc_play_pause: "播放 / 暂停",
sc_next_prev: "下一首 / 上一首",
sc_mute: "静音",
sc_volume: "减小 / 增大音量",
sc_seek: "后退 / 前进 5 秒(Shift:10 秒)",
sc_toggles: "队列 / 循环 / 歌词 / 队列标签页",
sc_sec_panes: "窗格",
sc_split: "左右并排 / 上下堆叠拆分",
sc_close_pane: "关闭聚焦的窗格",
sc_adj_pane: "聚焦相邻窗格",
sc_cycle_pane: "在窗格间循环 / 跳转",
sc_sec_menu: "右键菜单",
sc_open_menu: "针对聚焦的曲目打开",
sc_nav_menu: "在菜单中导航",
};
fn zh_tracks(n: usize) -> String {
format!("{n} 首")
}