fr: admin: layout: title: "Match Live TV — Admin" nav: dashboard: Tableau de bord ops: Ops clubs: Clubs et équipes billing: Facturation youtube: YouTube sessions: Sessions password: Mot de passe logout: Déconnexion flash: login_required: Connectez-vous pour continuer login_success: Connexion réussie invalid_credentials: Nom d'utilisateur ou mot de passe invalide logout_success: Déconnecté password_current_incorrect: Le mot de passe actuel est incorrect password_too_short: Le nouveau mot de passe doit contenir au moins 8 caractères password_too_long: Le nouveau mot de passe ne peut pas dépasser 72 caractères password_too_weak: "Le nouveau mot de passe doit inclure au moins 3 parmi : minuscules, majuscules, chiffres et symboles" password_mismatch: Les mots de passe ne correspondent pas password_updated: Mot de passe mis à jour ops_acknowledged: Incident pris en charge ops_resolved: Incident résolu ops_muted: Notifications suspendues pendant 24 heures comped_granted: "Abonnement offert %{plan} activé pour %{club}." comped_revoked: "Abonnement offert révoqué pour %{club}." session_already_terminated: "Session déjà terminée (%{status})." session_stopped: Session terminée. session_stop_error: "Erreur lors de la fermeture : %{error}" session_terminated_no_regia: "Session terminée : impossible de générer le lien de régie." session_regia_generated: Lien de régie généré. invoice_upload_hint: Chargez le PDF depuis la liste « Paiements à facturer ». invoice_draft_created: Brouillon créé. Chargez le PDF depuis la page Facturation ou ci-dessous. invoice_issued: "Facture %{number} émise et envoyée à %{email}." invoice_updated: "Facture %{number} mise à jour." invoice_uploaded: "Facture chargée et envoyée à %{email}." youtube_not_configured: Configurez YOUTUBE_CLIENT_ID et YOUTUBE_CLIENT_SECRET dans .env common: free_plan: Free yes: "Oui" no: "Non" dash: "—" live_page: Page en direct auth: new: title: Connexion admin username_label: Nom d'utilisateur password_label: Mot de passe submit: Se connecter initial_credentials_html: "Identifiants initiaux : admin / admin. Changez le mot de passe après la première connexion." passwords: edit: title: Changer le mot de passe current_password_label: Mot de passe actuel new_password_label: "Nouveau mot de passe (min. 8, au moins 3 types de caractères)" confirm_password_label: Confirmer le nouveau mot de passe submit: Enregistrer le mot de passe cancel: Annuler dashboard: kpi: active_sessions: Sessions actives active_sessions_sub: en direct maintenant today: Diffusées aujourd'hui today_sub: "%{duration} de diffusion" month: Diffusées ce mois-ci month_sub: "%{duration} au total" teams: Équipes teams_sub: "%{count} utilisateurs" cpu: CPU cpu_sub: "charge %{one} / %{five} / %{fifteen}" ram: RAM ram_sub: "%{used} / %{total}" network: Bande passante (totale) network_sub: "↑ %{tx} · ↓ %{rx}" recordings: Replays archivés recordings_sub: "%{count} enregistrements" charts: cpu: CPU (%) ram: RAM (%) ops_panel: title: État de la plateforme (Ops) critical: "%{count} incident(s) critique(s) ouvert(s)" view_dashboard: Voir le tableau de bord Ops warnings: "%{count} avertissement(s)" dashboard_link: Tableau de bord Ops none_html: "Aucun incident ouvert. %{link}" disk: system_title: Disque système free_label: "Libre : %{free} (%{percent}% utilisé)" not_available: Métriques disque non disponibles recordings_title: Archive des enregistrements recordings_content: "Contenu des enregistrements : %{size}" recordings_not_mounted: "Chemin %{path} non monté" sessions: title: Sessions actives table: match: Match status: Statut start: Début link: Lien none: Aucune session active pour le moment. detail: Détail stop: Arrêter stop_confirm: Terminer cette session ? regia: Régie teams: title: Équipes matches_count: "%{count} matchs" view_all: "Voir les clubs (%{count} équipes)" ops: kpi: critical: Critiques ouverts warning: Avertissements ouverts total: Total ouverts open: title: Incidents ouverts table: severity: Sévérité kind: Type title: Titre occurrences: Occ. last_seen: Dernier none: Aucun incident ouvert. La plateforme semble saine. actions: acknowledge: Pris en charge resolve: Résoudre mute: Muet 24h resolved: title: Résolus (30 derniers jours) table: resolved_at: Résolu none: Aucun incident résolu récemment. clubs: index: title: Clubs et équipes subtitle_html: "Abonnements offerts (sponsors / promotions) et statut YouTube par équipe. Paiements Stripe : %{billing_link}." billing_link: Facturation table: club: Club plan: Forfait teams: Équipes comped: Offert stripe: Stripe manage: Gérer invoices: Factures show: back: "← Clubs et équipes" sport_label: "Sport : %{sport}" recordings_archive: Archive des replays billing_link: Paiements et factures youtube_platform_link: Chaîne YouTube plateforme youtube_club_label: "YouTube du club :" youtube_connected: (connectée) youtube_premium_full_not_connected: Premium Full — chaîne du club non connectée (utilise Match Live TV) no_channel_hint_html: "Sans chaîne connectée, l'application utilise la chaîne Match Live TV. %{link}." link_channel: Connecter la chaîne (page du club) teams_title: Équipes no_teams: Aucune équipe enregistrée. table: team: Équipe sport: Sport matches_and_details: Matchs et détails replay: Replays comped: title: Abonnement offert description: "Sponsor ou promotion : accordez Premium Light/Full sans paiement Stripe. Révocable à tout moment." active_label: "Actif :" since_label_html: "Depuis le %{date}" by_admin: "· admin %{username}" stripe_note: "Remarque : un abonnement Stripe lié existe également ; l'offre est prioritaire sur le forfait." revoke_button: Révoquer l'offre (retour à Free ou restauration Stripe) revoke_confirm: "Révoquer l'abonnement offert pour %{club} ?" current_plan: "Forfait actuel : %{plan}" stripe_active: "· paiement Stripe actif" plan_label: Forfait reason_label: "Motif (ex. sponsor 2026)" reason_placeholder: "Sponsor, promotion…" grant_button: Accorder l'offre teams: show: back: "← %{club}" sport_label: "Sport : %{sport}" club_label_html: "Club : %{club} · %{replay_link} · %{billing_link}" replay_link: Replays de l'équipe billing_link: Paiements et factures youtube_label: "YouTube :" youtube_platform_default_no_oauth: ", par défaut sans OAuth du club" youtube_platform_channel: "(chaîne plateforme%{suffix})" youtube_club_channel: (chaîne du club) youtube_not_ready: non prête no_channel_hint_html: "Sans chaîne connectée, l'application utilise la chaîne Match Live TV. %{link}." link_channel: Connecter la chaîne (page du club) matches_title: Matchs sessions: index: title: Sessions de diffusion table: match: Match status: Statut disconnects: Déconnexions link: Lien detail: Détail regia: Régie show: title: "Session %{id}" status_label: "Statut :" stop_button: Terminer la session stop_confirm: "Terminer la diffusion ? Le chemin RTMP sera supprimé et le statut passera à terminé." match_label: "Match : %{team} contre %{opponent}" youtube_studio: YouTube Studio broadcast: Diffusion rtmp_ingest: "Ingestion RTMP :" events_title: Événements table: type: Type when: Quand meta: Méta links: watch_title: Lien en direct none: Aucun lien vidéo disponible pour cette session. regia_title: Lien de régie terminated: Session terminée — lien de régie non disponible. regia_label: Régie valid_until: "Valide jusqu'au %{date}" active_exists: Un lien de régie actif existe déjà (l'URL n'est pas récupérable). Générez-en un nouveau si vous devez le repartager. none_active: Aucun lien de régie actif. Générez un lien à partager avec la personne qui gère le score. generate_button: Générer le lien de régie billing: index: title: Paiements à facturer description: "Paiements Stripe payés sans PDF de facture. Générez le PDF dans vos systèmes, puis chargez-le ici : il sera associé au paiement et envoyé par email au client." filter_label: "Filtrer par club :" filter_all: Tous incomplete_profile_warning: Données de facturation incomplètes no_billing_data: Aucune donnée de facturation — le client doit compléter son profil. pdf_label: PDF de la facture upload_button: Charger le PDF et envoyer au client none_pending: "Aucun paiement en attente de facturation%{club}." none_pending_for_club: " pour %{club}" uploaded_title: Factures déjà chargées table: date: Date club: Club description: Description amount: Montant invoice: Facture status: Statut back_dashboard: "← Tableau de bord" billing_invoices: index: title: "Facturation — %{club}" back_dashboard: "← Tableau de bord" new_invoice: Nouvelle facture (sans paiement) payments_title: Paiements table: date: Date description: Description amount: Montant invoice: Facture pdf_suffix: " (PDF)" edit_send_pdf: Modifier / envoyer le PDF create_invoice: Créer une facture no_payments: Aucun paiement enregistré pour ce club. all_invoices_title: Toutes les factures table2: number: Numéro date: Date amount: Montant status: Statut payment: Paiement edit: Modifier no_invoices: Aucune facture. new: title: "Nouvelle facture — %{club}" linked_payment: "Liée au paiement du %{date} (%{amount})." number_label: Numéro de facture issued_on_label: Date d'émission amount_label: "Montant (€)" notes_label: Notes internes (facultatif) hint: Enregistrez le brouillon, puis chargez le PDF et envoyez-le au client depuis l'écran suivant. submit: Créer le brouillon de facture back: "← Paiements et factures" edit: title: "Facture %{number} — %{club}" status_label: "Statut :" sent_at: "· Envoyée le %{date}" number_label: Numéro de facture issued_on_label: Date d'émission amount_label: "Montant (€)" payment_info: "Paiement : %{description} — %{amount}" pdf_label: PDF de la facture pdf_already: "PDF déjà chargé : %{filename}" notes_label: Notes internes save_draft: Enregistrer le brouillon issue_send: Émettre et envoyer par email issue_confirm: "Envoyer la facture à %{email} ?" back: "← Paiements et factures" youtube: platform_token: title: Jeton de la chaîne Match Live TV page_title: "Jeton YouTube — Match Live TV" channel_label: "Chaîne : %{title}" success: "Connexion réussie. Copiez immédiatement cette ligne :" env_hint_html: "Ajoutez dans /opt/matchlivetv/infra/.env :" not_shown_again_html: "Elle ne sera plus affichée. Ensuite : docker compose -f docker-compose.prod.yml restart rails sidekiq" no_refresh_token_html: "Google n'a pas renvoyé de refresh token. Dans votre compte Google → accès aux applications, révoquez « Match Live TV », puis recommencez depuis /admin/youtube/platform." back_dashboard: "← Tableau de bord admin" club_recordings: index: title: "Replays — %{club}"