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.
//! Brazilian Portuguese catalogue.

use super::Message;

/// Render `msg` in Brazilian Portuguese.
pub(super) fn text(msg: Message) -> &'static str {
    match msg {
        Message::ErrInvalidUsage => "uso inválido",
        Message::ErrInvalidInput => "entrada inválida",
        Message::ErrStdinEmpty => "a entrada padrão está vazia",
        Message::ErrInvalidUrl => "url inválida",
        Message::ErrNoSubtitle => "sem legenda",
        Message::ErrProviderUnavailable => "provedores indisponíveis",
        Message::ErrRateLimited => "limite de requisições imposto pelo provedor (HTTP 429)",
        Message::ErrTimeout => "tempo esgotado",
        Message::ErrIo => "erro de entrada e saída",
        Message::ErrHttp => "erro http",
        Message::ErrUrlParse => "erro ao interpretar a url",
        Message::ErrSerde => "erro de serialização",
        Message::ErrCrypto => "erro de criptografia",
        Message::ErrSubtitleTooLarge => "legenda excede o limite",
        Message::ErrInternal => "erro interno",
        Message::ErrPlayerResponseMissing => "resposta do player ausente",
        Message::ErrPlayerResponseTooLarge => "resposta do player grande demais",
        Message::ErrCaptionTrackNotFound => "faixa de legenda não encontrada",
        Message::ErrCaptionsAsrOnly => "apenas legendas geradas automaticamente, nenhuma entregável",
        Message::ErrPlayabilityStatusDenied => "reprodução negada pelo status do vídeo",
        Message::ErrLanguageParse => "erro ao interpretar o idioma",
        Message::ErrSignatureDecipherFailed => "falha ao decifrar a assinatura",
        Message::ErrTimedtextUpstream => "erro do serviço timedtext",
        Message::ErrProviderProtocol => "erro de protocolo do provedor",
        Message::ErrBrowserNotFound => "chromium/chrome não encontrado",
        Message::ErrConfig => "erro de configuração",
        Message::ErrCaptchaChallengeFrom => "desafio de captcha vindo de",
        Message::ErrCaptchaHumanRequired => "é necessária interação humana",
        Message::UnitBytes => "bytes",
        Message::WordExceeds => "excede",
        Message::WordAvailable => "disponíveis",

        Message::ReasonPrivateOrAgeRestricted => {
            "o vídeo é privado ou tem restrição de idade (HTTP 403)"
        }
        Message::ReasonNotFound => "vídeo não encontrado (HTTP 404)",
        Message::ReasonGone => "vídeo removido pelo autor (HTTP 410)",
        Message::ReasonUnavailableForLegalReasons => {
            "vídeo indisponível por motivos legais (HTTP 451)"
        }
        Message::ReasonNotPublished => "nenhuma legenda publicada para este vídeo",
        Message::ReasonLanguageUnavailable => "o idioma solicitado está indisponível",

        Message::UsageBatchWithUrl => "--batch não pode ser combinado com uma url posicional",
        Message::UsageNoUrl => {
            "nenhuma url informada; passe uma url posicional, use um pipe na entrada padrão ou use --batch"
        }
        Message::UsageUrlTooLong => "a url excede 2048 caracteres",
        Message::UsageQuietWithVerbose => "--quiet não pode ser combinado com --verbose",
        Message::UsageTimeoutZero => "--timeout precisa ser maior que zero",
        Message::UsageCacheTtlZero => "--cache-ttl precisa ser maior que zero",
        Message::UsageDryRunWithBatch => "--dry-run não pode ser combinado com --batch",

        Message::ConfigCouldNotRead => "não foi possível ler o arquivo de configuração",
        Message::ConfigNotValidToml => "não é TOML válido",
        Message::ConfigUnknownKey => "configuração: chave desconhecida",
        Message::ConfigKeyPrefix => "configuração: a chave",
        Message::ConfigWrongType => "tem o tipo errado, esperado",
        Message::ConfigInvalidFormat => "configuração: format inválido (esperado txt, srt ou vtt)",
        Message::ConfigInvalidProvider => {
            "configuração: provider inválido (use --help para ver os valores aceitos)"
        }
        Message::ConfigInvalidLogLevel => {
            "configuração: log_level inválido (esperado error, warn, info, debug ou trace)"
        }
        Message::ConfigInvalidLogFormat => {
            "configuração: log_format inválido (esperado text ou json)"
        }
        Message::ConfigInvalidColor => {
            "configuração: color inválido (esperado auto, always ou never)"
        }
        Message::ConfigInvalidUiLang => {
            "configuração: ui_lang inválido para esta compilação"
        }

        Message::LangInvalidTag => "não é uma etiqueta de idioma BCP 47 válida",
        Message::LangUnsupportedUi => {
            "idioma de interface não compilado nesta versão do binário"
        }

        Message::ErrTracingInit => "falha ao iniciar o tracing",
        Message::ConfigDirUnavailable => {
            "não foi possível determinar o diretório de configuração da plataforma"
        }
        Message::ConfigKeyNotSet => "não está definida; ela usa o padrão compilado",
        Message::ConfigKeyIsSecret => {
            "é um segredo; passe --from-stdin, porque o argv fica visível na tabela de processos para todo usuário da máquina"
        }
        Message::ConfigSetNeedsValue => "precisa de um valor, ou de --from-stdin",
        Message::ConfigKeySetNeedsYes => "está definida no momento; passe o --yes global antes do subcomando `config` para removê-la",
        Message::ConfigUnknownKeyHint => "execute `config list-keys` para ver o registro",
        Message::ConfigExpectsInteger => "espera um número inteiro",
        Message::ConfigExpectsBoolean => "espera um booleano, e recebeu",
    }
}