{
  "levels": {
    "low": {
      "label": "OK",
      "verb": "Système stable",
      "hint": "Maintenir la protection quotidienne"
    },
    "elevated": {
      "label": "Élevé",
      "verb": "Anomalies détectées",
      "hint": "Passer en mode renforcé et surveiller les IP suspectes"
    },
    "under_attack": {
      "label": "Sous attaque",
      "verb": "Probablement sous attaque",
      "hint": "Appliquer le préréglage sous attaque + bannissement en masse"
    },
    "critical": {
      "label": "Critique",
      "verb": "Menace grave",
      "hint": "Envisagez le mode urgence ; assurez-vous d'être en liste blanche"
    }
  },
  "presetsWhen": {
    "daily": "Quotidien",
    "hardened": "Scanner/brut",
    "under_attack": "Flood L7",
    "emergency": "Dernier recours"
  },
  "note": {
    "notApplied": "Non appliqué sur l'hôte (nécessite root + YSK_EXECUTE=1) — enregistré dans les paramètres du panneau",
    "nginxWritten": "Fichier panneau de limitation de débit Nginx écrit",
    "f2bWritten": "Paramètres panneau fail2ban écrits",
    "hintDropped": "Indice de protection interne omis",
    "nginxLimits": "Écrira un extrait de limite de débit Nginx"
  },
  "rel": {
    "justNow": "À l'instant",
    "minutesAgo": "il y a {{n}} min",
    "hoursAgo": "il y a {{n}} h"
  },
  "apiUnreachable": "Impossible d'atteindre l'API (proxy web/backend peut être hors service)",
  "geoipLoadFailed": "Échec du chargement de GeoIP",
  "loadFailed": "Échec du chargement",
  "previewDone": "Aperçu terminé (non écrit)",
  "presetApplied": "Préréglage de protection appliqué",
  "manualBan": "Bannissement manuel",
  "banSent": "Bannissement envoyé pour {{ip}}",
  "quickSelectBan": "Bannissement sélection rapide",
  "bulkBan": "Bannissement groupé {{count}}",
  "autoBanStatus": "Bannissement auto : {{onOff}} · {{mode}} · {{method}}",
  "autoBanUpdated": "Bannissement auto mis à jour",
  "automationMaster": "Automatisation principale : {{onOff}}",
  "autoPresetStatus": "Préréglage auto : {{onOff}}",
  "autoBanAutomation": "Bannissement auto : {{onOff}} ({{mode}})",
  "automationSaved": "Paramètres d'automatisation enregistrés",
  "statFirewall": "Pare-feu",
  "statSuspects": "IP suspectes",
  "statSuspectsSplit": "{{actionable}} exploitable / {{total}} répertorié",
  "suspectActionableCount": "IP exploitables {{count}}",
  "scoreBasisHint": "Le score de menace utilise le pare-feu, le volume d'interdiction fail2ban et les signaux de taux de requêtes – ce qui n'est pas le même nombre que la liste des suspects Intel.",
  "statAutoBan": "Bannissement auto",
  "statApply": "Application système",
  "statActiveBans": "Bannissements actifs",
  "statPreset": "Préréglage",
  "threatPill": "Menace {{label}} · score {{score}}",
  "reprobed": "Resondé",
  "loadingStatus": "Chargement de l'état de protection…",
  "tabs": {
    "command": "Réponse",
    "automation": "Automatisation",
    "bans": "Bannissements",
    "geo": "Accès IP",
    "stack": "Empiler",
    "intel": "Intel",
    "about": "À propos"
  },
  "reapply": "Réappliquer",
  "nginxLimits": "Limitations de débit Nginx",
  "notWritten": "Non écrit",
  "modeValue": {
    "normal": "Normale",
    "degraded": "Dégradé",
    "ddos-protection": "Protection contre les attaques DDoS",
    "offline": "Hors ligne"
  },
  "mode": "Mode",
  "controlPlane": "Plan de contrôle",
  "canApply": "Applicable",
  "needRoot": "Nécessite root",
  "writeOnly": "Écrire le fichier uniquement",
  "autoRunning": "En cours · toutes les {{sec}}s · bannissements cette heure {{n}}",
  "autoOffManual": "Désactivé — manuel uniquement",
  "lastTick": "· dernier {{t}}",
  "nextTick": "· prochain {{t}}",
  "on": "Activé",
  "off": "Désactivé",
  "open": "Ouvrir",
  "ranAutomationTick": "Un cycle d'automatisation exécuté",
  "escalateHardened": "Renforcé ≥ score",
  "escalateAttack": "Sous attaque ≥ score",
  "deescalateDaily": "Retour au score quotidien <",
  "zeroOff": "0 désactivé",
  "holdAfterEscalate": "Maintien min. après escalade",
  "min5": "5 minutes",
  "min15": "15 minutes",
  "min30": "30 minutes",
  "hour1": "1 heure",
  "hour2": "2 heures",
  "hour6": "6 heures",
  "presetOrCustom": "Préréglage / personnalisé",
  "autoBanMode": "Mode auto-ban",
  "soft": "Souple",
  "normal": "Normale",
  "aggressive": "Agressif",
  "custom": "Personnalisé",
  "method": "Méthode",
  "banMethod": "Méthode de ban",
  "both": "Les deux",
  "scoreGte": "Note ≥",
  "hitsGte": "Hits de requêtes ≥",
  "hits429Gte": "Hits liés aux 429 ≥",
  "scanHitsGte": "Hits chemins de scan ≥",
  "cooldown": "Refroidir",
  "maxPerHour": "Max par heure",
  "scanInterval": "Intervalle de scan",
  "schedulerDefault": "planificateur par défaut 120s",
  "collapse": "Réduire",
  "expand": "Développer",
  "step": "Étape",
  "mechanism": "Mécanisme",
  "youCanTune": "Réglable",
  "probe": "Sonder",
  "probeSignals": "WAN/taux de demande/TCP/f2b/UFW",
  "escalateThreshold": "Seuil d'escalade",
  "emergency": "Urgence",
  "neverAuto": "Jamais auto",
  "manualEmergency": "URGENCE manuelle",
  "signalNetworkDown": "WAN hors service",
  "signalHighReq": "Taux de requêtes élevé",
  "signalDdos": "Heuristique DDoS",
  "signalTcp": "Connexions TCP",
  "signalUfwOff": "UFW désactivé",
  "signalF2bBans": "Nombre de bans fail2ban",
  "weightHint": "Poids {{label}} 0–3",
  "detected": "(détecté)",
  "notSet": "(non défini)",
  "zonesComma": "Zones (séparées par des virgules)",
  "underAttackRequested": "Under Attack demandé",
  "underAttackCleared": "Clear UA demandé",
  "autoBanOpen": "Activé · {{mode}} · cette heure {{n}}/{{max}}",
  "autoBanClosed": "Désactivé — manuel/liste uniquement",
  "pausedNoExecute": "· en pause (pas d'EXECUTE)",
  "circuitOpen": "· circuit ouvert",
  "autoBanModeLabel": "Mode auto-ban",
  "scanned": "Scanné",
  "bulkOps": "Actions groupées",
  "fromAccessLog": "Depuis le journal d'accès · ban en un clic ou groupé",
  "noSuspectIps": "Aucune IP suspecte pour l'instant",
  "noSuspectDesc": "Apparaît lorsque du trafic scan/429 est détecté. Développez pour un ban manuel.",
  "whitelistPlus": "Liste blanche + {{ip}}",
  "whitelistAdded": "Ajouté à la liste blanche",
  "activeBansTitle": "Bans actifs ({{count}})",
  "activeBansDesc": "Agrégat de protection · débannir via l'API defense (identique à fail2ban-client)",
  "source": "Source",
  "unbanned": "Débanni",
  "noBans": "Aucun ban",
  "noBansDesc": "Les bans s'affichent ici",
  "collapseQuickAdd": "Réduire l'ajout rapide",
  "quickAddOne": "Ajout rapide",
  "removeItem": "Retirer {{w}}",
  "updated": "Mis à jour",
  "ipOrCidr": "IPv4/IPv6 ou CIDR",
  "autoBanWhitelistAdded": "Ajouté à la liste blanche d'auto-ban",
  "added": "Ajouté",
  "banIpPlaceholder": "IPv4 ou IPv6 à bannir",
  "reason": "Motif",
  "scanBrute": "Scanner/brut",
  "noSignals": "Aucun signal pour l'instant",
  "pressReprobe": "Appuyez sur re-probe",
  "points": "points",
  "noTopIps": "Aucune IP en tête pour l'instant",
  "topIpsAfterLog": "S'affiche une fois les journaux disponibles",
  "noManagedVhost": "Aucun vhost géré",
  "afterPresetMarker": "L'application du préréglage injecte le marqueur",
  "injected": "YSK_DEFENSE injecté",
  "notInjected": "Non injecté",
  "noEvents": "Aucun événement pour l'instant",
  "eventsAfterOps": "Apparaissent après apply/ban",
  "geoipUpdated": "Base GeoIP mise à jour",
  "dbReady": "Base prête",
  "stale": "Obsolète",
  "older7d": ">7 jours",
  "freshnessNa": "n / A",
  "freshnessMissing": "Aucune base de données",
  "freshnessStale": "Vicié",
  "freshnessFresh": "Actuel",
  "lastSuccess": "Dernier succès",
  "downloaded": "Téléchargé",
  "missing": "Manquant",
  "geoMode": "Mode d'accès géo",
  "denyList": "Liste de refus",
  "allowListHighRisk": "Liste d'autorisation · risque élevé",
  "autoUpdateDb": "Mise à jour auto de la base",
  "countriesSelected": "Pays ({{n}} sélectionnés)",
  "searchCountry": "Rechercher nom chinois ou ISO",
  "countryPlaceholder": "Chine / CN",
  "regionsSelected": "Régions ({{n}} sélectionnées)",
  "regionsHint": "Depuis les pays sélectionnés ; CN-GD personnalisé OK",
  "pickCountryFirst": "Sélectionnez d'abord des pays pour affiner la liste",
  "customRegion": "Personnalisé, ex. CN-GD",
  "regionPlaceholder": "Guangdong / Californie / Tokyo",
  "continentsSelected": "Continents ({{n}} sélectionnés)",
  "continentsHint": "Continents optionnels",
  "continentPlaceholder": "Asie / UE",
  "asnsSelected": "ASN fournisseur ({{n}} sélectionnés)",
  "asnsHint": "Cloud/FAI ; ASN personnalisé OK",
  "customAsn": "ASN personnalisé, ex. 13335",
  "asnPlaceholder": "Cloudflare / FAI",
  "cityExample": "ex. CN|Shenzhen ou US|Ashburn",
  "policySaved": "Politique enregistrée · pays {{c}} · régions {{r}} · ASN {{a}}",
  "ipPolicySaved": "Politique d'accès IP enregistrée",
  "nginxGeoWritten": "Snippet geo nginx écrit",
  "ipAddress": "Adresse IP",
  "lookupPlaceholder": "IPv4 ou IPv6 à interroger",
  "wouldBlock": "Bloquerait · {{reason}} · {{matched}}",
  "wouldAllow": "Autoriser · {{reason}}",
  "lookupDone": "Recherche terminée",
  "item": "Champ",
  "value": "Valeur",
  "country": "Pays",
  "region": "Région",
  "city": "Ville",
  "continent": "Continent",
  "coords": "Coordonnées",
  "provider": "Fournisseur",
  "policy": "Politique",
  "block": "Bloquer",
  "allow": "Autoriser",
  "matched": "Correspondance",
  "applyStricterTitle": "Appliquer le préréglage plus strict ?",
  "applyStricterDesc": "Peut activer le bannissement auto. Confirmez que votre IP est en liste blanche.",
  "confirmEmergencyTitle": "Confirmer le préréglage d'urgence",
  "confirmEmergencyDesc": "L'urgence limite extrêmement le débit. Confirmez la liste blanche et tapez EMERGENCY.",
  "confirmString": "Chaîne de confirmation",
  "applyEmergency": "Appliquer l'urgence",
  "sectionPreset": "Préréglages",
  "sectionAutoPreset": "① Préréglage auto",
  "sectionAutoBan": "② Bannissement auto",
  "unban": "Débannir",
  "ban": "Bannir",
  "banConfirmTitle": "Interdire {{ip}} ?",
  "banConfirmMethod": "Méthode : {{method}}",
  "banConfirmUntilUnban": "Reste banni jusqu'à ce que vous le débannissiez (ou jusqu'à l'expiration de fail2ban).",
  "banConfirmDesc": "Cette IP sera bloquée sur l'hôte. Confirmez qu’il ne s’agit pas d’une adresse de panel ou de session actuelle.",
  "wlRemovedUndo": "Suppression de {{ip}} de la liste verte. Annulez dans les 5 secondes.",
  "undo": "Défaire",
  "banSelectedConfirmTitle": "Interdire {{count}} IP sélectionnées ?",
  "banSelectedConfirmDesc": "Ces adresses seront bloquées sur l'hébergeur : {{ips}}",
  "save": "Enregistrer",
  "yes": "Oui",
  "no": "Non",
  "oneClickSuggested": "Appliquer le préréglage suggéré",
  "stackApply": "Appliquer la pile de protection (UFW, fail2ban, preset)",
  "stackApplyDone": "Application de la pile de protection demandée",
  "stackApplyHint": "Cela active UFW et applique fail2ban ainsi que le préréglage suggéré. Confirmez que vous ne vous bloquerez pas hors d'un panneau distant.",
  "viewPresets": "Voir les préréglages",
  "suspectIpsCount": "IP suspectes {{count}}",
  "goBans": "Aller aux bannissements",
  "singleEntryPrefix": "Entrée unique :",
  "singleEntryBody": " ",
  "emergencyNeverAuto": "urgence jamais auto",
  "writeOnlyBanner": "Écriture seule : l'application système nécessite EXECUTE=1 et root.",
  "readiness": "Disponibilité",
  "goTo": "Ouvrir",
  "presetGuide": "",
  "active": "Actif",
  "recommended": "Suggéré",
  "useCarefully": "Attention",
  "preview": "Aperçu",
  "stackToolsSee": "Outils stack dans l'onglet Stack ·",
  "readinessCheck": "Contrôle de préparation",
  "automationMasterLabel": "Interrupteur principal d'automatisation",
  "runOneTick": "Lancer un cycle maintenant",
  "suggestEmergencyBanner": "Score très élevé — le système suggère l'urgence mais ne l'appliquera pas automatiquement. Confirmez dans l'onglet Response.",
  "autoPresetDesc": "Basculement auto daily/hardened/under-attack selon le score. Urgence jamais auto.",
  "allowDeescalate": "Autoriser la désescalade auto",
  "autoBanThresholdHint": "seuils soft/normal/aggressive ;",
  "sectionMechanism": "③ Fonctionnement",
  "lastNotes": "Dernier : {{notes}}",
  "sectionWeights": "④ Poids des signaux (0–3)",
  "weightsDesc": "Par défaut 1 ;",
  "needCfToken": "Nécessite l'env CF_API_TOKEN",
  "cfOnEscalate": ". Peut appeler l'API lors de l'escalade vers under-attack ou d'une application manuelle.",
  "ufwOnlyCf": "Under attack : UFW n'autorise que les plages CF (+SSH)",
  "ufwOnlyCfHint": "Réinitialise UFW aux seules IP Cloudflare ; nécessite les droits de modification système.",
  "saveZones": "Enregistrer les zones",
  "uaNow": "Under Attack maintenant",
  "uaClear": "Clair (→ élevé)",
  "stackRoleNote": "UFW et fail2ban sont des pages d’outils sous Protection (pas de navigation de premier niveau). La barre latérale ne conserve que cette page.",
  "fwUfwTitle": "Pare-feu UFW",
  "fwStats": "Politique de ports · DENY permanent · autoriser {{allow}} · refuser {{deny}}",
  "fwRulesProfiles": "Règles et profils UFW",
  "f2bStats": "Journal des bans temporaires · {{jails}} jails · bannis {{banned}}",
  "jailsWhitelistPolicy": "Jails · liste blanche · politique",
  "divisionTitle": "Répartition des rôles",
  "divisionUfw": "UFW = quels ports ouverts, refus IP permanent",
  "divisionF2b": "fail2ban = ban temporaire après analyse des journaux",
  "divisionDefense": "Cette page = orchestration des attaques (préréglages de débit + auto-ban + suspects)",
  "autoBanLabel": "Bannissement auto",
  "scanOnce": "Analyser une fois",
  "selectedIps": "{{count}} IP sélectionnée(s)",
  "banSelected": "Bannir la sélection",
  "suspectIps": "IP suspectes",
  "selectAll": "Tout sélectionner",
  "alreadyBanned": "Bannis",
  "whitelist": "Liste blanche",
  "bansWorkflow": "Réponse : liste des suspects → ban/déban. Politique des jails, ignoreip, cycle de vie du service :",
  "f2bTool": "Outil fail2ban",
  "noSecondJail": "(pas de second éditeur de jail ici).",
  "autoBanWhitelistTitle": "Liste blanche auto-ban",
  "autoBanWhitelistDesc": "Exemptions d’auto-ban Protection (synchronise fail2ban ignoreip",
  "ufwOff": "UFW (éteint)",
  "ufwOffHint": "UFW n'est pas actif — fail2ban est la cible utilisable.",
  "whitelistSyncHint": "{{n}} entrées du panneau · fail2ban ignoreip sync : {{sync}}",
  "whitelistSyncOn": "sur",
  "whitelistSyncOff": "désactivé (les listes peuvent différer)",
  "ignoreipWhitelist": "liste blanche ignoreip",
  "notSetSuggestAdmin": "Non défini (ajoutez l’IP d’administration)",
  "moreItems": "… {{n}} de plus · voir la liste blanche fail2ban",
  "add": "Ajouter",
  "manualBanTitle": "Bannissement manuel",
  "methodFollows": "La méthode suit la sélection ci-dessus (fail2ban / UFW)",
  "preferSuspectList": "En général, la liste des suspects suffit.",
  "threatSignals": "Signaux de menace",
  "scoreSource": "Sources de score · poids réglables",
  "accessAuthSample": "échantillons access + auth",
  "fullLogsAt": "Journaux nginx/auth complets :",
  "logCenter": "Centre de journaux",
  "colScore": "Score",
  "colHits": "Requêtes",
  "col429": "429",
  "topIpsTitle": "IP en tête",
  "hitsCount": "{{n}} requêtes",
  "sampleWindowHint": "Les comptes viennent de la fenêtre d’échantillons access + auth actuelle, pas du fichier journal complet.",
  "banShort": "Bannir",
  "vhostLimits": "Limites de débit par vhost",
  "eventStream": "Flux d’événements",
  "eventKind": {
    "preset": "Préréglage",
    "auto_preset": "Préréglage auto",
    "cloudflare_ua": "Flare nuageuse",
    "ban": "Bannir",
    "unban": "Débannir"
  },
  "hours48": "48 heures",
  "geoipDb": "Base GeoIP",
  "refreshStatus": "Actualiser l'état",
  "updateDbNow": "Mettre à jour la DB maintenant",
  "geoipSourceHint": "Utilise la base GeoIP locale par défaut ; jeton IPinfo optionnel.",
  "retry": "Réessayer",
  "loadingGeoip": "Chargement de l’état GeoIP…",
  "nextScheduledUpdate": "Prochaine mise à jour planifiée : {{at}}",
  "statusNotLoaded": "État non chargé",
  "load": "Charge",
  "accessPolicy": "Politique d’accès",
  "enable": "Activer",
  "freeGranularity": "Gratuit max : pays + région + ASN ; ville optionnelle (désactivée par défaut, précision moindre). Fournisseur = ASN. La liste blanche est toujours exemptée. Cliquez sur une pastille pour retirer.",
  "allowListDanger": "Le mode liste d’autorisation est à haut risque : les IP publiques non listées (y compris géo inconnue) sont bloquées. Assurez-vous que l’IP d’administration figure sur la liste blanche de la page de ban.",
  "dailySchedule": "Planification quotidienne",
  "cityPolicy": "Politique ville (faible confiance · optionnel)",
  "useCityAccess": "Utiliser la ville pour l’accès",
  "cityPolicyHint": "La précision ville de la DB gratuite est limitée",
  "noCitiesYet": "Aucune ville pour l’instant",
  "savePolicy": "Enregistrer la politique",
  "applyNginxSnippet": "Appliquer l’extrait Nginx",
  "nginxSnippetHint": "Le blocage HTTP nécessite le module nginx geoip2.",
  "testIp": "IP de test",
  "lookup": "Recherche",
  "plusCountry": "+ pays {{v}}",
  "plusRegion": "+ région {{v}}",
  "plusCity": "+ ville {{v}}",
  "lastTickPrefix": "· dernier {{t}}",
  "nextTickPrefix": "· prochain {{t}}",
  "cannotBanSelf": "Impossible d’interdire {{ip}} — c’est l’hôte, votre IP de connexion ou ignoreip",
  "selfIp": "Cet hôte",
  "selfHostIp": "IP de l'hôte",
  "selfLoginIp": "Votre IP de connexion",
  "showZeroScore": "Afficher le score 0",
  "hideZeroScore": "Masquer le score 0",
  "geoDraftOnly": "Politique désactivée — Enregistrer n’écrit qu’un brouillon. Nginx n’applique rien tant qu’elle n’est pas activée.",
  "geoNeedDb": "Les bases de données GeoIP sont manquantes : mettez d'abord à jour les fichiers MMDB",
  "uaNeedZones": "Définir d'abord une zone Cloudflare",
  "selectAllCountriesWarn": "Tout sélectionner en liste de blocage ? Cela peut bloquer cet hôte et votre pays de connexion.",
  "badgeRecommendPreset": "Un préréglage plus fort est recommandé pour la menace actuelle",
  "badgeAutomationOn": "L’automatisation est activée",
  "badgeBanCount": "Interdictions actives",
  "badgeGeoOn": "La politique d’accès Geo est activée",
  "badgeGeoNotReady": "La base GeoIP n’est pas prête",
  "badgeIntelSignals": "Signaux qui ajoutent au score actuellement",
  "signalActive": "Actif",
  "signalInactive": "Inactif",
  "signalJails": "{{n}} prison(s)",
  "dbReadyHint": "Fichiers MMDB présents",
  "dbNotReadyHint": "Téléchargez d’abord une base GeoIP",
  "staleHint": "Si la dernière mise à jour réussie a plus de 7 jours",
  "draftBadge": "Brouillon",
  "banIsSelf": "Cette IP correspond à la source actuelle du panneau ou à cet hôte.",
  "banNotSelf": "Cette adresse IP n'est pas la source actuelle du panneau.",
  "geoSourceLocal": "Bibliothèque GeoIP locale (sapics + DB-IP)",
  "nginxPreviewHint": "Extrait Nginx que ce préréglage écrirait (aperçu uniquement) :"
}
