goosemusic 1.3.2

A music player with YouTube search, local playback, and OS media controls
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}")
}