#
msgid ""
msgstr ""
"Project-Id-Version: Login Armor 2.4.8\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/login-armor\n"
"POT-Creation-Date: 2026-04-29 09:00:00+0000\n"
"PO-Revision-Date: 2026-08-06 09:54:09+0000\n"
"Last-Translator: Fabrice Ducarme <wibeweb@gmail.com>\n"
"Language-Team: French (France) <fr@wpformation.com>\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Domain: login-armor\n"
"X-Generator: Login Armor i18n tooling\n"

#: admin/class-admin.php:184 admin/class-admin.php:185
#: admin/views/two-factor-verify.php:78
msgid "Login Armor"
msgstr "Login Armor"

#: admin/class-admin.php:325
msgid "Unblock this IP address?"
msgstr "Débloquer cette adresse IP ?"

#: admin/class-admin.php:326
msgid "Delete all logs older than the selected period? This cannot be undone."
msgstr ""
"Supprimer tous les journaux plus anciens que la période sélectionnée ? Cette"
" action est irréversible."

#: admin/class-admin.php:327
msgid "Done."
msgstr "Fait."

#: admin/class-admin.php:328
msgid "An error occurred. Please try again."
msgstr "Une erreur s’est produite. Veuillez réessayer."

#: admin/class-admin.php:375 admin/class-admin.php:421
#: admin/class-admin.php:484 admin/class-admin.php:491
#: admin/class-admin.php:498 admin/class-admin.php:504
#: admin/class-admin.php:510 admin/class-admin.php:527
#: admin/class-admin.php:533 admin/class-admin.php:539
#: admin/class-admin.php:545 admin/class-admin.php:552
#: admin/class-admin.php:558 admin/class-admin.php:564
#: admin/class-admin.php:571 admin/class-admin.php:577
#: admin/class-admin.php:589 admin/class-admin.php:666
#: admin/class-admin.php:2093 admin/class-admin.php:2101
msgid "Cancel"
msgstr "Annuler"

#: admin/class-admin.php:376 admin/class-admin.php:2102
msgid "Confirm"
msgstr "Confirmer"

#: admin/class-admin.php:377 admin/class-admin.php:2103
msgid "I understand"
msgstr "Je comprends"

#: admin/class-admin.php:380
msgid "7 recommended defaults active."
msgstr "7 valeurs recommandées par défaut activés."

#: admin/class-admin.php:381 admin/views/sections/hardening.php:171
msgid "Enables the 7 most common security toggles at once."
msgstr ""
"Active en une seule fois les 7 options de sécurité les plus courantes."

#: admin/class-admin.php:382
msgid "All 7 recommended defaults are already active."
msgstr "Les 7 valeurs recommandées par défaut sont déjà toutes activés."

#: admin/class-admin.php:385 admin/views/sidebar/events.php:24
#: admin/views/tabs/events.php:261 admin/views/tabs/incidents.php:610
#: admin/views/tabs/overview.php:473
msgid "OK"
msgstr "OK"

#: admin/class-admin.php:386 admin/views/sidebar/events.php:25
#: admin/views/tabs/events.php:256 admin/views/tabs/incidents.php:620
#: admin/views/tabs/overview.php:475
msgid "FAIL"
msgstr "ÉCHEC"

#: admin/class-admin.php:387 admin/views/sidebar/events.php:26
#: admin/views/tabs/activity.php:202 admin/views/tabs/events.php:266
#: admin/views/tabs/incidents.php:615 admin/views/tabs/overview.php:474
msgid "BLOCKED"
msgstr "BLOQUÉE"

#: admin/class-admin.php:388 admin/views/tabs/events.php:263
#: admin/views/tabs/incidents.php:607 admin/views/tabs/overview.php:557
msgid "Successful sign-in"
msgstr "Connexion réussie"

#: admin/class-admin.php:389 admin/views/tabs/overview.php:559
msgid "Locked out"
msgstr "Verrouillé"

#: admin/class-admin.php:390
msgid "Auth denied — wrong password"
msgstr "Accès refusé : mot de passe incorrect"

#: admin/class-admin.php:391
msgid "No events recorded yet."
msgstr "Aucun évènement enregistré pour l’instant."

#: admin/class-admin.php:392 admin/views/tabs/events.php:110
#: admin/views/tabs/overview.php:486
msgid "Chrome on macOS"
msgstr "Chrome sur macOS"

#: admin/class-admin.php:393 admin/views/tabs/events.php:111
#: admin/views/tabs/overview.php:487
msgid "Chrome on Windows"
msgstr "Chrome sur Windows"

#: admin/class-admin.php:394 admin/views/tabs/events.php:112
#: admin/views/tabs/overview.php:488
msgid "Chrome on Linux"
msgstr "Chrome sur Linux"

#: admin/class-admin.php:395 admin/views/tabs/events.php:113
#: admin/views/tabs/overview.php:489
msgid "Safari on iOS"
msgstr "Safari sur iOS"

#: admin/class-admin.php:396 admin/views/tabs/events.php:114
#: admin/views/tabs/overview.php:490
msgid "Safari on iPadOS"
msgstr "Safari sur iPadOS"

#: admin/class-admin.php:397 admin/views/tabs/events.php:115
#: admin/views/tabs/overview.php:491
msgid "Safari on macOS"
msgstr "Safari sur macOS"

#: admin/class-admin.php:398 admin/views/tabs/events.php:116
#: admin/views/tabs/overview.php:492
msgid "Firefox"
msgstr "Firefox"

#: admin/class-admin.php:399 admin/views/tabs/events.php:117
#: admin/views/tabs/overview.php:493
msgid "Edge"
msgstr "Edge"

#: admin/class-admin.php:400 admin/views/tabs/events.php:118
#: admin/views/tabs/overview.php:494
msgid "curl"
msgstr "curl"

#: admin/class-admin.php:401 admin/views/tabs/events.php:119
#: admin/views/tabs/overview.php:495
msgid "wget"
msgstr "wget"

#: admin/class-admin.php:402 admin/views/tabs/events.php:120
#: admin/views/tabs/overview.php:496
msgid "python-requests"
msgstr "python-requests"

#: admin/class-admin.php:403 admin/views/tabs/events.php:121
#: admin/views/tabs/overview.php:497
msgid "Go http-client"
msgstr "Go http-client"

#: admin/class-admin.php:404 admin/views/tabs/events.php:122
#: admin/views/tabs/overview.php:498
msgid "Bot / crawler"
msgstr "Bot / robot"

#: admin/class-admin.php:411
msgid ""
"After <strong>%1$d</strong> failed attempts, the IP is locked for "
"<strong>%2$d minutes</strong>. After <strong>%3$d</strong> lockouts within "
"<strong>%4$d hours</strong>, the ban extends to <strong>%5$d hours</strong>."
" Failed attempts reset after <strong>%6$d hours</strong> of inactivity."
msgstr ""
"Après <strong>%1$d</strong> tentatives échouées, l’IP est verrouillée "
"pendant <strong>%2$d minutes</strong>. Après <strong>%3$d</strong> "
"verrouillages en <strong>%4$d heures</strong>, le bannissement passe à "
"<strong>%5$d heures</strong>. Le compteur se remet à zéro après <strong>%6$d"
" heures</strong> d’inactivité."

#: admin/class-admin.php:415 admin/views/sections/hide-login.php:95
msgid "Enable Hide Login"
msgstr "Activer Hide Login"

#: admin/class-admin.php:416
msgid ""
"Pick the secret URL for your login page. Visitors will not be able to "
"discover it."
msgstr ""
"Choisissez l’URL secrète de votre page de connexion. Les visiteurs ne "
"pourront pas la découvrir."

#: admin/class-admin.php:417
msgid "Your login slug"
msgstr "Identifiant d’URL de connexion"

#: admin/class-admin.php:418
msgid "Lowercase letters, digits, and hyphens. 3 to 64 characters."
msgstr "Lettres minuscules, chiffres et tirets. 3 à 64 caractères."

#: admin/class-admin.php:419 admin/views/sections/activity-webhook.php:93
#: admin/views/sections/ai-panel.php:103
#: admin/views/sections/hide-login.php:137
msgid "Regenerate"
msgstr "Régénérer"

#: admin/class-admin.php:420
msgid "Email me this URL (recommended — you will need it to log in)."
msgstr ""
"M’envoyer cette URL par e-mail (recommandé : vous en aurez besoin à chaque "
"connexion)."

#: admin/class-admin.php:422
msgid "Activate Hide Login"
msgstr "Activer Hide Login"

#: admin/class-admin.php:423
msgid "This slug cannot be used. Try another or click Regenerate."
msgstr ""
"Cet identifiant ne peut pas être utilisé. Essayez-en un autre ou cliquez sur"
" Régénérer."

#: admin/class-admin.php:424
msgid "Something went wrong. Try again."
msgstr "Une erreur est survenue. Réessayez."

#: admin/class-admin.php:480
msgid "Block subnet?"
msgstr "Bloquer le sous-réseau ?"

#: admin/class-admin.php:482
msgid ""
"Block the /24 subnet containing %s. All IPs in that range will be denied "
"immediately."
msgstr ""
"Bloquer le sous-réseau /24 contenant %s. Toutes les IP de cette plage seront"
" refusées immédiatement."

#: admin/class-admin.php:483 admin/views/tabs/incidents.php:370
#: admin/views/tabs/incidents.php:483 admin/views/tabs/incidents.php:1068
msgid "Block subnet"
msgstr "Bloquer le sous-réseau"

#: admin/class-admin.php:487
msgid "Remove from blocklist?"
msgstr "Retirer de la liste de blocage ?"

#: admin/class-admin.php:489
msgid ""
"The /24 subnet containing %s will be removed from the manual blocklist. "
"Previously blocked IPs in that range can attempt logins again."
msgstr ""
"Le sous-réseau /24 contenant %s sera retiré de la liste de blocage manuelle."
" Les IPs précédemment bloquées dans cette plage pourront à nouveau tenter de"
" se connecter."

#: admin/class-admin.php:490 admin/views/tabs/incidents.php:489
#: admin/views/tabs/incidents.php:1074
msgid "Remove from blocklist"
msgstr "Retirer de la liste de blocage"

#: admin/class-admin.php:494
msgid "Unblock IP?"
msgstr "Débloquer l’IP ?"

#: admin/class-admin.php:496
msgid ""
"IP %s will be removed from the blocklist and can attempt logins again "
"immediately."
msgstr ""
"L’IP %s sera retirée de la liste de blocage et pourra à nouveau tenter de se"
" connecter immédiatement."

#: admin/class-admin.php:497
msgid "Unblock"
msgstr "Débloquer"

#: admin/class-admin.php:501
msgid "Generate a new Hide Login URL?"
msgstr "Générer une nouvelle URL Hide Login ?"

#: admin/class-admin.php:502
msgid ""
"Your current URL will stop working immediately. Bookmark the new one before "
"closing this tab."
msgstr ""
"Votre URL actuelle cessera de fonctionner immédiatement. Enregistrez la "
"nouvelle dans vos favoris avant de fermer cet onglet."

#: admin/class-admin.php:503
msgid "Generate new URL"
msgstr "Générer une nouvelle URL"

#: admin/class-admin.php:507
msgid "Reset Hide Login to defaults?"
msgstr "Réinitialiser Hide Login aux valeurs par défaut ?"

#: admin/class-admin.php:508
msgid "This generates a new random URL and switches the redirect to 404."
msgstr ""
"Cette action génère une nouvelle URL aléatoire et bascule la redirection sur"
" 404."

#: admin/class-admin.php:509 admin/class-admin.php:538
#: admin/views/tabs/activity.php:507 admin/views/tabs/events.php:237
#: admin/views/tabs/incidents.php:886
msgid "Reset"
msgstr "Réinitialiser"

#: admin/class-admin.php:518
msgid "Disable Hide Login?"
msgstr "Désactiver Hide Login ?"

#: admin/class-admin.php:519
msgid ""
"/wp-login.php will become reachable again at its default location. Your slug"
" is kept so you can re-enable later with one click."
msgstr ""
"/wp-login.php redeviendra accessible à son emplacement par défaut. Votre "
"slug est conservé pour que vous puissiez réactiver plus tard en un clic."

#: admin/class-admin.php:520 admin/class-admin.php:532
#: admin/class-admin.php:544 admin/class-admin.php:563
#: admin/class-admin.php:582 admin/class-admin.php:588
#: admin/class-admin.php:594 admin/class-admin.php:610
#: admin/class-admin.php:623 admin/class-admin.php:638
#: admin/class-admin.php:650 admin/views/sections/activity-settings.php:48
#: admin/views/sections/breach-check.php:55
#: admin/views/sections/detection-logs.php:52
#: admin/views/sections/firewall.php:72 admin/views/sections/geoip.php:50
#: admin/views/sections/hide-login.php:54
#: admin/views/sections/limit-login.php:57
#: admin/views/sections/login-headers.php:55
#: admin/views/sections/notifications.php:60
#: admin/views/sections/password-policy.php:51
#: admin/views/sections/session.php:50
#: admin/views/sections/two-factor-settings.php:54
#: admin/views/tabs/settings.php:506
msgid "Disable"
msgstr "Désactiver"

#: admin/class-admin.php:521 admin/class-admin.php:583
#: admin/class-admin.php:595 admin/class-admin.php:611
#: admin/class-admin.php:624 admin/class-admin.php:639
#: admin/class-admin.php:651
msgid "Keep enabled"
msgstr "Laisser activé"

#: admin/class-admin.php:524
msgid "Enable brute force protection?"
msgstr "Activer la protection force brute ?"

#: admin/class-admin.php:525
msgid "IPs with too many failed logins will be temporarily locked out."
msgstr ""
"Les IP cumulant trop d’échecs de connexion seront temporairement "
"verrouillées."

#: admin/class-admin.php:526
msgid "Enable"
msgstr "Activer"

#: admin/class-admin.php:530
msgid "Disable brute force protection?"
msgstr "Désactiver la protection force brute ?"

#: admin/class-admin.php:531
msgid "Your site will no longer rate-limit login attempts."
msgstr "Votre site ne limitera plus le débit des tentatives de connexion."

#: admin/class-admin.php:536
msgid "Reset brute force settings?"
msgstr "Réinitialiser les réglages de protection force brute ?"

#: admin/class-admin.php:537
msgid "All brute force thresholds will return to their default values."
msgstr ""
"Tous les seuils de protection force brute reviendront à leurs valeurs par "
"défaut."

#: admin/class-admin.php:542
msgid "Disable detection & logging?"
msgstr "Désactiver la détection et la journalisation ?"

#: admin/class-admin.php:543
msgid "Login attempts will no longer be recorded."
msgstr "Les tentatives de connexion ne seront plus enregistrées."

#: admin/class-admin.php:548
msgid "Delete old logs?"
msgstr "Supprimer les anciens journaux ?"

#: admin/class-admin.php:550
msgid ""
"Delete all logs and incidents older than %s days? This cannot be undone."
msgstr ""
"Supprimer tous les journaux et incidents plus anciens que %s jours ? Cette "
"action est irréversible."

#: admin/class-admin.php:551 admin/class-admin.php:570
msgid "Delete"
msgstr "Supprimer"

#: admin/class-admin.php:561
msgid "Disable activity logging?"
msgstr "Désactiver la journalisation d’activité ?"

#: admin/class-admin.php:562
msgid "Existing logs will be preserved."
msgstr "Les journaux existants seront conservés."

#: admin/class-admin.php:567
msgid "Delete old admin activity logs?"
msgstr "Supprimer les anciens journaux d’activité administrateur ?"

#: admin/class-admin.php:569
msgid ""
"Delete every admin-action log (user edits, plugin changes, settings updates,"
" etc.) older than %s days. Login events and incidents are not affected — "
"they have their own retention in Detection & Logs. This cannot be undone."
msgstr ""
"Supprimer tous les journaux d’actions d’administration (modifications de "
"comptes, changements d’extensions, mises à jour de réglages, etc.) plus "
"anciens que %s jours. Les évènements de connexion et les incidents ne sont "
"pas concernés : ils disposent de leur propre rétention dans Détection et "
"journaux. Cette action est irréversible."

#: admin/class-admin.php:580
msgid "Disable notifications?"
msgstr "Désactiver les notifications ?"

#: admin/class-admin.php:581
msgid ""
"Incidents will no longer trigger alerts. Your channel settings (webhook URL,"
" severity, rate limit) are preserved and restored when you re-enable."
msgstr ""
"Les incidents ne déclencheront plus d’alertes. Vos réglages de canal (URL du"
" webhook, sévérité, limite de débit) sont conservés et rétablis lors de la "
"réactivation."

#: admin/class-admin.php:586
msgid "Disable login page security headers?"
msgstr "Désactiver les en-têtes de sécurité de la page de connexion ?"

#: admin/class-admin.php:587
msgid ""
"The login form will no longer be protected against clickjacking and "
"credential theft via injected scripts."
msgstr ""
"Le formulaire de connexion ne sera plus protégé contre le détournement de "
"clic (clickjacking) et le vol d’identifiants via scripts injectés."

#: admin/class-admin.php:592
msgid "Disable Breach Check?"
msgstr "Désactiver la détection de fuites ?"

#: admin/class-admin.php:593
msgid ""
"New logins and profile updates will no longer be checked against public "
"breach corpora. Existing flags on user accounts are kept — they clear "
"automatically when the user changes their password."
msgstr ""
"Les nouvelles connexions et les mises à jour de profil ne seront plus "
"vérifiées face aux corpus de fuites publics. Les signalements existants sur "
"les comptes sont conservés : ils disparaissent automatiquement lorsque "
"l’utilisateur ou utilisatrice change son mot de passe."

#: admin/class-admin.php:598
msgid "Breach Check enabled."
msgstr "Détection de fuites activée."

#: admin/class-admin.php:599
msgid "Breach Check disabled."
msgstr "Détection de fuites désactivée."

#: admin/class-admin.php:600 admin/class-admin.php:616
#: admin/class-admin.php:629
msgid "Settings saved."
msgstr "Réglages enregistrés."

#: admin/class-admin.php:601
msgid "Could not enable Breach Check."
msgstr "Impossible d’activer la détection de fuites."

#: admin/class-admin.php:602
msgid "Could not disable Breach Check."
msgstr "Impossible de désactiver la détection de fuites."

#: admin/class-admin.php:338 admin/class-admin.php:603
#: admin/class-admin.php:671
msgid "Save failed."
msgstr "L’enregistrement a échoué."

#: admin/class-admin.php:605
msgid "Scanned %1$d administrator emails, %2$d flagged."
msgstr "Scan : %1$d e-mails d’administration vérifiés, %2$d signalés."

#: admin/class-admin.php:313 admin/class-admin.php:334
#: admin/class-admin.php:672
msgid "Network error."
msgstr "Erreur réseau."

#: admin/class-admin.php:682
msgid "You do not have permission to access this page."
msgstr "Vous n’avez pas la permission d’accéder à cette page."

#. translators: %s: conflicting plugin name
#: admin/class-admin.php:804
msgid ""
"Login Armor Hide Login may conflict with %s. Please deactivate one of them "
"to avoid unexpected behavior."
msgstr ""
"Login Armor Hide Login peut entrer en conflit avec %s. Veuillez désactiver "
"l’un des deux pour éviter tout comportement inattendu."

#: admin/class-admin.php:1091
msgid "Invalid IP."
msgstr "IP invalide."

#: admin/class-admin.php:1323
msgid "This slug cannot be used."
msgstr "Ce slug ne peut pas être utilisé."

#: admin/class-admin.php:1782
msgid "Unable to encrypt the TOTP secret. Contact the site administrator."
msgstr ""
"Impossible de chiffrer le secret TOTP. Contactez l’administrateur ou "
"l’administratrice du site."

#: admin/class-admin.php:1895 admin/class-admin.php:2120
msgid "Invalid code. Please try again."
msgstr "Code invalide. Veuillez réessayer."

#: admin/class-admin.php:2112 admin/views/two-factor-verify.php:183
msgid "Use a different method"
msgstr "Utiliser une autre méthode"

#: admin/class-admin.php:2113
msgid "Hide other methods"
msgstr "Masquer les autres méthodes"

#: admin/class-admin.php:2114 admin/views/two-factor-verify.php:175
msgid "Resend code"
msgstr "Renvoyer le code"

#: admin/class-admin.php:2116
msgid "Resend in %ds"
msgstr "Renvoi dans %ds"

#: admin/class-admin.php:2117
msgid "Copied!"
msgstr "Copié !"

#: admin/class-admin.php:2118 admin/views/profile/two-factor.php:174
#: admin/views/sections/activity-webhook.php:92
#: admin/views/sections/hide-login.php:130
msgid "Copy"
msgstr "Copier"

#: admin/class-admin.php:2119
msgid "Please enter a 6-digit code."
msgstr "Veuillez saisir un code à 6 chiffres."

#: admin/class-admin.php:2095 admin/class-admin.php:2121
msgid "Network error. Please try again."
msgstr "Erreur réseau. Veuillez réessayer."

#: admin/class-admin.php:2123
msgid "Are you sure you want to disable two-factor authentication?"
msgstr ""
"Confirmez-vous la désactivation de l’authentification à deux facteurs ?"

#: admin/class-admin.php:2124
msgid "This will invalidate your current backup codes. Continue?"
msgstr "Cela invalidera vos codes de secours actuels. Continuer ?"

#: admin/class-admin.php:2162
msgid "Webhook URL must start with https://."
msgstr "L’URL du webhook doit commencer par https://."

#: admin/class-admin.php:2323
msgid "Webhook URL must not point to a private, reserved or unresolvable address."
msgstr ""
"L’URL du webhook ne doit pas pointer vers une adresse privée, réservée ou non "
"résolvable."

#: admin/class-admin.php:2275
msgid "Report URI must start with https://."
msgstr "L’URI de rapport doit commencer par https://."

#: admin/class-admin.php:2735 includes/TwoFactor/Recovery.php:304
#: includes/TwoFactor/Recovery.php:345
msgid "Security check failed."
msgstr "La vérification de sécurité a échoué."

#: admin/class-admin.php:2739
msgid "Unauthorized access."
msgstr "Accès non autorisé."

#: admin/class-admin.php:2835 admin/class-admin.php:2865
msgid "Unauthorized."
msgstr "Non autorisé."

#: admin/class-admin.php:2843
msgid "Invalid IP address."
msgstr "Adresse IP invalide."

#. translators: %s: IP address that was unblocked.
#: admin/class-admin.php:2851
msgid "IP %s has been unblocked."
msgstr "L’IP %s a été débloquée."

#. translators: %d: Number of log entries deleted.
#: admin/class-admin.php:2879
msgid "%d log entries deleted."
msgstr "%d entrée·s de journal supprimée·s."

#: admin/views/page.php:22
msgid "Overview"
msgstr "Vue d’ensemble"

#: admin/views/page.php:23 admin/views/tabs/incidents.php:784
msgid "Incidents"
msgstr "Incidents"

#: admin/views/page.php:24 admin/views/tabs/events.php:147
msgid "Events"
msgstr "Évènements"

#: admin/views/page.php:25 admin/views/widget-dashboard.php:185
#: admin/views/sidebar/overview.php:29 admin/views/tabs/activity.php:32
#: admin/views/tabs/activity.php:33 admin/views/tabs/activity.php:242
#: admin/views/tabs/activity.php:244 admin/views/tabs/overview.php:395
msgid "Activity"
msgstr "Activité"

#: admin/views/page.php:49
msgid "Login Armor — go to Overview"
msgstr "Login Armor : aller à la Vue d’ensemble"

#: admin/views/page.php:62
msgid "Hide · Block · Watch"
msgstr "Masquer · Bloquer · Surveiller"

#: admin/views/page.php:66
msgid "Login Armor sections"
msgstr "Sections de Login Armor"

#: admin/views/profile/two-factor.php:37
msgid "Login Armor — Two-Factor Authentication"
msgstr "Login Armor : Authentification à deux facteurs"

#: admin/views/profile/two-factor.php:41 admin/views/tabs/overview.php:253
msgid "Not configured"
msgstr "Non configuré"

#: admin/views/profile/two-factor.php:51
msgid "Method"
msgstr "Méthode"

#: admin/views/profile/two-factor.php:55 admin/views/sidebar/settings.php:55
msgid "Authenticator App"
msgstr "Application d’authentification"

#: admin/views/profile/two-factor.php:56
#: admin/views/sections/notifications.php:111
msgid "Email"
msgstr "E-mail"

#: admin/views/profile/two-factor.php:57
msgid "Unknown"
msgstr "Inconnu"

#: admin/views/profile/two-factor.php:64
#: admin/views/sections/two-factor-settings.php:114
#: admin/views/sidebar/settings.php:57
msgid "Backup codes"
msgstr "Codes de secours"

#: admin/views/profile/two-factor.php:66
msgid "%d remaining"
msgstr "%d restant·s"

#: admin/views/profile/two-factor.php:77
msgid "Trusted devices"
msgstr "Appareils de confiance"

#. translators: %d: number of active trusted devices
#: admin/views/profile/two-factor.php:83
msgid "%d active"
msgid_plural "%d active"
msgstr[0] "%d actif"
msgstr[1] "%d actifs"

#. translators: 1: granted date, 2: expires date
#: admin/views/profile/two-factor.php:104
msgid "granted %1$s · expires %2$s"
msgstr "accordé le %1$s · expire le %2$s"

#: admin/views/profile/two-factor.php:113
msgid "Revoke"
msgstr "Révoquer"

#: admin/views/profile/two-factor.php:120
msgid "Revoke all devices"
msgstr "Révoquer tous les appareils"

#: admin/views/profile/two-factor.php:132
msgid "Disable 2FA"
msgstr "Désactiver l’A2F"

#: admin/views/profile/two-factor.php:135
msgid "Regenerate backup codes"
msgstr "Régénérer les codes de secours"

#: admin/views/profile/two-factor.php:141
msgid "Reset 2FA for this user"
msgstr "Réinitialiser l’A2F pour ce compte"

#: admin/views/profile/two-factor.php:149
msgid ""
"Protect your account with a second factor. Choose your preferred method:"
msgstr ""
"Protégez votre compte avec un second facteur. Choisissez votre méthode "
"préférée :"

#: admin/views/profile/two-factor.php:155
msgid "Set up Authenticator App"
msgstr "Configurer l’application d’authentification"

#: admin/views/profile/two-factor.php:160
msgid "Set up Email"
msgstr "Configurer l’e-mail"

#: admin/views/profile/two-factor.php:170
msgid "Open your authenticator app, tap +, and scan this QR code:"
msgstr ""
"Ouvrez votre application d’authentification, appuyez sur +, puis scannez ce "
"QR code :"

#: admin/views/profile/two-factor.php:176
msgid "Or enter this key manually in your app."
msgstr "Ou saisissez cette clé manuellement dans votre application."

#: admin/views/profile/two-factor.php:178
msgid "Enter the 6-digit code from your app to verify:"
msgstr ""
"Saisissez le code à 6 chiffres généré par votre application pour vérifier :"

#: admin/views/profile/two-factor.php:182
#: admin/views/profile/two-factor.php:192
msgid "Verify and continue"
msgstr "Vérifier et continuer"

#: admin/views/profile/two-factor.php:188
msgid "A verification code has been sent to your email. Enter it below:"
msgstr ""
"Un code de vérification a été envoyé à votre adresse e-mail. Saisissez-le "
"ci-dessous :"

#: admin/views/profile/two-factor.php:198
msgid "Save these backup codes in a safe place. Each can only be used once."
msgstr ""
"Enregistrez ces codes de secours en lieu sûr. Chacun ne peut être utilisé "
"qu’une seule fois."

#: admin/views/profile/two-factor.php:201
msgid "Download codes"
msgstr "Télécharger les codes"

#: admin/views/profile/two-factor.php:205
msgid "I've saved my backup codes"
msgstr "J’ai enregistré mes codes de secours"

#: admin/views/profile/two-factor.php:208
msgid "Complete setup"
msgstr "Terminer la configuration"

#: admin/views/sections/activity-settings.php:32
#: admin/views/sections/activity-webhook.php:32 admin/views/sections/ai.php:38
#: admin/views/sections/breach-check.php:39
#: admin/views/sections/detection-logs.php:36
#: admin/views/sections/geoip.php:34 admin/views/sections/limit-login.php:41
#: admin/views/sections/login-headers.php:39
#: admin/views/sections/password-policy.php:35
#: admin/views/sections/session.php:34
#: admin/views/sections/two-factor-settings.php:38
msgid "ACTIVE"
msgstr "ACTIF"

#: admin/views/sections/activity-settings.php:34
#: admin/views/sections/activity-webhook.php:34
#: admin/views/sections/breach-check.php:41
#: admin/views/sections/detection-logs.php:38
#: admin/views/sections/firewall.php:62 admin/views/sections/geoip.php:36
#: admin/views/sections/hide-login.php:40
#: admin/views/sections/limit-login.php:43
#: admin/views/sections/login-headers.php:41
#: admin/views/sections/notifications.php:46
#: admin/views/sections/password-policy.php:37
#: admin/views/sections/session.php:36
#: admin/views/sections/two-factor-settings.php:40
#: admin/views/tabs/activity.php:185
msgid "DISABLED"
msgstr "DÉSACTIVÉ"

#: admin/views/sections/activity-settings.php:39
#: admin/views/tabs/settings.php:363
msgid "Tracking admin actions across your site."
msgstr "Suivi des actions d’administration sur l’ensemble de votre site."

#: admin/views/sections/activity-settings.php:41
msgid "Admin action logging is currently disabled."
msgstr ""
"La journalisation des actions d’administration est actuellement désactivée."

#: admin/views/sections/activity-settings.php:68
msgid "Activity logging is disabled"
msgstr "La journalisation d’activité est désactivée"

#: admin/views/sections/activity-settings.php:69
msgid ""
"Admin actions are not being recorded. You will have no audit trail of site "
"changes."
msgstr ""
"Les actions d’administration ne sont pas enregistrées. Vous n’aurez aucune "
"piste d’audit des modifications du site."

#: admin/views/sections/activity-settings.php:74
msgid ""
"When enabled, key admin actions (user creation, plugin activation, settings "
"changes, etc.) are recorded with the author, timestamp, and context."
msgstr ""
"Une fois activée, les actions d’administration clés (création de compte, "
"activation d’extension, changement de réglages, etc.) sont enregistrées avec"
" l’auteur ou l’autrice, l’horodatage et le contexte."

#: admin/views/sections/activity-settings.php:82
msgid "Enable Activity Log"
msgstr "Activer le journal d’activité"

#: admin/views/sections/activity-settings.php:95
#: admin/views/sections/detection-logs.php:100
msgid "Log Retention"
msgstr "Rétention des journaux"

#: admin/views/sections/activity-settings.php:96
msgid "How long to keep activity log records before automatic cleanup."
msgstr ""
"Durée de conservation des entrées du journal d’activité avant nettoyage "
"automatique."

#: admin/views/sections/activity-settings.php:99
#: admin/views/sections/detection-logs.php:104
msgid "Keep logs for"
msgstr "Conserver les journaux pendant"

#: admin/views/sections/activity-settings.php:108
#: admin/views/sections/detection-logs.php:113
msgid "days"
msgstr "jours"

#: admin/views/sections/activity-settings.php:116
#: admin/views/sections/detection-logs.php:136
msgid "Manual Purge"
msgstr "Purge manuelle"

#: admin/views/sections/activity-settings.php:117
msgid "Immediately delete all activity logs older than the retention period."
msgstr ""
"Supprimer immédiatement tous les journaux d’activité plus anciens que la "
"période de rétention."

#: admin/views/sections/activity-settings.php:120
msgid "Purge old activity logs now"
msgstr "Purger les anciens journaux d’activité maintenant"

#: admin/views/sections/breach-check.php:46
msgid ""
"Passwords and email addresses are checked against public data breach corpora"
" on login and profile update."
msgstr ""
"Les mots de passe et les adresses e-mail sont vérifiés face à des corpus "
"publics de fuites de données lors de la connexion et des mises à jour de "
"profil."

#: admin/views/sections/breach-check.php:48
msgid ""
"Detect if your users are logging in with a password or email that appears in"
" public data leaks."
msgstr ""
"Détectez si vos utilisateurs et utilisatrices se connectent avec un mot de "
"passe ou un e-mail apparaissant dans des fuites de données publiques."

#: admin/views/sections/breach-check.php:75
msgid "Breach Check is disabled"
msgstr "La détection de fuites est désactivée"

#: admin/views/sections/breach-check.php:76
msgid ""
"The first cause of account takeover today is credential reuse — users "
"logging in with a password that already leaked somewhere else. This module "
"detects that condition passively, without blocking anyone."
msgstr ""
"La première cause de piratage de comptes aujourd’hui est la réutilisation "
"d’identifiants : des utilisateurs qui se connectent avec un mot de passe "
"déjà fuité ailleurs. Ce module détecte cette situation de façon passive, "
"sans bloquer personne."

#: admin/views/sections/breach-check.php:81
msgid ""
"When a user logs in, Login Armor checks the password against the public Have"
" I Been Pwned corpus using a privacy-preserving range lookup — only the "
"first 5 characters of a one-way hash ever leave your server. If a match is "
"found, the user gets a friendly warning on their profile page inviting them "
"to change their password. Admins see the count of flagged users on the "
"overview."
msgstr ""
"Lorsqu’un utilisateur ou une utilisatrice se connecte, Login Armor vérifie "
"son mot de passe face au corpus public Have I Been Pwned via une requête "
"préservant la confidentialité : seuls les 5 premiers caractères d’un hachage"
" à sens unique quittent votre serveur. En cas de correspondance, la personne"
" reçoit un avertissement bienveillant sur sa page de profil l’invitant à "
"changer son mot de passe. Les administrateurs voient le nombre "
"d’utilisateurs signalés sur la vue d’ensemble."

#: admin/views/sections/breach-check.php:84
msgid "Zero dependencies, zero keys, zero data leakage."
msgstr "Aucune dépendance, aucune clé, aucune fuite de données."

#: admin/views/sections/breach-check.php:85
msgid ""
"The API is free and keyless. Your users' passwords and emails never leave "
"the server in readable form."
msgstr ""
"L’API est gratuite et sans clé. Les mots de passe et e-mails de vos "
"utilisateurs et utilisatrices ne quittent jamais le serveur sous forme "
"lisible."

#: admin/views/sections/breach-check.php:94
msgid "Enable Breach Check"
msgstr "Activer la détection de fuites"

#: admin/views/sections/breach-check.php:115
msgid "What gets checked, and when"
msgstr "Ce que le module vérifie, et quand"

#: admin/views/sections/breach-check.php:117
msgid "Email addresses:"
msgstr "Adresses e-mail :"

#: admin/views/sections/breach-check.php:118
msgid ""
"every administrator account is tested against the public breach list the "
"moment you enable the email check. The counters below update straight away."
msgstr ""
"chaque compte administrateur est vérifié face à la liste publique des fuites"
" dès que vous activez la vérification des e-mails. Les compteurs ci-dessous "
"se mettent à jour immédiatement."

#: admin/views/sections/breach-check.php:121
msgid "Passwords:"
msgstr "Mots de passe :"

#: admin/views/sections/breach-check.php:122
msgid ""
"existing passwords cannot be tested in bulk. WordPress only keeps a one-way "
"fingerprint of each password, which by design cannot be reversed into the "
"original text. Each password is therefore tested the next time its user logs"
" in, while WordPress briefly handles the plaintext to authenticate them. No "
"login is ever blocked. A flagged user just sees a friendly heads-up on their"
" profile page, inviting them to change the password."
msgstr ""
"les mots de passe existants ne peuvent pas être vérifiés en masse. WordPress"
" ne conserve qu'une empreinte à sens unique de chaque mot de passe, qui, par"
" conception, ne peut pas être rétablie en texte original. Chaque mot de "
"passe est donc vérifié à la prochaine connexion de la personne concernée, au"
" moment où WordPress manipule brièvement le texte clair pour l'authentifier."
" Aucune connexion n'est jamais bloquée. Une personne signalée voit "
"simplement un avis bienveillant sur sa page de profil, l'invitant à changer "
"son mot de passe."

#: admin/views/sections/breach-check.php:131
msgid "Password check"
msgstr "Vérification des mots de passe"

#: admin/views/sections/breach-check.php:133
msgid ""
"On each successful login, check the password against the Have I Been Pwned "
"corpus via its k-anonymity range API. Only the first 5 characters of a SHA-1"
" hash of the password leave your server — the password itself is never "
"transmitted, not even in hashed form."
msgstr ""
"À chaque connexion réussie, vérifie le mot de passe face au corpus Have I "
"Been Pwned via son API « range » à k-anonymat. Seuls les 5 premiers "
"caractères d’un hachage SHA-1 du mot de passe quittent votre serveur : le "
"mot de passe lui-même n’est jamais transmis, pas même sous forme de hachage."

#: admin/views/sections/breach-check.php:145
msgid "Check passwords on login and profile update"
msgstr ""
"Vérifier les mots de passe à la connexion et aux mises à jour de profil"

#: admin/views/sections/breach-check.php:153
msgid "Email check"
msgstr "Vérification des e-mails"

#: admin/views/sections/breach-check.php:155
msgid ""
"When a new user is created or an email is changed, check the address against"
" the XposedOrNot public breach list. The API returns the names of the "
"breaches that contain the address, so users can know which passwords they "
"may have reused."
msgstr ""
"À la création d’un nouveau compte ou au changement d’adresse, vérifie "
"l’e-mail face à la liste publique des fuites XposedOrNot. L’API renvoie les "
"noms des fuites contenant l’adresse, afin que la personne sache quels mots "
"de passe elle a pu réutiliser."

#: admin/views/sections/breach-check.php:167
msgid "Check email addresses on user creation and email change"
msgstr ""
"Vérifier les adresses e-mail à la création d’un compte et au changement "
"d’adresse"

#: admin/views/sections/breach-check.php:175
msgid "Force password reset for flagged users"
msgstr "Forcer la réinitialisation du mot de passe pour les comptes signalés"

#: admin/views/sections/breach-check.php:177
msgid ""
"When on, a user whose password has been flagged as breached is automatically"
" redirected to their profile page on every admin screen until they change "
"the password. The user is not locked out — they can still access their "
"account, they are just nagged until the issue is resolved. Off by default; "
"turn on if you want zero-tolerance enforcement."
msgstr ""
"Lorsque activé, une personne dont le mot de passe a été signalé comme fuité "
"est automatiquement redirigée vers sa page de profil sur toutes les pages "
"d’administration jusqu’à ce qu’elle le change. Elle n’est pas bloquée : elle"
" conserve l’accès à son compte, elle est simplement relancée tant que le "
"problème n’est pas résolu. Désactivé par défaut ; activez-le si vous voulez "
"une application stricte."

#: admin/views/sections/breach-check.php:189
msgid ""
"Redirect flagged users to their profile until they change their password"
msgstr ""
"Rediriger les comptes signalés vers leur profil jusqu’au changement de mot "
"de passe"

#: admin/views/sections/breach-check.php:197
msgid "Current status"
msgstr "État actuel"

#: admin/views/sections/breach-check.php:201
msgid "users with a flagged password"
msgstr "comptes avec un mot de passe signalé"

#: admin/views/sections/breach-check.php:205
msgid "users with a flagged email"
msgstr "comptes avec un e-mail signalé"

#: admin/views/sections/breach-check.php:215
msgid "Accounts with a password flagged as breached"
msgstr "Comptes avec un mot de passe signalé comme fuité"

#. translators: %s: localized date when the account was flagged.
#: admin/views/sections/breach-check.php:229
msgid "Flagged %s"
msgstr "Signalé le %s"

#: admin/views/sections/breach-check.php:244
msgid "Accounts with an email address in a public data breach"
msgstr "Comptes avec une adresse e-mail dans une fuite de données publique"

#: admin/views/sections/breach-check.php:267
msgid ""
"An account stays flagged until its owner changes the password or email. The "
"counters update as users log in or update their profile. No background scan "
"runs on your site."
msgstr ""
"Un compte reste signalé tant que son titulaire n'a pas changé son mot de "
"passe ou son adresse e-mail. Les compteurs se mettent à jour au fil des "
"connexions et des mises à jour de profil. Aucun scan de fond ne tourne sur "
"votre site."

#: admin/views/sections/detection-logs.php:34
#: admin/views/sidebar/settings.php:40 admin/views/tabs/protection.php:133
#: admin/views/tabs/settings.php:280
msgid "Detection & Logs"
msgstr "Détection et journaux"

#: admin/views/sections/detection-logs.php:43
#: admin/views/tabs/settings.php:281
msgid "Log retention and automatic cleanup."
msgstr "Rétention des journaux et nettoyage automatique."

#: admin/views/sections/detection-logs.php:45
msgid "Login attempt logging is currently disabled."
msgstr ""
"La journalisation des tentatives de connexion est actuellement désactivée."

#: admin/views/sections/detection-logs.php:72
msgid "Detection & logging is disabled"
msgstr "La détection et la journalisation sont désactivées"

#: admin/views/sections/detection-logs.php:73
msgid "Login attempts are not being recorded. You will have no audit trail."
msgstr ""
"Les tentatives de connexion ne sont pas enregistrées. Vous n’aurez aucune "
"piste d’audit."

#: admin/views/sections/detection-logs.php:78
msgid ""
"When enabled, all login attempts are recorded and analyzed by the incident "
"detection engine. This powers the Overview dashboard, Events tab, and "
"Incidents tab."
msgstr ""
"Une fois activée, toutes les tentatives de connexion sont enregistrées et "
"analysées par le moteur de détection d’incidents. C’est ce qui alimente la "
"Vue d’ensemble, l’onglet Évènements et l’onglet Incidents."

#: admin/views/sections/detection-logs.php:87
msgid "Enable Detection & Logs"
msgstr "Activer la détection et les journaux"

#: admin/views/sections/detection-logs.php:101
msgid "How long to keep login attempt logs and incident records."
msgstr ""
"Durée de conservation des journaux de tentatives de connexion et des "
"enregistrements d’incidents."

#: admin/views/sections/detection-logs.php:121
msgid "Auto-Purge"
msgstr "Purge automatique"

#: admin/views/sections/detection-logs.php:122
msgid "Automatically delete old logs via WP-Cron. Runs daily."
msgstr ""
"Supprime automatiquement les anciens journaux via WP-Cron. Exécution "
"quotidienne."

#: admin/views/sections/detection-logs.php:129
msgid ""
"Logs older than the retention period will be automatically deleted every "
"night at 3:00 AM (server time)."
msgstr ""
"Les journaux plus anciens que la période de rétention seront automatiquement"
" supprimés chaque nuit à 3 h 00 (heure du serveur)."

#: admin/views/sections/detection-logs.php:137
msgid "Immediately delete all logs older than the retention period."
msgstr ""
"Supprimer immédiatement tous les journaux plus anciens que la période de "
"rétention."

#: admin/views/sections/detection-logs.php:140
msgid "Purge old logs now"
msgstr "Purger les anciens journaux maintenant"

#: admin/views/sections/hardening.php:30
msgid "Surface reduction"
msgstr "Réduction de la surface d’attaque"

#: admin/views/sections/hardening.php:31
msgid "Remove entry points attackers probe first."
msgstr ""
"Éliminez les points d’entrée que les personnes malveillantes sondent en "
"premier."

#: admin/views/sections/hardening.php:35
msgid "Credential hardening"
msgstr "Renforcement des identifiants"

#: admin/views/sections/hardening.php:36
msgid "Stop username enumeration."
msgstr "Empêchez l’énumération des identifiants."

#: admin/views/sections/hardening.php:40
msgid "Request filtering"
msgstr "Filtrage des requêtes"

#: admin/views/sections/hardening.php:41
msgid "Block malformed, malicious, or automated requests."
msgstr "Bloquez les requêtes malformées, malveillantes ou automatisées."

#: admin/views/onboarding.php:56 admin/views/sections/hardening.php:114
msgid "RECOMMENDED"
msgstr "RECOMMANDÉ"

#: admin/views/sections/hardening.php:169
#: admin/views/sections/limit-login.php:211
msgid "Apply recommended defaults"
msgstr "Appliquer les valeurs par défaut recommandées"

#: admin/views/sections/hardening.php:129
msgid "Reserved usernames"
msgstr "Identifiants réservés"

#: admin/views/sections/hardening.php:130
msgid "One username per line. Case-insensitive. Changes auto-save."
msgstr ""
"Un identifiant par ligne. Insensible à la casse. Les changements sont "
"enregistrés automatiquement."

#: admin/views/sections/hardening.php:143
msgid "usernames blocked"
msgstr "identifiants bloqués"

#: admin/views/sections/hardening.php:155
msgid "existing user(s) match this blacklist:"
msgstr "compte·s existant·s correspond·ent à cette liste noire :"

#: admin/views/sections/hardening.php:158
msgid ""
"These users will continue to log in normally — the blacklist applies only to"
" new login attempts and registrations."
msgstr ""
"Ces comptes continueront à se connecter normalement : la liste noire ne "
"s’applique qu’aux nouvelles tentatives de connexion et aux inscriptions."

#: admin/views/sections/hide-login.php:45 admin/views/tabs/settings.php:249
msgid "Your login URL is hidden. Direct access attempts return a 404."
msgstr ""
"Votre URL de connexion est masquée. Les tentatives d’accès direct renvoient "
"un 404."

#: admin/views/sections/hide-login.php:47 admin/views/tabs/settings.php:250
msgid ""
"Move your login page to a secret URL. Your /wp-login.php is currently "
"reachable."
msgstr ""
"Déplacez votre page de connexion vers une URL secrète. Votre /wp-login.php "
"est actuellement accessible."

#: admin/views/sections/hide-login.php:74
msgid "Your login page is publicly accessible"
msgstr "Votre page de connexion est publiquement accessible"

#: admin/views/sections/hide-login.php:75
msgid ""
"Bots and attackers can find /wp-login.php. Enabling Hide Login is strongly "
"recommended."
msgstr ""
"Les bots et les attaquants peuvent trouver /wp-login.php. L’activation de "
"Hide Login est fortement recommandée."

#: admin/views/sections/hide-login.php:80
msgid ""
"When you enable Hide Login, your login page will move to a secret URL. "
"Direct access to /wp-login.php and /wp-admin will return a 404."
msgstr ""
"Lorsque vous activez Hide Login, votre page de connexion passe à une URL "
"secrète. L’accès direct à /wp-login.php et /wp-admin renverra un 404."

#: admin/views/sections/hide-login.php:83
msgid "Your new login URL will be:"
msgstr "Votre nouvelle URL de connexion sera :"

#: admin/views/sections/hide-login.php:87
msgid ""
"Bookmark this URL the moment you enable the feature. You can change the slug"
" anytime from the settings."
msgstr ""
"Enregistrez cette URL dans vos favoris dès que vous activez la "
"fonctionnalité. Vous pouvez changer le slug à tout moment depuis les "
"réglages."

#: admin/views/sections/hide-login.php:106
msgid "Secret Login URL"
msgstr "URL de connexion secrète"

#: admin/views/sections/hide-login.php:107
msgid ""
"Edit the slug below to choose your own, or use Regenerate for a random one. "
"Allowed: a-z, 0-9, hyphens."
msgstr ""
"Modifiez le slug ci-dessous pour choisir le vôtre, ou utilisez Régénérer "
"pour en obtenir un aléatoire. Autorisés : a-z, 0-9, tirets."

#: admin/views/sections/hide-login.php:142
msgid "Your login is at:"
msgstr "Votre connexion se trouve à :"

#: admin/views/sections/hide-login.php:145
#: admin/views/sections/hide-login.php:150
msgid ""
"All other paths — /wp-login.php, /wp-admin — return a 404 to scanners and "
"bots."
msgstr ""
"Tous les autres chemins : /wp-login.php, /wp-admin : renvoient un 404 aux "
"scanners et aux bots."

#: admin/views/sections/hide-login.php:146
#: admin/views/sections/hide-login.php:149
msgid ""
"All other paths — /wp-login.php, /wp-admin — redirect to your custom URL."
msgstr ""
"Tous les autres chemins : /wp-login.php, /wp-admin : redirigent vers votre "
"URL personnalisée."

#: admin/views/sections/hide-login.php:155
#: admin/views/sections/hide-login.php:156
msgid "Blocked Access Redirect"
msgstr "Redirection d’accès bloqué"

#: admin/views/sections/hide-login.php:157
msgid ""
"What happens when someone tries to access /wp-login.php or /wp-admin "
"directly."
msgstr ""
"Ce qui se passe lorsqu’une personne tente d’accéder directement à /wp-"
"login.php ou /wp-admin."

#: admin/views/sections/hide-login.php:162
msgid "404 Page"
msgstr "Page 404"

#: admin/views/sections/firewall.php:134
#: admin/views/sections/hide-login.php:163
#: admin/views/sections/login-headers.php:112
#: admin/views/sections/login-headers.php:153
msgid "Recommended"
msgstr "Recommandé"

#: admin/views/sections/hide-login.php:166
msgid "Login page appears to not exist"
msgstr "La page de connexion semble ne pas exister"

#: admin/views/sections/hide-login.php:172
msgid "Custom URL"
msgstr "URL personnalisée"

#: admin/views/sections/hide-login.php:175
msgid "Redirect to any page"
msgstr "Rediriger vers n’importe quelle page"

#: admin/views/sections/hide-login.php:190
msgid "Forgot your login URL?"
msgstr "URL de connexion oubliée ?"

#: admin/views/sections/hide-login.php:195
msgid "If you're locked out, use one of these methods:"
msgstr ""
"Si vous êtes verrouillé·e en dehors du site, utilisez l’une de ces "
"méthodes :"

#: admin/views/sections/hide-login.php:212
msgid "Heads up:"
msgstr "À noter :"

#: admin/views/sections/hide-login.php:212
msgid "This disables Login Armor entirely. Use only if methods 1 & 2 fail."
msgstr ""
"Cela désactive entièrement Login Armor. À utiliser uniquement si les "
"méthodes 1 et 2 échouent."

#: admin/views/sections/hide-login.php:221
msgid "Email me this URL"
msgstr "M’envoyer cette URL par e-mail"

#: admin/views/sections/hide-login.php:224
msgid "Sent to admin email."
msgstr "Envoyé à l’adresse e-mail d’administration."

#: admin/views/sections/limit-login.php:39 admin/views/tabs/protection.php:68
#: admin/views/tabs/settings.php:270
msgid "Brute Force Protection"
msgstr "Protection force brute"

#: admin/views/sections/limit-login.php:48 admin/views/tabs/settings.php:271
msgid "Rate-limit failed login attempts and lock out attacking IPs."
msgstr ""
"Limite le débit des tentatives de connexion en échec et verrouille les IP "
"attaquantes."

#: admin/views/sections/limit-login.php:50
msgid ""
"Brute force protection is currently disabled. Enable it to rate-limit login "
"attempts."
msgstr ""
"La protection force brute est actuellement désactivée. Activez-la pour "
"limiter le débit des tentatives de connexion."

#: admin/views/sections/limit-login.php:77
msgid "Brute force protection is disabled"
msgstr "La protection force brute est désactivée"

#: admin/views/sections/limit-login.php:78
msgid "Attackers can try unlimited passwords without being locked out."
msgstr ""
"Les personnes malveillantes peuvent essayer un nombre illimité de mots de "
"passe sans être verrouillées."

#: admin/views/sections/limit-login.php:83
msgid ""
"When enabled, IPs that fail to log in too many times are temporarily locked "
"out. This is your primary defense against password guessing attacks."
msgstr ""
"Une fois activée, les IP qui échouent trop souvent à se connecter sont "
"temporairement verrouillées. C’est votre défense principale contre les "
"attaques de devinette de mots de passe."

#: admin/views/sections/limit-login.php:92
msgid "Enable Brute Force Protection"
msgstr "Activer la protection force brute"

#: admin/views/sections/limit-login.php:105
msgid "IP Detection Method"
msgstr "Méthode de détection de l’IP"

#: admin/views/sections/limit-login.php:106
msgid ""
"How to detect the visitor IP address. Choose based on your server setup."
msgstr ""
"Comment détecter l’adresse IP du visiteur ou de la visiteuse. Choisissez "
"selon la configuration de votre serveur."

#: admin/views/sections/limit-login.php:111
msgid "Direct connection (default)"
msgstr "Connexion directe (par défaut)"

#: admin/views/sections/limit-login.php:112
msgid "Behind Cloudflare"
msgstr "Derrière Cloudflare"

#: admin/views/sections/limit-login.php:113
msgid "Behind a reverse proxy"
msgstr "Derrière un proxy inverse"

#: admin/views/sections/limit-login.php:114
msgid "Behind Nginx proxy"
msgstr "Derrière un proxy Nginx"

#: admin/views/sections/limit-login.php:119
msgid ""
"Forwarding headers are ignored unless the immediate network peer is listed "
"below. If unsure, keep \"Direct connection\"."
msgstr ""
"Les en-têtes de transfert sont ignorés si le pair réseau immédiat ne figure "
"pas dans la liste ci-dessous. En cas de doute, conservez « Connexion directe »."

#: admin/views/sections/limit-login.php:126
msgid "Trusted Proxy IPs"
msgstr "IP des proxies de confiance"

#: admin/views/sections/limit-login.php:127
msgid ""
"Required when a proxy header is selected. Enter the immediate proxy IPs or "
"CIDR ranges, one per line. Never enter 0.0.0.0/0 or ::/0."
msgstr ""
"Requis lorsqu’un en-tête de proxy est sélectionné. Saisissez les IP ou plages "
"CIDR des proxies immédiats, une par ligne. Ne saisissez jamais 0.0.0.0/0 ni ::/0."

#: admin/views/sections/limit-login.php:135
msgid "Lockout Rules"
msgstr "Règles de verrouillage"

#: admin/views/sections/limit-login.php:126
msgid "How failed login attempts trigger temporary IP bans."
msgstr ""
"Comment les tentatives de connexion en échec déclenchent des bannissements "
"IP temporaires."

#: admin/views/sections/limit-login.php:132
msgid "Allowed retries"
msgstr "Tentatives autorisées"

#: admin/views/sections/limit-login.php:133
msgid "before lockout"
msgstr "avant verrouillage"

#: admin/views/sections/limit-login.php:140
msgid "Minutes lockout"
msgstr "Minutes de verrouillage"

#: admin/views/sections/limit-login.php:141
msgid "first lockout duration"
msgstr "durée du premier verrouillage"

#: admin/views/sections/limit-login.php:148
#: admin/views/sidebar/settings.php:33
msgid "Max lockouts"
msgstr "Verrouillages maxi"

#: admin/views/sections/limit-login.php:149
msgid "before long ban"
msgstr "avant bannissement long"

#: admin/views/sections/limit-login.php:156
msgid "Hours long ban"
msgstr "Heures de bannissement long"

#: admin/views/sections/limit-login.php:157
msgid "extended lockout"
msgstr "verrouillage prolongé"

#: admin/views/sections/limit-login.php:164
msgid "Hours reset period"
msgstr "Heures de la période de réinitialisation"

#: admin/views/sections/limit-login.php:165
msgid "failed attempts cleared after this inactivity window"
msgstr ""
"les tentatives en échec sont effacées après cette période d’inactivité"

#: admin/views/sections/limit-login.php:177
msgid "IP Safelist"
msgstr "Liste blanche IP"

#: admin/views/sections/limit-login.php:188
msgid ""
"These client IPs will never be locked out. One per line. Localhost is "
"automatically safe only in direct-connection mode."
msgstr ""
"Ces IP clientes ne seront jamais verrouillées. Une par ligne. L’hôte local "
"est automatiquement protégé uniquement en mode connexion directe."

#: admin/views/sections/limit-login.php:184
msgid "Add my current IP"
msgstr "Ajouter mon IP actuelle"

#: admin/views/sections/limit-login.php:192
msgid "Email Notifications"
msgstr "Notifications par e-mail"

#: admin/views/sections/limit-login.php:193
msgid ""
"Get notified when an IP triggers repeated lockouts. Set to 0 to disable."
msgstr ""
"Soyez notifié·e lorsqu’une IP déclenche des verrouillages répétés. Mettez 0 "
"pour désactiver."

#: admin/views/sections/limit-login.php:197
msgid "After"
msgstr "Après"

#: admin/views/sections/limit-login.php:199
msgid "lockouts"
msgstr "verrouillages"

#: admin/views/sections/limit-login.php:202
msgid "Send to"
msgstr "Envoyer à"

#: admin/views/sections/limit-login.php:203
msgid "default"
msgstr "par défaut"

#: admin/views/sections/limit-login.php:214
msgid "Reset defaults"
msgstr "Réinitialiser aux valeurs par défaut"

#: admin/views/sections/login-headers.php:37 admin/views/tabs/settings.php:290
msgid "Login Page Protection Headers"
msgstr "En-têtes de protection de la page de connexion"

#: admin/views/sections/login-headers.php:46
msgid ""
"Security headers scoped to the login request — nothing else on the site is "
"affected."
msgstr ""
"En-têtes de sécurité limités à la requête de connexion : rien d’autre sur le"
" site n’est affecté."

#: admin/views/sections/login-headers.php:48
msgid ""
"Send HTTP headers that block clickjacking, MIME sniffing, and credential "
"exfiltration on the login page."
msgstr ""
"Envoie des en-têtes HTTP qui bloquent le détournement de clic "
"(clickjacking), le reniflage MIME et l’exfiltration d’identifiants sur la "
"page de connexion."

#: admin/views/sections/login-headers.php:75
msgid "Login headers are disabled"
msgstr "Les en-têtes de connexion sont désactivés"

#: admin/views/sections/login-headers.php:76
msgid ""
"Your login page can be framed, its referrer leaks, and MIME sniffing is "
"permitted. Enable for a single-click hardening of the most targeted page."
msgstr ""
"Votre page de connexion peut être intégrée dans une iframe, son référent "
"fuit et le reniflage MIME est autorisé. Activez pour un renforcement en un "
"clic de la page la plus ciblée."

#: admin/views/sections/login-headers.php:81
msgid ""
"When enabled, LoginArmor adds a curated set of security headers only on wp-"
"login.php and your Hide Login slug. Nothing is applied to front-end pages or"
" the WP admin — so the risk of breaking your theme or admin scripts is zero."
msgstr ""
"Une fois activée, LoginArmor ajoute un ensemble choisi d’en-têtes de "
"sécurité uniquement sur wp-login.php et votre slug Hide Login. Rien n’est "
"appliqué aux pages de l’interface publique ni à l’interface d’administration"
" WordPress : le risque de casser votre thème ou vos scripts d’administration"
" est donc nul."

#: admin/views/sections/login-headers.php:89
msgid "Enable Login Page Protection Headers"
msgstr "Activer les en-têtes de protection de la page de connexion"

#: admin/views/sections/login-headers.php:102
msgid "Profile"
msgstr "Profil"

#: admin/views/sections/login-headers.php:104
msgid ""
"Standard keeps WordPress core login scripts working. Strict tightens the CSP"
" for hardened deployments — may break login themes that inject third-party "
"assets."
msgstr ""
"Standard laisse fonctionner les scripts de connexion du cœur WordPress. "
"Stricte durcit la CSP pour les déploiements renforcés : peut casser les "
"thèmes de connexion qui injectent des ressources tierces."

#: admin/views/sections/login-headers.php:111
#: admin/views/sidebar/settings.php:67
msgid "Standard"
msgstr "Standard"

#: admin/views/sections/login-headers.php:115
msgid ""
"frame-ancestors none + form-action self + MIME + Referrer + Permissions-"
"Policy. Safe for 99% of sites."
msgstr ""
"frame-ancestors none + form-action self + MIME + Referrer + Permissions-"
"Policy. Sûr pour 99 % des sites."

#: admin/views/sections/login-headers.php:121
#: admin/views/sidebar/settings.php:68
msgid "Strict"
msgstr "Stricte"

#: admin/views/sections/login-headers.php:124
msgid ""
"Standard + default-src self, full CSP lockdown. Test before enabling on "
"sites with custom login themes."
msgstr ""
"Standard + default-src self, verrouillage CSP complet. À tester avant "
"activation sur les sites utilisant des thèmes de connexion personnalisés."

#: admin/views/sections/login-headers.php:175
msgid "CSP Report Endpoint (optional)"
msgstr "Point de terminaison de rapport CSP (facultatif)"

#: admin/views/sections/login-headers.php:177
msgid ""
"HTTPS endpoint to receive CSP violation reports. Useful for monitoring "
"attempted injections. Leave blank to skip."
msgstr ""
"Point de terminaison HTTPS pour recevoir les rapports de violations CSP. "
"Utile pour surveiller les tentatives d’injection. Laisser vide pour ignorer."

#: admin/views/sections/login-headers.php:210
msgid "Headers Sent on Login"
msgstr "En-têtes envoyés à la connexion"

#: admin/views/sections/login-headers.php:212
msgid ""
"Live preview of what LoginArmor will emit. Update settings to see the output"
" change."
msgstr ""
"Aperçu en direct de ce que LoginArmor émettra. Mettez à jour les réglages "
"pour voir le résultat changer."

#: admin/views/sections/notifications.php:42
#: admin/views/sidebar/settings.php:121 admin/views/tabs/settings.php:392
msgid "Notifications"
msgstr "Notifications"

#: admin/views/sections/notifications.php:51
msgid "Receive alerts when security incidents are detected."
msgstr "Recevez des alertes lorsque des incidents de sécurité sont détectés."

#: admin/views/sections/notifications.php:53
msgid "Security alerts are silent. Critical incidents will not reach you."
msgstr ""
"Les alertes de sécurité sont muettes. Les incidents critiques ne vous "
"parviendront pas."

#: admin/views/sections/notifications.php:80
msgid "Notifications are disabled"
msgstr "Les notifications sont désactivées"

#: admin/views/sections/notifications.php:81
msgid ""
"Brute force attacks, lockouts, and detected incidents trigger no alert. You "
"only find out when you open the dashboard."
msgstr ""
"Les attaques par force brute, les verrouillages et les incidents détectés ne"
" déclenchent aucune alerte. Vous ne le découvrez qu’en ouvrant le Tableau de"
" bord."

#: admin/views/sections/notifications.php:86
msgid ""
"When enabled, LoginArmor sends an alert to the channel of your choice — "
"email, Slack, Discord, or a generic JSON webhook — as soon as an incident "
"crosses your severity threshold."
msgstr ""
"Une fois activée, LoginArmor envoie une alerte sur le canal de votre choix :"
" e-mail, Slack, Discord ou un webhook JSON générique : dès qu’un incident "
"franchit votre seuil de sévérité."

#: admin/views/sections/notifications.php:95
msgid "Enable Notifications"
msgstr "Activer les notifications"

#: admin/views/sections/notifications.php:108
msgid "Notification Channel"
msgstr "Canal de notification"

#: admin/views/sections/notifications.php:109
msgid "Where incident alerts should be delivered."
msgstr "Où les alertes d’incidents doivent être délivrées."

#: admin/views/sections/notifications.php:114
msgid "Generic JSON"
msgstr "JSON générique"

#: admin/views/sections/notifications.php:122
msgid "Recipient Email"
msgstr "Adresse e-mail destinataire"

#. translators: %s: admin email address
#: admin/views/sections/notifications.php:127
msgid "Leave empty to use the site admin email (%s)."
msgstr ""
"Laissez vide pour utiliser l’adresse e-mail d’administration du site (%s)."

#: admin/views/sections/activity-webhook.php:67
#: admin/views/sections/notifications.php:139
msgid "Webhook URL"
msgstr "URL du webhook"

#: admin/views/sections/notifications.php:140
msgid "Paste your Slack, Discord, or custom webhook URL."
msgstr "Collez l’URL de votre webhook Slack, Discord ou personnalisé."

#: admin/views/sections/notifications.php:150
msgid "Minimum Severity"
msgstr "Sévérité minimale"

#: admin/views/sections/notifications.php:151
msgid "Only incidents at this severity or higher will trigger a notification."
msgstr ""
"Seuls les incidents de cette sévérité ou supérieure déclencheront une "
"notification."

#: admin/views/sections/notifications.php:153
#: admin/views/sidebar/incidents.php:27 admin/views/tabs/incidents.php:97
#: admin/views/tabs/incidents.php:870
msgid "Low"
msgstr "Faible"

#: admin/views/sections/notifications.php:154
#: admin/views/sidebar/incidents.php:26 admin/views/tabs/incidents.php:95
#: admin/views/tabs/incidents.php:869
msgid "Medium"
msgstr "Moyen"

#: admin/views/sections/notifications.php:155
#: admin/views/sidebar/incidents.php:25 admin/views/tabs/incidents.php:92
#: admin/views/tabs/incidents.php:868
msgid "High"
msgstr "Élevé"

#: admin/views/sections/notifications.php:156
#: admin/views/sidebar/incidents.php:24 admin/views/tabs/incidents.php:89
#: admin/views/tabs/incidents.php:867
msgid "Critical"
msgstr "Critique"

#: admin/views/sections/notifications.php:164
msgid "Rate Limit"
msgstr "Limite de débit"

#: admin/views/sections/notifications.php:165
msgid "Maximum notifications per hour. Set to 0 for unlimited."
msgstr "Nombre maximum de notifications par heure. Mettez 0 pour illimité."

#: admin/views/sections/notifications.php:171
msgid "per hour"
msgstr "par heure"

#: admin/views/sections/notifications.php:181
msgid "Send test notification"
msgstr "Envoyer une notification de test"

#. translators: 1: Error message, 2: Human-readable time diff.
#: admin/views/sections/notifications.php:195
msgid "Last error: %1$s (%2$s ago)"
msgstr "Dernière erreur : %1$s (il y a %2$s)"

#: admin/views/sections/two-factor-settings.php:36
#: admin/views/sidebar/settings.php:53 admin/views/tabs/incidents.php:348
#: admin/views/tabs/settings.php:382
msgid "Two-Factor Authentication"
msgstr "Authentification à deux facteurs"

#: admin/views/sections/two-factor-settings.php:45
msgid "Require a second factor for admin logins."
msgstr "Exige un second facteur pour les connexions d’administration."

#: admin/views/sections/two-factor-settings.php:47
msgid "Add authenticator app or email verification to logins."
msgstr ""
"Ajoute une application d’authentification ou une vérification par e-mail aux"
" connexions."

#: admin/views/sections/two-factor-settings.php:73
msgid "Two-factor authentication is disabled"
msgstr "L’authentification à deux facteurs est désactivée"

#: admin/views/sections/two-factor-settings.php:74
msgid ""
"Accounts are protected by passwords only. Compromised credentials allow "
"immediate access."
msgstr ""
"Les comptes ne sont protégés que par des mots de passe. Des identifiants "
"compromis permettent un accès immédiat."

#: admin/views/sections/two-factor-settings.php:79
msgid ""
"When enabled, users can set up an authenticator app (TOTP), email "
"verification codes, or backup codes as a second factor. You can enforce 2FA "
"for specific roles."
msgstr ""
"Une fois activée, les utilisateurs et utilisatrices peuvent configurer une "
"application d’authentification (TOTP), des codes de vérification par e-mail "
"ou des codes de secours comme second facteur. Vous pouvez imposer l’A2F à "
"certains rôles."

#: admin/views/sections/two-factor-settings.php:87
#: admin/views/tabs/incidents.php:339
msgid "Enable Two-Factor Authentication"
msgstr "Activer l’authentification à deux facteurs"

#: admin/views/sections/two-factor-settings.php:100
msgid "Allowed Methods"
msgstr "Méthodes autorisées"

#: admin/views/sections/two-factor-settings.php:101
msgid "Choose which authentication methods users can use."
msgstr ""
"Choisissez les méthodes d’authentification utilisables par les utilisateurs "
"et utilisatrices."

#: admin/views/sections/two-factor-settings.php:106
msgid "Authenticator App (TOTP)"
msgstr "Application d’authentification (TOTP)"

#: admin/views/sections/two-factor-settings.php:123
#: admin/views/sidebar/settings.php:58
msgid "Enforcement"
msgstr "Imposition"

#: admin/views/sections/two-factor-settings.php:124
msgid "Select roles that must use 2FA. Leave empty for voluntary-only."
msgstr ""
"Sélectionnez les rôles devant utiliser l’A2F. Laissez vide pour une "
"activation volontaire uniquement."

#: admin/views/sections/two-factor-settings.php:140
msgid "Grace Period"
msgstr "Période de grâce"

#: admin/views/sections/two-factor-settings.php:141
msgid ""
"How long users in enforced roles have to set up 2FA after it becomes "
"required."
msgstr ""
"Durée dont disposent les utilisateurs et utilisatrices des rôles concernés "
"pour configurer l’A2F après qu’elle devient obligatoire."

#. translators: %d: number of days
#: admin/views/sections/two-factor-settings.php:151
#: admin/views/sections/two-factor-settings.php:189
msgid "%d day"
msgid_plural "%d days"
msgstr[0] "%d jour"
msgstr[1] "%d jours"

#: admin/views/sections/two-factor-settings.php:171
msgid "Trusted Devices"
msgstr "Appareils de confiance"

#: admin/views/sections/two-factor-settings.php:172
msgid ""
"Let users trust their browser for N days after a successful 2FA "
"verification. Disable for strict compliance (every login requires a second "
"factor)."
msgstr ""
"Permettez aux utilisateurs et utilisatrices de faire confiance à leur "
"navigateur pendant N jours après une vérification A2F réussie. Désactivez "
"pour une conformité stricte (chaque connexion exige un second facteur)."

#: admin/views/sections/two-factor-settings.php:177
msgid "Allow trusted devices"
msgstr "Autoriser les appareils de confiance"

#: admin/views/sections/two-factor-settings.php:183
msgid "Duration"
msgstr "Durée"

#: admin/views/sections/two-factor-settings.php:207
msgid "2FA Recovery"
msgstr "Récupération A2F"

#: admin/views/sections/two-factor-settings.php:208
msgid ""
"Allow users who have lost every 2FA method to request a reset. The request "
"is emailed to the first site administrator, who must authorize it. Disable "
"for strict compliance."
msgstr ""
"Permettre aux utilisateurs et utilisatrices ayant perdu toutes leurs "
"méthodes A2F de demander une réinitialisation. La demande est envoyée par "
"e-mail au premier administrateur ou à la première administratrice du site, "
"qui doit l’autoriser. Désactivez pour une conformité stricte."

#: admin/views/sections/two-factor-settings.php:213
msgid "Allow account recovery when 2FA is lost"
msgstr "Autoriser la récupération de compte en cas de perte de l’A2F"

#: admin/views/sections/two-factor-settings.php:223
msgid "Enrollment Status"
msgstr "État d’inscription"

#. translators: 1: enrolled count, 2: total count, 3: role name
#: admin/views/sections/two-factor-settings.php:229
msgid "%1$d of %2$d %3$s users have 2FA active"
msgstr "%1$d compte·s %3$s sur %2$d ont l’A2F activée"

#: admin/views/sections/two-factor-settings.php:247
msgid "Your Account"
msgstr "Votre compte"

#: admin/views/sections/two-factor-settings.php:249
msgid "Two-factor authentication is active on your account."
msgstr "L’authentification à deux facteurs est active sur votre compte."

#: admin/views/sections/two-factor-settings.php:251
msgid "Manage your 2FA"
msgstr "Gérer votre A2F"

#: admin/views/sections/two-factor-settings.php:254
msgid "You have not set up two-factor authentication yet."
msgstr "Vous n’avez pas encore configuré l’authentification à deux facteurs."

#: admin/views/sections/two-factor-settings.php:256
msgid "Set up your 2FA"
msgstr "Configurer votre A2F"

#: admin/views/sidebar/activity.php:14
msgid "Activity Log Guide"
msgstr "Guide du journal d’activité"

#: admin/views/sidebar/activity.php:17 admin/views/sidebar/events.php:17
msgid "What gets logged"
msgstr "Ce qui est journalisé"

#: includes/AI/PostureAdvisor.php:258 admin/views/sidebar/activity.php:19
#: admin/views/tabs/activity.php:278 admin/views/tabs/activity.php:476
msgid "Users"
msgstr "Comptes"

#: admin/views/sidebar/activity.php:19
msgid "creation, deletion, role and email changes, password resets."
msgstr ""
"création, suppression, changements de rôle et d’e-mail, réinitialisations de"
" mot de passe."

#: admin/views/sidebar/activity.php:20
msgid "Posts & Pages"
msgstr "Publications et pages"

#: admin/views/sidebar/activity.php:20
msgid "created, edited, trashed, restored, permanently deleted."
msgstr ""
"créé·e·s, modifié·e·s, mis·es à la corbeille, restauré·e·s, supprimé·e·s "
"définitivement."

#: includes/AI/PostureAdvisor.php:260 admin/views/sidebar/activity.php:21
#: admin/views/tabs/activity.php:475
msgid "Media"
msgstr "Médias"

#: admin/views/sidebar/activity.php:21
msgid "uploads, edits, deletions."
msgstr "téléversements, modifications, suppressions."

#: admin/views/sidebar/activity.php:22
msgid "Plugins & Themes"
msgstr "Extensions et thèmes"

#: admin/views/sidebar/activity.php:22
msgid "installed, activated, deactivated, updated, deleted."
msgstr "installés, activés, désactivés, mis à jour, supprimés."

#: admin/views/sidebar/activity.php:23
msgid "Critical Options"
msgstr "Options critiques"

#: admin/views/sidebar/activity.php:23
msgid "site URL, admin email, registration, roles, permalink changes."
msgstr ""
"URL du site, e-mail d’administration, inscription, rôles, changements de "
"permaliens."

#: admin/views/sidebar/activity.php:28
msgid "Reading the log"
msgstr "Lecture du journal"

#: admin/views/sidebar/activity.php:30
msgid "new content or resource."
msgstr "nouveau contenu ou ressource."

#: admin/views/sidebar/activity.php:31
msgid "content or settings modified."
msgstr "contenu ou réglages modifiés."

#: admin/views/sidebar/activity.php:32
msgid "plugin/theme activated or restored."
msgstr "extension/thème activé·e ou restauré·e."

#: admin/views/sidebar/activity.php:33
msgid "permanently removed."
msgstr "supprimé·e définitivement."

#: admin/views/sidebar/activity.php:38
msgid "When to worry"
msgstr "Quand s’inquiéter"

#: admin/views/sidebar/activity.php:40
msgid "Mass deletions in a short timeframe."
msgstr "Suppressions massives sur une courte période."

#: admin/views/sidebar/activity.php:41
msgid "Role escalations (subscriber to admin)."
msgstr "Élévations de rôle (abonné·e à administrateur·rice)."

#: admin/views/sidebar/activity.php:42
msgid "Plugin installs or theme changes at unusual hours."
msgstr ""
"Installations d’extension ou changements de thème à des horaires "
"inhabituels."

#: admin/views/sidebar/activity.php:43
msgid "Changes to site URL, admin email, or registration settings."
msgstr ""
"Modifications de l’URL du site, de l’e-mail d’administration ou des réglages"
" d’inscription."

#: admin/views/sidebar/events.php:14
msgid "Event Log Guide"
msgstr "Guide du journal d’évènements"

#: admin/views/sidebar/events.php:18
msgid ""
"Every login attempt is recorded with its outcome, IP address, and timestamp."
msgstr ""
"Chaque tentative de connexion est enregistrée avec son résultat, son adresse"
" IP et son horodatage."

#: admin/views/sidebar/events.php:22
msgid "Status Codes"
msgstr "Codes d’état"

#: admin/views/sidebar/events.php:24
msgid "successful login."
msgstr "connexion réussie."

#: admin/views/sidebar/events.php:25
msgid "wrong username or password."
msgstr "identifiant ou mot de passe incorrect."

#: admin/views/sidebar/events.php:26
msgid "Auth blocked after too many failures."
msgstr "Auth bloquée après trop d’échecs."

#: admin/views/sidebar/events.php:31
msgid "Filtering & Export"
msgstr "Filtrage et exportation"

#: admin/views/sidebar/events.php:32
msgid ""
"Use the filters to narrow results by status, IP, or username. The export "
"button downloads matching events as CSV."
msgstr ""
"Utilisez les filtres pour affiner les résultats par état, IP ou identifiant."
" Le bouton d’exportation télécharge les évènements correspondants au format "
"CSV."

#: admin/views/sidebar/events.php:36
msgid "Retention"
msgstr "Rétention"

#: admin/views/sidebar/events.php:37
msgid ""
"Log retention and auto-purge settings can be configured in Settings > "
"Detection & Logs."
msgstr ""
"Les réglages de rétention des journaux et de purge automatique se "
"configurent dans Réglages > Détection et journaux."

#: admin/views/sidebar/incidents.php:14
msgid "Understanding Incidents"
msgstr "Comprendre les incidents"

#: admin/views/sidebar/incidents.php:17
msgid "How it works"
msgstr "Comment ça fonctionne"

#: admin/views/sidebar/incidents.php:18
msgid ""
"Login Armor automatically groups suspicious login attempts into incidents "
"using pattern detection."
msgstr ""
"Login Armor regroupe automatiquement les tentatives de connexion suspectes "
"en incidents grâce à la détection de motifs."

#: admin/views/sidebar/incidents.php:22
msgid "Severity Levels"
msgstr "Niveaux de sévérité"

#: admin/views/sidebar/incidents.php:24
msgid "active attack, immediate attention."
msgstr "attaque en cours, attention immédiate."

#: admin/views/sidebar/incidents.php:25
msgid "significant threat, review recommended."
msgstr "menace importante, examen recommandé."

#: admin/views/sidebar/incidents.php:26
msgid "moderate activity worth monitoring."
msgstr "activité modérée à surveiller."

#: admin/views/sidebar/incidents.php:27
msgid "minor or isolated event."
msgstr "évènement mineur ou isolé."

#: admin/views/sidebar/incidents.php:32 admin/views/tabs/activity.php:274
msgid "Actions"
msgstr "Actions"

#: admin/views/sidebar/incidents.php:34
msgid "Resolve"
msgstr "Résoudre"

#: admin/views/sidebar/incidents.php:34
msgid "mark as handled."
msgstr "marquer comme traité."

#: admin/views/sidebar/incidents.php:35 admin/views/tabs/incidents.php:900
#: admin/views/tabs/incidents.php:1090
msgid "Ignore"
msgstr "Ignorer"

#: admin/views/sidebar/incidents.php:35
msgid "dismiss as false positive."
msgstr "écarter comme faux positif."

#: admin/views/sidebar/incidents.php:36
msgid "Block Subnet"
msgstr "Bloquer le sous-réseau"

#: admin/views/sidebar/incidents.php:36
msgid "block the entire /24 subnet."
msgstr "bloquer tout le sous-réseau /24."

#: admin/views/sidebar/incidents.php:41
msgid "Tip"
msgstr "Astuce"

#: admin/views/sidebar/incidents.php:42
msgid ""
"Click any incident row to see the full timeline, correlated events, and user"
" agents involved."
msgstr ""
"Cliquez sur n’importe quelle ligne d’incident pour voir la chronologie "
"complète, les évènements corrélés et les agents utilisateurs impliqués."

#: admin/views/sidebar/overview.php:14
msgid "About this view"
msgstr "À propos de cette vue"

#: admin/views/sidebar/overview.php:17
msgid "Attacks Neutralized"
msgstr "Attaques neutralisées"

#: admin/views/sidebar/overview.php:18
msgid ""
"Total number of login attempts blocked by brute force protection or IP "
"lockouts."
msgstr ""
"Nombre total de tentatives de connexion bloquées par la protection force "
"brute ou les verrouillages IP."

#: admin/views/sidebar/overview.php:22
msgid "Health Cards"
msgstr "Cartes de santé"

#: admin/views/sidebar/overview.php:23
msgid ""
"Each card represents a security module. Click any card to jump to its "
"settings."
msgstr ""
"Chaque carte représente un module de sécurité. Cliquez sur n’importe quelle "
"carte pour accéder à ses réglages."

#: admin/views/sidebar/overview.php:25
msgid "conceals wp-login.php behind a secret URL."
msgstr "dissimule wp-login.php derrière une URL secrète."

#: admin/views/sidebar/overview.php:26
msgid "locks out IPs after repeated failures."
msgstr "verrouille les IP après des échecs répétés."

#: admin/views/sidebar/overview.php:27
msgid "one-click security toggles."
msgstr "options de sécurité en un clic."

#: admin/views/sidebar/overview.php:28
msgid "identifies attack patterns automatically."
msgstr "identifié automatiquement les motifs d’attaque."

#: admin/views/sidebar/overview.php:29
msgid "tracks admin actions across users, posts, plugins, and options."
msgstr ""
"suit les actions d’administration sur les comptes, publications, extensions "
"et options."

#: admin/views/sidebar/overview.php:30
msgid "adds a second factor (TOTP, email, backup codes) to the login flow."
msgstr ""
"ajoute un second facteur (TOTP, e-mail, codes de secours) au flux de "
"connexion."

#: admin/views/sidebar/overview.php:31
msgid "HTTP security headers scoped to the login page (CSP, X-Frame-Options)."
msgstr ""
"En-têtes HTTP de sécurité limités à la page de connexion (CSP, X-Frame-"
"Options)."

#: admin/views/sidebar/overview.php:32
msgid ""
"detects user passwords and emails that appear in public data leaks, using "
"privacy-preserving lookups (k-anonymity)."
msgstr ""
"détecte les mots de passe et e-mails qui apparaissent dans des fuites de "
"données publiques, via des requêtes respectueuses de la confidentialité "
"(k-anonymat)."

#: admin/views/sidebar/overview.php:39
msgid "Activity Chart"
msgstr "Graphique d’activité"

#: admin/views/sidebar/overview.php:40
msgid ""
"Login activity over the past 7 days. Spikes may indicate ongoing attacks."
msgstr ""
"Activité de connexion des 7 derniers jours. Les pics peuvent indiquer des "
"attaques en cours."

#: admin/views/sidebar/overview.php:44
msgid "Live Events"
msgstr "Évènements en direct"

#: admin/views/sidebar/overview.php:45
msgid ""
"Most recent login attempts in real time. Red entries are failed or locked-"
"out attempts."
msgstr ""
"Tentatives de connexion les plus récentes en temps réel. Les entrées rouges "
"sont des tentatives en échec ou verrouillées."

#: admin/views/sidebar/settings.php:16
msgid "Settings Guide"
msgstr "Guide des réglages"

#: admin/views/sidebar/settings.php:20
msgid ""
"Replaces wp-login.php with a custom secret URL. Anyone visiting the old URL "
"gets a 404."
msgstr ""
"Remplace wp-login.php par une URL secrète personnalisée. Toute personne "
"visitant l’ancienne URL obtient un 404."

#: admin/views/sidebar/settings.php:25
msgid ""
"One-click security toggles. Each toggle hardens a specific attack surface. "
"Per-category counts show how many toggles are enabled in each group."
msgstr ""
"Options de sécurité en un clic. Chaque option renforce une surface d’attaque"
" spécifique. Les compteurs par catégorie indiquent le nombre d’options "
"activées dans chaque groupe."

#: admin/views/sidebar/settings.php:31
msgid "Lockout duration"
msgstr "Durée de verrouillage"

#: admin/views/sidebar/settings.php:31
msgid "how long an IP is locked. Default: 20 min."
msgstr "durée de verrouillage d’une IP. Par défaut : 20 min."

#: admin/views/sidebar/settings.php:32
msgid "Reset period"
msgstr "Période de réinitialisation"

#: admin/views/sidebar/settings.php:32
msgid "failures forgotten after this time. Default: 24h."
msgstr "échecs oubliés après cette durée. Par défaut : 24 h."

#: admin/views/sidebar/settings.php:33
msgid "triggers a long ban. Default: 4."
msgstr "déclenche un bannissement long. Par défaut : 4."

#: admin/views/sidebar/settings.php:34
msgid "Long ban"
msgstr "Bannissement long"

#: admin/views/sidebar/settings.php:34
msgid "extended ban for repeat offenders. Default: 24h."
msgstr "bannissement prolongé pour les récidivistes. Par défaut : 24 h."

#: admin/views/sidebar/settings.php:35
msgid "IP safelist"
msgstr "Liste blanche IP"

#: admin/views/sidebar/settings.php:35
msgid "IPs never locked out. Add yours."
msgstr "IP jamais verrouillées. Ajoutez la vôtre."

#: admin/views/sidebar/settings.php:42
msgid "Log retention"
msgstr "Rétention des journaux"

#: admin/views/sidebar/settings.php:42
msgid "how long logs are kept."
msgstr "durée de conservation des journaux."

#: admin/views/sidebar/settings.php:43
msgid "Auto-purge"
msgstr "Purge automatique"

#: admin/views/sidebar/settings.php:43
msgid "auto-deletes old logs daily."
msgstr "supprime automatiquement les anciens journaux chaque jour."

#: admin/views/sidebar/settings.php:49
msgid ""
"Tracks admin actions (post edits, plugin changes, user modifications) to "
"detect compromised accounts. Opt-in — zero overhead when disabled."
msgstr ""
"Suit les actions d’administration (modifications de publications, "
"changements d’extensions, modifications de comptes) pour détecter les "
"comptes compromis. Activation volontaire : aucune surcharge lorsque "
"désactivée."

#: admin/views/sidebar/settings.php:55
msgid ""
"works with Google Authenticator, Authy, 1Password, Bitwarden. Most secure "
"option."
msgstr ""
"fonctionne avec Google Authenticator, Authy, 1Password, Bitwarden. Option la"
" plus sûre."

#: admin/views/sidebar/settings.php:56
msgid ""
"6-digit code sent to user email. Good fallback but depends on email "
"delivery."
msgstr ""
"code à 6 chiffres envoyé à l’e-mail de la personne. Bonne solution de repli "
"mais dépend de la distribution des e-mails."

#: admin/views/sidebar/settings.php:57
msgid ""
"single-use recovery codes. Always enabled alongside the primary method."
msgstr ""
"codes de récupération à usage unique. Toujours activés aux côtés de la "
"méthode principale."

#: admin/views/sidebar/settings.php:58
msgid "require 2FA for specific roles. Users get a grace period to set up."
msgstr ""
"impose l’A2F à certains rôles. Les utilisateurs et utilisatrices bénéficient"
" d’une période de grâce pour la configurer."

#: admin/views/sidebar/settings.php:59
msgid "Setup"
msgstr "Configuration"

#: admin/views/sidebar/settings.php:59
msgid "each user sets up 2FA in their Profile page."
msgstr ""
"chaque utilisateur ou utilisatrice configure son A2F depuis sa page Profil."

#: admin/views/sidebar/settings.php:60
msgid "Recovery"
msgstr "Récupération"

#: admin/views/sidebar/settings.php:60
msgid "use a backup code, or ask an admin to reset your 2FA via WP-CLI."
msgstr ""
"utilisez un code de secours, ou demandez à un administrateur ou une "
"administratrice de réinitialiser votre A2F via WP-CLI."

#: admin/views/sidebar/settings.php:65
msgid "Login Page Headers"
msgstr "En-têtes de la page de connexion"

#: admin/views/sidebar/settings.php:67
msgid ""
"safe defaults. Blocks clickjacking and credential exfiltration without "
"breaking WP login."
msgstr ""
"valeurs sûres par défaut. Bloque le détournement de clic et l’exfiltration "
"d’identifiants sans casser la connexion WordPress."

#: admin/views/sidebar/settings.php:68
msgid ""
"full CSP lockdown. Test if you use custom login themes or third-party login "
"plugins."
msgstr ""
"verrouillage CSP complet. À tester si vous utilisez des thèmes de connexion "
"personnalisés ou des extensions de connexion tierces."

#: admin/views/sidebar/settings.php:69 admin/views/sidebar/settings.php:90
msgid "Scope"
msgstr "Portée"

#: admin/views/sidebar/settings.php:69
msgid ""
"headers are applied only on the login page, never on the front-end or WP "
"admin."
msgstr ""
"les en-têtes ne s’appliquent qu’à la page de connexion, jamais à l’interface"
" publique ou à l’interface d’administration WordPress."

#: admin/views/sidebar/settings.php:76
msgid "What"
msgstr "Quoi"

#: admin/views/sidebar/settings.php:76
msgid ""
"detects if a user password or email address appears in publicly disclosed "
"data breaches."
msgstr ""
"détecte si le mot de passe ou l’adresse e-mail d’un utilisateur ou d’une "
"utilisatrice apparaît dans des fuites de données rendues publiques."

#: admin/views/sidebar/settings.php:77
msgid "Privacy"
msgstr "Confidentialité"

#: admin/views/sidebar/settings.php:77
msgid ""
"the password itself never leaves your server. Only the first 5 characters of"
" a SHA-1 hash are sent to the public Have I Been Pwned API (k-anonymity "
"lookup); your server compares the rest locally."
msgstr ""
"le mot de passe lui-même ne quitte jamais votre serveur. Seuls les 5 "
"premiers caractères d’un hachage SHA-1 sont envoyés à l’API publique Have I "
"Been Pwned (requête à k-anonymat) ; votre serveur compare le reste "
"localement."

#: admin/views/sidebar/settings.php:78
msgid "Effect"
msgstr "Effet"

#: admin/views/sidebar/settings.php:78
msgid ""
"flagged users get a friendly notice on their profile page. No one is locked "
"out unless you turn on \"force password reset\"."
msgstr ""
"les comptes signalés reçoivent un avis bienveillant sur leur page de profil."
" Personne n’est bloqué sauf si vous activez « forcer la réinitialisation du "
"mot de passe »."

#: admin/views/sidebar/settings.php:79
msgid "Cost"
msgstr "Coût"

#: admin/views/sidebar/settings.php:79
msgid ""
"free. No API key, no account. Cached 24 h per password prefix so the API is "
"not hit on every login."
msgstr ""
"gratuit. Aucune clé d’API, aucun compte. Mise en cache 24 h par préfixe de "
"mot de passe pour ne pas solliciter l’API à chaque connexion."

#: admin/views/sidebar/settings.php:122
msgid ""
"Get alerted via Slack, Discord, or a custom webhook when attacks reach a "
"threshold. Use the Test button to verify your URL."
msgstr ""
"Soyez alerté·e via Slack, Discord ou un webhook personnalisé lorsque les "
"attaques atteignent un seuil. Utilisez le bouton Test pour vérifier votre "
"URL."

#: admin/views/sidebar/sponsored-ads.php:18
msgid "Sponsored: WPFormation"
msgstr "Sponsorisé : WPFormation"

#: admin/views/sidebar/sponsored-ads.php:20
msgid "Sponsored"
msgstr "Sponsorisé"

#: admin/views/sidebar/sponsored-ads.php:21
msgid "Ad"
msgstr "Pub"

#: admin/views/sidebar/sponsored-ads.php:28
msgid "OGEEAT — Generative Engine Optimization"
msgstr "OGEEAT : Generative Engine Optimization"

#: admin/views/sidebar/sponsored-ads.php:35
msgid "Free plugin"
msgstr "Extension gratuite"

#: admin/views/sidebar/sponsored-ads.php:36
msgid "Get cited by ChatGPT, Perplexity &amp; Gemini"
msgstr "Soyez cité·e par ChatGPT, Perplexity &amp; Gemini"

#: admin/views/sidebar/sponsored-ads.php:37
msgid ""
"OGEEAT adds E-E-A-T schemas, GEO scoring and an llms.txt generator so AI "
"engines actually understand your site."
msgstr ""
"OGEEAT ajoute des schémas E-E-A-T, une notation GEO et un générateur "
"llms.txt pour que les moteurs d’IA comprennent réellement votre site."

#: admin/views/sidebar/sponsored-ads.php:43
msgid "<b>%s modules</b> · WordPress.org"
msgstr "<b>%s modules</b> · WordPress.org"

#: admin/views/sidebar/sponsored-ads.php:48
msgid "Install"
msgstr "Installer"

#: admin/views/sidebar/sponsored-ads.php:79
msgid "Zero complacency"
msgstr "Zéro complaisance"

#. translators: <em> highlights the offer — keep the <em> tag.
#: admin/views/sidebar/sponsored-ads.php:84
msgid "Get a <em>deep-dive review</em> on WPFormation"
msgstr "Obtenez un <em>test approfondi</em> sur WPFormation"

#. translators: <b> is the target audience — keep the <b> tag.
#: admin/views/sidebar/sponsored-ads.php:93
msgid ""
"<b>For plugin, theme &amp; SaaS editors.</b> Real-world test, published "
"article, social blast, trust badge."
msgstr ""
"<b>Pour les éditeurs et éditrices d’extensions, de thèmes et de SaaS.</b> "
"Test en conditions réelles, article publié, diffusion sociale, badge de "
"confiance."

#: admin/views/sidebar/sponsored-ads.php:99
msgid "Submit"
msgstr "Soumettre"

#: admin/views/sidebar/sponsored-ads.php:102
msgid "Service for editors"
msgstr "Service pour éditeurs et éditrices"

#: admin/views/sidebar/sponsored-ads.php:103
msgid "Crash-Test — A published review worth citing"
msgstr "Crash-Test : Un test publié qui mérite d’être cité"

#: admin/views/sidebar/sponsored-ads.php:104
msgid ""
"2,000–3,000-word deep dive, dedicated test site, video option. SEO-optimized"
" to rank for years. Delivered in 5–10 business days."
msgstr ""
"Analyse approfondie de 2 000 à 3 000 mots, site de test dédié, option vidéo."
" Optimisée SEO pour se positionner pendant des années. Livrée en 5 à 10 "
"jours ouvrés."

#. translators: <b> highlights the format — keep the <b> tag.
#: admin/views/sidebar/sponsored-ads.php:110
msgid "<b>Deep-dive</b> · By Fabrice Ducarme"
msgstr "<b>Analyse approfondie</b> · Par Fabrice Ducarme"

#: admin/class-admin.php:665 admin/views/sidebar/sponsored-ads.php:115
msgid "Apply"
msgstr "Appliquer"

#: admin/views/tabs/activity.php:34
msgid ""
"Admin actions across your site — plugin installs, user edits, option "
"changes."
msgstr ""
"Actions d’administration sur tout votre site : installations d’extensions, "
"modifications de comptes, changements d’options."

#: admin/views/tabs/activity.php:38
msgid ""
"Activity logging is disabled. Enable it in Settings to start tracking admin "
"actions."
msgstr ""
"La journalisation d’activité est désactivée. Activez-la dans Réglages pour "
"commencer à suivre les actions d’administration."

#: admin/views/tabs/activity.php:40
msgid "Go to Settings"
msgstr "Aller aux réglages"

#: admin/views/tabs/activity.php:158 admin/views/tabs/events.php:94
#: admin/views/tabs/incidents.php:170
msgid "%dw ago"
msgstr "il y a %dsem"

#: admin/views/tabs/activity.php:162 admin/views/tabs/events.php:98
#: admin/views/tabs/incidents.php:174
msgid "%dmo ago"
msgstr "il y a %dmo"

#: admin/views/tabs/activity.php:165 admin/views/tabs/events.php:101
#: admin/views/tabs/incidents.php:177
msgid "%dy ago"
msgstr "il y a %dan"

#: admin/views/tabs/activity.php:179
msgid "CREATED"
msgstr "CRÉÉ"

#: admin/views/tabs/activity.php:180
msgid "UPDATED"
msgstr "MàJ"

#: admin/views/tabs/activity.php:181
msgid "DELETED"
msgstr "SUPPRIMÉ"

#: admin/views/tabs/activity.php:182
msgid "CHANGED"
msgstr "MODIFIÉ"

#: admin/views/tabs/activity.php:183
msgid "ROTATED"
msgstr "RENOUVELÉ"

#: admin/views/tabs/activity.php:184
msgid "ENABLED"
msgstr "ACTIVÉ"

#: admin/views/tabs/activity.php:186
msgid "UPLOADED"
msgstr "AJOUTÉ"

#: admin/views/tabs/activity.php:187
msgid "INSTALLED"
msgstr "INSTALLÉ"

#: admin/views/tabs/activity.php:188
msgid "ACTIVATED"
msgstr "ACTIVÉ"

#: admin/views/tabs/activity.php:189
msgid "DEACTIVATED"
msgstr "DÉSACTIVÉ"

#: admin/views/tabs/activity.php:190
msgid "TRASHED"
msgstr "CORBEILLE"

#: admin/views/tabs/activity.php:191
msgid "RESTORED"
msgstr "RESTAURÉ"

#: admin/views/tabs/activity.php:192
msgid "ENFORCED"
msgstr "APPLIQUÉ"

#: admin/views/tabs/activity.php:193
msgid "VERIFIED"
msgstr "VÉRIFIÉ"

#: admin/views/tabs/activity.php:194
msgid "FAILED"
msgstr "ÉCHOUÉ"

#: admin/views/tabs/activity.php:221
msgid "USER"
msgstr "COMPTE"

#: admin/views/tabs/activity.php:222
msgid "POST"
msgstr "ARTICLE"

#: admin/views/tabs/activity.php:223
msgid "PAGE"
msgstr "PAGE"

#: admin/views/tabs/activity.php:224
msgid "CONFIG"
msgstr "CONFIG"

#: admin/views/tabs/activity.php:225
msgid "PLUGIN"
msgstr "EXTENSION"

#: admin/views/tabs/activity.php:226
msgid "MEDIA"
msgstr "MÉDIA"

#: admin/views/tabs/activity.php:227
msgid "THEME"
msgstr "THÈME"

#: admin/views/tabs/activity.php:228
msgid "OPTION"
msgstr "OPTION"

#: admin/views/tabs/activity.php:229
msgid "COMMENT"
msgstr "COMM."

#: admin/views/tabs/activity.php:230
msgid "MENU"
msgstr "MENU"

#: admin/views/tabs/activity.php:231
msgid "ROLE"
msgstr "RÔLE"

#: admin/views/tabs/activity.php:232
msgid "DEVICE"
msgstr "APPAREIL"

#. translators: %s: actions in last 7 days (wrapped in <b>).
#: admin/views/tabs/activity.php:250
msgid "%s actions in the last 7 days"
msgstr "%s actions au cours des 7 derniers jours"

#: admin/views/tabs/activity.php:257
msgid ""
"Track what changed and who changed it. Plugin installs, config edits, user "
"role changes — all captured with IP and timestamp."
msgstr ""
"Suivez ce qui a changé et qui l’a modifié. Installations d’extensions, "
"modifications de configuration, changements de rôle : tout est capturé avec "
"IP et horodatage."

#: admin/views/tabs/incidents.php:807
msgid "Export"
msgstr "Exporter"

#: admin/views/tabs/activity.php:282
msgid "Plugin changes"
msgstr "Changements d’extensions"

#: admin/views/tabs/activity.php:286
msgid "Config rotations"
msgstr "Rotations de configuration"

#: admin/views/tabs/activity.php:471
msgid "Type"
msgstr "Type"

#: admin/views/tabs/activity.php:473 admin/views/tabs/activity.php:486
#: admin/views/tabs/events.php:208 admin/views/tabs/incidents.php:840
#: admin/views/tabs/incidents.php:850 admin/views/tabs/incidents.php:866
msgid "All"
msgstr "Tout"

#: includes/AI/PostureAdvisor.php:255 admin/views/tabs/activity.php:474
msgid "Posts"
msgstr "Publications"

#: includes/AI/PostureAdvisor.php:256 includes/AI/PostureAdvisor.php:294
#: admin/views/tabs/activity.php:477
msgid "Plugins"
msgstr "Extensions"

#: includes/AI/PostureAdvisor.php:257 admin/views/tabs/activity.php:478
msgid "Themes"
msgstr "Thèmes"

#: admin/views/tabs/activity.php:479
msgid "Options"
msgstr "Options"

#: admin/views/tabs/activity.php:496 admin/views/tabs/events.php:226
#: admin/views/tabs/incidents.php:875
msgid "Period"
msgstr "Période"

#: admin/views/tabs/activity.php:498 admin/views/tabs/events.php:228
#: admin/views/tabs/incidents.php:877
msgid "All time"
msgstr "Toute la période"

#: admin/views/tabs/activity.php:500 admin/views/tabs/events.php:230
#: admin/views/tabs/incidents.php:879
msgid "Last 7 days"
msgstr "7 derniers jours"

#: admin/views/tabs/activity.php:501 admin/views/tabs/events.php:231
#: admin/views/tabs/incidents.php:880
msgid "Last 30 days"
msgstr "30 derniers jours"

#: admin/views/tabs/activity.php:506 admin/views/tabs/events.php:236
#: admin/views/tabs/incidents.php:885 admin/views/tabs/overview.php:532
msgid "Filter"
msgstr "Filtrer"

#: admin/views/tabs/activity.php:511
msgid "No activity matches the current filters."
msgstr "Aucune activité ne correspond aux filtres actuels."

#: admin/views/tabs/activity.php:515 admin/views/tabs/events.php:245
#: admin/views/tabs/overview.php:538
msgid "Time"
msgstr "Heure"

#: admin/views/tabs/activity.php:517
msgid "Action"
msgstr "Action"

#: admin/views/tabs/activity.php:518
msgid "Object"
msgstr "Objet"

#: admin/views/tabs/incidents.php:986 admin/views/tabs/overview.php:402
msgid "IP"
msgid_plural "IPs"
msgstr[0] "IP"
msgstr[1] "IP"

#. translators: 1: current page, 2: total pages, 3: total entries.
#: admin/views/tabs/activity.php:585
msgid "Page %1$d of %2$d · %3$d entries"
msgstr "Page %1$d sur %2$d · %3$d entrées"

#: admin/views/tabs/events.php:145
msgid "Audit"
msgstr "Audit"

#. translators: %s: total events in last 7 days (strong-wrapped).
#: admin/views/tabs/events.php:153
msgid "%s events in the last 7 days"
msgstr "%s évènements au cours des 7 derniers jours"

#: admin/views/tabs/events.php:160
msgid ""
"A complete audit log — successful logins, failures, session refreshes. "
"Filter, search, export for your records."
msgstr ""
"Un journal d’audit complet : connexions réussies, échecs, rafraîchissements "
"de session. Filtrez, recherchez, exportez pour vos archives."

#: admin/views/tabs/events.php:163 admin/views/tabs/overview.php:523
msgid "streaming"
msgstr "diffusion en continu"

#: admin/views/tabs/activity.php:266 admin/views/tabs/events.php:171
msgid "Export CSV"
msgstr "Exporter en CSV"

#: admin/views/tabs/events.php:175
msgid "Live view"
msgstr "Vue en direct"

#: admin/views/tabs/events.php:183
msgid "Total (7d)"
msgstr "Total (7 j)"

#: admin/views/tabs/events.php:187
msgid "Successful"
msgstr "Réussies"

#: admin/views/tabs/events.php:191
msgid "Failed"
msgstr "Échouées"

#: admin/views/tabs/events.php:206 admin/views/tabs/events.php:246
#: admin/views/tabs/incidents.php:838 admin/views/tabs/overview.php:539
msgid "Status"
msgstr "État"

#: admin/views/tabs/events.php:209
msgid "Success"
msgstr "Succès"

#: admin/views/tabs/events.php:210
msgid "Failure"
msgstr "Échec"

#: admin/views/tabs/events.php:211
msgid "Blocked"
msgstr "Bloquée"

#: admin/views/tabs/events.php:221
msgid "Username"
msgstr "Identifiant"

#: admin/views/tabs/events.php:222
msgid "e.g. admin"
msgstr "p. ex. admin"

#: admin/views/tabs/events.php:229 admin/views/tabs/incidents.php:878
msgid "Last 24h"
msgstr "Dernières 24 h"

#: admin/views/tabs/events.php:241
msgid "No events match the current filters."
msgstr "Aucun évènement ne correspond aux filtres actuels."

#: admin/views/tabs/events.php:248 admin/views/tabs/overview.php:541
msgid "User · action"
msgstr "Compte · action"

#: admin/views/tabs/events.php:249
msgid "User agent"
msgstr "Agent utilisateur"

#: admin/views/tabs/events.php:250 admin/views/tabs/overview.php:542
msgid "When"
msgstr "Quand"

#: includes/class-login-logs.php:135
msgid "Wrong password"
msgstr "Mot de passe incorrect"

#: includes/class-login-logs.php:138
msgid "Unknown account"
msgstr "Compte inconnu"

#: includes/class-login-logs.php:140
msgid "Cookies blocked by the browser"
msgstr "Cookies bloqués par le navigateur"

#: includes/class-login-logs.php:146
msgid "Blocked: too many failed 2FA checks"
msgstr "Bloqué : trop d'échecs de vérification 2FA"

#: includes/class-login-logs.php:148
msgid "Blocked: mandatory 2FA not set up"
msgstr "Bloqué : 2FA obligatoire non configurée"

#: includes/class-login-logs.php:150
msgid "Blocked: bot trap"
msgstr "Bloqué : piège anti-robot"

#: includes/class-login-logs.php:152
msgid "Blocked: reserved username"
msgstr "Bloqué : identifiant réservé"

#. translators: %s: error code returned by a third-party plugin.
#: includes/class-login-logs.php:157
msgid "Refused by another plugin (%s)"
msgstr "Refusé par une autre extension (%s)"

#: admin/views/tabs/events.php:267 admin/views/tabs/overview.php:221
msgid "Rate-limited"
msgstr "Débit limité"

#: admin/views/tabs/events.php:269
msgid "Unknown user"
msgstr "Compte inconnu"

#. translators: 1: window start, 2: window end, 3: total.
#: admin/views/tabs/events.php:342
msgid "Showing %1$s of %2$s"
msgstr "Affichage de %1$s sur %2$s"

#: admin/views/tabs/events.php:351
msgid "Previous page"
msgstr "Page précédente"

#: admin/views/tabs/events.php:363
msgid "Next page"
msgstr "Page suivante"

#. translators: %s: total events.
#: admin/views/tabs/events.php:376
msgid "Showing all %s events"
msgstr "Affichage de l’intégralité des %s évènements"

#: admin/class-admin.php:915 includes/AI/IncidentExplainer.php:46
#: admin/views/tabs/incidents.php:224
msgid "Incident not found."
msgstr "Incident introuvable."

#: admin/views/tabs/incidents.php:257
msgid "Brute force attack"
msgstr "Attaque par force brute"

#: admin/views/tabs/incidents.php:258
msgid ""
"Same IP hammering one username with different passwords. Automated tools "
"cycle through common passwords trying to guess yours."
msgstr ""
"Une même IP martèle un identifiant avec différents mots de passe. Des outils"
" automatisés parcourent les mots de passe courants pour tenter de deviner le"
" vôtre."

#: admin/views/tabs/incidents.php:259
msgid ""
"Change the targeted account's password immediately. Consider enabling Hide "
"Login to conceal your login URL."
msgstr ""
"Changez immédiatement le mot de passe du compte ciblé. Envisagez d’activer "
"Hide Login pour dissimuler votre URL de connexion."

#: admin/views/tabs/incidents.php:33 admin/views/tabs/incidents.php:262
#: admin/views/tabs/incidents.php:852
msgid "Credential stuffing"
msgstr "Credential stuffing"

#: admin/views/tabs/incidents.php:263
msgid ""
"Same IP trying many different usernames — likely using a leaked database of "
"email/password pairs from other breached sites."
msgstr ""
"Une même IP essaie de nombreux identifiants différents : probablement à "
"partir d’une base de données divulguée de paires e-mail/mot de passe "
"provenant d’autres sites compromis."

#: admin/views/tabs/incidents.php:264
msgid ""
"Force a password reset for targeted users. Enable two-factor authentication "
"when available."
msgstr ""
"Forcez une réinitialisation de mot de passe pour les comptes ciblés. Activez"
" l’authentification à deux facteurs lorsque c’est possible."

#: admin/views/tabs/incidents.php:34 admin/views/tabs/incidents.php:267
msgid "Username enumeration"
msgstr "Énumération d’identifiants"

#: admin/views/tabs/incidents.php:268
msgid ""
"Probing for valid usernames before attempting passwords. Attackers confirm "
"which accounts exist to target them later."
msgstr ""
"Sondage à la recherche d’identifiants valides avant de tenter des mots de "
"passe. Les personnes malveillantes confirment quels comptes existent pour "
"mieux les cibler ensuite."

#: admin/views/tabs/incidents.php:269
msgid ""
"Ensure \"Mask login errors\" and \"Prevent author enumeration\" are enabled "
"in Hardening settings."
msgstr ""
"Assurez-vous que « Masquer les erreurs de connexion » et « Empêcher "
"l’énumération des auteurs et autrices » sont activées dans les réglages de "
"Renforcement."

#: admin/views/tabs/incidents.php:35 admin/views/tabs/incidents.php:272
msgid "Distributed attack"
msgstr "Attaque distribuée"

#: admin/views/tabs/incidents.php:273
msgid ""
"Multiple IPs targeting the same username — coordinated botnet or proxy "
"network. Harder to block by IP alone."
msgstr ""
"Plusieurs IP ciblent le même identifiant : botnet coordonné ou réseau de "
"proxys. Plus difficile à bloquer par IP seule."

#: admin/views/tabs/incidents.php:274
msgid ""
"Block the subnet. Consider Cloudflare or CDN-level protection for additional"
" filtering."
msgstr ""
"Bloquez le sous-réseau. Envisagez une protection au niveau de Cloudflare ou "
"du CDN pour un filtrage supplémentaire."

#: admin/views/tabs/incidents.php:36 admin/views/tabs/incidents.php:277
msgid "Post-compromise activity"
msgstr "Activité post-compromission"

#: admin/views/tabs/incidents.php:278
msgid ""
"Successful login after many failures — possible compromised account. The "
"attacker may have found valid credentials."
msgstr ""
"Connexion réussie après de nombreux échecs : compte possiblement compromis. "
"La personne malveillante peut avoir trouvé des identifiants valides."

#: admin/views/tabs/incidents.php:279
msgid ""
"Immediately reset the password. Check for unauthorized changes and review "
"recent admin activity."
msgstr ""
"Réinitialisez immédiatement le mot de passe. Recherchez des modifications "
"non autorisées et examinez l’activité d’administration récente."

#: admin/views/tabs/incidents.php:282
msgid "Targeted attack"
msgstr "Attaque ciblée"

#: admin/views/tabs/incidents.php:283
msgid ""
"Focused attack on a high-privilege account (editor, admin). Attackers "
"specifically chose this account for its permissions."
msgstr ""
"Attaque focalisée sur un compte à privilèges élevés (éditeur/éditrice, "
"administrateur/administratrice). Les personnes malveillantes ont "
"spécifiquement choisi ce compte pour ses permissions."

#: admin/views/tabs/incidents.php:284
msgid ""
"Reset the password. Limit the number of admin accounts and use strong, "
"unique passwords."
msgstr ""
"Réinitialisez le mot de passe. Limitez le nombre de comptes administrateurs "
"et administratrices et utilisez des mots de passe forts et uniques."

#: admin/views/tabs/incidents.php:287 admin/views/tabs/incidents.php:856
msgid "Reserved username probe"
msgstr "Sondage d’identifiant réservé"

#: admin/views/tabs/incidents.php:288
msgid ""
"Login attempts using a username on the configured reserved-name blacklist. "
"Often signals automated scanning for default accounts."
msgstr ""
"Tentatives de connexion avec un identifiant présent sur la liste noire des "
"noms réservés configurée. Signale souvent un scan automatisé à la recherche "
"de comptes par défaut."

#: admin/views/tabs/incidents.php:289
msgid ""
"Keep the Username Blacklist toggle enabled; review entries to match your "
"deployment."
msgstr ""
"Gardez activée l’option Liste noire d’identifiants ; vérifiez les entrées "
"pour correspondre à votre déploiement."

#: admin/views/tabs/incidents.php:292 admin/views/tabs/incidents.php:857
msgid "Bot honeypot"
msgstr "Pot de miel à bots"

#: admin/views/tabs/incidents.php:293
msgid ""
"Automated bot detected via the login honeypot trap. Banned for 24 hours on "
"first hit."
msgstr ""
"Bot automatisé détecté via le piège pot de miel de connexion. Banni pour 24 "
"heures dès la première détection."

#: admin/views/tabs/incidents.php:294
msgid ""
"No action required — the IP is already banned. Review source IPs if repeats "
"occur."
msgstr ""
"Aucune action requise : l’IP est déjà bannie. Examinez les IP sources en cas"
" de répétitions."

#: admin/views/tabs/incidents.php:39 admin/views/tabs/incidents.php:297
#: admin/views/tabs/incidents.php:858
msgid "2FA recovery requested"
msgstr "Récupération A2F demandée"

#: admin/views/tabs/incidents.php:298
msgid ""
"A user requested a 2FA reset via the recovery flow. Informational — not a "
"security incident per se, but surfaces coordinated abuse when multiple "
"requests target the same account."
msgstr ""
"Un utilisateur ou une utilisatrice a demandé une réinitialisation A2F via le"
" flux de récupération. Information : pas un incident de sécurité en soi, "
"mais révèle des abus coordonnés lorsque plusieurs demandes ciblent le même "
"compte."

#: admin/views/tabs/incidents.php:299
msgid ""
"Review recurring requests from the same IP. Confirm the admin only "
"authorizes legitimate resets."
msgstr ""
"Examinez les demandes récurrentes provenant de la même IP. Confirmez que "
"l’administrateur ou l’administratrice n’autorise que les réinitialisations "
"légitimes."

#: admin/views/tabs/incidents.php:326
msgid "Reset password"
msgstr "Réinitialiser le mot de passe"

#: admin/views/tabs/incidents.php:328
msgid "Force \"%s\" to pick a new password."
msgstr "Forcer « %s » à choisir un nouveau mot de passe."

#: admin/views/tabs/incidents.php:331
msgid "Reset password →"
msgstr "Réinitialiser le mot de passe →"

#: admin/views/tabs/incidents.php:340
msgid "Biggest single lift against credential attacks."
msgstr "Le plus grand gain unique contre les attaques sur les identifiants."

#: admin/views/tabs/incidents.php:343
msgid "Enable 2FA →"
msgstr "Activer l’A2F →"

#: admin/views/tabs/incidents.php:349
msgid "Already enabled on this site."
msgstr "Déjà activée sur ce site."

#: admin/views/tabs/incidents.php:358
msgid "Hide your login URL"
msgstr "Masquer votre URL de connexion"

#: admin/views/tabs/incidents.php:359
msgid "Most brute-force tools target /wp-login.php."
msgstr "La plupart des outils de force brute ciblent /wp-login.php."

#: admin/views/tabs/incidents.php:362
msgid "Enable →"
msgstr "Activer →"

#: admin/views/tabs/incidents.php:372
msgid "Blacklist %s and all siblings."
msgstr "Mettre %s en liste noire ainsi que ses voisins."

#: admin/views/tabs/incidents.php:377
msgid "Block %s"
msgstr "Bloquer %s"

#: admin/views/tabs/incidents.php:384
msgid "Back to incidents"
msgstr "Retour aux incidents"

#: admin/views/tabs/incidents.php:394 admin/views/tabs/incidents.php:842
#: admin/views/tabs/incidents.php:926
msgid "Resolved"
msgstr "Résolu"

#: admin/views/tabs/incidents.php:396 admin/views/tabs/incidents.php:843
#: admin/views/tabs/incidents.php:929
msgid "Ignored"
msgstr "Ignoré"

#: admin/views/tabs/incidents.php:398 admin/views/tabs/incidents.php:815
#: admin/views/tabs/incidents.php:841 admin/views/tabs/incidents.php:923
msgid "Open"
msgstr "Ouvert"

#: admin/views/tabs/incidents.php:404
msgid "Attempts"
msgstr "Tentatives"

#: admin/views/tabs/incidents.php:412
msgid "Usernames"
msgstr "Identifiants"

#: admin/views/tabs/incidents.php:416 admin/views/tabs/incidents.php:995
msgid "Window"
msgstr "Fenêtre"

#: admin/views/tabs/incidents.php:436 admin/views/tabs/incidents.php:1015
msgid "Blacklist 24h"
msgstr "Blacklist 24h"

#. translators: %d: minutes remaining in the current IP lockout.
#: admin/views/tabs/incidents.php:444 admin/views/tabs/incidents.php:1023
msgid "%d min"
msgid_plural "%d min"
msgstr[0] "%d min"
msgstr[1] "%d min"

#: admin/views/tabs/incidents.php:449 admin/views/tabs/incidents.php:612
#: admin/views/tabs/incidents.php:1028
msgid "Auth blocked"
msgstr "Auth bloquée"

#: admin/views/tabs/incidents.php:455 admin/views/tabs/incidents.php:1034
msgid "Subnet blocked"
msgstr "Sous-réseau bloqué"

#: admin/views/tabs/incidents.php:463
msgid "Target user"
msgstr "Compte ciblé"

#: admin/views/tabs/incidents.php:467 admin/views/tabs/incidents.php:1049
msgid "First seen"
msgstr "Première observation"

#: admin/views/tabs/incidents.php:471 admin/views/tabs/incidents.php:1053
msgid "Last seen"
msgstr "Dernière observation"

#: admin/views/tabs/incidents.php:494 admin/views/tabs/incidents.php:1082
msgid "Unblock IP"
msgstr "Débloquer l’IP"

#: admin/views/tabs/incidents.php:500 admin/views/tabs/incidents.php:899
#: admin/views/tabs/incidents.php:1087
msgid "Mark resolved"
msgstr "Marquer comme résolu"

#: admin/views/tabs/incidents.php:524
msgid "What happened: %s"
msgstr "Ce qui s’est passé : %s"

#: admin/views/tabs/incidents.php:528
msgid "What to do:"
msgstr "Que faire :"

#: admin/views/tabs/incidents.php:551
msgid "Timeline"
msgstr "Chronologie"

#. translators: 1: matched count, 2: related count
#: admin/views/tabs/incidents.php:558
msgid "%1$d matched · %2$d related"
msgstr "%1$d correspondant·s · %2$d liés"

#. translators: %d: event count
#: admin/views/tabs/incidents.php:571
msgid "%d event"
msgid_plural "%d events"
msgstr[0] "%d évènement"
msgstr[1] "%d évènements"

#: admin/views/tabs/incidents.php:582
msgid ""
"Matched events triggered this incident's pattern. Related events come from "
"the same IP but are shown for context — they did not trigger the pattern."
msgstr ""
"Les évènements correspondants ont déclenché le motif de cet incident. Les "
"évènements liés proviennent de la même IP mais sont affichés pour le "
"contexte : ils n’ont pas déclenché le motif."

#: admin/views/tabs/incidents.php:642
msgid "Correlated by IP; did not trigger the pattern."
msgstr "Corrélé par IP ; n’a pas déclenché le motif."

#: admin/views/tabs/incidents.php:642
msgid "This event triggered the incident's pattern."
msgstr "Cet évènement a déclenché le motif de l’incident."

#: admin/views/tabs/incidents.php:643
msgid "MATCH"
msgstr "MATCH"

#: admin/views/tabs/incidents.php:643
msgid "RELATED"
msgstr "RELATED"

#: admin/views/tabs/incidents.php:657
msgid "%1$d/%2$d attempt"
msgstr "%1$d/%2$d tentative"

#: admin/views/tabs/incidents.php:664
msgid "No correlated events found."
msgstr "Aucun évènement corrélé trouvé."

#: admin/views/tabs/incidents.php:671
msgid "User agents observed"
msgstr "Agents utilisateurs observés"

#. translators: %d: UA count
#: admin/views/tabs/incidents.php:677
msgid "%d UA"
msgid_plural "%d UAs"
msgstr[0] "%d UA"
msgstr[1] "%d UA"

#: admin/views/tabs/incidents.php:696
msgid "BOT"
msgstr "BOT"

#: admin/views/tabs/incidents.php:702
msgid "%d request"
msgid_plural "%d requests"
msgstr[0] "%d requête"
msgstr[1] "%d requêtes"

#: admin/views/tabs/incidents.php:712
msgid "Suggested actions"
msgstr "Actions suggérées"

#: admin/views/tabs/incidents.php:727
msgid "Done"
msgstr "Terminé"

#: admin/views/tabs/incidents.php:786
msgid "Patterns worth your attention"
msgstr "Motifs méritant votre attention"

#. translators: %s: number of incidents in the last 30 days.
#: admin/views/tabs/incidents.php:792
msgid "%s in the last 30 days"
msgstr "%s au cours des 30 derniers jours"

#: admin/views/tabs/incidents.php:799
msgid ""
"Grouped signals — multiple failed attempts, suspicious IPs, repeated brute-"
"force. One row per pattern, not per event."
msgstr ""
"Signaux regroupés : tentatives multiples en échec, IP suspectes, force brute"
" répétée. Une ligne par motif, pas par évènement."

#: admin/views/tabs/incidents.php:819
msgid "Resolved (30d)"
msgstr "Résolus (30 j)"

#: admin/views/tabs/incidents.php:827
msgid "Escalated"
msgstr "Escaladé"

#: admin/views/tabs/incidents.php:32 admin/views/tabs/incidents.php:851
msgid "Brute force"
msgstr "Force brute"

#: admin/views/tabs/incidents.php:853
msgid "Enumeration"
msgstr "Énumération"

#: admin/views/tabs/incidents.php:854
msgid "Distributed"
msgstr "Distribuée"

#: admin/views/tabs/incidents.php:855
msgid "Post compromise"
msgstr "Post-compromission"

#: admin/views/tabs/incidents.php:890
msgid "No incidents match the current filters."
msgstr "Aucun incident ne correspond aux filtres actuels."

#: admin/views/tabs/incidents.php:979
msgid "attempts"
msgstr "tentatives"

#: admin/views/tabs/incidents.php:982
msgid "username"
msgid_plural "usernames"
msgstr[0] "identifiant"
msgstr[1] "identifiants"

#: admin/views/tabs/incidents.php:1061
msgid "Investigate"
msgstr "Enquêter"

#: admin/views/tabs/incidents.php:1100
msgid "No other incidents in the selected period."
msgstr "Aucun autre incident sur la période sélectionnée."

#: admin/views/tabs/incidents.php:1102
msgid "Adjust filters"
msgstr "Ajuster les filtres"

#: admin/views/tabs/incidents.php:1104
msgid "to see more history."
msgstr "pour voir plus d’historique."

#. translators: 1: current page, 2: total pages, 3: total rows.
#: admin/views/tabs/incidents.php:1115
msgid "Page %1$d of %2$d · %3$d incidents"
msgstr "Page %1$d sur %2$d · %3$d incidents"

#: admin/class-admin.php:463 admin/views/tabs/overview.php:36
msgid "just now"
msgstr "à l’instant"

#: admin/views/tabs/overview.php:46
msgid "All core defenses operational"
msgstr "Toutes les défenses principales sont opérationnelles"

#: admin/views/tabs/overview.php:47
msgid "Elevated threat — review incidents"
msgstr "Menace élevée : examinez les incidents"

#: admin/views/tabs/overview.php:48
msgid "Active attack in progress"
msgstr "Attaque active en cours"

#: admin/views/tabs/overview.php:53
msgid "Active attack in progress."
msgstr "Attaque active en cours."

#: admin/views/tabs/overview.php:55
msgid "Elevated threat — review incidents."
msgstr "Menace élevée : examinez les incidents."

#: admin/views/tabs/overview.php:57
msgid "Your site is fully defended."
msgstr "Votre site est bien protégé."

#: admin/views/tabs/overview.php:69
msgid "%d more than the previous 24 hours"
msgstr "%d de plus que les 24 heures précédentes"

#: admin/views/tabs/overview.php:71
msgid "%d fewer than the previous 24 hours"
msgstr "%d de moins que les 24 heures précédentes"

#: admin/views/tabs/overview.php:79
msgid "vs prev 24h"
msgstr "vs 24 h préc."

#: admin/views/tabs/overview.php:86
msgid "Login attempts · last 24 h"
msgstr "Tentatives de connexion · dernières 24 h"

#: admin/views/tabs/overview.php:87
msgid "Live"
msgstr "En direct"

#: admin/views/tabs/overview.php:87
msgid "live"
msgstr "en direct"

#. translators: %s: relative time string like "4 minutes ago".
#: admin/views/tabs/overview.php:105
msgid ""
"System last checked %s. All core defenses are operational and no active "
"incidents require attention."
msgstr ""
"Dernière vérification du système %s. Toutes les défenses principales sont "
"opérationnelles et aucun incident actif ne requiert d’attention."

#. translators: %s: relative time string like "4 minutes ago".
#: admin/views/tabs/overview.php:113
msgid "System last checked %s. Review active incidents below."
msgstr ""
"Dernière vérification du système %s. Examinez les incidents actifs ci-"
"dessous."

#: admin/views/tabs/overview.php:97
msgid "No login events recorded yet. All core defenses are operational."
msgstr ""
"Aucun événement de connexion enregistré pour l’instant. Toutes les défenses "
"principales sont opérationnelles."

#: admin/views/tabs/overview.php:99
msgid "No login events recorded yet. Review active incidents below."
msgstr ""
"Aucun événement de connexion enregistré pour l’instant. Examinez les "
"incidents actifs ci-dessous."

#: admin/views/tabs/overview.php:126
msgid "Login attempts"
msgstr "Tentatives de connexion"

#: admin/views/tabs/overview.php:130
msgid "Unique IP"
msgid_plural "Unique IPs"
msgstr[0] "IP unique"
msgstr[1] "IP uniques"

#: admin/views/tabs/overview.php:134
msgid "Lockout"
msgid_plural "Lockouts"
msgstr[0] "Verrouillage"
msgstr[1] "Verrouillages"

#: admin/views/tabs/overview.php:139
msgid "Data breach"
msgid_plural "Data breaches"
msgstr[0] "Fuite de données"
msgstr[1] "Fuites de données"

#: admin/views/tabs/overview.php:213
msgid "URL camouflaged"
msgstr "URL camouflée"

#. translators: 1: active toggles, 2: total toggles
#: admin/views/tabs/overview.php:229
msgid "%1$d of %2$d toggles"
msgstr "%1$d options sur %2$d"

#: admin/views/tabs/overview.php:237
msgid "30-day retention"
msgstr "Rétention de 30 jours"

#: admin/views/tabs/overview.php:245
msgid "Admin actions"
msgstr "Actions d’administration"

#: admin/views/tabs/overview.php:253
msgid "Enabled"
msgstr "Activé"

#: admin/views/tabs/overview.php:261
msgid "HTTP protection"
msgstr "Protection HTTP"

#. translators: %d: number of users with a flagged password or email.
#: admin/views/tabs/overview.php:273
msgid "%d account flagged"
msgid_plural "%d accounts flagged"
msgstr[0] "%d compte signalé"
msgstr[1] "%d comptes signalés"

#: admin/views/tabs/overview.php:276
msgid "No flagged accounts"
msgstr "Aucun compte signalé"

#: admin/views/tabs/overview.php:278
msgid "Password and email leaks"
msgstr "Fuites de mots de passe et d’e-mails"

#: admin/views/tabs/overview.php:362 admin/views/tabs/settings.php:141
msgid "Protection modules"
msgstr "Modules de protection"

#. translators: 1: active module count, 2: total module count.
#: admin/views/tabs/overview.php:367
msgid "%1$d of %2$d active"
msgstr "%1$d actifs sur %2$d"

#: admin/views/tabs/overview.php:374
msgid "Manage all →"
msgstr "Tout gérer →"

#: admin/views/tabs/overview.php:396
msgid "24 H"
msgstr "24 H"

#: admin/views/tabs/overview.php:400
msgid "event"
msgid_plural "events"
msgstr[0] "évènement"
msgstr[1] "évènements"

#: admin/views/tabs/overview.php:406
msgid "24-hour activity chart"
msgstr "Graphique d’activité sur 24 heures"

#: admin/views/tabs/overview.php:426
msgid "24h ago"
msgstr "il y a 24 h"

#: admin/views/tabs/overview.php:434
msgid "%d fail blocked"
msgid_plural "%d fails blocked"
msgstr[0] "%d échec bloqué"
msgstr[1] "%d échecs bloqués"

#: admin/views/tabs/overview.php:441
msgid "all clean"
msgstr "tout est propre"

#: admin/views/tabs/overview.php:445
msgid "no activity"
msgstr "aucune activité"

#: admin/views/tabs/overview.php:448
msgid "now"
msgstr "maintenant"

#: admin/views/tabs/overview.php:522
msgid "Live events"
msgstr "Évènements en direct"

#: admin/views/tabs/overview.php:528
msgid "Pause"
msgstr "Pause"

#: admin/views/tabs/overview.php:548
msgid "No events recorded yet — your site is quiet."
msgstr "Aucun évènement enregistré pour l’instant : votre site est calme."

#: admin/views/tabs/overview.php:596
msgid "One quick win: enable Two-Factor Auth."
msgstr "Un gain rapide : activez l’authentification à deux facteurs."

#: admin/views/tabs/overview.php:597
msgid ""
"Biggest single lift to your security score. Takes about 2 minutes per user."
msgstr ""
"Le plus grand gain unique pour votre score de sécurité. Environ 2 minutes "
"par compte."

#: admin/views/tabs/overview.php:599
msgid "Set up 2FA →"
msgstr "Configurer l’A2F →"

#: admin/views/tabs/overview.php:621
msgid "Skip this advice"
msgstr "Ignorer ce conseil"

#: admin/views/tabs/protection.php:35
msgid "Protection Status"
msgstr "État de la protection"

#. translators: %s: login slug.
#: admin/views/tabs/protection.php:52
msgid "Slug: /%s"
msgstr "Slug : /%s"

#: admin/views/tabs/protection.php:54 admin/views/tabs/protection.php:91
#: admin/views/tabs/protection.php:137 admin/views/tabs/settings.php:252
#: admin/views/tabs/settings.php:273 admin/views/tabs/settings.php:283
#: admin/views/tabs/settings.php:293 admin/views/tabs/settings.php:303
#: admin/views/tabs/settings.php:319 admin/views/tabs/settings.php:329
#: admin/views/tabs/settings.php:339 admin/views/tabs/settings.php:355
#: admin/views/tabs/settings.php:365 admin/views/tabs/settings.php:375
#: admin/views/tabs/settings.php:385 admin/views/tabs/settings.php:395
msgid "Disabled"
msgstr "Désactivé"

#: admin/views/tabs/protection.php:55 admin/views/tabs/protection.php:92
msgid "Enable in Settings"
msgstr "Activer dans Réglages"

#. translators: 1: locked IP count, 2: allowed retries, 3: lockout duration in
#. minutes.
#: admin/views/tabs/protection.php:81
msgid "%1$d IPs locked out · %2$d retries / %3$d min lockout"
msgstr "%1$d IP verrouillées · %2$d tentatives / verrouillage de %3$d min"

#: admin/views/tabs/protection.php:89 admin/views/tabs/protection.php:118
#: admin/views/tabs/protection.php:139
msgid "Configure"
msgstr "Configurer"

#. translators: 1: active toggle count, 2: total toggle count.
#: admin/views/tabs/protection.php:111
msgid "%1$d / %2$d active"
msgstr "%1$d / %2$d actifs"

#: admin/views/tabs/protection.php:161
msgid "NOTICE"
msgstr "AVIS"

#: admin/views/tabs/protection.php:162
msgid "Cache Plugin Detected"
msgstr "Extension de cache détectée"

#. translators: %s: comma-separated list of active cache plugin names.
#: admin/views/tabs/protection.php:169
msgid ""
"%s is active. Make sure to exclude your login URL from page caching to "
"prevent lockout issues."
msgstr ""
"%s est active. Assurez-vous d’exclure votre URL de connexion de la mise en "
"cache des pages pour éviter des problèmes de verrouillage."

#: admin/views/tabs/settings.php:140
msgid "SETTINGS"
msgstr "RÉGLAGES"

#: admin/views/tabs/settings.php:156
msgid "SECURITY SCORE"
msgstr "SCORE DE SÉCURITÉ"

#: admin/views/tabs/settings.php:252
msgid "Protected"
msgstr "Protégé"

#: admin/views/tabs/settings.php:260
msgid "Quick security wins. Each toggle hardens one attack surface."
msgstr ""
"Gains de sécurité rapides. Chaque option renforce une surface d’attaque."

#: admin/views/tabs/settings.php:263
msgid "%1$d of %2$d"
msgstr "%1$d sur %2$d"

#: admin/views/tabs/settings.php:291
msgid ""
"Block clickjacking, MIME sniffing, and credential exfiltration on the login "
"page."
msgstr ""
"Bloque le détournement de clic, le reniflage MIME et l’exfiltration "
"d’identifiants sur la page de connexion."

#: admin/views/tabs/settings.php:301
msgid "Detect passwords and emails that appear in public data breach corpora."
msgstr ""
"Détecte les mots de passe et e-mails qui apparaissent dans des corpus "
"publics de fuites."

#: admin/views/tabs/settings.php:383
msgid ""
"Require a second code after password. Biggest single lift to your score."
msgstr ""
"Exige un second code après le mot de passe. Le plus grand gain unique pour "
"votre score."

#: admin/views/tabs/settings.php:393
msgid "Email alerts on incidents, lockouts, and configuration changes."
msgstr ""
"Alertes e-mail sur les incidents, verrouillages et changements de "
"configuration."

#: admin/views/tabs/settings.php:544
msgid "Unsaved changes"
msgstr "Modifications non enregistrées"

#: admin/views/tabs/settings.php:546
msgid "Discard"
msgstr "Abandonner"

#: admin/views/tabs/settings.php:547
msgid "Save all changes"
msgstr "Enregistrer toutes les modifications"

#: admin/views/two-factor-recovery-confirm.php:25
msgid "2FA reset complete"
msgstr "Réinitialisation A2F terminée"

#: admin/views/two-factor-recovery-confirm.php:33
msgid "2FA has been reset"
msgstr "L’A2F a été réinitialisée"

#: admin/views/two-factor-recovery-confirm.php:34
msgid ""
"The target user is back to the pre-2FA state and must reconfigure it before "
"their next sensitive action. Every active session of that user has been "
"destroyed."
msgstr ""
"Le compte ciblé est revenu à son état d’avant A2F et doit la reconfigurer "
"avant toute action sensible suivante. Toutes les sessions actives de ce "
"compte ont été détruites."

#: admin/views/two-factor-recovery-confirm.php:35
msgid "← Back to dashboard"
msgstr "← Retour au Tableau de bord"

#: admin/views/two-factor-recovery-confirm.php:50
#: admin/views/two-factor-recovery-confirm.php:62
msgid "Authorize 2FA reset"
msgstr "Autoriser la réinitialisation A2F"

#: admin/views/two-factor-recovery-confirm.php:63
msgid ""
"A 2FA reset was requested for the account below. Authorizing this action "
"will remove every 2FA credential, revoke every trusted device, and destroy "
"every active session of that user."
msgstr ""
"Une réinitialisation A2F a été demandée pour le compte ci-dessous. Autoriser"
" cette action supprimera tous les identifiants A2F, révoquera tous les "
"appareils de confiance et détruira toutes les sessions actives de ce compte."

#: admin/views/two-factor-recovery-confirm.php:66
#: admin/views/tabs/activity.php:484 admin/views/tabs/activity.php:516
msgid "User"
msgstr "Compte"

#: admin/views/two-factor-recovery-confirm.php:69
msgid "Requester IP"
msgstr "IP de la demande"

#: admin/views/two-factor-recovery-confirm.php:72
msgid "Requester User-Agent"
msgstr "Agent utilisateur de la demande"

#: admin/views/two-factor-recovery-confirm.php:77
msgid "Authorize reset"
msgstr "Autoriser la réinitialisation"

#: admin/views/two-factor-recovery-request.php:19
#: admin/views/two-factor-recovery-sent.php:11
msgid "2FA recovery"
msgstr "Récupération A2F"

#: admin/views/two-factor-recovery-request.php:32
msgid "Request 2FA reset"
msgstr "Demander la réinitialisation A2F"

#: admin/views/two-factor-recovery-request.php:31
msgid ""
"If you lost access to every second factor, request a reset for the account "
"whose password you just confirmed. A site administrator will be emailed and "
"must authorize the operation. Every successful request is recorded in the "
"activity log."
msgstr ""
"Si vous avez perdu l’accès à tous vos seconds facteurs, demandez une "
"réinitialisation pour le compte dont vous venez de confirmer le mot de passe. "
"Un administrateur ou une administratrice du site sera contacté·e par e-mail "
"et devra autoriser l’opération. Chaque demande envoyée est consignée dans le "
"journal d’activité."

#: admin/views/two-factor-recovery-request.php:34
msgid "Request reset"
msgstr "Demander la réinitialisation"

#: admin/views/two-factor-recovery-request.php:43
#: admin/views/two-factor-recovery-sent.php:22
msgid "← Back to login"
msgstr "← Retour à la connexion"

#: admin/views/two-factor-recovery-sent.php:20
msgid "Request received"
msgstr "Demande reçue"

#: admin/views/two-factor-recovery-sent.php:21
msgid ""
"If the account exists and 2FA is enabled, a site administrator has been "
"emailed. The link expires in one hour."
msgstr ""
"Si le compte existe et que l’A2F est activée, un administrateur ou une "
"administratrice du site a été contacté·e par e-mail. Le lien expire dans une"
" heure."

#: admin/views/two-factor-verify.php:54 admin/views/profile/two-factor.php:189
#: admin/views/sections/two-factor-settings.php:110
msgid "Email verification code"
msgstr "Code de vérification par e-mail"

#: admin/views/two-factor-verify.php:55 admin/views/two-factor-verify.php:196
msgid "Backup code"
msgstr "Code de secours"

#: admin/views/two-factor-verify.php:56 admin/views/profile/two-factor.php:179
msgid "Authenticator verification code"
msgstr "Code de vérification de l’application d’authentification"

#: admin/views/two-factor-verify.php:66
msgid "Verify Your Identity — %s"
msgstr "Vérifier votre identité : %s"

#: admin/views/two-factor-verify.php:86
msgid "Verify your identity"
msgstr "Vérifier votre identité"

#: admin/views/two-factor-verify.php:95
msgid "A new code has been sent to your email."
msgstr "Un nouveau code a été envoyé à votre adresse e-mail."

#: admin/views/two-factor-verify.php:101
msgid "Enter the 6-digit code sent to your email address."
msgstr "Saisissez le code à 6 chiffres envoyé à votre adresse e-mail."

#: admin/views/two-factor-verify.php:102
msgid "Enter one of your backup codes."
msgstr "Saisissez l’un de vos codes de secours."

#: admin/views/two-factor-verify.php:103
msgid "Enter the 6-digit code from your authenticator app."
msgstr ""
"Saisissez le code à 6 chiffres généré par votre application "
"d’authentification."

#. translators: %d: trust duration in days
#: admin/views/two-factor-verify.php:164
msgid "Trust this device for %d days"
msgstr "Faire confiance à cet appareil pendant %d jours"

#: admin/views/two-factor-verify.php:171
msgid "Verify"
msgstr "Vérifier"

#: admin/views/two-factor-verify.php:194
msgid "Authenticator app"
msgstr "Application d’authentification"

#: admin/views/two-factor-verify.php:195 admin/views/sidebar/settings.php:56
msgid "Email code"
msgstr "Code par e-mail"

#: admin/views/two-factor-verify.php:212
msgid "Lost your device? Use a backup code"
msgstr "Appareil perdu ? Utilisez un code de secours"

#: admin/views/two-factor-verify.php:223
msgid "Lost access? Request 2FA reset"
msgstr "Accès perdu ? Demander une réinitialisation A2F"

#: admin/views/two-factor-verify.php:230
msgid "Back to login"
msgstr "Retour à la connexion"

#: admin/views/widget-dashboard.php:143 admin/views/widget-dashboard.php:158
#: admin/views/sections/login-headers.php:143
#: admin/views/tabs/overview.php:215 admin/views/tabs/overview.php:223
#: admin/views/tabs/overview.php:239 admin/views/tabs/overview.php:247
#: admin/views/tabs/overview.php:255 admin/views/tabs/overview.php:263
#: admin/views/tabs/overview.php:296 admin/views/tabs/overview.php:304
#: admin/views/tabs/overview.php:312 admin/views/tabs/overview.php:324
#: admin/views/tabs/overview.php:332
msgid "Off"
msgstr "Inactif"

#: admin/views/widget-dashboard.php:144
msgid "All on"
msgstr "Tous actifs"

#: admin/views/widget-dashboard.php:157 admin/views/profile/two-factor.php:39
#: admin/views/tabs/overview.php:215 admin/views/tabs/overview.php:223
#: admin/views/tabs/overview.php:239 admin/views/tabs/overview.php:247
#: admin/views/tabs/overview.php:255 admin/views/tabs/overview.php:263
#: admin/views/tabs/overview.php:294 admin/views/tabs/overview.php:304
#: admin/views/tabs/overview.php:312 admin/views/tabs/overview.php:332
#: admin/views/tabs/protection.php:51 admin/views/tabs/protection.php:70
#: admin/views/tabs/protection.php:135 admin/views/tabs/settings.php:273
#: admin/views/tabs/settings.php:283 admin/views/tabs/settings.php:293
#: admin/views/tabs/settings.php:303 admin/views/tabs/settings.php:319
#: admin/views/tabs/settings.php:329 admin/views/tabs/settings.php:339
#: admin/views/tabs/settings.php:365 admin/views/tabs/settings.php:375
#: admin/views/tabs/settings.php:385 admin/views/tabs/settings.php:395
msgid "Active"
msgstr "Actif"

#: admin/views/widget-dashboard.php:162 admin/views/widget-dashboard.php:196
#: admin/views/sidebar/overview.php:26 admin/views/sidebar/settings.php:29
#: admin/views/tabs/overview.php:220
msgid "Brute Force"
msgstr "Force brute"

#: includes/AI/PostureAdvisor.php:224 admin/views/widget-dashboard.php:163
#: admin/views/sidebar/overview.php:27 admin/views/sidebar/settings.php:24
#: admin/views/tabs/overview.php:228 admin/views/tabs/protection.php:105
#: admin/views/tabs/settings.php:259
msgid "Hardening"
msgstr "Renforcement"

#: admin/views/widget-dashboard.php:164 admin/views/widget-dashboard.php:198
#: admin/views/sidebar/overview.php:28 admin/views/tabs/overview.php:236
msgid "Detection"
msgstr "Détection"

#: admin/views/widget-dashboard.php:165
msgid "Headers"
msgstr "En-têtes"

#. translators: %d: total number of accounts with a flagged password or email.
#: admin/views/widget-dashboard.php:176 admin/views/tabs/overview.php:291
#: admin/views/tabs/settings.php:489
msgid "%d flagged"
msgid_plural "%d flagged"
msgstr[0] "%d signalé"
msgstr[1] "%d signalés"

#: admin/views/widget-dashboard.php:199
#: admin/views/sections/activity-settings.php:30
#: admin/views/sidebar/settings.php:48 admin/views/tabs/overview.php:244
#: admin/views/tabs/settings.php:362
msgid "Activity Log"
msgstr "Journal d’activité"

#: admin/views/widget-dashboard.php:233 admin/views/sections/hide-login.php:38
msgid "PROTECTED"
msgstr "PROTÉGÉ"

#: admin/views/widget-dashboard.php:238
msgid "Last event %s"
msgstr "Dernier évènement %s"

#: admin/views/widget-dashboard.php:246
msgid "%d attacks blocked in the last 7 days"
msgstr "%d attaques bloquées sur les 7 derniers jours"

#: admin/views/widget-dashboard.php:250
msgid "attacks blocked"
msgstr "attaques bloquées"

#: admin/views/widget-dashboard.php:253
msgid "Past 7 days"
msgstr "7 derniers jours"

#: admin/views/widget-dashboard.php:257
msgid "— flat"
msgstr "- stable"

#: admin/views/widget-dashboard.php:261
msgid "%d%% vs prev"
msgstr "%d %% vs préc."

#: admin/views/widget-dashboard.php:270
msgid "fewer"
msgstr "moins"

#: admin/views/widget-dashboard.php:270
msgid "more"
msgstr "plus"

#. translators: 1: absolute percent difference, 2: "fewer" or "more" word.
#: admin/views/widget-dashboard.php:273
msgid "Trend: %1$d%% %2$s attacks than previous week"
msgstr "Tendance : %1$d %% d’attaques %2$s que la semaine précédente"

#: admin/views/widget-dashboard.php:292
msgid "Peak this week: %d"
msgstr "Pic cette semaine : %d"

#: admin/views/widget-dashboard.php:298
msgid "Today: %d"
msgstr "Aujourd’hui : %d"

#: admin/views/widget-dashboard.php:309 admin/views/tabs/activity.php:499
msgid "Today"
msgstr "Aujourd’hui"

#: admin/views/widget-dashboard.php:341
msgid "Quick win: enable %s"
msgstr "Gain rapide : activer %s"

#: admin/views/widget-dashboard.php:343
msgid "Closes the biggest remaining gap. +%d points to your security score."
msgstr ""
"Comble la plus grosse faille restante. +%d points à votre score de sécurité."

#: admin/views/widget-dashboard.php:348
msgid "Set up"
msgstr "Configurer"

#: admin/views/widget-dashboard.php:358
msgid "All defenses active."
msgstr "Toutes les défenses activés."

#: admin/views/widget-dashboard.php:359
msgid "Keep Login Armor up to date."
msgstr "Pensez à mettre Login Armor à jour."

#: admin/views/widget-dashboard.php:371
msgid "View events"
msgstr "Voir les évènements"

#: admin/views/widget-dashboard.php:374
msgid "Open Login Armor"
msgstr "Ouvrir Login Armor"

#: includes/Hardening/Honeypot.php:52
msgid "Leave this field empty"
msgstr "Laissez ce champ vide"

#: includes/Hardening/Honeypot.php:210
msgid "Authentication failed."
msgstr "L’authentification a échoué."

#: includes/Hardening/UsernameBlacklist.php:238
#: includes/Hardening/UsernameBlacklist.php:258
#: includes/Hardening/UsernameBlacklist.php:282
msgid "This username is reserved and cannot be used."
msgstr "Cet identifiant est réservé et ne peut pas être utilisé."

#: includes/Lockout/LockoutPage.php:204 includes/Lockout/LockoutPage.php:250
msgid "Too many failed attempts"
msgstr "Trop de tentatives infructueuses"

#: includes/Lockout/LockoutPage.php:204 includes/Lockout/LockoutPage.php:247
msgid "IP blacklisted"
msgstr "IP blacklistée"

#: includes/Lockout/LockoutPage.php:251
msgid "You are blocked for 20 minutes. Please come back later."
msgstr "Vous êtes bloqué pendant 20 minutes. Merci de revenir plus tard."

#: includes/Lockout/LockoutPage.php:248
msgid ""
"Your IP has been blacklisted. Please contact the administrator of this site."
msgstr ""
"Votre IP a été blacklistée. Veuillez contacter l'administrateur de ce site."

#: includes/Notifications/Channels/EmailChannel.php:67
msgid "This is a test notification from Login Armor."
msgstr "Ceci est une notification de test provenant de Login Armor."

#. translators: %s: site name
#: includes/Notifications/Channels/EmailChannel.php:70
msgid "Login Armor detected a security incident on %s."
msgstr "Login Armor a détecté un incident de sécurité sur %s."

#: includes/Notifications/Channels/EmailChannel.php:74
#: admin/views/tabs/incidents.php:848
msgid "Pattern"
msgstr "Motif"

#: includes/Notifications/Channels/EmailChannel.php:75
#: admin/views/tabs/incidents.php:864
msgid "Severity"
msgstr "Sévérité"

#: includes/Notifications/Channels/EmailChannel.php:76
#: admin/views/tabs/events.php:247 admin/views/tabs/incidents.php:423
#: admin/views/tabs/incidents.php:1002 admin/views/tabs/overview.php:540
msgid "Source IP"
msgstr "IP source"

#: includes/Notifications/Channels/EmailChannel.php:77
#: admin/views/tabs/incidents.php:1044
msgid "Target"
msgstr "Cible"

#: includes/Notifications/Channels/EmailChannel.php:78
msgid "Failed attempts"
msgstr "Tentatives en échec"

#: includes/Notifications/Channels/EmailChannel.php:79
#: admin/views/tabs/events.php:195 admin/views/tabs/incidents.php:408
#: admin/views/tabs/incidents.php:823
msgid "Unique IPs"
msgstr "IP uniques"

#: includes/Notifications/Channels/EmailChannel.php:83
msgid "View details:"
msgstr "Voir les détails :"

#. translators: %s: site name
#: includes/TwoFactor/BackupCodes.php:120
msgid "Login Armor Backup Codes — %s"
msgstr "Codes de secours Login Armor : %s"

#: includes/TwoFactor/BackupCodes.php:131
msgid "Each code can only be used once."
msgstr "Chaque code ne peut être utilisé qu’une seule fois."

#: includes/TwoFactor/BackupCodes.php:132
msgid "Keep these codes in a safe place."
msgstr "Conservez ces codes en lieu sûr."

#. translators: %s: date
#: includes/TwoFactor/BackupCodes.php:135
msgid "Generated: %s"
msgstr "Généré le : %s"

#. translators: %s: site name
#: includes/TwoFactor/EmailOTP.php:70
msgid "[%s] Your login verification code"
msgstr "[%s] Votre code de vérification de connexion"

#. translators: 1: display name, 2: verification code, 3: minutes
#: includes/TwoFactor/EmailOTP.php:76
msgid ""
"Hello %1$s,\n"
"\n"
"Your verification code is: %2$s\n"
"\n"
"This code is valid for %3$d minutes.\n"
"\n"
"If you did not request this code, you can safely ignore this email."
msgstr ""
"Bonjour %1$s,\n"
"\n"
"Votre code de vérification est : %2$s\n"
"\n"
"Ce code est valide pendant %3$d minutes.\n"
"\n"
"Si vous n’êtes pas à l’origine de cette demande, vous pouvez ignorer cet e-mail sans risque."

#. translators: %s: site name
#: includes/TwoFactor/Recovery.php:216
msgid "[%s] 2FA reset request"
msgstr "[%s] Demande de réinitialisation A2F"

#. translators: 1: user login, 2: user email, 3: requester IP, 4: UA, 5:
#. confirmation URL
#: includes/TwoFactor/Recovery.php:221
msgid ""
"A two-factor reset was requested for user %1$s (%2$s).\n"
"\n"
"IP: %3$s\n"
"User-Agent: %4$s\n"
"\n"
"If you authorize this reset, click the link below. It expires in 1 hour and can only be used once.\n"
"\n"
"%5$s\n"
"\n"
"If you did not expect this request, ignore this email - no action will be taken."
msgstr ""
"Une réinitialisation à deux facteurs a été demandée pour le compte %1$s (%2$s).\n"
"\n"
"IP : %3$s\n"
"Agent utilisateur : %4$s\n"
"\n"
"Si vous autorisez cette réinitialisation, cliquez sur le lien ci-dessous. Il expire dans 1 heure et ne peut être utilisé qu’une seule fois.\n"
"\n"
"%5$s\n"
"\n"
"Si vous n’attendiez pas cette demande, ignorez cet e-mail : aucune action ne sera effectuée."

#: includes/TwoFactor/Recovery.php:286
msgid "2FA recovery is disabled on this site."
msgstr "La récupération A2F est désactivée sur ce site."

#: includes/TwoFactor/Recovery.php:289
msgid "You must be logged in as an administrator to authorize a 2FA reset."
msgstr ""
"Vous devez être connecté·e en tant qu’administrateur ou administratrice pour"
" autoriser une réinitialisation A2F."

#: includes/TwoFactor/Recovery.php:294
msgid "This 2FA reset link is invalid or has expired."
msgstr "Ce lien de réinitialisation A2F est invalide ou a expiré."

#: includes/TwoFactor/Recovery.php:298
msgid "Target user no longer exists."
msgstr "Le compte ciblé n’existe plus."

#: includes/TwoFactor/Recovery.php:307
msgid "This reset link has already been used."
msgstr "Ce lien de réinitialisation a déjà été utilisé."

#: includes/TwoFactor/TrustedDevices.php:165
msgid "Unknown device"
msgstr "Appareil inconnu"

#: includes/TwoFactor/TwoFactor.php:534
msgid "Too many failed verification attempts. Please try again in 15 minutes."
msgstr ""
"Trop de tentatives de vérification en échec. Veuillez réessayer dans 15 "
"minutes."

#: includes/TwoFactor/TwoFactor.php:542
msgid ""
"Too many failed verification attempts from your network. Please try again "
"later."
msgstr ""
"Trop de tentatives de vérification en échec depuis votre réseau. Veuillez "
"réessayer plus tard."

#: includes/TwoFactor/TwoFactor.php:918
msgid "Invalid verification code. Please try again."
msgstr "Code de vérification invalide. Veuillez réessayer."

#. translators: %s: deadline date
#: includes/TwoFactor/TwoFactor.php:953
msgid "Two-factor authentication will be required for your account before %s."
msgstr ""
"L’authentification à deux facteurs sera obligatoire pour votre compte avant "
"le %s."

#: includes/TwoFactor/TwoFactor.php:957
msgid "Set up now"
msgstr "Configurer maintenant"

#: includes/class-breach-check.php:472
msgid "Login Armor — password breach notice"
msgstr "Login Armor : avis de fuite de mot de passe"

#. translators: %s: formatted number of appearances of the current password in
#. public breach corpora.
#: includes/class-breach-check.php:477
msgid ""
"The password you are currently using appears in a public data breach corpus "
"(seen %s time). This does not mean your account has been compromised, but it"
" does mean attackers already know this password. We recommend changing it "
"below."
msgid_plural ""
"The password you are currently using appears in a public data breach corpus "
"(seen %s times). This does not mean your account has been compromised, but "
"it does mean attackers already know this password. We recommend changing it "
"below."
msgstr[0] ""
"Le mot de passe que vous utilisez actuellement apparaît dans un corpus "
"public de fuites de données (vu %s fois). Cela ne signifie pas que votre "
"compte a été compromis, mais que des personnes mal intentionnées connaissent"
" déjà ce mot de passe. Nous vous recommandons de le changer ci-dessous."
msgstr[1] ""
"Le mot de passe que vous utilisez actuellement apparaît dans un corpus "
"public de fuites de données (vu %s fois). Cela ne signifie pas que votre "
"compte a été compromis, mais que des personnes mal intentionnées connaissent"
" déjà ce mot de passe. Nous vous recommandons de le changer ci-dessous."

#: includes/class-breach-check.php:487
msgid ""
"The password you are currently using appears in a public data breach corpus."
" We recommend changing it below."
msgstr ""
"Le mot de passe que vous utilisez actuellement apparaît dans un corpus "
"public de fuites de données. Nous vous recommandons de le changer ci-"
"dessous."

#: includes/class-breach-check.php:494
msgid "Login Armor — email breach notice"
msgstr "Login Armor : avis de fuite d’e-mail"

#. translators: %d: number of data breaches in which the user's email address
#. appears.
#: includes/class-breach-check.php:498
msgid ""
"Your email address appears in %d publicly disclosed data breach. Passwords "
"you may have reused elsewhere could be exposed — make sure this site uses a "
"unique password."
msgid_plural ""
"Your email address appears in %d publicly disclosed data breaches. Passwords"
" you may have reused elsewhere could be exposed — make sure this site uses a"
" unique password."
msgstr[0] ""
"Votre adresse e-mail apparaît dans %d fuite de données rendue publique. Les "
"mots de passe que vous avez pu réutiliser ailleurs sont potentiellement "
"exposés : veillez à utiliser un mot de passe unique sur ce site."
msgstr[1] ""
"Votre adresse e-mail apparaît dans %d fuites de données rendues publiques. "
"Les mots de passe que vous avez pu réutiliser ailleurs sont potentiellement "
"exposés : veillez à utiliser un mot de passe unique sur ce site."

#: includes/class-breach-check.php:508
msgid "Breach sources:"
msgstr "Sources des fuites :"

#: includes/class-hardening.php:175
msgid "Disable XML-RPC"
msgstr "Désactiver XML-RPC"

#: includes/class-hardening.php:176
msgid "Block XML-RPC requests (keep off if using Jetpack or WP mobile app)."
msgstr ""
"Bloque les requêtes XML-RPC (laissez désactivé si vous utilisez Jetpack ou "
"l’application mobile WordPress)."

#: includes/class-hardening.php:180
msgid "Disable file editor"
msgstr "Désactiver l’éditeur de fichiers"

#: includes/class-hardening.php:181
msgid "Block theme/plugin file editing from dashboard."
msgstr ""
"Bloque la modification des fichiers de thème et d’extension depuis le "
"Tableau de bord."

#: includes/class-hardening.php:185
msgid "Hide WordPress version"
msgstr "Masquer la version de WordPress"

#: includes/class-hardening.php:186
msgid "Strip version from page source and feeds."
msgstr "Supprime la version du code source des pages et des flux."

#: includes/class-hardening.php:190
msgid "Mask login errors"
msgstr "Masquer les erreurs de connexion"

#: includes/class-hardening.php:191
msgid "Generic error message to prevent user enumeration."
msgstr "Message d’erreur générique pour empêcher l’énumération des comptes."

#: includes/class-hardening.php:195
msgid "Disable application passwords"
msgstr "Désactiver les mots de passe d’application"

#: includes/class-hardening.php:196
msgid "Remove REST API app password feature."
msgstr ""
"Retire la fonctionnalité de mots de passe d’application de l’API REST."

#: includes/class-hardening.php:200
msgid "Block PHP in uploads"
msgstr "Bloquer PHP dans les téléversements"

#: includes/class-hardening.php:201
msgid "Prevent PHP execution in wp-content/uploads/. Apache/LiteSpeed only."
msgstr ""
"Empêche l’exécution de PHP dans wp-content/uploads/. Apache/LiteSpeed "
"uniquement."

#: includes/class-hardening.php:205
msgid "Prevent author enumeration"
msgstr "Empêcher l’énumération des auteurs et autrices"

#: includes/class-hardening.php:206
msgid "Block ?author=N requests that reveal usernames."
msgstr "Bloque les requêtes ?author=N qui révèlent les identifiants."

#: includes/class-hardening.php:210
msgid "Obfuscate author slugs"
msgstr "Brouiller les slugs d’auteurs et autrices"

#: includes/class-hardening.php:211
msgid ""
"Replace /author/username/ with an opaque token that cannot be reversed to a "
"login."
msgstr ""
"Remplace /author/username/ par un jeton opaque qui ne peut pas être "
"retransformé en identifiant."

#: includes/class-hardening.php:215
msgid "Restrict REST API"
msgstr "Restreindre l’API REST"

#: includes/class-hardening.php:216
msgid "Require authentication for REST API requests."
msgstr "Exige une authentification pour les requêtes de l’API REST."

#: includes/class-hardening.php:220
msgid "Block reserved usernames"
msgstr "Bloquer les identifiants réservés"

#: includes/class-hardening.php:221
msgid ""
"Reject login and registration attempts for admin, root, test, and other "
"well-known usernames."
msgstr ""
"Rejette les tentatives de connexion et d’inscription pour admin, root, test "
"et autres identifiants bien connus."

#: includes/class-hardening.php:225
msgid "Anti-bot honeypot"
msgstr "Pot de miel anti-bot"

#: includes/class-hardening.php:226
msgid ""
"Invisible trap on login, register, and lost-password forms. Bots that auto-"
"fill every field are banned for 24 hours."
msgstr ""
"Piège invisible sur les formulaires de connexion, d’inscription et de mot de"
" passe oublié. Les bots qui remplissent automatiquement chaque champ sont "
"bannis pour 24 heures."

#: includes/class-hardening.php:230
msgid "Protect system files"
msgstr "Protéger les fichiers système"

#: includes/class-hardening.php:231
msgid "Block access to readme.html, license.txt, wp-config-sample.php."
msgstr "Bloque l’accès à readme.html, license.txt, wp-config-sample.php."

#: includes/class-hardening.php:235
msgid "Disable directory listing"
msgstr "Désactiver le listage des répertoires"

#: includes/class-hardening.php:236
msgid "Prevent browsing directory contents. Apache/LiteSpeed only."
msgstr ""
"Empêche de parcourir le contenu des répertoires. Apache/LiteSpeed "
"uniquement."

#: includes/class-hardening.php:399
msgid "The login information is incorrect."
msgstr "Les informations de connexion sont incorrectes."

#: includes/class-hardening.php:926
msgid "REST API access restricted to authenticated users."
msgstr ""
"L’accès à l’API REST est restreint aux utilisateurs et utilisatrices "
"authentifié·e·s."

#: includes/class-hide-login.php:127
msgid "This feature is not enabled."
msgstr "Cette fonctionnalité n’est pas activée."

#: includes/class-hide-login.php:128 includes/Firewall/Firewall.php:317
msgid "Forbidden"
msgstr "Interdit"

#: includes/class-hide-login.php:716
msgid "Dashboard"
msgstr "Tableau de bord"

#: includes/class-hide-login.php:743
msgid "This slug cannot be used. Try Regenerate for a safe random slug."
msgstr ""
"Ce slug ne peut pas être utilisé. Essayez Régénérer pour obtenir un slug "
"aléatoire sûr."

#: includes/class-hide-login.php:891
msgid "Method 1 — WP-CLI (recommended)"
msgstr "Méthode 1 : WP-CLI (recommandée)"

#: includes/class-hide-login.php:892
msgid ""
"Run from your server shell. A fresh slug is generated on the next admin page"
" load."
msgstr ""
"À exécuter depuis le shell de votre serveur. Un nouveau slug est généré au "
"prochain chargement d’une page d’administration."

#: includes/class-hide-login.php:896
msgid "Method 2 — Database (phpMyAdmin, Adminer)"
msgstr "Méthode 2 : Base de données (phpMyAdmin, Adminer)"

#. translators: %s: database table prefix.
#: includes/class-hide-login.php:899
msgid "Run this SQL query. Replace %s with your own prefix if different."
msgstr ""
"Exécutez cette requête SQL. Remplacez %s par votre propre préfixe s’il "
"diffère."

#: includes/class-hide-login.php:908
msgid "Method 3 — FTP last resort"
msgstr "Méthode 3 : FTP en dernier recours"

#: includes/class-hide-login.php:909
msgid ""
"Rename the plugin folder via FTP. WordPress auto-deactivates on the next "
"admin load."
msgstr ""
"Renommez le dossier de l’extension via FTP. WordPress la désactive "
"automatiquement au prochain chargement d’administration."

#: includes/class-hide-login.php:927
msgid "[%s] LoginArmor: your login URL was regenerated"
msgstr "[%s] LoginArmor : votre URL de connexion a été régénérée"

#: includes/class-hide-login.php:929
msgid "[%s] LoginArmor: your login URL"
msgstr "[%s] LoginArmor : votre URL de connexion"

#: includes/class-hide-login.php:933
msgid "Your LoginArmor login URL was just regenerated."
msgstr "Votre URL de connexion LoginArmor vient d’être régénérée."

#: includes/class-hide-login.php:934
msgid "Here is your current LoginArmor login URL."
msgstr "Voici votre URL de connexion LoginArmor actuelle."

#: includes/class-hide-login.php:936
msgid "Login URL:"
msgstr "URL de connexion :"

#: includes/class-hide-login.php:939
msgid ""
"Bookmark this URL now. If you lose it, use one of these recovery methods:"
msgstr ""
"Enregistrez cette URL dans vos favoris maintenant. Si vous la perdez, "
"utilisez l’une de ces méthodes de récupération :"

#: includes/class-hide-login.php:949
msgid "-- LoginArmor"
msgstr "-- LoginArmor"

#. translators: %d: Number of minutes remaining in lockout period.
#: includes/class-limit-login.php:113
msgid ""
"<strong>Error:</strong> Too many failed login attempts. Please try again in "
"%d minutes."
msgstr ""
"<strong>Erreur :</strong> trop de tentatives de connexion en échec. Veuillez"
" réessayer dans %d minutes."

#: includes/class-limit-login.php:124
msgid ""
"<strong>Access denied.</strong> Your network has been blocked by the site "
"administrator."
msgstr ""
"<strong>Accès refusé.</strong> Votre réseau a été bloqué par "
"l’administrateur ou l’administratrice du site."

#. translators: %d: Number of login attempts remaining before lockout.
#: includes/class-limit-login.php:236
msgid ""
"<strong>%d attempt(s) remaining</strong> before your IP is temporarily "
"locked."
msgstr ""
"<strong>%d tentative·s restante·s</strong> avant que votre IP ne soit "
"temporairement verrouillée."

#. translators: %s: Site name.
#: includes/class-limit-login.php:321
msgid "[%s] LoginArmor: Multiple lockouts detected"
msgstr "[%s] LoginArmor : plusieurs verrouillages détectés"

#. translators: 1: IP address, 2: Lockout count, 3: Site name.
#: includes/class-limit-login.php:327
msgid ""
"The IP address %1$s has been locked out %2$d times on %3$s.\n"
"\n"
"This may indicate a brute force attack. You can whitelist this IP or take further action from the LoginArmor settings page:\n"
"%4$s"
msgstr ""
"L’adresse IP %1$s a été verrouillée %2$d fois sur %3$s.\n"
"\n"
"Cela peut indiquer une attaque par force brute. Vous pouvez mettre cette IP en liste blanche ou entreprendre une autre action depuis la page de réglages LoginArmor :\n"
"%4$s"

#: includes/class-limit-login.php:756
msgid ""
"<strong>Error:</strong> Too many failed attempts from your IP. Password "
"recovery is temporarily disabled."
msgstr ""
"<strong>Erreur :</strong> Trop de tentatives échouées depuis votre IP. La "
"récupération du mot de passe est temporairement désactivée.<strong>Erreur "
":</strong> trop de tentatives depuis votre IP. La réinitialisation du mot de"
" passe est temporairement désactivée."

#: includes/class-limit-login.php:818
msgid ""
"<strong>Error:</strong> Registration is temporarily disabled for your IP due"
" to suspicious activity."
msgstr ""
"<strong>Erreur :</strong> L’inscription est temporairement désactivée pour "
"votre IP en raison d’une activité suspecte.<strong>Erreur :</strong> les "
"inscriptions sont temporairement désactivées pour votre IP en raison "
"d'activité suspecte."

#: includes/class-limit-login.php:919
msgid ""
"Access to this endpoint is temporarily restricted due to suspicious activity"
" from your IP."
msgstr ""
"L’accès à ce point de terminaison est temporairement restreint en raison "
"d’une activité suspecte depuis votre IP.L'accès à ce point d'entrée est "
"temporairement restreint en raison d'activité suspecte depuis votre IP."

#: includes/class-login-armor.php:706 includes/AI/PostureAdvisor.php:259
#: admin/views/page.php:26 admin/views/tabs/protection.php:37
msgid "Settings"
msgstr "Réglages"

#: includes/class-overview.php:70
msgid "No login attempts in the last 24 hours."
msgstr "Aucune tentative de connexion au cours des 24 dernières heures."

#. translators: 1: event count, 2: IP count.
#: includes/class-overview.php:77
msgid "%1$d login attempt from %2$d IP"
msgid_plural "%1$d login attempts from %2$d IPs"
msgstr[0] "%1$d tentative de connexion depuis %2$d IP"
msgstr[1] "%1$d tentatives de connexion depuis %2$d IP"

#. translators: %d: number of active incidents.
#: includes/class-overview.php:90
msgid "%d active incident requires attention"
msgid_plural "%d active incidents require attention"
msgstr[0] "%d incident actif requiert votre attention"
msgstr[1] "%d incidents actifs requièrent votre attention"

#: includes/class-overview.php:99
msgid "no active incidents"
msgstr "aucun incident actif"

#: includes/class-overview.php:122
msgid "UNDER ATTACK"
msgstr "ATTAQUE EN COURS"

#: includes/class-overview.php:125
msgid "ELEVATED"
msgstr "ÉLEVÉ"

#: includes/class-overview.php:128
msgid "NORMAL"
msgstr "NORMAL"

#: includes/class-overview.php:247
msgid "Turn on two-factor authentication"
msgstr "Activez l’authentification à deux facteurs"

#: includes/class-overview.php:248
msgid ""
"Stop credential-stuffing attacks even when passwords leak. LoginArmor "
"includes TOTP apps, email codes and backup codes — no external service."
msgstr ""
"Stoppez les attaques de credential stuffing même lorsque les mots de passe "
"fuient. LoginArmor inclut les applications TOTP, les codes par e-mail et les"
" codes de secours : sans service externe."

#: includes/class-overview.php:250
msgid "Set up 2FA"
msgstr "Configurer l’A2F"

#: includes/class-overview.php:257
msgid "Hide your login page"
msgstr "Masquer votre page de connexion"

#: includes/class-overview.php:258
msgid ""
"Move /wp-login.php to a private URL. Bots that scan for the default path get"
" a 404 and move on."
msgstr ""
"Déplacez /wp-login.php vers une URL privée. Les bots qui cherchent le chemin"
" par défaut obtiennent un 404 et passent leur chemin."

#: includes/class-overview.php:260
msgid "Configure Hide Login"
msgstr "Configurer Hide Login"

#: includes/class-overview.php:267
msgid "Detect leaked passwords automatically"
msgstr "Détecter automatiquement les mots de passe fuités"

#: includes/class-overview.php:268
msgid ""
"Quietly check each login password against the Have I Been Pwned corpus using"
" a privacy-preserving lookup. Flagged users get a friendly warning on their "
"profile — no one is locked out."
msgstr ""
"Vérifie discrètement chaque mot de passe de connexion face au corpus Have I "
"Been Pwned via une requête préservant la confidentialité. Les personnes "
"signalées reçoivent un avertissement bienveillant sur leur profil : personne"
" n’est bloqué."

#: includes/class-overview.php:270
msgid "Configure Breach Check"
msgstr "Configurer la détection de fuites"

#: includes/class-overview.php:278
msgid "Get notified when something happens"
msgstr "Soyez notifié·e lorsqu’il se passe quelque chose"

#: includes/class-overview.php:279
msgid ""
"Pipe LoginArmor events to email, Slack, Discord or a custom webhook. Never "
"miss a brute-force attempt."
msgstr ""
"Acheminez les évènements LoginArmor vers un e-mail, Slack, Discord ou un "
"webhook personnalisé. Ne manquez jamais une tentative de force brute."

#: includes/class-overview.php:281
msgid "Set up notifications"
msgstr "Configurer les notifications"

#: includes/class-overview.php:473 admin/views/widget-dashboard.php:68
#: admin/views/tabs/activity.php:142 admin/views/tabs/events.php:78
#: admin/views/tabs/incidents.php:154
msgid "%ds ago"
msgstr "il y a %ds"

#: includes/class-overview.php:477 admin/views/widget-dashboard.php:71
#: admin/views/tabs/activity.php:146 admin/views/tabs/events.php:82
#: admin/views/tabs/incidents.php:158
msgid "%dm ago"
msgstr "il y a %dmin"

#: includes/class-overview.php:481 admin/views/widget-dashboard.php:74
#: admin/views/tabs/activity.php:150 admin/views/tabs/events.php:86
#: admin/views/tabs/incidents.php:162
msgid "%dh ago"
msgstr "il y a %dh"

#: includes/class-overview.php:484 admin/views/widget-dashboard.php:77
#: admin/views/widget-dashboard.php:306 admin/views/tabs/activity.php:154
#: admin/views/tabs/events.php:90 admin/views/tabs/incidents.php:166
msgid "%dd ago"
msgstr "il y a %dj"

#: includes/class-security-score.php:132 admin/views/widget-dashboard.php:186
#: admin/views/widget-dashboard.php:194 admin/views/sidebar/overview.php:30
#: admin/views/tabs/overview.php:252
msgid "2FA"
msgstr "A2F"

#: includes/class-security-score.php:133 admin/views/widget-dashboard.php:161
#: admin/views/widget-dashboard.php:195 admin/views/sections/hide-login.php:36
#: admin/views/sidebar/overview.php:25 admin/views/sidebar/settings.php:19
#: admin/views/tabs/overview.php:212 admin/views/tabs/protection.php:49
#: admin/views/tabs/settings.php:247
msgid "Hide Login"
msgstr "Hide Login"

#: includes/class-security-score.php:135 admin/views/widget-dashboard.php:167
#: admin/views/widget-dashboard.php:200
#: admin/views/sections/breach-check.php:37
#: admin/views/sidebar/overview.php:32 admin/views/sidebar/settings.php:74
#: admin/views/tabs/overview.php:268 admin/views/tabs/settings.php:300
msgid "Breach Check"
msgstr "Détection de fuites"

#: includes/class-security-score.php:136 admin/views/widget-dashboard.php:197
#: admin/views/sidebar/overview.php:31 admin/views/tabs/overview.php:260
msgid "Login Headers"
msgstr "En-têtes de connexion"

#: includes/class-security-score.php:171
msgid "Your defenses are solid."
msgstr "Vos défenses sont solides."

#: includes/class-security-score.php:167
msgid ""
"Observability — IP Geolocation, Notifications, the AI assistant — is not "
"scored."
msgstr ""
"L’observabilité — Géolocalisation IP, Notifications, Assistant IA — n’est "
"pas notée."

#. translators: 1: active scored-protection count, 2: total scored
#. protections.
#: includes/class-security-score.php:174
msgid "%1$d of %2$d scored protections are active. Fine-tune details below."
msgstr ""
"%1$d des %2$d protections notées sont actives. Affinez les détails ci-"
"dessous."

#. translators: 1: active scored-protection count, 2: total scored
#. protections, 3: first module name, 4: second module name, 5: target score.
#: includes/class-security-score.php:191
msgid ""
"%1$d of %2$d scored protections are active. Enabling %3$s and %4$s would "
"raise your score to %5$d."
msgstr ""
"%1$d des %2$d protections notées sont actives. Activer %3$s et %4$s "
"porterait votre score à %5$d."

#. translators: 1: active scored-protection count, 2: total scored
#. protections, 3: first module name, 4: target score.
#: includes/class-security-score.php:200
msgid ""
"%1$d of %2$d scored protections are active. Enabling %3$s would raise your "
"score to %4$d."
msgstr ""
"%1$d des %2$d protections notées sont actives. Activer %3$s porterait votre "
"score à %4$d."

#: includes/class-security-score.php:179
msgid "Review settings"
msgstr "Examiner les réglages"

#: includes/class-security-score.php:208
msgid "Good, but Two-Factor would close the gap."
msgstr "Bien, mais l’authentification à deux facteurs comblerait l’écart."

#. translators: %s: module name.
#: includes/class-security-score.php:211
msgid "Good — %s is your next quick win."
msgstr "Bien : %s est votre prochain gain rapide."

#. translators: %s: module name.
#: includes/class-security-score.php:221
msgid "Enable %s →"
msgstr "Activer %s →"

#: admin/class-admin.php:555
msgid "Reset all detection statistics?"
msgstr "Réinitialiser toutes les statistiques de détection ?"

#: admin/class-admin.php:556
msgid ""
"This deletes every login event, every brute-force counter, every active and "
"resolved incident. All currently locked-out IPs are immediately released. "
"This cannot be undone."
msgstr ""
"Cette action supprime tous les évènements de connexion, tous les compteurs "
"de force brute, ainsi que tous les incidents actifs ou résolus. Toutes les "
"IPs actuellement bloquées sont immédiatement libérées. Action irréversible."

#: admin/class-admin.php:557 admin/class-admin.php:576
msgid "Reset everything"
msgstr "Tout réinitialiser"

#: admin/class-admin.php:574
msgid "Reset the entire admin activity log?"
msgstr "Réinitialiser tout le journal d’activité ?"

#: admin/class-admin.php:575
msgid ""
"This deletes every admin-action row, regardless of age. Login events and "
"incidents are not affected — they have their own reset in Detection & Logs. "
"This cannot be undone."
msgstr ""
"Cette action supprime toutes les lignes d'actions admin, quelle que soit "
"leur ancienneté. Les évènements de connexion et les incidents ne sont pas "
"affectés : ils ont leur propre bouton de réinitialisation dans Détection et "
"journaux. Action irréversible."

#. translators: %s: full path of the .htaccess file we tried to write.
#: admin/class-admin.php:831
msgid ""
"Login Armor could not write to %s. Verify the file permissions, then re-"
"toggle the affected hardening rule."
msgstr ""
"Login Armor n'a pas pu écrire dans %s. Vérifiez les permissions du fichier, "
"puis re-cochez la règle de durcissement concernée."

#: admin/class-admin.php:1805
msgid ""
"Unable to send the verification code email. Check your site email "
"configuration, then try again."
msgstr ""
"Impossible d'envoyer le code de vérification par email. Vérifiez la "
"configuration email de votre site, puis réessayez."

#: admin/class-admin.php:2122
msgid "Setup completion failed. Please reload the page and try again."
msgstr ""
"La finalisation de la configuration a échoué. Rechargez la page et "
"réessayez."

#: admin/views/sections/activity-settings.php:128
msgid "Reset activity log"
msgstr "Réinitialiser le journal d’activité"

#: admin/views/sections/activity-settings.php:129
msgid ""
"Delete every admin-action row regardless of age. Login events and incidents "
"are not affected — they have their own reset in Detection & Logs."
msgstr ""
"Supprime toutes les lignes d'actions admin, quelle que soit leur ancienneté."
" Les évènements de connexion et les incidents ne sont pas affectés : ils ont"
" leur propre bouton dans Détection et journaux."

#: admin/views/sections/activity-settings.php:132
msgid "Reset all activity entries"
msgstr "Réinitialiser toutes les entrées d’activité"

#: admin/views/sections/detection-logs.php:148
msgid "Reset all statistics"
msgstr "Réinitialiser toutes les statistiques"

#: admin/views/sections/detection-logs.php:149
msgid ""
"Delete every event, brute-force counter, and incident regardless of age. All"
" currently locked-out IPs are released. Use this for a fresh start, e.g. "
"after a large attack wave or before a client demo."
msgstr ""
"Supprime tous les évènements, compteurs de force brute et incidents, quelle "
"que soit leur ancienneté. Toutes les IPs actuellement bloquées sont "
"libérées. Utile pour repartir de zéro, par exemple après une grosse vague "
"d'attaques ou avant une démo client."

#: admin/views/sections/detection-logs.php:152
msgid "Reset all events & incidents"
msgstr "Réinitialiser évènements et incidents"

#: admin/views/sections/login-headers.php:134
msgid "HTTP Strict Transport Security (HSTS)"
msgstr "HTTP Strict Transport Security (HSTS)"

#: admin/views/sections/login-headers.php:136
msgid ""
"Pin TLS for the login surface. The browser will refuse to connect over plain"
" HTTP for the configured duration. Only emitted on HTTPS requests."
msgstr ""
"Verrouille TLS sur la page de connexion. Le navigateur refusera HTTP en "
"clair pendant la durée configurée. Émis uniquement sur les requêtes HTTPS."

#: admin/views/sections/login-headers.php:146
msgid ""
"Do not emit HSTS. Pick this if the site is still being migrated to HTTPS."
msgstr ""
"N'émet pas HSTS. À choisir si le site est encore en migration vers HTTPS."

#: admin/views/sections/login-headers.php:152
msgid "180 days"
msgstr "180 jours"

#: admin/views/sections/login-headers.php:156
msgid ""
"max-age=15552000. Safe default — six-month TLS commitment, no subdomain "
"impact."
msgstr ""
"max-age=15552000. Défaut sûr : engagement TLS de six mois, sans impact sur "
"les sous-domaines."

#: admin/views/sections/login-headers.php:162
msgid "1 year + subdomains"
msgstr "1 an + sous-domaines"

#: admin/views/sections/login-headers.php:165
msgid ""
"max-age=31536000; includeSubDomains. Verify every subdomain serves valid "
"HTTPS first — recovery is hard."
msgstr ""
"max-age=31536000 ; includeSubDomains. À vérifier que chaque sous-domaine "
"sert HTTPS valide en premier : la récupération est difficile."

#: admin/views/two-factor-verify.php:93
msgid ""
"We could not send the verification code by email. Your site may have a mail-"
"delivery issue. Click “Resend code” below to try again, or contact the site "
"administrator."
msgstr ""
"Nous n’avons pas pu envoyer le code de vérification par email. Votre site "
"rencontre peut-être un problème de livraison. Cliquez sur « Renvoyer le "
"code » ci-dessous pour réessayer, ou contactez un administrateur du site si "
"le problème persiste."

#: admin/class-admin.php:428
msgid "Secret copied to clipboard."
msgstr "Clé copiée dans le presse-papiers."

#: admin/class-admin.php:429
msgid "Copy failed; select and copy manually."
msgstr "Copie échouée ; sélectionnez et copiez manuellement."

#: admin/class-admin.php:430
msgid ""
"Regenerate the webhook secret? Your receiver will need to be reconfigured "
"with the new value."
msgstr ""
"Régénérer la clé du webhook ? Votre récepteur devra être reconfiguré avec la"
" nouvelle valeur."

#: admin/class-admin.php:431
msgid "Secret regenerated. Update your receiver."
msgstr "Clé régénérée. Mettez à jour votre récepteur."

#: admin/class-admin.php:365 admin/class-admin.php:432
msgid "Regenerate failed."
msgstr "Régénération échouée."

#: admin/class-admin.php:434
msgid "Test event delivered: %s"
msgstr "Événement test livré : %s"

#: admin/class-admin.php:435
msgid "Test failed."
msgstr "Test échoué."

#: admin/class-admin.php:2957
msgid "Webhook URL is not configured or invalid."
msgstr "URL du webhook non configurée ou invalide."

#: admin/class-admin.php:2979
msgid "Failed to build test payload."
msgstr "Échec de construction de la charge de test."

#: admin/class-admin.php:3042
msgid "Webhook URL must be a valid HTTPS URL."
msgstr "L’URL du webhook doit être une URL HTTPS valide."

#: admin/views/sections/activity-webhook.php:30
#: admin/views/tabs/settings.php:372
msgid "Activity Webhook Forwarding"
msgstr "Transfert webhook du journal d’activité"

#: admin/views/tabs/settings.php:373
msgid ""
"Forward each activity event as a signed POST to a SIEM, Slack, or any HTTPS "
"endpoint."
msgstr ""
"Transférer chaque événement d'activité par requête POST signée vers un SIEM,"
" Slack ou tout endpoint HTTPS."

#: admin/views/sections/activity-webhook.php:55
msgid "Enable webhook forwarding"
msgstr "Activer le transfert par webhook"

#: admin/views/sections/activity-webhook.php:68
msgid "Must be HTTPS. The receiver verifies signatures via the secret below."
msgstr ""
"URL HTTPS obligatoire. Le récepteur vérifie les signatures via la clé ci-"
"dessous."

#: admin/views/sections/activity-webhook.php:82
msgid "Shared Secret"
msgstr "Clé partagée"

#: admin/views/sections/activity-webhook.php:83
msgid ""
"Configure this secret on your receiver to verify HMAC-SHA256 signatures via "
"the X-LoginArmor-Signature header."
msgstr ""
"Configurez cette clé sur votre récepteur pour vérifier les signatures HMAC-"
"SHA256 via l'en-tête X-LoginArmor-Signature."

#: admin/views/sections/activity-webhook.php:101
msgid "Send test event"
msgstr "Envoyer un événement test"

#: admin/views/sections/activity-webhook.php:58
msgid "queued"
msgstr "en attente"

#: admin/views/sections/activity-webhook.php:59
msgid "sent"
msgstr "envoyés"

#: admin/views/sections/activity-webhook.php:60
msgid "dead"
msgstr "abandonnés"

#: admin/class-admin.php:449
msgid "Chain intact"
msgstr "Chaîne intacte"

#: admin/class-admin.php:450
msgid "Chain BROKEN"
msgstr "Chaîne FALSIFIÉE"

#. translators: %d: row id
#: admin/views/tabs/activity.php:370
msgid "first break at row %d"
msgstr "première rupture à la ligne %d"

#. translators: %d: orphan count
#: admin/views/tabs/activity.php:454
msgid "Repair %d orphan(s)"
msgstr "Réparer %d orphelin(s)"

#. translators: %s: missing column name
#: includes/ActivityLog/ActivityLog.php:495
msgid "Missing canonical column in HMAC payload: %s"
msgstr "Colonne canonique manquante dans la charge HMAC : %s"

#. translators: %d: count of dead webhook events
#: includes/ActivityLog/WebhookDispatcher.php:374
msgid ""
"%d webhook event(s) marked dead after retries. Check the queue stats in "
"Activity -> Webhook."
msgstr ""
"%d événement(s) webhook abandonné(s) après relance. Voir les statistiques de"
" file dans Journal d'activité, section Webhook."

#: includes/class-login-armor.php:210
msgid "LoginArmor every 5 minutes"
msgstr "LoginArmor toutes les 5 minutes"

#: includes/class-login-armor.php:213
msgid "LoginArmor every minute"
msgstr "LoginArmor toutes les minutes"

#: includes/class-login-armor.php:216
msgid "LoginArmor hourly"
msgstr "LoginArmor toutes les heures"

#: admin/class-admin.php:455 admin/views/tabs/activity.php:329
msgid "INTACT"
msgstr "INTACTE"

#: admin/views/tabs/activity.php:333
msgid "TAMPERED"
msgstr "FALSIFIÉE"

#: admin/views/tabs/activity.php:335
msgid "UNVERIFIED"
msgstr "NON VÉRIFIÉE"

#: admin/class-admin.php:452
msgid "%s rows signed"
msgstr "%s lignes signées"

#. translators: %s: row count formatted (e.g. "1 234").
#: admin/views/tabs/activity.php:343
msgid "%s row signed"
msgid_plural "%s rows signed"
msgstr[0] "%s ligne signée"
msgstr[1] "%s lignes signées"

#. translators: %s: relative time (e.g. "5m ago").
#: admin/class-admin.php:454 admin/views/tabs/activity.php:355
msgid "verified %s"
msgstr "vérifié %s"

#: admin/class-admin.php:439
msgid "Verifying…"
msgstr "Vérification en cours…"

#: admin/class-admin.php:440
msgid "Repairing…"
msgstr "Réparation en cours…"

#: admin/class-admin.php:441
msgid "Verify failed."
msgstr "Échec de la vérification."

#: admin/class-admin.php:442
msgid "Repair failed."
msgstr "Échec de la réparation."

#: admin/class-admin.php:444
msgid "Chain intact: %s rows signed."
msgstr "Chaîne intacte : %s lignes signées."

#: admin/class-admin.php:446
msgid "Chain BROKEN at row %d. See panel for details."
msgstr "Chaîne FALSIFIÉE à la ligne %d. Voir le panneau pour les détails."

#: admin/class-admin.php:448
msgid "Repaired %d orphan(s)."
msgstr "%d ligne(s) orpheline(s) réparée(s)."

#: admin/views/tabs/activity.php:327
msgid "Activity Log Integrity"
msgstr "Intégrité du journal d’activité"

#: admin/views/tabs/activity.php:380
msgid "Verify now"
msgstr "Vérifier maintenant"

#: admin/views/sections/activity-webhook.php:38
msgid ""
"Push every admin action (user creation, plugin install, config change, "
"login, etc.) to an external service in real time. Useful for off-site backup"
" of the audit log (so an attacker who tampers with the database cannot also "
"erase their tracks), instant alerts on sensitive events, or centralizing "
"logs from multiple sites. Compatible with Slack, Discord, Datadog, Splunk, "
"any SIEM, or any custom HTTPS receiver."
msgstr ""
"Transmet chaque action d’administration (création d’utilisateur, "
"installation d’extension, changement de configuration, connexion, etc.) à un"
" service externe en temps réel. Utile pour une sauvegarde hors site du "
"journal d’audit (afin qu’un attaquant qui altère la base de données ne "
"puisse pas aussi effacer ses traces), des alertes instantanées sur les "
"évènements sensibles, ou la centralisation des journaux de plusieurs sites. "
"Compatible avec Slack, Discord, Datadog, Splunk, tout SIEM, ou tout "
"récepteur HTTPS personnalisé."

#: admin/views/tabs/activity.php:435
msgid "Tampering detected."
msgstr "Falsification détectée."

#. translators: %d: row id where the chain first breaks.
#: admin/views/tabs/activity.php:441
msgid ""
"The chain breaks at row %d. Inspect that row and the rows immediately before"
" and after it for signs of unauthorized modification."
msgstr ""
"La chaîne se rompt à la ligne %d. Inspectez cette ligne et celles "
"immédiatement avant et après pour détecter des signes de modification non "
"autorisée."

#: admin/views/tabs/activity.php:375
msgid "Run a check to verify the chain."
msgstr "Lancez une vérification pour authentifier la chaîne."

#: admin/views/tabs/activity.php:322
msgid ""
"Each row of the activity log is cryptographically signed and chained. Direct"
" database edits, malicious plugins, or attackers tampering with the table "
"break the chain and surface here."
msgstr ""
"Chaque ligne du journal d’activité est signée cryptographiquement et "
"chaînée. Les modifications directes en base de données, les extensions "
"malveillantes ou les attaquants qui altèrent la table cassent la chaîne et "
"apparaissent ici."

#: admin/views/sections/activity-webhook.php:57
msgid "Queue stats over the last 7 days."
msgstr "Statistiques de file d’attente sur les 7 derniers jours."

# 2.1.7 — Email 2FA pre-activation modal
#: admin/class-admin.php:1831
msgid "No email address found on your account."
msgstr "Aucune adresse e-mail n’est associée à votre compte."

#. translators: %s: site name
#: admin/class-admin.php:1839
msgid "[%s] Login Armor — Email delivery test"
msgstr "[%s] Login Armor : test de réception"

#. translators: 1: display name, 2: site name
#: admin/class-admin.php:1844
msgid ""
"Hello %1$s,\n"
"\n"
"This is a test message from Login Armor on %2$s.\n"
"\n"
"If you can read this, your hosting delivers emails correctly. You can safely enable Email two-factor authentication.\n"
"\n"
"If you did not request this test, you can ignore this message."
msgstr ""
"Bonjour %1$s,\n"
"\n"
"Ceci est un message de test envoyé par Login Armor sur %2$s.\n"
"\n"
"Si vous lisez ce message, votre hébergement délivre bien les e-mails. Vous pouvez activer la double authentification par e-mail en toute sécurité.\n"
"\n"
"Si vous n'avez pas demandé ce test, vous pouvez ignorer ce message."

#: admin/class-admin.php:1854 admin/class-admin.php:2089
msgid ""
"The test email could not be sent. Configure WP Mail SMTP (or contact your "
"host) before enabling Email 2FA, otherwise you will be locked out."
msgstr ""
"L’e-mail de test n’a pas pu être envoyé. Configurez WP Mail SMTP (ou "
"contactez votre hébergeur) avant d’activer la 2FA par e-mail, sinon vous "
"serez verrouillé dehors."

#: admin/class-admin.php:1862 admin/class-admin.php:2088
msgid "Test email sent. Check your inbox (and spam folder) before continuing."
msgstr ""
"E-mail de test envoyé. Vérifiez votre boîte de réception (et le dossier "
"spam) avant de continuer."

#: admin/class-admin.php:2081
msgid "Before enabling Email two-factor authentication"
msgstr "Avant d’activer la double authentification par e-mail"

#: admin/class-admin.php:2082
msgid ""
"If your hosting does not deliver emails, you will be locked out of your "
"site."
msgstr ""
"Si votre hébergement ne délivre pas les e-mails, vous serez verrouillé hors "
"de votre site."

#: admin/class-admin.php:2083
msgid "Test email delivery"
msgstr "Tester l’envoi d’e-mails"

#: admin/class-admin.php:2084
msgid "A test message will be sent to:"
msgstr "Un message de test sera envoyé à :"

#: admin/class-admin.php:2085
msgid "Send test email"
msgstr "Envoyer un e-mail de test"

#: admin/class-admin.php:2086
msgid "Send another test email"
msgstr "Renvoyer un e-mail de test"

#: admin/class-admin.php:2087
msgid "Sending…"
msgstr "Envoi en cours…"

#: admin/class-admin.php:2090
msgid "Open a safety-net session in a different browser"
msgstr "Ouvrir une session de secours dans un autre navigateur"

#: admin/class-admin.php:2091
msgid ""
"Open a DIFFERENT browser (for example Firefox if you are on Chrome) or a "
"private/incognito window, and stay logged in as administrator there. Tabs of"
" the same browser share cookies, so they are not a real safety net: if you "
"log out to test 2FA, every tab disconnects at once. A different browser "
"keeps a separate session you can use to disable 2FA if email delivery fails."
msgstr ""
"Ouvrez un navigateur DIFFÉRENT (par exemple Firefox si vous êtes sur Chrome)"
" ou une fenêtre privée, et restez-y connecté en tant qu’administrateur. Les "
"onglets d’un même navigateur partagent les cookies : ce n’est donc pas un "
"vrai filet de sécurité, car si vous vous déconnectez pour tester la 2FA, "
"tous les onglets se déconnectent d’un coup. Un navigateur différent conserve"
" une session distincte que vous pourrez utiliser pour désactiver la 2FA si "
"la délivrabilité des e-mails échoue."

#: admin/class-admin.php:2092
msgid ""
"I have a different browser (or a private/incognito window) logged in as "
"administrator."
msgstr ""
"J’ai un autre navigateur (ou une fenêtre privée) connecté en tant "
"qu’administrateur."

#: admin/class-admin.php:2094
msgid "Enable Email 2FA"
msgstr "Activer la 2FA par e-mail"

#: admin/class-admin.php:2096
msgid "Missing AJAX configuration."
msgstr "Configuration AJAX manquante."

#: admin/class-admin.php:456
msgid "BROKEN"
msgstr "ROMPUE"

#. translators: 1: number of rows before chain start, 2: chain start row id
#: admin/views/tabs/activity.php:403
msgid ""
"%1$s row before the integrity chain (id < %2$s) is not covered by Verify. "
"These legacy rows can be modified without detection."
msgid_plural ""
"%1$s rows before the integrity chain (id < %2$s) are not covered by Verify. "
"These legacy rows can be modified without detection."
msgstr[0] ""
"%1$s ligne antérieure à la chaîne d’intégrité (id < %2$s) n’est pas couverte"
" par la vérification. Ces lignes héritées peuvent être modifiées sans "
"détection."
msgstr[1] ""
"%1$s lignes antérieures à la chaîne d’intégrité (id < %2$s) ne sont pas "
"couvertes par la vérification. Ces lignes héritées peuvent être modifiées "
"sans détection."

#: admin/class-admin.php:333
msgid "Action failed."
msgstr "Action échouée."

#: admin/class-admin.php:335
msgid "Missing nonce, reload the page."
msgstr "Nonce manquant, rechargez la page."

#: admin/class-admin.php:336
msgid "All changes saved."
msgstr "Toutes les modifications ont été enregistrées."

#: admin/class-admin.php:337
msgid "Saved"
msgstr "Enregistré"

#: admin/class-admin.php:339
msgid "Copied."
msgstr "Copié."

#: admin/class-admin.php:340
msgid "Copy failed."
msgstr "Échec de la copie."

#: admin/class-admin.php:341
msgid "Could not detect IP."
msgstr "Impossible de détecter l’IP."

#: admin/class-admin.php:342
msgid "Could not skip advice."
msgstr "Impossible d’ignorer le conseil."

#: admin/class-admin.php:343
msgid "Activity logging enabled."
msgstr "Journalisation d’activité activée."

#: admin/class-admin.php:344
msgid "Activity logging disabled."
msgstr "Journalisation d’activité désactivée."

#: admin/class-admin.php:345
msgid "Brute force protection enabled."
msgstr "Protection force brute activée."

#: admin/class-admin.php:346
msgid "Brute force protection disabled."
msgstr "Protection force brute désactivée."

#: admin/class-admin.php:347
msgid "Detection & logs enabled."
msgstr "Détection et journaux activés."

#: admin/class-admin.php:348
msgid "Detection & logs disabled."
msgstr "Détection et journaux désactivés."

#: admin/class-admin.php:349
msgid "Hardening settings saved."
msgstr "Réglages de durcissement enregistrés."

#: admin/class-admin.php:350
msgid "Hide Login enabled."
msgstr "Hide Login activé."

#: admin/class-admin.php:351
msgid "Hide Login disabled."
msgstr "Hide Login désactivé."

#: admin/class-admin.php:352
msgid "Hide Login settings saved."
msgstr "Réglages Hide Login enregistrés."

#: admin/class-admin.php:353
msgid "Login headers enabled."
msgstr "En-têtes de connexion activés."

#: admin/class-admin.php:354
msgid "Login headers disabled."
msgstr "En-têtes de connexion désactivés."

#: admin/class-admin.php:355
msgid "Login headers saved."
msgstr "En-têtes de connexion enregistrés."

#: admin/class-admin.php:356
msgid "Notifications enabled — defaulting to Email. Configure channel below."
msgstr ""
"Notifications activées — Email par défaut. Configurez le canal ci-dessous."

#: admin/class-admin.php:357
msgid "Notifications disabled."
msgstr "Notifications désactivées."

#: admin/class-admin.php:358
msgid "Test notification sent."
msgstr "Notification de test envoyée."

#: admin/class-admin.php:359
msgid "Two-factor authentication enabled."
msgstr "Authentification à deux facteurs activée."

#: admin/class-admin.php:360
msgid "Two-factor authentication disabled."
msgstr "Authentification à deux facteurs désactivée."

#: admin/class-admin.php:361
msgid "Enable failed."
msgstr "Échec de l’activation."

#: admin/class-admin.php:362
msgid "Disable failed."
msgstr "Échec de la désactivation."

#: admin/class-admin.php:363
msgid "Email failed."
msgstr "Échec de l’envoi de l’email."

#: admin/class-admin.php:364
msgid "Purge failed."
msgstr "Échec de la purge."

#: admin/class-admin.php:366
msgid "Regenerated. New URL emailed to admin."
msgstr "Régénéré. Nouvelle URL envoyée par email à l’administrateur."

#: admin/class-admin.php:367
msgid "Reset failed."
msgstr "Échec de la réinitialisation."

#: admin/class-admin.php:368
msgid "Reset to defaults. New URL emailed to admin."
msgstr ""
"Réinitialisé aux valeurs par défaut. Nouvelle URL envoyée par email à "
"l’administrateur."

#: admin/class-admin.php:369
msgid "Recommended values applied."
msgstr "Valeurs recommandées appliquées."

#: admin/class-admin.php:370
msgid "Defaults restored."
msgstr "Valeurs par défaut restaurées."

#: admin/class-admin.php:371
msgid "Incident resolved."
msgstr "Incident résolu."

#: admin/class-admin.php:372
msgid "Incident ignored."
msgstr "Incident ignoré."

#: admin/views/tabs/activity.php:195
msgid "INITIALIZED"
msgstr "INITIALISÉ"

#: admin/views/tabs/activity.php:196
msgid "USED"
msgstr "UTILISÉ"

#: admin/views/tabs/activity.php:197
msgid "TRUSTED"
msgstr "APPROUVÉ"

#: admin/views/tabs/activity.php:198
msgid "REVOKED"
msgstr "RÉVOQUÉ"

#: admin/views/tabs/activity.php:199
msgid "RECOVERY"
msgstr "RÉCUPÉRATION"

#: admin/views/tabs/activity.php:200
msgid "REQUESTED"
msgstr "DEMANDÉ"

#: admin/views/tabs/activity.php:201
msgid "RESET"
msgstr "RÉINITIALISÉ"

#: admin/views/tabs/activity.php:203
msgid "REGISTERED"
msgstr "INSCRIT"

#: admin/views/tabs/activity.php:204
msgid "LOCKED"
msgstr "VERROUILLÉ"

#: admin/views/tabs/activity.php:205
msgid "UNLOCKED"
msgstr "DÉVERROUILLÉ"

#: admin/views/tabs/activity.php:206
msgid "PURGED"
msgstr "PURGÉ"

#: admin/views/tabs/incidents.php:37
msgid "Reserved-username probe"
msgstr "Sondage de noms réservés"

#: admin/views/tabs/incidents.php:38
msgid "Bot caught (honeypot)"
msgstr "Bot piégé (honeypot)"

#: admin/views/tabs/incidents.php:53
msgid "Many password guesses against a single account."
msgstr "De nombreux essais de mot de passe sur un même compte."

#: admin/views/tabs/incidents.php:54
msgid "Leaked username/password pairs replayed in bulk."
msgstr "Paires identifiant/mot de passe fuitées, rejouées en masse."

#: admin/views/tabs/incidents.php:55
msgid "Probing to discover which usernames exist."
msgstr "Sondage pour découvrir les identifiants existants."

#: admin/views/tabs/incidents.php:56
msgid "The same attack spread across many IPs to slip under per-IP lockout."
msgstr ""
"La même attaque répartie sur de nombreuses IP pour passer sous le "
"verrouillage par IP."

#: admin/views/tabs/incidents.php:57
msgid "Suspicious activity right after a successful login."
msgstr "Activité suspecte juste après une connexion réussie."

#: admin/views/tabs/incidents.php:58
msgid "Login attempts on default/reserved accounts (admin, administrator…)."
msgstr ""
"Tentatives de connexion sur des comptes par défaut ou réservés (admin, "
"administrator…)."

#: admin/views/tabs/incidents.php:59
msgid "An automated bot filled the hidden honeypot field."
msgstr "Un bot automatisé a rempli le champ honeypot caché."

#: admin/views/tabs/incidents.php:60
msgid "A two-factor recovery or bypass was requested."
msgstr ""
"Une récupération ou un contournement de la double authentification a été "
"demandé."

#: admin/views/tabs/incidents.php:895
msgid "Select all"
msgstr "Tout sélectionner"

#: admin/views/tabs/incidents.php:897
msgid "selected"
msgstr "sélectionné(s)"

#: admin/views/tabs/incidents.php:950
msgid "login form"
msgstr "formulaire de connexion"

#: admin/views/tabs/incidents.php:959
msgid "Select this incident for bulk actions"
msgstr "Sélectionner cet incident pour les actions groupées"

#: admin/views/tabs/incidents.php:963
msgid "Attack entry point — bypasses the hidden login URL"
msgstr "Point d’entrée de l’attaque : contourne l’URL de connexion cachée"

#: admin/views/tabs/incidents.php:966
msgid "via %s"
msgstr "via %s"

# === LoginArmor 2.1.20 additions ===
#: admin/class-admin.php:457 admin/views/tabs/activity.php:331
msgid "KEYS CHANGED"
msgstr "CLÉS MODIFIÉES"

#: admin/class-admin.php:458
msgid "Re-basing…"
msgstr "Rebasage…"

#: admin/class-admin.php:459
msgid "Re-baseline failed."
msgstr "Échec du rebasage."

#: admin/class-admin.php:461
msgid "Chain re-based: %s rows re-signed under the current key."
msgstr "Chaîne rebasée : %s lignes signées à nouveau avec la clé actuelle."

#: admin/class-admin.php:462
msgid ""
"Security keys changed (migration?). Re-baseline the chain to restore "
"integrity."
msgstr ""
"Clés de sécurité modifiées (migration ?). Rebasez la chaîne pour rétablir "
"l’intégrité."

#: admin/views/tabs/activity.php:364
msgid "Security keys changed since the last baseline"
msgstr "Clés de sécurité modifiées depuis la dernière référence"

#: admin/views/tabs/activity.php:421
msgid "Security keys changed — not tampering."
msgstr "Clés de sécurité modifiées, aucune falsification."

#: admin/views/tabs/activity.php:422
msgid ""
"The activity log is signed with your site security keys (wp_salt). Those "
"keys changed since the chain was last sealed — typically after a site "
"migration, a restored backup, or a manual wp-config.php key change. Rows "
"recorded before the change can no longer be verified, but they have not been"
" altered. Re-baseline the chain to trust the current log and restore the "
"integrity guarantee going forward."
msgstr ""
"Le journal d’activité est signé avec les clés de sécurité de votre site "
"(wp_salt). Ces clés ont changé depuis le dernier scellement de la chaîne — "
"généralement après une migration du site, une restauration de sauvegarde ou "
"une modification manuelle des clés dans wp-config.php. Les lignes "
"enregistrées avant ce changement ne peuvent plus être vérifiées, mais elles "
"n’ont pas été altérées. Rebasez la chaîne pour faire confiance au journal "
"actuel et rétablir la garantie d’intégrité pour la suite."

#: admin/views/tabs/activity.php:425
msgid ""
"Re-sign every activity row under the current security key and trust the log "
"as it stands now? Only do this after a key change you expected."
msgstr ""
"Signer à nouveau chaque ligne d’activité avec la clé de sécurité actuelle et"
" faire confiance au journal tel quel ? À ne faire qu’après un changement de "
"clé que vous attendiez."

#: admin/views/tabs/activity.php:426
msgid "Re-baseline chain"
msgstr "Rebaser la chaîne"

#: admin/views/tabs/overview.php:156
msgid "Hide Login is on, but XML-RPC is still open."
msgstr "Hide Login est actif, mais XML-RPC reste ouvert."

#: admin/views/tabs/overview.php:176
msgid "Disable XML-RPC →"
msgstr "Désactiver XML-RPC →"

#. translators: %d: number of XML-RPC attack incidents in the last 30 days.
#: admin/views/tabs/overview.php:162
msgid ""
"Your login URL is hidden, yet %d attack in the last 30 days reached your "
"site through xmlrpc.php — a separate login endpoint that bypasses Hide "
"Login. Disable XML-RPC to close it (keep it on only if you use Jetpack or "
"the WordPress mobile app)."
msgid_plural ""
"Your login URL is hidden, yet %d attacks in the last 30 days reached your "
"site through xmlrpc.php — a separate login endpoint that bypasses Hide "
"Login. Disable XML-RPC to close it (keep it on only if you use Jetpack or "
"the WordPress mobile app)."
msgstr[0] ""
"Votre URL de connexion est masquée, pourtant %d attaque au cours des 30 "
"derniers jours a atteint votre site via xmlrpc.php — un point d'entrée de "
"connexion distinct qui contourne Hide Login. Désactivez XML-RPC pour le "
"fermer (ne le gardez actif que si vous utilisez Jetpack ou l'application "
"mobile WordPress)."
msgstr[1] ""
"Votre URL de connexion est masquée, pourtant %d attaques au cours des 30 "
"derniers jours ont atteint votre site via xmlrpc.php — un point d'entrée de "
"connexion distinct qui contourne Hide Login. Désactivez XML-RPC pour le "
"fermer (ne le gardez actif que si vous utilisez Jetpack ou l'application "
"mobile WordPress)."

# === LoginArmor 2.1.21 additions (proper nouns, FR = EN) ===
#: admin/class-admin.php:405 admin/views/tabs/events.php:124
#: admin/views/tabs/overview.php:500
msgid "Jetpack (WordPress.com)"
msgstr "Jetpack (WordPress.com)"

#: admin/class-admin.php:406 admin/views/tabs/events.php:125
#: admin/views/tabs/overview.php:501
msgid "WordPress.com"
msgstr "WordPress.com"

#: admin/class-admin.php:407 admin/views/tabs/events.php:126
#: admin/views/tabs/overview.php:502
msgid "WordPress"
msgstr "WordPress"

#: includes/TwoFactor/TwoFactor.php:697
msgid ""
"Too many incorrect verification codes. For your security, verification is "
"locked for a few minutes — please wait, then sign in again."
msgstr ""
"Trop de codes de vérification incorrects. Par sécurité, la vérification est "
"bloquée pendant quelques minutes : patientez, puis reconnectez-vous."

#: includes/TwoFactor/TwoFactor.php:698
msgid ""
"Your verification session expired or could not be found. Please sign in "
"again to receive a new code."
msgstr ""
"Votre session de vérification a expiré ou est introuvable. Reconnectez-vous "
"pour recevoir un nouveau code."

#: admin/views/sections/ai-panel.php:50
msgid "AI threat analysis"
msgstr "Analyse IA de la menace"

#: admin/views/sections/ai-panel.php:51
msgid ""
"Get a plain-language explanation of this incident and what to do about it."
msgstr ""
"Obtenez une explication claire de cet incident et des actions à mener."

#: admin/views/sections/ai-panel.php:52
msgid "Explain with AI"
msgstr "Expliquer avec l’IA"

#: admin/views/sections/ai-panel.php:56
msgid "AI security briefing"
msgstr "Briefing de sécurité IA"

#: admin/views/sections/ai-panel.php:57
msgid ""
"A verdict on your site, the IP picture, and prioritised actions from the "
"last 30 days of real activity."
msgstr ""
"Un verdict sur votre site, le panorama des adresses IP et des actions "
"priorisées d’après les 30 derniers jours d’activité réelle."

#: admin/views/sections/ai-panel.php:58
msgid "Analyse my security"
msgstr "Analyser ma sécurité"

#: includes/AI/PostureAdvisor.php:128 includes/AI/PostureAdvisor.php:140
msgid "Login activity"
msgstr "Activité de connexion"

#. translators: 1: number of failed attempts, 2: number of successful logins
#. (last 7 days). Label form avoids gender/number agreement.
#: includes/AI/PostureAdvisor.php:132
msgid "Failures: %1$d · Successes: %2$d (7 days)."
msgstr "Échecs : %1$d · Réussites : %2$d (7 jours)."

#: includes/AI/PostureAdvisor.php:138
msgid "Last attempt %s ago."
msgstr "Dernière tentative il y a %s."

#: includes/AI/PostureAdvisor.php:164
msgid "Incidents (30 days)"
msgstr "Incidents (30 jours)"

#. translators: 1: total incidents, 2: critical incidents. Label form avoids
#. agreement issues.
#: includes/AI/PostureAdvisor.php:168
msgid "Total: %1$d · Critical: %2$d."
msgstr "Total : %1$d · Critiques : %2$d."

#: includes/AI/PostureAdvisor.php:172
msgid "None."
msgstr "Aucun."

#: includes/AI/PostureAdvisor.php:177
msgid "Your admin IP"
msgstr "Votre IP d’administration"

#: includes/AI/PostureAdvisor.php:177
msgid "Not whitelisted — risk of locking yourself out."
msgstr "Pas en liste blanche : risque de vous bloquer vous-même."

#: includes/AI/PostureAdvisor.php:183
msgid "Two-factor authentication"
msgstr "Authentification à deux facteurs"

#: includes/AI/PostureAdvisor.php:184 includes/AI/PostureAdvisor.php:192
#: includes/AI/PostureAdvisor.php:200
msgid "Enabled."
msgstr "Activée."

#: includes/AI/PostureAdvisor.php:184 includes/AI/PostureAdvisor.php:192
#: includes/AI/PostureAdvisor.php:200 includes/AI/PostureAdvisor.php:210
msgid "Disabled."
msgstr "Désactivée."

#. translators: 1: active hardening toggles, 2: total hardening toggles.
#: includes/AI/PostureAdvisor.php:227
msgid "%1$d of %2$d active."
msgstr "%1$d sur %2$d actifs."

#: includes/AI/PostureAdvisor.php:237
msgid "Security score"
msgstr "Score de sécurité"

#. translators: %d: security score out of 100.
#: includes/AI/PostureAdvisor.php:240
msgid "%d / 100"
msgstr "%d / 100"

#: includes/AI/PostureAdvisor.php:284
msgid "Environment"
msgstr "Environnement"

#: includes/AI/PostureAdvisor.php:300
msgid "Updates"
msgstr "Mises à jour"

#: includes/AI/PostureAdvisor.php:297
msgid "Theme"
msgstr "Thème"

#. translators: %d: themes to update.
#: includes/AI/PostureAdvisor.php:296
msgid "%d theme to update"
msgid_plural "%d themes to update"
msgstr[0] "%d thème à mettre à jour"
msgstr[1] "%d thèmes à mettre à jour"

#: includes/AI/PostureAdvisor.php:147
msgid "Legitimate sign-ins"
msgstr "Connexions légitimes"

#. translators: 1: admins, 2: editors/authors, 3: other roles, 4: total
#. successful sign-ins (30 days).
#: includes/AI/PostureAdvisor.php:150
msgid "Admins: %1$d · Authors: %2$d · Others: %3$d — %4$d sign-ins (30 days)."
msgstr ""
"Admins : %1$d · Auteurs : %2$d · Autres : %3$d — %4$d connexions (30 jours)."

#: includes/AI/PostureAdvisor.php:249
msgid "Admin changes"
msgstr "Changements admin"

#: includes/AI/PostureAdvisor.php:251 includes/AI/PostureAdvisor.php:271
msgid "Admin changes (30 days)"
msgstr "Changements admin (30 jours)"

#: includes/AI/PostureAdvisor.php:251
msgid "No content or plugin changes."
msgstr "Aucun changement de contenu ou d’extension."

#: includes/AI/PostureAdvisor.php:249
msgid "Activity log disabled — enable it to track content and plugin changes."
msgstr ""
"Journal d’activité désactivé — activez-le pour suivre les changements de "
"contenu et d’extensions."

#: includes/AI/PostureAdvisor.php:308
msgid "core auto-updates off"
msgstr "MAJ auto du cœur désactivées"

#: includes/AI/PostureAdvisor.php:311
msgid "default database prefix"
msgstr "préfixe de base de données par défaut"

#. translators: %d: plugins to update.
#: includes/AI/PostureAdvisor.php:293
msgid "%d plugin to update"
msgid_plural "%d plugins to update"
msgstr[0] "%d extension à mettre à jour"
msgstr[1] "%d extensions à mettre à jour"

#: includes/AI/PostureAdvisor.php:314
msgid "HTTPS not in use"
msgstr "HTTPS non utilisé"

#: includes/AI/PostureAdvisor.php:317
msgid "debug exposed in production"
msgstr "debug exposé en production"

#: includes/AI/PostureAdvisor.php:320
msgid "To harden"
msgstr "À renforcer"

#: admin/views/sections/ai-panel.php:127
msgid ""
"Enable the AI assistant in settings to get a personalised briefing and "
"prioritised advice on top of these facts."
msgstr ""
"Activez l’assistant IA dans les réglages pour un briefing personnalisé et "
"des conseils priorisés en plus de ces faits."

#: admin/views/sections/ai-panel.php:128
msgid "Enable AI in settings"
msgstr "Activer l’IA dans les réglages"

#: admin/views/sections/ai-panel.php:130
msgid ""
"Personalised AI advice needs WordPress 7 with a configured AI connector. The"
" facts above are always available, with or without AI."
msgstr ""
"Les conseils IA personnalisés nécessitent WordPress 7 avec un connecteur IA "
"configuré. Les faits ci-dessus restent toujours disponibles, avec ou sans "
"IA."

#: admin/views/sections/ai-panel.php:65
msgid "AI"
msgstr "IA"

#: admin/views/sections/ai-panel.php:84
msgid ""
"WordPress needs your permission for LoginArmor to use the AI connector you "
"configured."
msgstr ""
"WordPress requiert votre autorisation pour que LoginArmor utilise le "
"connecteur IA que vous avez configuré."

#: admin/views/sections/ai-panel.php:86 admin/views/sections/ai.php:80
msgid "Authorise LoginArmor"
msgstr "Autoriser LoginArmor"

#: admin/views/sections/ai-panel.php:118
msgid ""
"Sent to the AI connector configured in your WordPress — no IP address or "
"username in clear, only anonymised signals."
msgstr ""
"Envoyé au connecteur IA configuré dans votre WordPress — aucune adresse IP "
"ni identifiant en clair, uniquement des signaux anonymisés."

#: admin/views/sections/ai-panel.php:116
msgid ""
"Deep analysis is ON — real IP addresses and event details are sent to the AI"
" connector configured in your WordPress."
msgstr ""
"L’analyse approfondie est ACTIVE — de vraies adresses IP et des détails "
"d’événements sont envoyés au connecteur IA configuré dans votre WordPress."

#: admin/views/sections/ai-panel.php:102
msgid "Force a fresh analysis (ignore the cache)"
msgstr "Forcer une nouvelle analyse (ignorer le cache)"

#: admin/views/sections/ai-panel.php:111
msgid ""
"This analysis is cached for about 3 hours — use Regenerate for a fresh run."
msgstr ""
"Cette analyse est mise en cache environ 3 heures — utilisez Régénérer pour "
"une analyse fraîche."

#: admin/views/sections/ai.php:36 admin/views/sidebar/settings.php:126
#: admin/views/tabs/settings.php:402
msgid "AI Assistant"
msgstr "Assistant IA"

#: admin/views/sections/ai.php:40
msgid "OFF"
msgstr "INACTIF"

#: admin/views/sections/ai.php:42
msgid "NEEDS WP 7"
msgstr "REQUIERT WP 7"

#: admin/views/sections/ai.php:46
msgid ""
"On-demand AI analysis through your own WordPress 7 connector — explains "
"incidents and advises on hardening. The plugin works fully without it."
msgstr ""
"Analyse IA à la demande via votre propre connecteur WordPress 7 — explique "
"les incidents et conseille le durcissement. L’extension fonctionne "
"pleinement sans cela."

#: admin/views/sections/ai.php:59
msgid ""
"AI features require WordPress 7 (or the AI Building Blocks feature plugin) "
"with a configured AI connector. They stay hidden until then."
msgstr ""
"Les fonctions IA requièrent WordPress 7 (ou l’extension AI Building Blocks) "
"avec un connecteur IA configuré. Elles restent masquées jusque-là."

#: admin/views/sections/ai.php:66
msgid "No usable AI connector"
msgstr "Aucun connecteur IA utilisable"

#: admin/views/sections/ai.php:68
msgid ""
"WordPress 7 is detected, but no connector can generate text yet. Configure "
"one to unlock the AI analysis."
msgstr ""
"WordPress 7 est détecté, mais aucun connecteur ne peut encore générer de "
"texte. Configurez-en un pour débloquer l’analyse IA."

#: admin/views/sections/ai-panel.php:131 admin/views/sections/ai.php:70
msgid "Manage AI connectors"
msgstr "Gérer les connecteurs IA"

#: admin/views/sections/ai.php:78
msgid "Authorisation required"
msgstr "Autorisation requise"

#: admin/views/sections/ai.php:79
msgid "A connector is configured but LoginArmor is not yet allowed to use it."
msgstr ""
"Un connecteur est configuré, mais LoginArmor n’est pas encore autorisé à "
"l’utiliser."

#: admin/views/sections/ai.php:97
msgid "Enable AI analysis"
msgstr "Activer l’analyse IA"

#: admin/views/sections/ai.php:98
msgid "Show the AI panels and allow on-demand analysis."
msgstr "Affiche les panneaux IA et autorisé l’analyse à la demande."

#: admin/views/sections/ai.php:111
msgid "Deep analysis"
msgstr "Analyse approfondie"

#: admin/views/sections/ai.php:112
msgid ""
"Send real IP addresses and events to your connector for named, IP-level "
"recommendations. Off = anonymised signals only."
msgstr ""
"Envoie les adresses IP et événements réels à votre connecteur pour des "
"recommandations nominatives par IP. Désactivé = signaux anonymisés "
"uniquement."

#: admin/views/sections/ai.php:116
msgid ""
"Deep mode is on: concrete IP addresses and event details leave your site for"
" your own AI connector. Use it only if your connector and provider agreement"
" are acceptable for that data."
msgstr ""
"Le mode approfondi est actif : des adresses IP concrètes et des détails "
"d’événements quittent votre site vers votre propre connecteur IA. Ne "
"l’utilisez que si votre connecteur et votre contrat fournisseur sont "
"acceptables pour ces données."

#. translators: %d: number of AI calls in the last 30 days.
#: admin/views/sections/ai.php:131
msgid "%d AI call in the last 30 days."
msgid_plural "%d AI calls in the last 30 days."
msgstr[0] "%d appel IA sur les 30 derniers jours."
msgstr[1] "%d appels IA sur les 30 derniers jours."

#: admin/views/sections/ai.php:136
msgid "Manage connectors"
msgstr "Gérer les connecteurs"

#: admin/views/sections/ai.php:145
msgid ""
"Privacy: analysis is opt-in per click. Nothing is sent to WPFormation — the "
"request goes directly to your own AI connector. In default (minimised) mode,"
" no IP address or username is ever sent in clear."
msgstr ""
"Confidentialité : l’analyse est volontaire, à chaque clic. Rien n’est envoyé"
" à WPFormation — la requête va directement à votre propre connecteur IA. En "
"mode par défaut (minimisé), aucune adresse IP ni identifiant n’est jamais "
"envoyé en clair."

#: admin/views/tabs/settings.php:403
msgid ""
"Optional AI analysis via your WordPress 7 connector — explains incidents and"
" advises on hardening."
msgstr ""
"Analyse IA optionnelle via votre connecteur WordPress 7 — explique les "
"incidents et conseille le durcissement."

#: admin/views/tabs/settings.php:240
msgid "Available"
msgstr "Disponible"

#: admin/views/tabs/settings.php:240
msgid "Needs WP 7"
msgstr "Requiert WP 7"

#: admin/class-admin.php:311
msgid "Analysing…"
msgstr "Analyse en cours…"

#: admin/class-admin.php:312
msgid "AI analysis failed."
msgstr "L’analyse IA a échoué."

#: admin/class-admin.php:314
msgid "Saved."
msgstr "Enregistré."

#: includes/AI/IncidentExplainer.php:72 includes/AI/PostureAdvisor.php:81
msgid "The AI response was empty. Try again."
msgstr "La réponse de l’IA était vide. Réessayez."

#: includes/AI/Client.php:304
msgid "The AI layer is disabled."
msgstr "La couche IA est désactivée."

#: includes/AI/Client.php:307
msgid ""
"No native AI connector available. Switch to WordPress 7 and configure an AI "
"connector."
msgstr ""
"Aucun connecteur IA natif disponible. Passez à WordPress 7 et configurez un "
"connecteur IA."

#: includes/AI/Client.php:367
msgid ""
"No native AI connector. Switch to WordPress 7 and configure an AI connector."
msgstr ""
"Aucun connecteur IA natif. Passez à WordPress 7 et configurez un connecteur "
"IA."

#: includes/AI/Client.php:375
msgid ""
"No AI connector supports text generation. Configure one under Settings → AI "
"Connectors."
msgstr ""
"Aucun connecteur IA ne prend en charge la génération de texte. Configurez-en"
" un dans Réglages → AI Connectors."

#: includes/AI/Client.php:385
msgid ""
"Your AI connector must authorise LoginArmor. Click \"Authorise LoginArmor\" "
"in the settings."
msgstr ""
"Votre connecteur IA doit autoriser LoginArmor. Cliquez sur « Autoriser "
"LoginArmor » dans les réglages."

#: admin/class-admin.php:901 admin/class-admin.php:934
msgid "The AI layer is not available."
msgstr "La couche IA n’est pas disponible."

#: admin/class-admin.php:909
msgid "Invalid incident ID."
msgstr "Identifiant d’incident invalide."

#: admin/class-admin.php:608
msgid "Disable password policy?"
msgstr "Désactiver la politique de mot de passe ?"

#: admin/class-admin.php:609
msgid ""
"New and changed passwords will no longer be checked against your rules. Your"
" configured rules are preserved and restored when you re-enable."
msgstr ""
"Les mots de passe nouveaux ou modifiés ne seront plus vérifiés selon vos "
"règles. Les règles configurées sont conservées et restaurées à la "
"réactivation."

#: admin/class-admin.php:614
msgid "Password policy enabled."
msgstr "Politique de mot de passe activée."

#: admin/class-admin.php:615
msgid "Password policy disabled."
msgstr "Politique de mot de passe désactivée."

#: admin/class-admin.php:617
msgid "Could not enable the password policy."
msgstr "Impossible d’activer la politique de mot de passe."

#: admin/class-admin.php:618
msgid "Could not disable the password policy."
msgstr "Impossible de désactiver la politique de mot de passe."

#: admin/class-admin.php:621
msgid "Disable session management?"
msgstr "Désactiver la gestion des sessions ?"

#: admin/class-admin.php:622
msgid ""
"Idle timeout, maximum session lifetime, and single-session enforcement will "
"stop applying. Your settings are preserved and restored when you re-enable."
msgstr ""
"Le délai d’inactivité, la durée de vie maximale des sessions et la session "
"unique cesseront de s’appliquer. Vos réglages sont conservés et restaurés à "
"la réactivation."

#: admin/class-admin.php:627
msgid "Session management enabled."
msgstr "Gestion des sessions activée."

#: admin/class-admin.php:628
msgid "Session management disabled."
msgstr "Gestion des sessions désactivée."

#: admin/class-admin.php:630
msgid "Could not enable session management."
msgstr "Impossible d’activer la gestion des sessions."

#: admin/class-admin.php:631
msgid "Could not disable session management."
msgstr "Impossible de désactiver la gestion des sessions."

#: admin/class-admin.php:632
msgid "Other devices have been signed out."
msgstr "Les autres appareils ont été déconnectés."

#: admin/class-admin.php:633
msgid "Could not sign out other devices."
msgstr "Impossible de déconnecter les autres appareils."

#: admin/class-admin.php:636
msgid "Disable IP geolocation?"
msgstr "Désactiver la géolocalisation IP ?"

#: admin/class-admin.php:637
msgid ""
"Attacking IPs will no longer show a country. No further lookups will be sent"
" to the geolocation service."
msgstr ""
"Les IP d’attaque n’afficheront plus de pays. Aucune nouvelle recherche ne "
"sera envoyée au service de géolocalisation."

#: admin/class-admin.php:642
msgid "IP geolocation enabled."
msgstr "Géolocalisation IP activée."

#: admin/class-admin.php:643
msgid "IP geolocation disabled."
msgstr "Géolocalisation IP désactivée."

#: admin/class-admin.php:644
msgid "Could not enable IP geolocation."
msgstr "Impossible d’activer la géolocalisation IP."

#: admin/class-admin.php:645
msgid "Could not disable IP geolocation."
msgstr "Impossible de désactiver la géolocalisation IP."

#: admin/views/sections/geoip.php:32 admin/views/sidebar/settings.php:105
#: admin/views/tabs/overview.php:329 admin/views/tabs/settings.php:336
msgid "IP Geolocation"
msgstr "Géolocalisation IP"

#: admin/views/sections/geoip.php:41
msgid "Attacking and login IPs are shown with their country of origin."
msgstr ""
"Les IP d’attaque et de connexion sont affichées avec leur pays d’origine."

#: admin/views/sections/geoip.php:43
msgid ""
"Show the country of origin next to the IP addresses in your incidents and "
"events."
msgstr ""
"Affichez le pays d’origine à côté des adresses IP dans vos incidents et "
"évènements."

#: admin/views/sections/geoip.php:63
msgid ""
"When enabled, the IP addresses Login Armor already shows you (failed logins,"
" lockouts, incidents) are resolved to a country flag, so you can tell at a "
"glance where attacks come from. Lookups happen only when you open an admin "
"screen that lists IPs, and each result is cached for 30 days — there is no "
"impact on your visitors or on the login page."
msgstr ""
"Une fois activée, les adresses IP que Login Armor vous montre déjà "
"(connexions échouées, blocages, incidents) sont résolues en drapeau de pays,"
" pour voir d’un coup d’œil d’où viennent les attaques. Les recherches n’ont "
"lieu que lorsque vous ouvrez un écran d’administration listant des IP, et "
"chaque résultat est mis en cache 30 jours : aucun impact sur vos visiteurs "
"ni sur la page de connexion."

#: admin/views/sections/geoip.php:66 admin/views/sections/geoip.php:90
msgid "External service:"
msgstr "Service externe :"

#: admin/views/sections/geoip.php:67
msgid ""
"this feature sends the IP address being displayed to the keyless public "
"geolocation API ipwho.is, which returns the country. No API key or account "
"is required. Private and reserved IP ranges are never sent. Developers can "
"replace the source with an offline database via the login_armor_geoip_lookup"
" filter to make zero external calls. See the External Services section of "
"the plugin readme."
msgstr ""
"cette fonctionnalité envoie l’adresse IP affichée à l’API publique de "
"géolocalisation sans clé ipwho.is, qui renvoie le pays. Aucune clé d’API ni "
"compte n’est requis. Les plages d’IP privées et réservées ne sont jamais "
"envoyées. Les développeurs peuvent remplacer la source par une base de "
"données hors ligne via le filtre login_armor_geoip_lookup pour n’effectuer "
"aucun appel externe. Voir la section Services externes du fichier readme de "
"l’extension."

#: admin/views/sections/geoip.php:76
msgid "Enable IP Geolocation"
msgstr "Activer la géolocalisation IP"

#: admin/views/sections/geoip.php:87
msgid ""
"Geolocation is active. Country flags appear next to IP addresses on the "
"Incidents and Events tabs. Results are cached for 30 days."
msgstr ""
"La géolocalisation est active. Les drapeaux de pays apparaissent à côté des "
"adresses IP dans les onglets Incidents et Évènements. Les résultats sont mis"
" en cache 30 jours."

#: admin/views/sections/geoip.php:91
msgid ""
"displayed IPs are sent to the keyless public API ipwho.is to obtain a "
"country. Private/reserved ranges are never sent. Disclosed in the plugin "
"readme under External Services."
msgstr ""
"les IP affichées sont envoyées à l’API publique sans clé ipwho.is pour "
"obtenir un pays. Les plages privées/réservées ne sont jamais envoyées. "
"Divulgué dans le readme de l’extension, section Services externes."

#: admin/views/sections/login-headers.php:193
msgid "Apply baseline headers site-wide"
msgstr "Appliquer les en-têtes de base à tout le site"

#: admin/views/sections/login-headers.php:195
msgid ""
"Also emit the non-CSP security headers (X-Content-Type-Options, Referrer-"
"Policy, Permissions-Policy, X-Frame-Options: SAMEORIGIN, and HSTS if "
"configured) on every front-end page, not just the login. The Content-"
"Security-Policy is intentionally NOT applied site-wide, because a strict CSP"
" commonly breaks themes and page builders."
msgstr ""
"Émet aussi les en-têtes de sécurité non-CSP (X-Content-Type-Options, "
"Referrer-Policy, Permissions-Policy, X-Frame-Options : SAMEORIGIN, et HSTS "
"si configuré) sur chaque page publique, pas seulement sur la connexion. La "
"Content-Security-Policy n’est volontairement PAS appliquée à tout le site, "
"car une CSP stricte casse souvent les thèmes et les constructeurs de page."

#: admin/views/sections/login-headers.php:202
msgid "Send baseline security headers on the whole front-end"
msgstr "Envoyer les en-têtes de sécurité de base sur tout le site public"

#: includes/class-security-score.php:134 includes/AI/PostureAdvisor.php:191
#: admin/views/sections/password-policy.php:33
#: admin/views/sidebar/overview.php:33 admin/views/sidebar/settings.php:84
#: admin/views/tabs/overview.php:301 admin/views/tabs/settings.php:316
msgid "Password Policy"
msgstr "Politique de mot de passe"

#: admin/views/sections/password-policy.php:42
msgid ""
"New and changed passwords must meet your rules before they are accepted."
msgstr ""
"Les mots de passe nouveaux ou modifiés doivent respecter vos règles avant "
"d’être acceptés."

#: admin/views/sections/password-policy.php:44
msgid ""
"Require strong, unique passwords at registration, profile update, and "
"password reset."
msgstr ""
"Imposez des mots de passe forts et uniques à l’inscription, à la mise à jour"
" du profil et à la réinitialisation du mot de passe."

#: admin/views/sections/password-policy.php:71
msgid "Password policy is disabled"
msgstr "La politique de mot de passe est désactivée"

#: admin/views/sections/password-policy.php:72
msgid ""
"WordPress accepts any password by default — including ones already exposed "
"in public breaches. A policy stops weak and reused passwords at the door."
msgstr ""
"Par défaut, WordPress accepte n’importe quel mot de passe, y compris ceux "
"déjà exposés dans des fuites publiques. Une politique arrête les mots de "
"passe faibles et réutilisés dès l’entrée."

#: admin/views/sections/password-policy.php:77
msgid ""
"When enabled, Login Armor validates every password as it is set — at "
"registration, on the profile screen, and during a lost-password reset. You "
"choose the minimum length and character requirements, and can reject "
"passwords found in public data breaches using the same privacy-preserving "
"Have I Been Pwned lookup as Breach Check."
msgstr ""
"Une fois activée, Login Armor valide chaque mot de passe au moment où il est"
" défini : à l’inscription, sur l’écran de profil et lors d’une "
"réinitialisation de mot de passe oublié. Vous choisissez la longueur "
"minimale et les exigences de caractères, et pouvez rejeter les mots de passe"
" présents dans des fuites publiques grâce à la même recherche Have I Been "
"Pwned respectueuse de la vie privée que la Vérification de fuites."

#: admin/views/sections/password-policy.php:86
msgid "Enable Password Policy"
msgstr "Activer la politique de mot de passe"

#: admin/views/sections/password-policy.php:99
#: admin/views/sidebar/settings.php:86
msgid "Minimum length"
msgstr "Longueur minimale"

#: admin/views/sections/password-policy.php:101
msgid ""
"Reject any password shorter than this many characters. NIST recommends at "
"least 12."
msgstr ""
"Rejette tout mot de passe plus court que ce nombre de caractères. Le NIST "
"recommande au moins 12."

#: admin/views/sections/password-policy.php:120
msgid "Character requirements"
msgstr "Exigences de caractères"

#: admin/views/sections/password-policy.php:122
msgid ""
"Require a mix of character classes. Each enabled rule must be satisfied by "
"the password."
msgstr ""
"Exigez un mélange de classés de caractères. Chaque règle activée doit être "
"respectée par le mot de passe."

#: admin/views/sections/password-policy.php:130
msgid "At least one lowercase letter"
msgstr "Au moins une lettre minuscule"

#: admin/views/sections/password-policy.php:137
msgid "At least one uppercase letter"
msgstr "Au moins une lettre majuscule"

#: admin/views/sections/password-policy.php:144
msgid "At least one number"
msgstr "Au moins un chiffre"

#: admin/views/sections/password-policy.php:151
msgid "At least one symbol"
msgstr "Au moins un symbole"

#: admin/views/sections/password-policy.php:158
msgid "Must not contain the username"
msgstr "Ne doit pas contenir l’identifiant"

#: admin/views/sections/password-policy.php:166
msgid "Block compromised passwords"
msgstr "Bloquer les mots de passe compromis"

#: admin/views/sections/password-policy.php:168
msgid ""
"Reject passwords that appear in the public Have I Been Pwned corpus. Only "
"the first 5 characters of a one-way hash ever leave your server. If the "
"service is unreachable, the password is allowed (fail-soft) so a reset is "
"never blocked by a third-party outage."
msgstr ""
"Rejette les mots de passe présents dans le corpus public Have I Been Pwned. "
"Seuls les 5 premiers caractères d’une empreinte à sens unique quittent votre"
" serveur. Si le service est indisponible, le mot de passe est accepté "
"(tolérance aux pannes) afin qu’une réinitialisation ne soit jamais bloquée "
"par une panne tierce."

#: admin/views/sections/password-policy.php:175
msgid "Reject passwords found in public data breaches"
msgstr ""
"Rejeter les mots de passe trouvés dans des fuites de données publiques"

#: admin/views/sections/password-policy.php:183
msgid "Password expiration"
msgstr "Expiration du mot de passe"

#: admin/views/sections/password-policy.php:185
msgid ""
"Nag users to change their password after this many days. Set to 0 to never "
"expire. Users are redirected to their profile until they change it — they "
"are never locked out. Existing accounts are measured from their next login, "
"never retro-expired."
msgstr ""
"Invite les utilisateurs à changer leur mot de passe après ce nombre de "
"jours. Réglez sur 0 pour ne jamais expirer. Les utilisateurs sont redirigés "
"vers leur profil jusqu’à ce qu’ils le changent : ils ne sont jamais bloqués."
" Les comptes existants sont mesurés à partir de leur prochaine connexion, "
"jamais expirés rétroactivement."

#: admin/views/sections/password-policy.php:196
msgid "days (0 = never)"
msgstr "jours (0 = jamais)"

#: includes/class-security-score.php:137 includes/AI/PostureAdvisor.php:199
#: admin/views/sections/session.php:32 admin/views/sidebar/overview.php:34
#: admin/views/sidebar/settings.php:95 admin/views/tabs/settings.php:326
msgid "Session Management"
msgstr "Gestion des sessions"

#: admin/views/sections/session.php:41
msgid "Idle accounts are logged out and session lifetime is capped."
msgstr ""
"Les comptes inactifs sont déconnectés et la durée de vie des sessions est "
"plafonnée."

#: admin/views/sections/session.php:43
msgid ""
"Log out idle accounts, cap how long a login lasts, and limit logins to one "
"device."
msgstr ""
"Déconnectez les comptes inactifs, plafonnez la durée d’une connexion et "
"limitez les connexions à un seul appareil."

#: admin/views/sections/session.php:70
msgid "Session management is disabled"
msgstr "La gestion des sessions est désactivée"

#: admin/views/sections/session.php:71
msgid ""
"By default a WordPress login stays valid for up to 14 days on any number of "
"devices, even if the computer is left unattended. Session management closes "
"that window."
msgstr ""
"Par défaut, une connexion WordPress reste valide jusqu’à 14 jours sur un "
"nombre illimité d’appareils, même si l’ordinateur est laissé sans "
"surveillance. La gestion des sessions referme cette fenêtre."

#: admin/views/sections/session.php:76
msgid ""
"When enabled, you can automatically log out accounts that have been idle for"
" a set time, cap the maximum lifetime of any login, and optionally restrict "
"each account to a single active device — logging in elsewhere ends the "
"previous session."
msgstr ""
"Une fois activée, vous pouvez déconnecter automatiquement les comptes "
"inactifs depuis un certain temps, plafonner la durée de vie maximale de "
"toute connexion et, en option, limiter chaque compte à un seul appareil "
"actif : se connecter ailleurs met fin à la session précédente."

#: admin/views/sections/session.php:85
msgid "Enable Session Management"
msgstr "Activer la gestion des sessions"

#: admin/views/sections/session.php:98 admin/views/sidebar/settings.php:97
msgid "Idle timeout"
msgstr "Délai d’inactivité"

#: admin/views/sections/session.php:100
msgid ""
"Log an account out after this many minutes of inactivity. Inactivity is "
"measured on real page loads — background heartbeat traffic does not keep a "
"session alive. Set to 0 to disable."
msgstr ""
"Déconnecte un compte après ce nombre de minutes d’inactivité. L’inactivité "
"est mesurée sur les vrais chargements de page : le trafic de fond "
"(heartbeat) ne maintient pas une session active. Réglez sur 0 pour "
"désactiver."

#: admin/views/sections/session.php:111
msgid "minutes (0 = off)"
msgstr "minutes (0 = désactivé)"

#: admin/views/sections/session.php:119
msgid "Maximum session lifetime"
msgstr "Durée de vie maximale de la session"

#: admin/views/sections/session.php:121
msgid ""
"Cap how long any login cookie stays valid, regardless of \"remember me\". "
"WordPress allows up to 14 days by default. Set to 0 to leave the WordPress "
"default unchanged."
msgstr ""
"Plafonne la durée de validité d’un cookie de connexion, indépendamment de "
"« se souvenir de moi ». WordPress autorisé jusqu’à 14 jours par défaut. "
"Réglez sur 0 pour conserver la valeur par défaut de WordPress."

#: admin/views/sections/session.php:132
msgid "hours (0 = WordPress default)"
msgstr "heures (0 = valeur par défaut de WordPress)"

#: admin/views/sections/session.php:140
msgid "Single active session"
msgstr "Session active unique"

#: admin/views/sections/session.php:142
msgid ""
"Restrict each account to one device at a time. Logging in from a new device "
"ends every other session for that account. Useful for shared admin accounts "
"and to limit credential sharing."
msgstr ""
"Limite chaque compte à un seul appareil à la fois. Une connexion depuis un "
"nouvel appareil met fin à toutes les autres sessions de ce compte. Utile "
"pour les comptes d’administration partagés et pour limiter le partage "
"d’identifiants."

#: admin/views/sections/session.php:149
msgid "Allow only one active session per account"
msgstr "N’autoriser qu’une seule session active par compte"

#: admin/views/sections/session.php:157
msgid "Your active sessions"
msgstr "Vos sessions activés"

#. translators: %d: number of active sessions for the current administrator
#. account.
#: admin/views/sections/session.php:163
msgid "Your account currently has %d active session."
msgid_plural "Your account currently has %d active sessions."
msgstr[0] "Votre compte a actuellement %d session active."
msgstr[1] "Votre compte a actuellement %d sessions actives."

#: admin/views/sections/session.php:175
msgid "Sign out all other devices"
msgstr "Déconnecter tous les autres appareils"

#: admin/views/tabs/settings.php:317
msgid ""
"Enforce strong, unique passwords and block ones found in public breaches."
msgstr ""
"Imposez des mots de passe forts et uniques, et bloquez ceux trouvés dans des"
" fuites publiques."

#: admin/views/tabs/settings.php:327
msgid ""
"Log out idle accounts, cap session lifetime, and limit logins to one device."
msgstr ""
"Déconnectez les comptes inactifs, plafonnez la durée des sessions et limitez"
" les connexions à un seul appareil."

#: admin/views/tabs/settings.php:337
msgid ""
"Show the country of origin next to IP addresses in incidents and events."
msgstr ""
"Affichez le pays d’origine à côté des adresses IP dans les incidents et les "
"évènements."

#: includes/AI/PostureAdvisor.php:128
msgid "No attempts in the last 30 days — all quiet."
msgstr "Aucune tentative au cours des 30 derniers jours : tout est calme."

#: includes/class-hardening.php:240
msgid "Disable pingbacks"
msgstr "Désactiver les pingbacks"

#: includes/class-hardening.php:241
msgid ""
"Neutralize XML-RPC pingbacks (a DDoS amplification vector) and remove the "
"X-Pingback header, even if XML-RPC stays on for other uses."
msgstr ""
"Neutralise les pingbacks XML-RPC (un vecteur d’amplification DDoS) et "
"supprime l’en-tête X-Pingback, même si XML-RPC reste actif pour d’autres "
"usages."

#: includes/class-hardening.php:245
msgid "Alert on new administrator"
msgstr "Alerte sur nouvel administrateur"

#: admin/views/sections/hardening.php:45
msgid "Account monitoring"
msgstr "Surveillance des comptes"

#: admin/views/sections/hardening.php:46
msgid "Get alerted when an account gains administrator access."
msgstr "Soyez alerté lorsqu’un compte obtient l’accès administrateur."

#: admin/views/sections/password-policy.php:112
msgid "characters"
msgstr "caractères"

#: includes/class-hardening.php:246
msgid ""
"Log an activity entry and fire a notification whenever an account is created"
" with, or promoted to, the administrator role — a common sign of compromise."
msgstr ""
"Enregistre une entrée d’activité et déclenche une notification dès qu’un "
"compte est créé avec le rôle administrateur, ou promu à ce rôle : un signe "
"fréquent de compromission."

#. translators: %s: site name.
#: includes/class-hardening.php:1224
msgid "[%s] New administrator account detected"
msgstr "[%s] Nouveau compte administrateur détecté"

#. translators: 1: user login, 2: user email.
#: includes/class-hardening.php:1231
msgid "The account \"%1$s\" (%2$s) was just promoted to the administrator role."
msgstr "Le compte « %1$s » (%2$s) vient d’être promu au rôle administrateur."

#. translators: 1: user login, 2: user email.
#: includes/class-hardening.php:1238
msgid ""
"A new account \"%1$s\" (%2$s) was just created with the administrator role."
msgstr ""
"Un nouveau compte « %1$s » (%2$s) vient d’être créé avec le rôle "
"administrateur."

#: includes/class-hardening.php:1244
msgid ""
"If this was expected, no action is needed. If not, review the account "
"immediately — unexpected administrator accounts are a common sign of "
"compromise."
msgstr ""
"Si cela était prévu, aucune action n’est nécessaire. Sinon, examinez ce "
"compte immédiatement : un compte administrateur inattendu est un signe "
"fréquent de compromission."

#. translators: %d: minimum number of characters required in a password.
#: includes/class-password-policy.php:168
msgid "Password must be at least %d character long."
msgid_plural "Password must be at least %d characters long."
msgstr[0] "Le mot de passe doit comporter au moins %d caractère."
msgstr[1] "Le mot de passe doit comporter au moins %d caractères."

#: includes/class-password-policy.php:179
msgid "Password must contain at least one lowercase letter."
msgstr "Le mot de passe doit contenir au moins une lettre minuscule."

#: includes/class-password-policy.php:182
msgid "Password must contain at least one uppercase letter."
msgstr "Le mot de passe doit contenir au moins une lettre majuscule."

#: includes/class-password-policy.php:185
msgid "Password must contain at least one number."
msgstr "Le mot de passe doit contenir au moins un chiffre."

#: includes/class-password-policy.php:188
msgid "Password must contain at least one symbol."
msgstr "Le mot de passe doit contenir au moins un symbole."

#: includes/class-password-policy.php:192
msgid "Password must not contain your username."
msgstr "Le mot de passe ne doit pas contenir votre identifiant."

#: includes/class-password-policy.php:201
msgid ""
"This password appears in public data breach records and is unsafe. Please "
"choose a different one."
msgstr ""
"Ce mot de passe figure dans des fuites de données publiques et n’est pas "
"sûr. Veuillez en choisir un autre."

#. translators: %d: minimum number of characters required in a password.
#: includes/class-password-policy.php:396
msgid "At least %d character"
msgid_plural "At least %d characters"
msgstr[0] "Au moins %d caractère"
msgstr[1] "Au moins %d caractères"

#: includes/class-password-policy.php:400
msgid "One lowercase letter"
msgstr "Une lettre minuscule"

#: includes/class-password-policy.php:403
msgid "One uppercase letter"
msgstr "Une lettre majuscule"

#: includes/class-password-policy.php:406
msgid "One number"
msgstr "Un chiffre"

#: includes/class-password-policy.php:409
msgid "One symbol"
msgstr "Un symbole"

#: includes/class-password-policy.php:412
msgid "Not found in known data breaches"
msgstr "Absent des fuites de données connues"

#: admin/class-admin.php:648
msgid "Disable the request firewall?"
msgstr "Désactiver le pare-feu de requêtes ?"

#: admin/class-admin.php:649
msgid ""
"Malicious requests will no longer be inspected or blocked. Your rule "
"selection and allowlists are preserved and restored when you re-enable."
msgstr ""
"Les requêtes malveillantes ne seront plus inspectées ni bloquées. Votre "
"sélection de règles et vos listes d’autorisation sont conservées et "
"restaurées à la réactivation."

#: admin/class-admin.php:654
msgid "Request firewall enabled in monitor mode."
msgstr "Pare-feu de requêtes activé en mode surveillance."

#: admin/class-admin.php:655
msgid "Request firewall disabled."
msgstr "Pare-feu de requêtes désactivé."

#: admin/class-admin.php:656
msgid "Firewall settings saved."
msgstr "Réglages du pare-feu enregistrés."

#: admin/class-admin.php:657
msgid "Could not enable the request firewall."
msgstr "Impossible d’activer le pare-feu de requêtes."

#: admin/class-admin.php:658
msgid "Could not disable the request firewall."
msgstr "Impossible de désactiver le pare-feu de requêtes."

#: admin/class-admin.php:659
msgid "Added your current IP to the allowlist."
msgstr "Votre adresse IP actuelle a été ajoutée à la liste d’autorisation."

#: admin/class-admin.php:660
msgid "Could not detect your IP."
msgstr "Impossible de détecter votre adresse IP."

#: admin/class-admin.php:663
msgid "Apply the safe baseline?"
msgstr "Appliquer la base sûre ?"

#: admin/class-admin.php:664
msgid ""
"This turns on brute-force protection, attack detection, login-page headers, "
"the activity log and the 7 safest hardening toggles. It never changes Hide "
"Login, Two-Factor or the firewall, and never disables anything."
msgstr ""
"Ceci active la protection contre la force brute, la détection d’attaques, "
"les en-têtes de la page de connexion, le journal d’activité et les 7 "
"interrupteurs de renforcement les plus sûrs. Cela ne modifie jamais Hide "
"Login, l’authentification à deux facteurs ni le pare-feu, et ne désactive "
"jamais rien."

#: admin/class-admin.php:667
msgid "Safe baseline applied."
msgstr "Base sûre appliquée."

#: admin/class-admin.php:668
msgid "Could not apply the safe baseline."
msgstr "Impossible d’appliquer la base sûre."

#: admin/class-admin.php:2612
msgid "Could not load the safe baseline."
msgstr "Impossible de charger la base sûre."

#: admin/class-admin.php:2644
msgid "brute-force protection"
msgstr "protection contre la force brute"

#: admin/class-admin.php:2645
msgid "firewall"
msgstr "pare-feu"

#: admin/class-admin.php:2646
msgid "two-factor authentication"
msgstr "authentification à deux facteurs"

#: admin/class-admin.php:2647
msgid "login URL hiding"
msgstr "masquage de l’URL de connexion"

#: admin/class-admin.php:2648
msgid "security headers"
msgstr "en-têtes de sécurité"

#: admin/class-admin.php:2649
msgid "hardening"
msgstr "renforcement"

#: admin/class-admin.php:2650
msgid "login rate-limiting"
msgstr "limitation des tentatives de connexion"

#: admin/class-admin.php:2687
msgid "Login Armor — another security plugin overlaps with this one"
msgstr "Login Armor : une autre extension de sécurité chevauche celle-ci"

#: admin/class-admin.php:2689
msgid ""
"Running two plugins for the same protection causes double lockouts, hidden-"
"login clashes and duplicated headers. Enable each protection in only one "
"plugin to avoid locking yourself out."
msgstr ""
"Utiliser deux extensions pour la même protection provoque des doubles "
"verrouillages, des conflits de masquage de connexion et des en-têtes en "
"double. N’activez chaque protection que dans une seule extension pour éviter"
" de bloquer votre propre accès."

#: admin/class-admin.php:2713
msgid "Login Armor — caching plugin detected with Hide Login active"
msgstr ""
"Login Armor — extension de cache détectée alors que Hide Login est actif"

#. translators: %s: comma-separated list of cache plugin names.
#: admin/class-admin.php:2717
msgid ""
"We detected: %s. Exclude your hidden login URL from the page cache, or "
"visitors may get a cached 404 instead of the login form."
msgstr ""
"Nous avons détecté : %s. Excluez votre URL de connexion masquée du cache de "
"page, sinon vos visiteurs pourraient recevoir une erreur 404 mise en cache "
"au lieu du formulaire de connexion."

#: admin/views/onboarding.php:48
msgid "Welcome to Login Armor"
msgstr "Bienvenue dans Login Armor"

#: admin/views/onboarding.php:49
msgid ""
"Choose how you want to start. You can change every setting afterwards — "
"nothing here is permanent."
msgstr ""
"Choisissez votre point de départ. Vous pourrez modifier chaque réglage par "
"la suite — rien n’est définitif ici."

#: admin/views/onboarding.php:55
msgid "Simple setup"
msgstr "Configuration simple"

#: admin/views/onboarding.php:58
msgid ""
"Turn on the safe essentials that protect your site without any risk of "
"locking you out or breaking your theme."
msgstr ""
"Activez les protections essentielles et sûres qui protègent votre site sans "
"aucun risque de bloquer votre accès ni de casser votre thème."

#: admin/views/onboarding.php:60
msgid "Brute-force protection &amp; attack detection"
msgstr "Protection contre la force brute &amp; détection d’attaques"

#: admin/views/onboarding.php:61
msgid "Login-page security headers"
msgstr "En-têtes de sécurité de la page de connexion"

#: admin/views/onboarding.php:62
msgid "Activity log (audit trail)"
msgstr "Journal d’activité (piste d’audit)"

#: admin/views/onboarding.php:63
msgid "The 7 safest hardening toggles"
msgstr "Les 7 interrupteurs de renforcement les plus sûrs"

#: admin/views/onboarding.php:66
msgid ""
"Not touched: Hide Login, Two-Factor and the firewall stay off so you can "
"enable them deliberately."
msgstr ""
"Non modifiés : Hide Login, l’authentification à deux facteurs et le pare-feu"
" restent désactivés afin que vous les activiez délibérément."

#: admin/views/onboarding.php:69
msgid "Use Simple setup"
msgstr "Utiliser la configuration simple"

#: admin/views/onboarding.php:74
msgid "Advanced setup"
msgstr "Configuration avancée"

#: admin/views/onboarding.php:75
msgid ""
"Skip the presets and configure every module yourself, including the "
"sensitive ones like Two-Factor and Hide Login."
msgstr ""
"Ignorez les préréglages et configurez chaque module vous-même, y compris les"
" plus sensibles comme l’authentification à deux facteurs et Hide Login."

#: admin/views/onboarding.php:77
msgid "Nothing is changed automatically"
msgstr "Rien n’est modifié automatiquement"

#: admin/views/onboarding.php:78
msgid "All 11 modules visible and unlocked"
msgstr "Les 11 modules visibles et déverrouillés"

#: admin/views/onboarding.php:79
msgid "Full control from the Settings tab"
msgstr "Contrôle total depuis l’onglet Réglages"

#: admin/views/onboarding.php:82
msgid "I'll configure it myself"
msgstr "Je configure moi-même"

#: admin/views/onboarding.php:88
msgid "Skip for now"
msgstr "Ignorer pour l’instant"

#: admin/views/sections/firewall.php:29
msgid "Bad request methods"
msgstr "Mauvaises méthodes de requête"

#: admin/views/sections/firewall.php:30
msgid "Bad query strings"
msgstr "Mauvaises chaînes de requête"

#: admin/views/sections/firewall.php:31
msgid "Bad request paths"
msgstr "Mauvais chemins de requête"

#: admin/views/sections/firewall.php:32
msgid "Aggressive path rules"
msgstr "Règles de chemins agressives"

#: admin/views/sections/firewall.php:33
msgid "Bad user agents"
msgstr "Mauvais agents utilisateurs"

#: admin/views/sections/firewall.php:34
msgid "Spam referrers"
msgstr "Référents indésirables"

#: admin/views/sections/firewall.php:38 admin/views/sections/firewall.php:39
msgid ""
"Your server supports .htaccess too, but this PHP filter is portable and "
"every block is logged here."
msgstr ""
"Votre serveur prend aussi en charge le .htaccess, mais ce filtre PHP est "
"portable et chaque blocage est journalisé ici."

#: admin/views/sections/firewall.php:40
msgid ""
"Nginx ignores .htaccess — this PHP-level firewall is the right tool for your"
" stack."
msgstr ""
"Nginx ignore le .htaccess — ce pare-feu au niveau PHP est l’outil adapté à "
"votre environnement."

#: admin/views/sections/firewall.php:41
msgid ""
"On IIS this PHP-level firewall works without any web-server configuration."
msgstr ""
"Sous IIS, ce pare-feu au niveau PHP fonctionne sans aucune configuration du "
"serveur web."

#: admin/views/sections/firewall.php:42
msgid "This firewall runs in PHP, so it works regardless of your web server."
msgstr ""
"Ce pare-feu s’exécute en PHP : il fonctionne quel que soit votre serveur "
"web."

#: includes/class-security-score.php:140 includes/AI/PostureAdvisor.php:207
#: admin/views/sections/firewall.php:56 admin/views/sidebar/settings.php:110
#: admin/views/tabs/overview.php:317 admin/views/tabs/settings.php:346
msgid "Request Firewall"
msgstr "Pare-feu de requêtes"

#: admin/views/sections/firewall.php:58
msgid "ENFORCING"
msgstr "BLOCAGE ACTIF"

#: admin/views/sections/firewall.php:60
msgid "MONITORING"
msgstr "SURVEILLANCE"

#: admin/views/sections/firewall.php:66
msgid ""
"Blocks malicious requests in PHP before WordPress processes them — bad query"
" strings, traversal, SQLi/XSS probes, disallowed HTTP methods. Inspired by "
"the 8G firewall."
msgstr ""
"Bloque les requêtes malveillantes en PHP avant que WordPress ne les traite —"
" mauvaises chaînes de requête, traversée de répertoires, sondes SQLi/XSS, "
"méthodes HTTP non autorisées. Inspiré du pare-feu 8G."

#: admin/views/sections/firewall.php:92
msgid "The request firewall is off"
msgstr "Le pare-feu de requêtes est désactivé"

#: admin/views/sections/firewall.php:93
msgid ""
"Common automated probes (SQL injection, traversal, scanner tools) reach "
"WordPress unfiltered. Enabling starts in monitor mode — it logs would-be "
"blocks without blocking anything, so you can review before enforcing."
msgstr ""
"Les sondes automatisées courantes (injection SQL, traversée de répertoires, "
"outils de scan) atteignent WordPress sans filtrage. L’activation démarre en "
"mode surveillance — elle journalise les blocages potentiels sans rien "
"bloquer, afin que vous puissiez les examiner avant de passer en mode "
"blocage."

#: admin/views/sections/firewall.php:102
msgid "Enable Request Firewall (monitor mode)"
msgstr "Activer le pare-feu de requêtes (mode surveillance)"

#: admin/views/sections/firewall.php:116
msgid "firewall matches in the last 30 days."
msgstr "correspondances du pare-feu au cours des 30 derniers jours."

#: admin/views/sections/firewall.php:118
msgid "(Monitor mode — these were logged, not blocked.)"
msgstr ""
"(Mode surveillance — ces requêtes ont été journalisées, pas bloquées.)"

#: admin/views/sections/firewall.php:125
msgid "Mode"
msgstr "Mode"

#: admin/views/sections/firewall.php:127
msgid ""
"Start in Monitor to validate against real traffic. Switch to Enforce only "
"once the monitor log looks clean."
msgstr ""
"Démarrez en mode Surveillance pour valider avec le trafic réel. Passez en "
"mode Blocage uniquement lorsque le journal de surveillance est propre."

#: admin/views/sections/firewall.php:133 admin/views/sidebar/settings.php:112
#: admin/views/tabs/overview.php:323
msgid "Monitor"
msgstr "Surveillance"

#: admin/views/sections/firewall.php:137
msgid ""
"Logs would-be blocks as incidents without blocking. Zero risk of breaking "
"the site."
msgstr ""
"Journalise les blocages potentiels en incidents sans rien bloquer. Aucun "
"risque de casser le site."

#: admin/views/sections/firewall.php:143 admin/views/sidebar/settings.php:113
msgid "Enforce"
msgstr "Blocage"

#: admin/views/sections/firewall.php:146
msgid ""
"Actually blocks matching requests with a 403. Logged-in admins are never "
"filtered."
msgstr ""
"Bloque réellement les requêtes correspondantes avec une erreur 403. Les "
"administrateurs connectés ne sont jamais filtrés."

#: admin/views/sections/firewall.php:156 admin/views/sidebar/settings.php:114
msgid "Conservative rules"
msgstr "Règles conservatrices"

#: admin/views/sections/firewall.php:158
msgid "Very low false-positive risk. Recommended on for everyone."
msgstr "Risque de faux positifs très faible. Recommandé pour tout le monde."

#: admin/views/sections/firewall.php:162
msgid ""
"Block SQL injection, code-exec, traversal and XSS markers in the query "
"string."
msgstr ""
"Bloque l’injection SQL, l’exécution de code, la traversée de répertoires et "
"les marqueurs XSS dans la chaîne de requête."

#: admin/views/sections/firewall.php:163
msgid ""
"Block traversal, sensitive system files, backups and known web-shell paths."
msgstr ""
"Bloque la traversée de répertoires, les fichiers système sensibles, les "
"sauvegardes et les chemins de web-shells connus."

#: admin/views/sections/firewall.php:164
msgid ""
"Allow only standard HTTP methods; block CONNECT, TRACE, TRACK, DEBUG and "
"malformed ones."
msgstr ""
"N’autorise que les méthodes HTTP standard ; bloque CONNECT, TRACE, TRACK, "
"DEBUG et celles qui sont malformées."

#: admin/views/sections/firewall.php:184 admin/views/sidebar/settings.php:115
msgid "Aggressive rules"
msgstr "Règles agressives"

#: admin/views/sections/firewall.php:186
msgid ""
"Higher false-positive risk — these can hit legitimate clients (uptime "
"monitors, Jetpack/XML-RPC, author pages). Enable only if you understand the "
"trade-off, and test in Monitor first."
msgstr ""
"Risque de faux positifs plus élevé — elles peuvent toucher des clients "
"légitimes (moniteurs de disponibilité, Jetpack/XML-RPC, pages d’auteur). "
"N’activez ces règles que si vous en comprenez le compromis, et testez "
"d’abord en mode Surveillance."

#: admin/views/sections/firewall.php:190
msgid ""
"Block scanner and generic HTTP-library user agents (curl, wget, python, "
"sqlmap, nikto…)."
msgstr ""
"Bloque les agents utilisateurs de scanners et de bibliothèques HTTP "
"génériques (curl, wget, python, sqlmap, nikto…)."

#: admin/views/sections/firewall.php:191
msgid ""
"Block requests from known spam referrer domains (best-effort, list ages "
"quickly)."
msgstr ""
"Bloque les requêtes provenant de domaines référents indésirables connus (au "
"mieux, la liste vieillit vite)."

#: admin/views/sections/firewall.php:192
msgid "Block XML-RPC, author enumeration and exposed dev/source files."
msgstr ""
"Bloque XML-RPC, l’énumération des auteurs et les fichiers de "
"développement/source exposés."

#: admin/views/sections/firewall.php:212 admin/views/sidebar/settings.php:116
msgid "Allowlist"
msgstr "Liste d’autorisation"

#: admin/views/sections/firewall.php:214
msgid ""
"Requests from these IPs, or to these paths, are never inspected. One entry "
"per line. IPs accept CIDR ranges (e.g. 203.0.113.0/24). Logged-in "
"administrators are always exempt."
msgstr ""
"Les requêtes provenant de ces adresses IP, ou vers ces chemins, ne sont "
"jamais inspectées. Une entrée par ligne. Les adresses IP acceptent les "
"plages CIDR (par ex. 203.0.113.0/24). Les administrateurs connectés sont "
"toujours exemptés."

#: admin/views/sections/firewall.php:219
msgid "Allowed IPs"
msgstr "Adresses IP autorisées"

#: admin/views/sections/firewall.php:228
msgid "Use my current IP"
msgstr "Utiliser mon adresse IP actuelle"

#: admin/views/sections/firewall.php:233
msgid "Allowed paths"
msgstr "Chemins autorisés"

#: admin/views/sections/firewall.php:258
msgid "Recent blocks"
msgstr "Blocages récents"

#. translators: %d: number of matched requests
#: admin/views/sections/firewall.php:271
msgid "%d hit"
msgid_plural "%d hits"
msgstr[0] "%d correspondance"
msgstr[1] "%d correspondances"

#: admin/views/sections/firewall.php:273
msgid "monitor"
msgstr "surveillance"

#: admin/views/sidebar/overview.php:33
msgid "enforces strong, unique passwords and blocks breached ones."
msgstr ""
"impose des mots de passe forts et uniques, et bloque ceux qui ont fuité."

#: admin/views/sidebar/overview.php:34
msgid "idle timeout, maximum session lifetime, single-device login."
msgstr ""
"expiration pour inactivité, durée de vie maximale de session, connexion sur "
"un seul appareil."

#: admin/views/sidebar/settings.php:86
msgid "enforce a minimum character count on new and changed passwords."
msgstr ""
"imposez un nombre minimal de caractères sur les mots de passe nouveaux ou "
"modifiés."

#: admin/views/sidebar/settings.php:87
msgid "Complexity"
msgstr "Complexité"

#: admin/views/sidebar/settings.php:87
msgid "require lower/upper case, a number, and optionally a symbol."
msgstr ""
"exigez des minuscules/majuscules, un chiffre et, en option, un symbole."

#: admin/views/sidebar/settings.php:88
msgid "Block compromised"
msgstr "Blocage des compromis"

#: admin/views/sidebar/settings.php:88
msgid ""
"reject passwords found in public breaches. The password never leaves your "
"server (Have I Been Pwned k-anonymity)."
msgstr ""
"rejette les mots de passe trouvés dans des fuites publiques. Le mot de passe"
" ne quitte jamais votre serveur (k-anonymat Have I Been Pwned)."

#: admin/views/sidebar/settings.php:89
msgid "Expiration"
msgstr "Expiration"

#: admin/views/sidebar/settings.php:89
msgid "optionally force a reset after N days. 0 = never expires."
msgstr ""
"forcez en option une réinitialisation après N jours. 0 = n’expire jamais."

#: admin/views/sidebar/settings.php:90
msgid ""
"applies at registration, profile update and password reset. Fails soft if "
"the breach API is unreachable."
msgstr ""
"s’applique à l’inscription, à la mise à jour du profil et à la "
"réinitialisation du mot de passe. Échoue en douceur si l’API de fuites est "
"injoignable."

#: admin/views/sidebar/settings.php:97
msgid "sign out accounts after a period of inactivity. 0 = off."
msgstr "déconnecte les comptes après une période d’inactivité. 0 = désactivé."

#: admin/views/sidebar/settings.php:98
msgid "Max lifetime"
msgstr "Durée de vie maximale"

#: admin/views/sidebar/settings.php:98
msgid "cap how long a session stays valid regardless of activity."
msgstr ""
"limite la durée de validité d’une session, quelle que soit l’activité."

#: admin/views/sidebar/settings.php:99
msgid "Single session"
msgstr "Session unique"

#: admin/views/sidebar/settings.php:99
msgid ""
"one active device per account; logging in elsewhere ends the older session."
msgstr ""
"un seul appareil actif par compte ; se connecter ailleurs met fin à la "
"session la plus ancienne."

#: admin/views/sidebar/settings.php:100
msgid "Sign out others"
msgstr "Déconnecter les autres"

#: admin/views/sidebar/settings.php:100
msgid "end every other session for your own account from your profile."
msgstr ""
"mettez fin à toutes les autres sessions de votre compte depuis votre profil."

#: admin/views/sidebar/settings.php:106
msgid ""
"Shows the country of origin next to IP addresses in Incidents and Events. "
"Lookups use the keyless ipwho.is service, are cached, and never affect the "
"security score. Purely informational."
msgstr ""
"Affiche le pays d’origine à côté des adresses IP dans les Incidents et les "
"Évènements. Les recherches utilisent le service ipwho.is sans clé, sont "
"mises en cache et n’affectent jamais le score de sécurité. Purement "
"informatif."

#: admin/views/sidebar/settings.php:112
msgid "logs would-be blocks as incidents without blocking. Always start here."
msgstr ""
"journalise les blocages potentiels en incidents sans rien bloquer. Commencez"
" toujours par là."

#: admin/views/sidebar/settings.php:113
msgid ""
"actually blocks matching requests with a 403. Switch once the monitor log "
"looks clean."
msgstr ""
"bloque réellement les requêtes correspondantes avec une erreur 403. Basculez"
" une fois que le journal de surveillance est propre."

#: admin/views/sidebar/settings.php:114
msgid ""
"bad query strings, paths and HTTP methods. Very low false-positive risk; on "
"by default."
msgstr ""
"mauvaises chaînes de requête, chemins et méthodes HTTP. Risque de faux "
"positifs très faible ; activé par défaut."

#: admin/views/sidebar/settings.php:115
msgid ""
"user-agent and referrer filtering, XML-RPC and author probes. Higher false-"
"positive risk; opt-in."
msgstr ""
"filtrage des agents utilisateurs et des référents, sondes XML-RPC et "
"d’auteur. Risque de faux positifs plus élevé ; à activer manuellement."

#: admin/views/sidebar/settings.php:116
msgid ""
"IPs (incl. CIDR) and paths never inspected. Logged-in administrators are "
"always exempt."
msgstr ""
"Adresses IP (CIDR incluses) et chemins jamais inspectés. Les administrateurs"
" connectés sont toujours exemptés."

#: admin/views/sidebar/settings.php:127
msgid ""
"Optional analysis layer on the WordPress 7 native AI client. Explains "
"incidents in plain language and advises on hardening. Minimized by default —"
" only deterministic, local facts are shared and no API key is stored. Needs "
"a WordPress 7 AI connector to activate."
msgstr ""
"Couche d’analyse optionnelle sur le client IA natif de WordPress 7. Explique"
" les incidents en langage clair et conseille sur le renforcement. Minimisée "
"par défaut — seuls des faits locaux et déterministes sont partagés, et "
"aucune clé d’API n’est stockée. Nécessite un connecteur IA de WordPress 7 "
"pour s’activer."

#: admin/views/tabs/incidents.php:40 admin/views/tabs/incidents.php:302
#: admin/views/tabs/incidents.php:859
msgid "Request firewall"
msgstr "Pare-feu de requêtes"

#: admin/views/tabs/incidents.php:61
msgid ""
"A request matched a firewall rule (bad query string, path, method, agent or "
"referrer)."
msgstr ""
"Une requête a déclenché une règle du pare-feu (mauvaise chaîne de requête, "
"chemin, méthode, agent ou référent)."

#: admin/views/tabs/incidents.php:303
msgid ""
"A request matched the 8G-inspired request firewall — a malicious query "
"string, path, HTTP method, user agent or referrer. Repeated hits from one IP"
" are aggregated into this single incident."
msgstr ""
"Une requête a déclenché le pare-feu de requêtes inspiré du 8G — une chaîne "
"de requête, un chemin, une méthode HTTP, un agent utilisateur ou un référent"
" malveillant. Les déclenchements répétés depuis une même adresse IP sont "
"regroupés dans cet unique incident."

#: admin/views/tabs/incidents.php:304
msgid ""
"In monitor mode this was logged, not blocked — review the matches, then "
"switch the firewall to enforce. If a legitimate request was matched, add its"
" IP or path to the firewall allowlist."
msgstr ""
"En mode surveillance, ceci a été journalisé, pas bloqué — examinez les "
"correspondances, puis passez le pare-feu en mode blocage. Si une requête "
"légitime a été touchée, ajoutez son adresse IP ou son chemin à la liste "
"d’autorisation du pare-feu."

#: admin/views/tabs/settings.php:349
msgid "Blocking malicious requests before WordPress processes them."
msgstr "Bloque les requêtes malveillantes avant que WordPress ne les traite."

#: admin/views/tabs/settings.php:350
msgid ""
"Monitoring malicious requests — not blocking yet. Review, then enforce."
msgstr ""
"Surveille les requêtes malveillantes — sans bloquer pour l’instant. "
"Examinez, puis passez en blocage."

#: admin/views/tabs/settings.php:351
msgid ""
"Block malicious requests (bad query strings, paths, methods) before "
"WordPress runs."
msgstr ""
"Bloquez les requêtes malveillantes (mauvaises chaînes de requête, chemins, "
"méthodes) avant l’exécution de WordPress."

#: includes/AI/PostureAdvisor.php:209 admin/views/tabs/overview.php:323
#: admin/views/tabs/settings.php:354
msgid "Enforcing"
msgstr "Blocage actif"

#: includes/AI/PostureAdvisor.php:209 admin/views/tabs/settings.php:354
msgid "Monitoring"
msgstr "Surveillance"

#: includes/Firewall/Firewall.php:316
msgid "Your request was blocked for security reasons."
msgstr "Votre requête a été bloquée pour des raisons de sécurité."

#: admin/views/tabs/overview.php:302
msgid "Password strength rules"
msgstr "Règles de robustesse des mots de passe"

#: admin/views/tabs/overview.php:302
msgid "Strong passwords enforced"
msgstr "Mots de passe forts imposés"

#: admin/views/tabs/overview.php:309
msgid "Sessions"
msgstr "Sessions"

#: admin/views/tabs/overview.php:310
msgid "Idle timeout & device limits"
msgstr "Expiration d’inactivité et limites d’appareils"

#: admin/views/tabs/overview.php:310
msgid "Timeout & device limits"
msgstr "Expiration et limites d’appareils"

#: admin/views/tabs/overview.php:319
msgid "Blocking bad requests"
msgstr "Bloque les mauvaises requêtes"

#: admin/views/tabs/overview.php:319
msgid "Monitoring (not blocking)"
msgstr "Surveillance (sans blocage)"

#: admin/views/tabs/overview.php:320
msgid "Blocks malicious requests"
msgstr "Bloque les requêtes malveillantes"

#: admin/views/tabs/settings.php:142
msgid "Each module is one click. Enable what applies, skip what doesn't."
msgstr ""
"Chaque module s’active en un clic. Activez ce qui vous concerne, ignorez le "
"reste."

#: admin/views/tabs/settings.php:170
msgid "New here? Start with the safe essentials"
msgstr "Nouveau ici ? Commencez par les protections essentielles et sûres"

#: admin/views/tabs/settings.php:171
msgid ""
"One click turns on the protections that can’t lock you out or break your "
"theme. Hide Login, Two-Factor and the firewall stay untouched."
msgstr ""
"Un clic active les protections qui ne peuvent ni bloquer votre accès ni "
"casser votre thème. Hide Login, l’authentification à deux facteurs et le "
"pare-feu restent inchangés."

#: admin/views/tabs/overview.php:330
msgid "Country of origin on IPs"
msgstr "Pays d’origine sur les IP"

#: admin/views/tabs/overview.php:330
msgid "Country shown on IPs"
msgstr "Pays affiché sur les IP"

#: admin/views/tabs/settings.php:175
msgid "Enable recommended protections"
msgstr "Activer les protections recommandées"

#: admin/views/tabs/settings.php:178
msgid "Review the setup assistant"
msgstr "Revoir l’assistant de configuration"

#: admin/views/tabs/settings.php:429
msgid "Access & login"
msgstr "Accès & connexion"

#: admin/views/tabs/settings.php:430
msgid "Detection & logs"
msgstr "Détection & journaux"

#: admin/views/tabs/settings.php:431
msgid "Accounts & passwords"
msgstr "Comptes & mots de passe"

#: admin/views/tabs/settings.php:432
msgid "Firewall & hardening"
msgstr "Pare-feu & renforcement"

#: admin/views/tabs/settings.php:433
msgid "Alerts & AI"
msgstr "Alertes & IA"

#. translators: 1: active modules in this category, 2: total modules in this
#. category.
#: admin/views/tabs/settings.php:459
msgid "%1$d/%2$d on"
msgstr "%1$d/%2$d activés"

msgctxt "request firewall, masculine subject"
msgid "Disabled."
msgstr "Désactivé."

msgid "Firewall: off"
msgstr "Pare-feu : inactif"

msgid "Firewall: blocking"
msgstr "Pare-feu : blocage"

msgid "Firewall: monitoring"
msgstr "Pare-feu : surveillance"


# --- Login Armor 2.4.2 (coherence + Ultimate Member) ---
msgid "Login Armor: front-end login plugin detected: %s"
msgstr "Login Armor : extension de connexion en front-end détectée : %s"

msgid "This plugin handles sign-in on your own pages, not wp-login.php. Login Armor's Two-Factor and Hide Login work on the WordPress login flow and are not compatible with it: a member could be locked out of the front-end login. Keep Two-Factor and Hide Login turned off while this plugin manages your logins. Brute-force protection, hardening, detection and the firewall are unaffected."
msgstr "Cette extension gère la connexion sur vos propres pages, pas via wp-login.php. L’authentification à deux facteurs et le masquage de la connexion de Login Armor agissent sur le flux de connexion de WordPress et ne sont pas compatibles avec elle : un membre pourrait se retrouver bloqué à la connexion en front-end. Laissez l’authentification à deux facteurs et le masquage de la connexion désactivés tant que cette extension gère vos connexions. La protection contre la force brute, le durcissement, la détection et le pare-feu ne sont pas concernés."

msgid "No events recorded yet. Login attempts (successes, failures, lockouts) will appear here as they happen."
msgstr "Aucun événement enregistré pour l’instant. Les tentatives de connexion (réussites, échecs, verrouillages) apparaîtront ici au fur et à mesure."

msgid "No admin activity recorded yet. Actions like user edits, plugin changes and settings updates will appear here as they happen."
msgstr "Aucune activité d’administration enregistrée pour l’instant. Les actions comme les modifications de comptes, les changements d’extensions et les mises à jour de réglages apparaîtront ici au fur et à mesure."

msgid "%1$d of %2$d modules active"
msgstr "%1$d modules actifs sur %2$d"

msgid "Every module visible and unlocked"
msgstr "Tous les modules visibles et débloqués"

msgid "Regenerate webhook secret?"
msgstr "Régénérer le secret du webhook ?"

msgid "Disable two-factor authentication?"
msgstr "Désactiver l’authentification à deux facteurs ?"

msgid "Select at least one two-factor method: users cannot verify their sign-in without one."
msgstr "Sélectionnez au moins une méthode à deux facteurs : sans elle, la connexion ne peut pas être vérifiée."

msgid "All users will sign in with their password alone. Per-user secrets, backup codes and trusted devices are preserved and restored when you re-enable."
msgstr "Tous les utilisateurs et utilisatrices se connecteront avec leur seul mot de passe. Les secrets individuels, les codes de secours et les appareils de confiance sont conservés et restaurés à la réactivation."

msgid "Restart 2FA grace"
msgstr "Relancer le délai 2FA"

msgid "You are not allowed to do this."
msgstr "Vous n’êtes pas autorisé à effectuer cette action."

msgid "Unknown user."
msgstr "Utilisateur inconnu."

msgid "Login Armor: the two-factor setup window has been reopened for this user."
msgstr "Login Armor : la fenêtre de configuration de l’authentification à deux facteurs a été rouverte pour cet utilisateur."

msgid "Webhook URL is not configured, invalid, or points to a private or reserved address."
msgstr "L’URL du webhook n’est pas configurée, est invalide, ou pointe vers une adresse privée ou réservée."

msgid "Webhook URL must be a valid HTTPS URL that does not point to a private or reserved address."
msgstr "L’URL du webhook doit être une URL HTTPS valide qui ne pointe pas vers une adresse privée ou réservée."

msgid "Two-factor authentication is required for your account and the setup deadline has passed. Please contact a site administrator to regain access."
msgstr "L’authentification à deux facteurs est obligatoire pour votre compte et le délai de configuration est dépassé. Veuillez contacter un administrateur du site pour récupérer l’accès."

#: admin/class-admin.php:1817
msgid "Two-factor authentication is not available."
msgstr "L’authentification à deux facteurs n’est pas disponible."

#: admin/class-admin.php:1820
msgid "Two-factor authentication is already configured for this account."
msgstr "L’authentification à deux facteurs est déjà configurée pour ce compte."

#: admin/class-admin.php:1825
msgid "This two-factor method is not enabled by the site administrator."
msgstr "Cette méthode d’authentification à deux facteurs n’est pas activée par l’administrateur du site."

#: admin/class-admin.php:1840 admin/class-admin.php:1854
msgid "Unable to start the two-factor setup. Please try again."
msgstr "Impossible de démarrer la configuration de l’authentification à deux facteurs. Veuillez réessayer."

#: admin/class-admin.php:1935
msgid "This setup session is not available."
msgstr "Cette session de configuration n’est pas disponible."

#: admin/class-admin.php:1943
msgid "This setup session has expired. Please start again."
msgstr "Cette session de configuration a expiré. Veuillez recommencer."

#: admin/class-admin.php:1948
msgid "This two-factor method is no longer enabled."
msgstr "Cette méthode d’authentification à deux facteurs n’est plus activée."

#: admin/class-admin.php:1977
msgid "Unable to save the verified setup state. Please start again."
msgstr "Impossible d’enregistrer l’état vérifié de la configuration. Veuillez recommencer."

#: admin/class-admin.php:1994
msgid "This verified setup session is invalid, expired, or already completed."
msgstr "Cette session de configuration vérifiée est invalide, expirée ou déjà terminée."

#: admin/class-admin.php:2019
msgid "Two-factor authentication is required for your role and can only be reset by an administrator."
msgstr "L’authentification à deux facteurs est obligatoire pour votre rôle et ne peut être réinitialisée que par un administrateur."

#: admin/class-admin.php:2041
msgid "You are not allowed to reset two-factor authentication for this user."
msgstr "Vous n’êtes pas autorisé à réinitialiser l’authentification à deux facteurs pour cet utilisateur."

#: admin/views/profile/two-factor.php:142
msgid "Two-factor authentication is required for your role. A site administrator must authorize any reset."
msgstr "L’authentification à deux facteurs est obligatoire pour votre rôle. Un administrateur du site doit autoriser toute réinitialisation."

#: admin/views/profile/two-factor.php:172
msgid "This user has not configured two-factor authentication."
msgstr "Cet utilisateur n’a pas configuré l’authentification à deux facteurs."

#: includes/TwoFactor/TwoFactor.php:973 includes/TwoFactor/TwoFactor.php:1132
msgid "No two-factor verification method is currently available for your account. Please contact a site administrator."
msgstr "Aucune méthode de vérification à deux facteurs n’est actuellement disponible pour votre compte. Veuillez contacter un administrateur du site."

#: includes/TwoFactor/TwoFactor.php:1130
msgid "Too many incorrect verification codes. For your security, verification is locked for a few minutes. Please wait, then sign in again."
msgstr "Trop de codes de vérification incorrects. Pour votre sécurité, la vérification est verrouillée pendant quelques minutes. Patientez, puis reconnectez-vous."

#: admin/class-admin.php
msgid "Login Armor could not determine a reliable visitor IP. Per-client lockouts and security quotas are paused to avoid blocking every visitor. Verify the IP detection method and trusted proxy list in Login Armor settings."
msgstr "Login Armor ne peut pas déterminer une adresse IP visiteur fiable. Les verrouillages et quotas par client sont suspendus pour éviter de bloquer tous les visiteurs. Vérifiez la méthode de détection IP et la liste des proxies de confiance dans les réglages de Login Armor."

#~ msgid "Apply safe baseline"
#~ msgstr "Appliquer la base sûre"

#~ msgid "Turn the firewall off"
#~ msgstr "Désactiver le pare-feu"

#~ msgid ""
#~ "Stops inspecting and blocking requests. Your mode, rules and allowlists are "
#~ "kept, so you can switch it back on later."
#~ msgstr ""
#~ "Cesse d’inspecter et de bloquer les requêtes. Votre mode, vos règles et vos "
#~ "listes d’autorisation sont conservés, pour pouvoir le réactiver plus tard."

#~ msgid "Disable firewall"
#~ msgstr "Désactiver le pare-feu"

#~ msgid ""
#~ "Each module is one click. Enable what applies, skip what doesn't. New here? "
#~ "Use “Apply safe baseline” below for a no-risk starting point."
#~ msgstr ""
#~ "Chaque module s’active en un clic. Activez ce qui vous concerne, ignorez le "
#~ "reste. Nouveau ici ? Utilisez « Appliquer la base sûre » ci-dessous pour un "
#~ "point de départ sans risque."

#~ msgid "New here?"
#~ msgstr "Nouveau ici ?"

#~ msgid ""
#~ "Turn on the safe essentials in one click — brute force, detection, login "
#~ "headers, activity log and the 7 safest hardening toggles. It never touches "
#~ "Hide Login, Two-Factor or the firewall."
#~ msgstr ""
#~ "Activez les protections essentielles et sûres en un clic — force brute, "
#~ "détection, en-têtes de connexion, journal d’activité et les 7 interrupteurs "
#~ "de renforcement les plus sûrs. Cela ne touche jamais à Hide Login, à "
#~ "l’authentification à deux facteurs ni au pare-feu."

#~ msgid "CSV export coming soon."
#~ msgstr "Exportation CSV bientôt disponible."

#~ msgid ""
#~ "Eight surfaces, one click each. Enable what applies, skip what doesn't. Most"
#~ " sites run well with 5 of 8 active."
#~ msgstr ""
#~ "Huit points d’attaque, un clic chacun. Activez ceux qui vous concernent, "
#~ "ignorez les autres. La plupart des sites tournent bien avec 5 des 8 activés."

#~ msgid "Page not found."
#~ msgstr "Page introuvable."

#~ msgid "Not Found"
#~ msgstr "Introuvable"

#~ msgid "%1$d of %2$d modules active. Fine-tune details below."
#~ msgstr "%1$d modules sur %2$d actifs. Affinez les détails ci-dessous."

#~ msgid ""
#~ "%1$d of %2$d modules are active. Enabling %3$s and %4$s would raise your "
#~ "score to %5$d."
#~ msgstr ""
#~ "%1$d modules sur %2$d sont actifs. Activer %3$s et %4$s ferait passer votre "
#~ "score à %5$d."

#~ msgid ""
#~ "%1$d of %2$d modules are active. Enabling %3$s would raise your score to "
#~ "%4$d."
#~ msgstr ""
#~ "%1$d modules sur %2$d sont actifs. Activer %3$s ferait passer votre score à "
#~ "%4$d."

#~ msgid "Queue stats (last 7 days)"
#~ msgstr "Statistiques de file (7 derniers jours)"

#~ msgid "Integrity"
#~ msgstr "Intégrité"

#~ msgid "%1$s rows : last verified %2$s"
#~ msgstr "%1$s lignes : dernière vérification %2$s"

#~ msgid "Chain not yet verified"
#~ msgstr "Chaîne non vérifiée"

#~ msgid "Run verify to populate the integrity status."
#~ msgstr "Lancez une vérification pour afficher l’état d’intégrité."

#~ msgid "Verify integrity now"
#~ msgstr "Vérifier l’intégrité maintenant"

#~ msgid "Tamper Detection"
#~ msgstr "Détection de falsification"

#~ msgid ""
#~ "Every activity row is cryptographically signed and chained. Any direct-SQL "
#~ "change — by an attacker, a compromised plugin, or a manual database edit — "
#~ "breaks the chain and surfaces here."
#~ msgstr ""
#~ "Chaque ligne du journal est signée cryptographiquement et chaînée à la "
#~ "précédente. Toute modification SQL directe (attaquant, plugin compromis, "
#~ "édition manuelle de la base) casse la chaîne et est signalée ici."

#~ msgid "detected %s"
#~ msgstr "détecté %s"

#~ msgid ""
#~ "Each row of the activity table below is cryptographically signed and "
#~ "chained. If an attacker, a compromised plugin, or a manual database edit "
#~ "alters or removes a row, the chain breaks and the corrupted line is reported"
#~ " here."
#~ msgstr ""
#~ "Chaque ligne du tableau d'activité ci-dessous est signée cryptographiquement"
#~ " et chaînée à la précédente. Si un attaquant, un plugin compromis ou une "
#~ "édition manuelle de la base modifie ou supprime une ligne, la chaîne casse "
#~ "et la ligne corrompue est signalée ici."

#~ msgid "No verification has been run yet."
#~ msgstr "Aucune vérification n’a encore été effectuée."

# 2.1.7 audit — strings discovered missing in fr_FR.po
#~ msgid ""
#~ "Hide your login URL, block brute force attacks, harden WordPress, and "
#~ "monitor all admin activity."
#~ msgstr ""
#~ "Masquez votre URL de connexion, bloquez les attaques par force brute, "
#~ "durcissez WordPress et surveillez toute l'activité d'administration."

#~ msgid "No plugins detected."
#~ msgstr "Aucune extension détectée."

#~ msgid "Login Armor — another security plugin is active"
#~ msgstr "Login Armor : une autre extension de sécurité est active"

#~ msgid ""
#~ "We detected: %s. Running two security plugins that both protect the login "
#~ "can cause conflicts (double lockouts, hidden-login clashes, header "
#~ "duplication). Enable each protection in only one plugin to avoid locking "
#~ "yourself out."
#~ msgstr ""
#~ "Nous avons détecté : %s. Faire tourner deux extensions de sécurité qui "
#~ "protègent toutes deux la connexion peut provoquer des conflits (doubles "
#~ "blocages, conflits de connexion masquée, duplication d’en-têtes). N’activez "
#~ "chaque protection que dans une seule extension pour éviter de vous "
#~ "verrouiller dehors."

# --- V2.5.0 : Bot Challenge (Proof-of-Work) ---

msgid "(Monitor mode: these were counted, not blocked.)"
msgstr "(Mode surveillance : comptées, non bloquées.)"

msgid "A fraction of a second in any modern browser. The right balance for almost every site."
msgstr "Une fraction de seconde dans tout navigateur moderne. Le bon équilibre pour presque tous les sites."

msgid "A login was submitted without a valid proof-of-work: the invisible computation every real browser solves automatically. Almost always an automated client (bot, script) posting credentials directly. Repeated hits from one IP are aggregated into this single incident."
msgstr "Une connexion a été soumise sans preuve de calcul valide : le calcul invisible que tout vrai navigateur résout automatiquement. Presque toujours un client automatisé (bot, script) envoyant les identifiants directement. Les tentatives répétées d’une même IP sont regroupées dans cet incident unique."

msgid "A login was submitted without solving the invisible proof-of-work challenge."
msgstr "Une connexion a été soumise sans résoudre le défi de preuve de calcul invisible."

msgid "A proof-of-work is an invisible alternative to a CAPTCHA: instead of asking humans to click on bicycles, the browser silently solves a small cryptographic puzzle before the login form is accepted. A real visitor never notices: it takes a fraction of a second. A botnet hammering thousands of passwords has to pay that computation on every single attempt, which makes the attack slow and expensive."
msgstr "Une preuve de calcul est une alternative invisible au CAPTCHA : au lieu de demander aux humains de cliquer sur des vélos, le navigateur résout silencieusement un petit défi cryptographique avant que le formulaire de connexion ne soit accepté. Un visiteur réel ne remarque rien : cela prend une fraction de seconde. Un botnet qui teste des milliers de mots de passe doit payer ce calcul à chaque tentative, ce qui rend l’attaque lente et coûteuse."

msgid "Blocked: bot challenge not solved"
msgstr "Bloqué : défi anti-bot non résolu"

msgid "Bot Challenge"
msgstr "Défi anti-bot"

msgid "Bot challenge disabled."
msgstr "Défi anti-bot désactivé."

msgid "Bot challenge enabled in monitor mode."
msgstr "Défi anti-bot activé en mode surveillance."

msgid "Bot challenge failed"
msgstr "Échec du défi anti-bot"

msgid "Bot challenge settings saved."
msgstr "Réglages du défi anti-bot enregistrés."

msgid "Could not disable the bot challenge."
msgstr "Impossible de désactiver le défi anti-bot."

msgid "Could not enable the bot challenge."
msgstr "Impossible d’activer le défi anti-bot."

msgid "Counts submissions without a valid proof without blocking anything. Zero risk of locking out a real user."
msgstr "Compte les soumissions sans preuve valide sans rien bloquer. Zéro risque de bloquer un utilisateur réel."

msgid "Difficulty"
msgstr "Difficulté"

msgid "Disable the bot challenge?"
msgstr "Désactiver le défi anti-bot ?"

msgid "Enable Bot Challenge (monitor mode)"
msgstr "Activer le défi anti-bot (mode surveillance)"

msgid "Every login must carry an invisible proof-of-work solved by the browser."
msgstr "Chaque connexion doit porter une preuve de calcul invisible résolue par le navigateur."

msgid "Every login submission must carry an invisible proof-of-work solved by the browser."
msgstr "Chaque soumission de connexion doit porter une preuve de calcul invisible résolue par le navigateur."

msgid "Everything runs on your own site: no external service, no account, no data sent anywhere. Enabling starts in monitor mode: submissions without a valid proof are counted but never blocked, so you can verify real users are unaffected before enforcing. Note: login flows without JavaScript (or custom login plugins) cannot solve the challenge; monitor mode will reveal them."
msgstr "Tout fonctionne sur votre propre site : aucun service externe, aucun compte, aucune donnée envoyée où que ce soit. L’activation démarre en mode surveillance : les soumissions sans preuve valide sont comptées mais jamais bloquées, afin de vérifier que vos utilisateurs réels ne sont pas affectés avant de passer en blocage. Note : les connexions sans JavaScript (ou via des extensions de connexion personnalisées) ne peuvent pas résoudre le défi ; le mode surveillance les révélera."

msgid "How much computation each login costs the sender. Higher hurts botnets more but takes slightly longer on very old devices. Standard suits almost every site."
msgstr "La quantité de calcul que chaque connexion coûte à l’expéditeur. Plus élevé pénalise davantage les botnets mais prend un peu plus de temps sur les appareils très anciens. Standard convient à presque tous les sites."

msgid "Lightest cost. For sites with visitors on very old phones or computers."
msgstr "Coût le plus léger. Pour les sites dont les visiteurs utilisent des téléphones ou ordinateurs très anciens."

msgid "Login submissions will no longer have to solve the invisible proof-of-work. Your mode and difficulty are preserved and restored when you re-enable."
msgstr "Les soumissions de connexion n’auront plus à résoudre la preuve de calcul invisible. Votre mode et votre difficulté sont conservés et restaurés à la réactivation."

msgid "Make every login attempt cost CPU time: invisible to humans, expensive for botnets."
msgstr "Faites payer chaque tentative de connexion en temps CPU : invisible pour les humains, coûteux pour les botnets."

msgid "Make every login attempt cost the sender CPU time: invisible to humans, expensive for botnets."
msgstr "Faites payer à l’expéditeur chaque tentative de connexion en temps CPU : invisible pour les humains, coûteux pour les botnets."

msgid "Maximum cost for attackers. May take a second or two on older devices."
msgstr "Coût maximal pour les attaquants. Peut prendre une seconde ou deux sur les appareils anciens."

msgid "Monitoring submissions without a valid proof, not blocking yet. Review, then enforce."
msgstr "Surveillance des soumissions sans preuve valide, sans blocage pour l’instant. Vérifiez, puis passez en blocage."

msgid "No login submission without a valid proof in the current 7-day window."
msgstr "Aucune soumission de connexion sans preuve valide sur la fenêtre de 7 jours en cours."

msgid "Nothing to do for bots: the challenge is doing its job. If a real user reports being blocked, check that their browser runs JavaScript, or temporarily switch the bot challenge back to monitor mode."
msgstr "Rien à faire pour les bots : le défi fait son travail. Si un utilisateur réel signale un blocage, vérifiez que son navigateur exécute JavaScript, ou repassez temporairement le défi anti-bot en mode surveillance."

msgid "Proof-of-work"
msgstr "Preuve de calcul"

msgid "Rejects logins without a valid proof, even with correct credentials. Requires JavaScript on the login page."
msgstr "Rejette les connexions sans preuve valide, même avec des identifiants corrects. Nécessite JavaScript sur la page de connexion."

msgid "Start in Monitor to confirm your real users pass the challenge. Switch to Enforce once the counter above stays at bot-only levels."
msgstr "Commencez en Surveillance pour confirmer que vos utilisateurs réels passent le défi. Passez en Blocage une fois que le compteur ci-dessus ne reflète plus que des bots."

msgid "Your browser could not complete the security check. Please make sure JavaScript is enabled, then try again."
msgstr "Votre navigateur n’a pas pu terminer la vérification de sécurité. Vérifiez que JavaScript est activé, puis réessayez."

msgid "counts submissions without a valid proof without blocking. Always start here."
msgstr "compte les soumissions sans preuve valide, sans blocage. Commencez toujours ici."

msgid "how much CPU each attempt costs the sender. Standard suits almost every site."
msgstr "la quantité de CPU que chaque tentative coûte à l’expéditeur. Standard convient à presque tous les sites."

msgid "login submissions without a valid proof in the current 7-day window."
msgstr "soumissions de connexion sans preuve valide sur la fenêtre de 7 jours en cours."

msgid "rejects logins without a valid proof, even with correct credentials. Requires JavaScript on the login page."
msgstr "rejette les connexions sans preuve valide, même avec des identifiants corrects. Nécessite JavaScript sur la page de connexion."

msgid "the browser silently solves a small cryptographic puzzle before the login form is accepted. An invisible CAPTCHA with no external service."
msgstr "le navigateur résout silencieusement un petit défi cryptographique avant que le formulaire de connexion ne soit accepté. Un CAPTCHA invisible sans service externe."

msgid "REST API exceptions"
msgstr "Exceptions de l’API REST"

msgid "Some plugins need part of the REST API to stay public. List one namespace per line, exactly as it appears after /wp-json/, for example seopress/v1. Changes auto-save."
msgstr "Certaines extensions ont besoin qu’une partie de l’API REST reste publique. Indiquez un espace de noms par ligne, exactement tel qu’il apparaît après /wp-json/, par exemple seopress/v1. Les modifications sont enregistrées automatiquement."

msgid "namespace(s) kept public, on top of the built-in ones:"
msgstr "espace(s) de noms laissés publics, en plus de ceux intégrés :"

msgid "reopens WordPress core routes, including your content and your list of accounts, to anyone. That is exactly what this option prevents. Remove it unless you know one of your plugins needs it."
msgstr "rouvre les routes du cœur de WordPress, dont vos contenus et votre liste de comptes, à n’importe qui. C’est précisément ce que cette option empêche. Retirez-le, sauf si vous savez qu’une de vos extensions en a besoin."

#: admin/class-admin.php:715
msgid "Choose a settings file first."
msgstr "Choisissez d’abord un fichier de réglages."

#: admin/class-admin.php:716
#: admin/class-admin.php:3477
#: admin/class-admin.php:3489
msgid "This file is too large to be a Login Armor settings export."
msgstr "Ce fichier est trop volumineux pour être un export de réglages Login Armor."

#: admin/class-admin.php:717
msgid "Could not read the file."
msgstr "Impossible de lire le fichier."

#: admin/class-admin.php:718
msgid "Could not preview this file."
msgstr "Impossible de prévisualiser ce fichier."

#: admin/class-admin.php:719
msgid "Import failed. Nothing was changed."
msgstr "L’import a échoué. Rien n’a été modifié."

#: admin/class-admin.php:721
msgid "Exported from %1$s (Login Armor %2$s, %3$s)"
msgstr "Exporté depuis %1$s (Login Armor %2$s, %3$s)"

#: admin/class-admin.php:722
msgid "This site already matches the file: nothing to apply."
msgstr "Ce site correspond déjà au fichier : rien à appliquer."

#: admin/class-admin.php:724
msgid "%1$s setting(s) will change, %2$s already match."
msgstr "%1$s réglage(s) vont changer, %2$s correspondent déjà."

#: admin/class-admin.php:725
msgid "Module"
msgstr "Module"

#: admin/class-admin.php:726
msgid "Setting"
msgstr "Réglage"

#: admin/class-admin.php:727
msgid "On this site"
msgstr "Sur ce site"

#: admin/class-admin.php:728
msgid "In the file"
msgstr "Dans le fichier"

#: admin/class-admin.php:729
msgid "Errors (the file is refused as a whole):"
msgstr "Erreurs (le fichier est refusé dans son ensemble) :"

#: admin/class-admin.php:730
msgid "Please read before applying:"
msgstr "À lire avant d’appliquer :"

#: admin/class-admin.php:731
msgid "Ignored (unknown to this version):"
msgstr "Ignoré (inconnu de cette version) :"

#: admin/class-admin.php:733
msgid "The login URL will become: %s"
msgstr "L’URL de connexion deviendra : %s"

#: admin/class-admin.php:734
msgid "Apply the imported settings?"
msgstr "Appliquer les réglages importés ?"

#: admin/class-admin.php:736
msgid "%1$s setting(s) will change on this site. After the import the login URL will be %2$s. Write it down before confirming."
msgstr "%1$s réglage(s) vont changer sur ce site. Après l’import, l’URL de connexion sera %2$s. Notez-la avant de confirmer."

#: admin/class-admin.php:740
msgid "Settings imported: %1$s applied, %2$s unchanged."
msgstr "Réglages importés : %1$s appliqués, %2$s inchangés."

#: admin/class-admin.php:741
msgid "Could not apply:"
msgstr "Impossible d’appliquer :"

#: admin/class-admin.php:742
msgid "Your login URL is now:"
msgstr "Votre URL de connexion est désormais :"

#: admin/class-admin.php:743
msgid "Reload the page"
msgstr "Recharger la page"

#: admin/class-admin.php:3507
msgid "This file cannot be imported. Fix the errors below and try again; nothing was changed."
msgstr "Ce fichier ne peut pas être importé. Corrigez les erreurs ci-dessous et réessayez ; rien n’a été modifié."

#: admin/class-admin.php:3514
msgid "This file cannot be imported. Nothing was changed."
msgstr "Ce fichier ne peut pas être importé. Rien n’a été modifié."

#: admin/class-admin.php:3574
msgid "off"
msgstr "désactivé"

#: admin/class-admin.php:3574
msgid "on"
msgstr "activé"

#: admin/class-admin.php:3578
#: admin/class-admin.php:3587
msgid "(empty)"
msgstr "(vide)"

#: admin/views/sections/settings-transfer.php:22
msgid "Export settings"
msgstr "Exporter les réglages"

#: admin/views/sections/settings-transfer.php:24
msgid "Download every setting as a JSON file and replay it on your other sites. The file contains your login slug and your allowlisted IPs: keep it private. Webhook signing secrets and users’ two-factor enrolments never leave this site."
msgstr "Téléchargez tous les réglages dans un fichier JSON et rejouez-le sur vos autres sites. Le fichier contient votre slug de connexion et vos IP autorisées : gardez-le privé. Les secrets de signature des webhooks et les enrôlements de double authentification des utilisateurs ne quittent jamais ce site."

#: admin/views/sections/settings-transfer.php:27
msgid "Include webhook URLs (Slack, Discord, SIEM). They carry an access token: only tick this for a file you will store safely."
msgstr "Inclure les URL de webhook (Slack, Discord, SIEM). Elles contiennent un jeton d’accès : ne cochez ceci que pour un fichier que vous conserverez en lieu sûr."

#: admin/views/sections/settings-transfer.php:31
msgid "Download settings (JSON)"
msgstr "Télécharger les réglages (JSON)"

#: admin/views/sections/settings-transfer.php:38
msgid "Import settings"
msgstr "Importer des réglages"

#: admin/views/sections/settings-transfer.php:40
msgid "Upload a file exported from another site. You see every change first; nothing is written until you confirm. One invalid value refuses the whole file, so a site is never half-configured."
msgstr "Téléversez un fichier exporté depuis un autre site. Vous voyez chaque changement avant toute écriture ; rien n’est enregistré tant que vous n’avez pas confirmé. Une seule valeur invalide refuse le fichier entier : un site n’est jamais configuré à moitié."

#: admin/views/sections/settings-transfer.php:45
msgid "Preview changes"
msgstr "Prévisualiser les changements"

#: admin/views/sections/settings-transfer.php:48
msgid "Apply these changes"
msgstr "Appliquer ces changements"

#: admin/views/sidebar/settings.php:141
msgid "Export / Import"
msgstr "Export / Import"

#: admin/views/sidebar/settings.php:142
msgid "Copy your setup to other sites: export a JSON file here, import it there with a preview first. Webhook URLs travel only if you tick the box; the signing secret and users’ two-factor enrolments never do. The same file works with WP-CLI: wp login-armor settings import file.json --dry-run."
msgstr "Copiez votre configuration sur d’autres sites : exportez un fichier JSON ici, importez-le là-bas avec un aperçu préalable. Les URL de webhook ne voyagent que si vous cochez la case ; le secret de signature et les enrôlements de double authentification des utilisateurs, jamais. Le même fichier fonctionne avec WP-CLI : wp login-armor settings import fichier.json --dry-run."

#: admin/views/tabs/activity.php:481
msgid "Settings imports"
msgstr "Imports de réglages"

#. translators: %d: size in KB
#: includes/Settings/Importer.php:56
msgid "File is larger than %d KB."
msgstr "Le fichier dépasse %d Ko."

#: includes/Settings/Importer.php:60
msgid "Not a valid Login Armor settings file (JSON object expected)."
msgstr "Fichier de réglages Login Armor invalide (objet JSON attendu)."

#: includes/Settings/Importer.php:63
msgid "Not a Login Armor settings file."
msgstr "Ce n’est pas un fichier de réglages Login Armor."

#: includes/Settings/Importer.php:67
msgid "The file does not declare a schema version."
msgstr "Le fichier ne déclare aucune version de schéma."

#. translators: 1: schema version in the file, 2: schema version this site reads
#: includes/Settings/Importer.php:70
msgid "This file was exported by a newer Login Armor (schema %1$d, this site reads %2$d). Update this site first."
msgstr "Ce fichier a été exporté par un Login Armor plus récent (schéma %1$d, ce site lit le schéma %2$d). Mettez d’abord ce site à jour."

#: includes/Settings/Importer.php:73
msgid "The file has no settings object."
msgstr "Le fichier ne contient pas d’objet de réglages."

#: includes/Settings/Importer.php:122
#: includes/Settings/Registry.php:402
msgid "expected an object"
msgstr "objet attendu"

#. translators: %d: number of errors
#: includes/Settings/Importer.php:238
msgid "The file has %d error(s); nothing was applied."
msgstr "Le fichier contient %d erreur(s) ; rien n’a été appliqué."

#: includes/Settings/Importer.php:401
msgid "The toggle is saved but its .htaccess rule could not be written: "
msgstr "Le réglage est enregistré mais sa règle .htaccess n’a pas pu être écrite : "

#: includes/Settings/Importer.php:401
msgid "see the admin notice"
msgstr "voir l’avis dans l’administration"

#: includes/Settings/Importer.php:465
msgid "for the email channel this must be an e-mail address (or empty for the admin address)"
msgstr "pour le canal e-mail, cette valeur doit être une adresse e-mail (ou vide pour l’adresse d’administration)"

#. translators: %s: channel name
#: includes/Settings/Importer.php:474
msgid "the %s channel needs a webhook URL (export with \"include webhook URLs\" or set it on this site first)"
msgstr "le canal %s a besoin d’une URL de webhook (exportez avec « inclure les URL de webhook » ou définissez-la d’abord sur ce site)"

#: includes/Settings/Importer.php:496
msgid "the activity webhook is enabled but has no URL (export with \"include webhook URLs\" or set it on this site first)"
msgstr "le webhook d’activité est activé mais n’a pas d’URL (exportez avec « inclure les URL de webhook » ou définissez-la d’abord sur ce site)"

#: includes/Settings/Importer.php:500
msgid "the signing secret is never transferred: this site will generate its own on first use; copy it to your SIEM from the Activity tab."
msgstr "le secret de signature n’est jamais transféré : ce site générera le sien au premier usage ; copiez-le dans votre SIEM depuis l’onglet Activité."

#: includes/Settings/Importer.php:523
msgid "Hide Login is enabled but no slug is set (neither in the file nor on this site)"
msgstr "Hide Login est activé mais aucun slug n’est défini (ni dans le fichier ni sur ce site)"

#: includes/Settings/Importer.php:534
msgid "select at least one two-factor method (totp, email, backup): users cannot verify their sign-in without one"
msgstr "sélectionnez au moins une méthode de double authentification (totp, email, backup) : sans elle, les utilisateurs ne peuvent pas valider leur connexion"

#: includes/Settings/Importer.php:548
msgid "roles unknown on this site were ignored: "
msgstr "rôles inconnus sur ce site, ignorés : "

#. translators: 1: user login, 2: grace days, 3: user login
#: includes/Settings/Importer.php:558
msgid "your own account (%1$s) has not enrolled in two-factor yet: you get a %2$d-day grace period, then sign-in is blocked until you enrol. Recovery: \"wp login-armor 2fa reset %3$s\" or the \"Restart 2FA grace\" action on the Users screen."
msgstr "votre propre compte (%1$s) n’a pas encore activé la double authentification : vous disposez d’un délai de grâce de %2$d jour(s), puis la connexion sera bloquée jusqu’à l’activation. Récupération : « wp login-armor 2fa reset %3$s » ou l’action « Relancer le délai 2FA » sur l’écran des comptes."

#. translators: 1: subnet, 2: IP address
#: includes/Settings/Importer.php:579
msgid "the blocked subnet %1$s contains your own address (%2$s): importing it would lock you out"
msgstr "le sous-réseau bloqué %1$s contient votre propre adresse (%2$s) : l’importer vous enfermerait dehors"

#: includes/Settings/Importer.php:581
msgid "these subnets will be blocked on this site: "
msgstr "ces sous-réseaux seront bloqués sur ce site : "

#: includes/Settings/Importer.php:589
msgid "these addresses will never be locked out on this site: "
msgstr "ces adresses ne seront jamais verrouillées sur ce site : "

#. translators: %s: IP method name
#: includes/Settings/Importer.php:597
msgid "%s is read from a proxy header but no trusted proxies are listed: lockouts stay paused until you add your proxy addresses"
msgstr "%s est lu dans un en-tête de proxy mais aucun proxy de confiance n’est listé : les verrouillages restent en pause tant que vous n’ajoutez pas les adresses de votre proxy"

#: includes/Settings/Importer.php:611
msgid "request firewall"
msgstr "pare-feu de requêtes"

#: includes/Settings/Importer.php:612
msgid "bot challenge"
msgstr "défi anti-robot"

#. translators: %s: module name
#: includes/Settings/Importer.php:622
msgid "the %s is being switched on by this import, so it starts in monitor mode; review its log on this site, then flip it to enforce"
msgstr "le %s est activé par cet import, il démarre donc en mode observation ; consultez son journal sur ce site, puis passez-le en blocage"

#: includes/Settings/Registry.php:387
msgid "expected a slug"
msgstr "slug attendu"

#: includes/Settings/Registry.php:397
msgid "expected a redirect type"
msgstr "type de redirection attendu"

#: includes/Settings/Registry.php:418
msgid "unknown setting type"
msgstr "type de réglage inconnu"

#: includes/Settings/Sanitizers.php:48
msgid "expected true or false"
msgstr "true ou false attendu"

#: includes/Settings/Sanitizers.php:56
msgid "expected an integer"
msgstr "entier attendu"

#. translators: 1: minimum, 2: maximum
#: includes/Settings/Sanitizers.php:60
msgid "expected an integer between %1$d and %2$d"
msgstr "entier attendu entre %1$d et %2$d"

#: includes/Settings/Sanitizers.php:75
#: includes/Settings/Sanitizers.php:89
msgid "expected one of: "
msgstr "valeur attendue parmi : "

#: includes/Settings/Sanitizers.php:99
msgid "expected text"
msgstr "texte attendu"

#: includes/Settings/Sanitizers.php:109
msgid "expected an e-mail address"
msgstr "adresse e-mail attendue"

#: includes/Settings/Sanitizers.php:116
msgid "expected a valid e-mail address"
msgstr "adresse e-mail valide attendue"

#: includes/Settings/Sanitizers.php:126
msgid "expected a URL"
msgstr "URL attendue"

#: includes/Settings/Sanitizers.php:130
msgid "a URL is required"
msgstr "une URL est requise"

#: includes/Settings/Sanitizers.php:133
msgid "URL must start with https://"
msgstr "l’URL doit commencer par https://"

#: includes/Settings/Sanitizers.php:137
msgid "expected a valid https:// URL"
msgstr "URL https:// valide attendue"

#: includes/Settings/Sanitizers.php:151
msgid "URL must not point to a private, reserved or unresolvable address"
msgstr "l’URL ne doit pas pointer vers une adresse privée, réservée ou non résolvable"

#: includes/Settings/Sanitizers.php:196
msgid "expected a list"
msgstr "liste attendue"

#: includes/Settings/Sanitizers.php:201
msgid "expected a list of strings"
msgstr "liste de chaînes attendue"
