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: "Rechercher",
    downloads: "Téléchargements",
    settings: "Paramètres",
    library: "Bibliothèque",
    nothing_saved_yet: "Rien n'est encore enregistré",
    new_playlist_name: "Nom de la nouvelle playlist",

    queue: "File d'attente",
    recently_played: "Écoutés récemment",
    now_playing_from: "Lecture en cours depuis",
    now_playing: "En lecture",
    up_next: "À venir",
    no_track_playing: "Aucune piste en lecture",
    no_more_tracks_in_queue: "Plus de pistes dans la file",
    no_recently_played_tracks: "Aucune piste écoutée récemment",

    not_playing: "Aucune lecture",
    no_tracks_found: "Aucune piste trouvée",

    searching: "Recherche…",
    loading: "Chargement…",
    load_more: "Charger plus",
    no_results_found: "Aucun résultat",
    no_recent_searches: "Aucune recherche récente",
    generating_radio: "Génération de la radio…",

    not_an_artist_page: "Ce n'est pas une page d'artiste",
    provided_by: "Fourni par",
    retry: "Réessayer",
    nothing_here: "Rien par ici",
    most_popular_songs: "Titres les plus populaires",
    albums: "Albums",
    playlists: "Playlists",
    fans_also_like: "Les fans aiment aussi",

    looking_up_lyrics: "Recherche des paroles…",
    play_a_track_for_lyrics: "Lisez une piste pour voir ses paroles.",
    lyrics_selectable: "Sélectionnable",
    lyrics_synced: "Synchronisées",
    lyrics_plain: "Simple",

    playlist_not_found: "Playlist introuvable",
    add_local: "Ajouter local",
    downloaded_tracks: "Pistes téléchargées",
    no_downloaded_tracks: "Aucune piste téléchargée",

    ctx_play: "Lire",
    ctx_play_local: "Lire le fichier local",
    ctx_edit: "Modifier",
    ctx_go_to_artist: "Aller à l'artiste",
    ctx_add_to_playlist: "Ajouter à la playlist",
    ctx_download: "Télécharger",
    ctx_song_radio: "Radio du titre",
    ctx_artist_radio: "Radio de l'artiste",
    ctx_remove_from_queue: "Retirer de la file",
    ctx_remove_from_playlist: "Retirer de la playlist",
    sub_play_via: "Lire via",
    sub_download_from: "Télécharger depuis",
    sub_via: "Via",
    sub_on: "Sur",
    via_search_suffix: "(recherche)",

    current: "(actuelle)",
    select: "sélectionner",
    find: "Rechercher",
    finding: "Recherche…",
    found_on: |p| format!("Trouvé sur {p}"),
    not_linked: "Non lié",
    providers: "Fournisseurs",
    no_provider_data: "Cette piste n'a aucune donnée de fournisseur.",
    save: "Enregistrer",
    cancel: "Annuler",
    edit_track: "Modifier la piste",
    lbl_title: "Titre",
    lbl_artist: "Artiste",
    ph_track_title: "Titre de la piste",
    ph_track_artist: "Artiste de la piste",
    delete: "Supprimer",
    delete_playlist_q: "Supprimer la playlist ?",
    tracks_wont_be_deleted: "Les pistes ne seront pas supprimées.",
    lbl_id: "Id",
    lbl_url: "Url",
    lbl_artist_id: "Id de l'artiste",
    lbl_duration_secs: "Durée (en secondes)",
    lbl_thumbnail: "Miniature",
    lbl_album: "Album",

    sec_playback: "Lecture",
    sec_storage: "Stockage",
    sec_history: "Historique",
    sec_appearance: "Apparence",
    sec_dependencies: "Dépendances",
    theme_lbl: "Thème",
    language_lbl: "Langue",
    default_provider_lbl: "Fournisseur de streaming et de téléchargement par défaut",
    normalize_volume_lbl: "Normaliser le volume entre les pistes",
    download_dir_lbl: "Dossier de téléchargement",
    cache_size_lbl: "Taille max. du cache de streaming (Mo)",
    hist_rows_lbl: "Lignes d'historique de recherche affichées",
    hist_entries_lbl: "Entrées d'historique de recherche conservées",
    recent_kept_lbl: "Pistes récemment écoutées conservées",
    reset_defaults: "Réinitialiser",

    find_in_list: "Rechercher dans la liste…",
    scope_songs: "Titres",
    scope_videos: "Vidéos",
    scope_artists: "Artistes",
    scope_albums: "Albums",
    scope_playlists: "Playlists",
    radio_word_song: "titre",
    radio_word_artist: "artiste",

    lyrics_copied: "Paroles copiées dans le presse-papiers",
    saved_to_library: "Enregistré dans la bibliothèque",
    removed_from_library: "Retiré de la bibliothèque",
    no_lyrics_found: "Aucune parole trouvée pour cette piste.",
    select_playlist_drop: "Sélectionnez une playlist pour y déposer les pistes",
    reordered_playlist: "Playlist réorganisée",

    n_saved: |n| format!("{n} enregistré{}", if n == 1 { "" } else { "s" }),
    n_plays: |n| format!("{} écoutes", crate::util::format_count(n)),
    search_placeholder: |p| match p {
        ProviderId::YouTube => "Rechercher sur YouTube Music…".into(),
        ProviderId::Local => "Rechercher…".into(),
        other => format!("Rechercher sur {}", other.label()),
    },
    added: |n| format!("Ajoutées {}", fr_tracks(n)),
    added_to: |n, to| format!("Ajoutées {} à {to}", fr_tracks(n)),
    removed_n: |n| format!("Retirées {}", fr_tracks(n)),
    removed_from: |n, from| format!("Retirées {} de {from}", fr_tracks(n)),
    pasted_into: |n, into| format!("Collées {} dans {into}", fr_tracks(n)),
    saved_title: |t| format!("« {t} » enregistré dans la bibliothèque"),
    playlist_created: |n| format!("Playlist « {n} » créée"),
    added_local: |n| format!("Ajoutées {} (sélectionnez une playlist pour les organiser)", fr_tracks(n)),
    downloading_n: |n| format!("Téléchargement de {}", fr_tracks(n)),
    resolving_on: |title, p| format!("Résolution de « {title} » sur {p}"),
    provider_no_radio: |p| format!("{p} ne prend pas en charge la radio"),
    generating_radio_for: |w, name| format!("Génération de la radio pour {w} : {name}"),
    could_not_find_on: |name, p| format!("Impossible de trouver « {name} » sur {p}"),
    opening: |l| format!("Ouverture : {l}"),
    opening_artist: |name| format!("Ouverture de l'artiste : {name}"),
    download_complete: |path| format!("Téléchargement terminé ! Enregistré dans {path}"),
    failed_resolve_on: |title, p, e| format!("Échec de la résolution de « {title} » sur {p} : {e}"),
    couldnt_load: |e| format!("Impossible de charger : {e}"),
    couldnt_load_lyrics: |e| format!("Impossible de charger les paroles : {e}"),
    search_failed: |e| format!("Échec de la recherche : {e}"),
    radio_label: |w, name| format!("Radio ({w}) : {name}"),
    ctx_add_to_playlist_n: |n| format!("Ajouter {} à la playlist", fr_tracks(n)),
    ctx_download_n: |n| format!("Télécharger {}", fr_tracks(n)),
    ctx_remove_from_queue_n: |n| format!("Retirer {} de la file", fr_tracks(n)),
    ctx_remove_from_playlist_n: |n| format!("Retirer {} de la playlist", fr_tracks(n)),

    import_playlist: "Importer une playlist",
    import_method_native: "Native",
    import_method_filelist: "Liste de fichiers",
    import_method_csv: "CSV",
    import_native_hint: "Importe des playlists depuis un fichier playlists.json.",
    import_csv_name_col: "Colonne de nom",
    import_csv_artist_col: "Colonne d'artiste",
    import_csv_album_col: "Colonne d'album",
    import_csv_preset: "Préréglage",
    import_csv_preset_default: "Par défaut",
    import_csv_preset_exportify: "Exportify",
    import_csv_exportify_note: "Prend en charge les playlists Spotify exportées depuis https://exportify.net/.",
    import_pattern_lbl: "Motif de nom de fichier",
    import_playlist_name: "Nom de la playlist",
    import_add_pattern: "Ajouter un motif",
    import_select_file: "Sélectionner un fichier",
    import_select_folder: "Sélectionner un dossier",
    import_pattern_conflict: |a, b| {
        format!(
            "Les motifs « {a} » et « {b} » peuvent correspondre au même fichier avec des champs en conflit. Supprimez ou corrigez l'un d'eux."
        )
    },
    import_playlists_imported: |n| format!("Importées {}", fr_tracks(n)),
    import_imported_into: |n, into| format!("Importées {} dans {}", fr_tracks(n), into),
    import_no_tracks: "Aucune piste à importer.",
    import_no_match: "Aucun fichier ne correspond aux motifs.",
    import_bad_file: "Impossible de lire le fichier sélectionné.",

    deps_title: "Dépendances manquantes",
    deps_intro: "Certains outils utilisés par l'application sont manquants. Sélectionnez ceux à installer ou abandonnez pour continuer (la recherche et le streaming peuvent ne pas fonctionner tant qu'ils ne sont pas présents).",
    deps_install: "Installer",
    deps_install_selected: "Installer la sélection",
    deps_discard: "Abandonner",
    deps_installing: "Installation…",
    deps_installed: "Installé",
    deps_failed: "Échec",
    deps_installed_toast: "Dépendances sélectionnées installées.",
    deps_yt_dlp_desc: "Diffuse et télécharge l'audio (requis)",
    deps_ytmusicapi_desc: "Recherche YouTube Music (optionnel, repli sur yt-dlp)",
    deps_python3_desc: "Requis par ytmusicapi (recherche YouTube Music)",
    deps_ytmusicapi_requires_python: "Nécessite Python 3 (à installer d'abord)",
    deps_play_requires_yt_dlp: "La lecture nécessite yt-dlp ; installez-le depuis la boîte de dialogue de démarrage pour lire ceci.",
    deps_source_not_playable: "Cette source ne peut pas être lue.",
    deps_found_section_title: "Trouvées sur votre système",
    deps_found_section_intro: "Celles-ci sont déjà disponibles. Cochez-en pour installer une copie gérée par l'application (la copie de l'application prime sur celle du système).",
    deps_found_on_system: "Trouvées sur votre système",
    deps_managed_by_app: "Installées (gérées par l'application)",
    deps_not_installed: "Non installées",
    deps_delete: "Supprimer",
    deps_deleting: "Suppression…",
    deps_deleted: "Supprimées",
    deps_delete_failed: "Échec de la suppression",

    sec_updates: "Mises à jour",
    check_for_updates: "Vérifier les mises à jour",
    checking_for_updates: "Recherche de mises à jour…",
    up_to_date: "À jour",
    current_version: |v| format!("Version {v}"),
    update_available: |v| format!("Version {v} disponible. Allez dans Paramètres pour mettre à jour."),
    update_now: "Mettre à jour",
    updating: "Mise à jour…",
    update_applied: |v| format!("Mis à jour vers {v}. Redémarrage…"),
    package_managed: "Impossible de mettre à jour automatiquement (pas d'accès en écriture dans le répertoire de l'application). Si installé via un gestionnaire de paquets, utilisez-le pour mettre à jour.",
    update_failed: |e| format!("Échec de la mise à jour : {e}"),
};

fn fr_tracks(n: usize) -> String {
    if n <= 1 {
        format!("{n} piste")
    } else {
        format!("{n} pistes")
    }
}