goosemusic 1.2.0

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: "Buscar",
    downloads: "Downloads",
    settings: "Configurações",
    library: "Biblioteca",
    nothing_saved_yet: "Nada salvo ainda",
    new_playlist_name: "Nome da nova playlist",

    queue: "Fila",
    recently_played: "Reproduzidas recentemente",
    now_playing_from: "Tocando de",
    now_playing: "Tocando agora",
    up_next: "A seguir",
    no_track_playing: "Nenhuma faixa tocando",
    no_more_tracks_in_queue: "Não há mais faixas na fila",
    no_recently_played_tracks: "Nenhuma faixa reproduzida recentemente",

    not_playing: "Nada tocando",
    no_tracks_found: "Nenhuma faixa encontrada",

    searching: "Buscando…",
    loading: "Carregando…",
    load_more: "Carregar mais",
    no_results_found: "Nenhum resultado encontrado",
    no_recent_searches: "Nenhuma busca recente",
    generating_radio: "Gerando rádio…",

    not_an_artist_page: "Não é uma página de artista",
    provided_by: "Fornecido por",
    retry: "Tentar novamente",
    nothing_here: "Nada por aqui",
    most_popular_songs: "Músicas mais populares",
    albums: "Álbuns",
    playlists: "Playlists",
    fans_also_like: "Fãs também gostam de",

    looking_up_lyrics: "Procurando a letra…",
    play_a_track_for_lyrics: "Toque uma faixa para ver sua letra.",
    lyrics_selectable: "Selecionável",
    lyrics_synced: "Sincronizada",
    lyrics_plain: "Simples",

    playlist_not_found: "Playlist não encontrada",
    add_local: "Adicionar local",
    downloaded_tracks: "Faixas baixadas",
    no_downloaded_tracks: "Nenhuma faixa baixada",

    ctx_play: "Tocar",
    ctx_play_local: "Tocar local",
    ctx_edit: "Editar",
    ctx_go_to_artist: "Ir para o artista",
    ctx_add_to_playlist: "Adicionar à playlist",
    ctx_download: "Baixar",
    ctx_song_radio: "Rádio da música",
    ctx_artist_radio: "Rádio do artista",
    ctx_remove_from_queue: "Remover da fila",
    ctx_remove_from_playlist: "Remover da playlist",
    sub_play_via: "Tocar via",
    sub_download_from: "Baixar de",
    sub_via: "Via",
    sub_on: "Em",
    via_search_suffix: "(busca)",

    current: "(atual)",
    select: "selecionar",
    find: "Buscar",
    finding: "Procurando…",
    found_on: |p| format!("Encontrado em {p}"),
    not_linked: "Não vinculado",
    providers: "Provedores",
    no_provider_data: "Esta faixa não tem dados de provedor.",
    save: "Salvar",
    cancel: "Cancelar",
    edit_track: "Editar faixa",
    lbl_title: "Título",
    lbl_artist: "Artista",
    ph_track_title: "Título da faixa",
    ph_track_artist: "Artista da faixa",
    delete: "Excluir",
    delete_playlist_q: "Excluir playlist?",
    tracks_wont_be_deleted: "As faixas não serão excluídas.",
    lbl_id: "Id",
    lbl_url: "Url",
    lbl_artist_id: "Id do artista",
    lbl_duration_secs: "Duração (em segundos)",
    lbl_thumbnail: "Miniatura",
    lbl_album: "Álbum",

    sec_playback: "Reprodução",
    sec_storage: "Armazenamento",
    sec_history: "Histórico",
    sec_appearance: "Aparência",
    sec_dependencies: "Dependências",
    theme_lbl: "Tema",
    language_lbl: "Idioma",
    default_provider_lbl: "Provedor padrão de streaming e download",
    normalize_volume_lbl: "Normalizar o volume entre faixas",
    download_dir_lbl: "Pasta de download",
    cache_size_lbl: "Tamanho máximo do cache de streaming (MB)",
    hist_rows_lbl: "Linhas do histórico de busca exibidas",
    hist_entries_lbl: "Entradas do histórico de busca mantidas",
    recent_kept_lbl: "Faixas reproduzidas recentemente mantidas",
    reset_defaults: "Restaurar padrões",

    find_in_list: "Buscar na lista…",
    scope_songs: "Músicas",
    scope_videos: "Vídeos",
    scope_artists: "Artistas",
    scope_albums: "Álbuns",
    scope_playlists: "Playlists",
    radio_word_song: "música",
    radio_word_artist: "artista",

    lyrics_copied: "Letra copiada para a área de transferência",
    saved_to_library: "Salvo na biblioteca",
    removed_from_library: "Removido da biblioteca",
    no_lyrics_found: "Nenhuma letra encontrada para esta faixa.",
    select_playlist_drop: "Selecione uma playlist para soltar as faixas",
    reordered_playlist: "Playlist reordenada",

    n_saved: |n| format!("{n} salvo{}", if n == 1 { "" } else { "s" }),
    n_plays: |n| format!("{} reproduções", crate::util::format_count(n)),
    search_placeholder: |p| match p {
        ProviderId::YouTube => "Buscar no YouTube Music…".into(),
        ProviderId::Local => "Buscar…".into(),
        other => format!("Buscar em {}", other.label()),
    },
    added: |n| format!("Adicionadas {}", pt_tracks(n)),
    added_to: |n, to| format!("Adicionadas {} a {to}", pt_tracks(n)),
    removed_n: |n| format!("Removidas {}", pt_tracks(n)),
    removed_from: |n, from| format!("Removidas {} de {from}", pt_tracks(n)),
    pasted_into: |n, into| format!("Coladas {} em {into}", pt_tracks(n)),
    saved_title: |t| format!("Salva \"{t}\" na biblioteca"),
    playlist_created: |n| format!("Playlist \"{n}\" criada"),
    added_local: |n| format!("Adicionadas {} (selecione uma playlist para organizar)", pt_tracks(n)),
    downloading_n: |n| format!("Baixando {}", pt_tracks(n)),
    resolving_on: |title, p| format!("Resolvendo \"{title}\" em {p}"),
    provider_no_radio: |p| format!("{p} não suporta rádio"),
    generating_radio_for: |w, name| format!("Gerando rádio para {w}: {name}"),
    could_not_find_on: |name, p| format!("Não foi possível encontrar \"{name}\" em {p}"),
    opening: |l| format!("Abrindo: {l}"),
    opening_artist: |name| format!("Abrindo artista: {name}"),
    download_complete: |path| format!("Download concluído! Salvo em {path}"),
    failed_resolve_on: |title, p, e| format!("Falha ao resolver \"{title}\" em {p}: {e}"),
    couldnt_load: |e| format!("Não foi possível carregar: {e}"),
    couldnt_load_lyrics: |e| format!("Não foi possível carregar a letra: {e}"),
    search_failed: |e| format!("Falha na busca: {e}"),
    radio_label: |w, name| format!("Rádio ({w}): {name}"),
    ctx_add_to_playlist_n: |n| format!("Adicionar {} à playlist", pt_tracks(n)),
    ctx_download_n: |n| format!("Baixar {}", pt_tracks(n)),
    ctx_remove_from_queue_n: |n| format!("Remover {} da fila", pt_tracks(n)),
    ctx_remove_from_playlist_n: |n| format!("Remover {} da playlist", pt_tracks(n)),

    import_playlist: "Importar playlist",
    import_method_native: "Nativo",
    import_method_filelist: "Lista de arquivos",
    import_method_csv: "CSV",
    import_native_hint: "Importa playlists de um arquivo playlists.json.",
    import_csv_name_col: "Coluna de nome",
    import_csv_artist_col: "Coluna de artista",
    import_csv_album_col: "Coluna de álbum",
    import_csv_preset: "Predefinição",
    import_csv_preset_default: "Padrão",
    import_csv_preset_exportify: "Exportify",
    import_csv_exportify_note: "Compatível com playlists do Spotify exportadas de https://exportify.net/.",
    import_pattern_lbl: "Padrão de nome de arquivo",
    import_playlist_name: "Nome da playlist",
    import_add_pattern: "Adicionar padrão",
    import_select_file: "Selecionar arquivo",
    import_select_folder: "Selecionar pasta",
    import_pattern_conflict: |a, b| {
        format!(
            "Os padrões \"{a}\" e \"{b}\" podem corresponder ao mesmo arquivo com campos conflitantes. Remova ou corrija um."
        )
    },
    import_playlists_imported: |n| format!("Importadas {}", pt_tracks(n)),
    import_imported_into: |n, into| format!("Importadas {} em {}", pt_tracks(n), into),
    import_no_tracks: "Nenhuma faixa encontrada para importar.",
    import_no_match: "Nenhum arquivo corresponde aos padrões.",
    import_bad_file: "Não foi possível ler o arquivo selecionado.",

    deps_title: "Dependências ausentes",
    deps_intro: "Algumas ferramentas usadas pelo app estão ausentes. Selecione quais instalar ou descarte para continuar (a busca e o streaming podem não funcionar até que estejam presentes).",
    deps_install: "Instalar",
    deps_install_selected: "Instalar selecionadas",
    deps_discard: "Descartar",
    deps_installing: "Instalando…",
    deps_installed: "Instalado",
    deps_failed: "Falhou",
    deps_installed_toast: "Dependências selecionadas instaladas.",
    deps_yt_dlp_desc: "Transmite e baixa áudio (obrigatório)",
    deps_ytmusicapi_desc: "Busca no YouTube Music (opcional, usa yt-dlp como fallback)",
    deps_python3_desc: "Requerido pelo ytmusicapi (busca no YouTube Music)",
    deps_ytmusicapi_requires_python: "Requer Python 3 (instale primeiro)",
    deps_play_requires_yt_dlp: "A reprodução precisa do yt-dlp; instale-o na caixa inicial para tocar isto.",
    deps_source_not_playable: "Esta fonte não pode ser reproduzida.",
    deps_found_section_title: "Encontradas no seu sistema",
    deps_found_section_intro: "Estas já estão disponíveis. Marque alguma para instalar uma cópia gerenciada pelo app (a cópia do app tem prioridade sobre a do sistema).",
    deps_found_on_system: "Encontradas no seu sistema",
    deps_managed_by_app: "Instaladas (gerenciadas pelo app)",
    deps_not_installed: "Não instaladas",
    deps_delete: "Excluir",
    deps_deleting: "Excluindo…",
    deps_deleted: "Excluídas",
    deps_delete_failed: "Falha ao excluir",

    sec_updates: "Atualizações",
    check_for_updates: "Verificar atualizações",
    checking_for_updates: "Verificando atualizações…",
    up_to_date: "Atualizado",
    current_version: |v| format!("Versão {v}"),
    update_available: |v| format!("Versão {v} disponível. Vá para Configurações para atualizar."),
    update_now: "Atualizar agora",
    updating: "Atualizando…",
    update_applied: |v| format!("Atualizado para {v}. Reiniciando…"),
    package_managed: "Não é possível atualizar automaticamente (sem permissão de escrita no diretório do aplicativo). Se instalado via gerenciador de pacotes, use-o para atualizar.",
    update_failed: |e| format!("Falha na atualização: {e}"),
};

fn pt_tracks(n: usize) -> String {
    if n == 1 {
        "1 faixa".into()
    } else {
        format!("{n} faixas")
    }
}