youtube-legend-cli 0.4.0

Non-interactive Rust CLI that downloads YouTube subtitles through third-party providers, using a native Unix stdin/stdout interface.
//! French catalogue. Compiled only with the `i18n-europe` feature.

use super::Message;

/// Render `msg` in French.
pub(super) fn text(msg: Message) -> &'static str {
    match msg {
        Message::ErrInvalidUsage => "utilisation invalide",
        Message::ErrInvalidInput => "entrée invalide",
        Message::ErrStdinEmpty => "l'entrée standard est vide",
        Message::ErrInvalidUrl => "url invalide",
        Message::ErrNoSubtitle => "aucun sous-titre",
        Message::ErrProviderUnavailable => "fournisseurs indisponibles",
        Message::ErrRateLimited => "limite de requêtes imposée par le fournisseur (HTTP 429)",
        Message::ErrTimeout => "délai dépassé",
        Message::ErrIo => "erreur d'entrée-sortie",
        Message::ErrHttp => "erreur http",
        Message::ErrUrlParse => "erreur d'analyse de l'url",
        Message::ErrSerde => "erreur de sérialisation",
        Message::ErrCrypto => "erreur de cryptographie",
        Message::ErrSubtitleTooLarge => "le sous-titre dépasse la limite",
        Message::ErrInternal => "erreur interne",
        Message::ErrPlayerResponseMissing => "réponse du lecteur manquante",
        Message::ErrPlayerResponseTooLarge => "réponse du lecteur trop volumineuse",
        Message::ErrCaptionTrackNotFound => "piste de sous-titres introuvable",
        Message::ErrCaptionsAsrOnly => "uniquement des sous-titres générés automatiquement, aucun livrable",
        Message::ErrPlayabilityStatusDenied => "lecture refusée par le statut de la vidéo",
        Message::ErrLanguageParse => "erreur d'analyse de la langue",
        Message::ErrSignatureDecipherFailed => "échec du déchiffrement de la signature",
        Message::ErrTimedtextUpstream => "erreur du service timedtext",
        Message::ErrProviderProtocol => "erreur de protocole du fournisseur",
        Message::ErrBrowserNotFound => "chromium/chrome introuvable",
        Message::ErrConfig => "erreur de configuration",
        Message::ErrCaptchaChallengeFrom => "défi captcha provenant de",
        Message::ErrCaptchaHumanRequired => "une interaction humaine est requise",
        Message::UnitBytes => "octets",
        Message::WordExceeds => "dépasse",
        Message::WordAvailable => "disponibles",

        Message::ReasonPrivateOrAgeRestricted => {
            "la vidéo est privée ou soumise à une limite d'âge (HTTP 403)"
        }
        Message::ReasonNotFound => "vidéo introuvable (HTTP 404)",
        Message::ReasonGone => "vidéo supprimée par son auteur (HTTP 410)",
        Message::ReasonUnavailableForLegalReasons => {
            "vidéo indisponible pour des raisons juridiques (HTTP 451)"
        }
        Message::ReasonNotPublished => "aucun sous-titre publié pour cette vidéo",
        Message::ReasonLanguageUnavailable => "la langue demandée est indisponible",

        Message::UsageBatchWithUrl => "--batch ne peut pas être combiné avec une url positionnelle",
        Message::UsageNoUrl => {
            "aucune url fournie ; passez une url positionnelle, utilisez un tube sur l'entrée standard ou utilisez --batch"
        }
        Message::UsageUrlTooLong => "l'url dépasse 2048 caractères",
        Message::UsageQuietWithVerbose => "--quiet ne peut pas être combiné avec --verbose",
        Message::UsageTimeoutZero => "--timeout doit être supérieur à zéro",
        Message::UsageCacheTtlZero => "--cache-ttl doit être supérieur à zéro",
        Message::UsageDryRunWithBatch => "--dry-run ne peut pas être combiné avec --batch",

        Message::ConfigCouldNotRead => "impossible de lire le fichier de configuration",
        Message::ConfigNotValidToml => "n'est pas du TOML valide",
        Message::ConfigUnknownKey => "configuration : clé inconnue",
        Message::ConfigKeyPrefix => "configuration : la clé",
        Message::ConfigWrongType => "a un type incorrect, attendu",
        Message::ConfigInvalidFormat => "configuration : format invalide (attendu txt, srt ou vtt)",
        Message::ConfigInvalidProvider => {
            "configuration : provider invalide (voir --help pour les valeurs acceptées)"
        }
        Message::ConfigInvalidLogLevel => {
            "configuration : log_level invalide (attendu error, warn, info, debug ou trace)"
        }
        Message::ConfigInvalidLogFormat => {
            "configuration : log_format invalide (attendu text ou json)"
        }
        Message::ConfigInvalidColor => {
            "configuration : color invalide (attendu auto, always ou never)"
        }
        Message::ConfigInvalidUiLang => "configuration : ui_lang invalide pour cette compilation",

        Message::LangInvalidTag => "n'est pas une étiquette de langue BCP 47 valide",
        Message::LangUnsupportedUi => "langue d'interface non compilée dans cette version",

        Message::ErrTracingInit => "échec de l'initialisation du tracing",
        Message::ConfigDirUnavailable => {
            "impossible de déterminer le répertoire de configuration de la plateforme"
        }
        Message::ConfigKeyNotSet => {
            "n'est pas définie ; elle utilise la valeur par défaut compilée"
        }
        Message::ConfigKeyIsSecret => {
            "est un secret ; passez --from-stdin, car argv est visible dans la table des processus pour tout utilisateur de la machine"
        }
        Message::ConfigSetNeedsValue => "exige une valeur, ou --from-stdin",
        Message::ConfigKeySetNeedsYes => {
            "est actuellement définie ; passez le --yes global avant la sous-commande `config` pour la supprimer"
        }
        Message::ConfigUnknownKeyHint => "exécutez `config list-keys` pour voir le registre",
        Message::ConfigExpectsInteger => "attend un entier",
        Message::ConfigExpectsBoolean => "attend un booléen, mais a reçu",
    }
}