{
  "templates": {
    "minimal": "Minimal — apex A uniquement",
    "web": "Web — sommet + www",
    "mail": "Courrier – sommet + courrier + MX + SPF",
    "full": "Complet — web + mail + ftp + SPF",
    "cdn": "CDN — apex + www + cdn (prêt multi-edge)"
  },
  "dnssecOk": "Clés DNSSEC générées (écrites — zone non signée / pas chez le registrar)",
  "dnssecNotOk": "Clés DNSSEC non générées (notes uniquement ou outils indisponibles — pas de faux succès)",
  "dnssecFailed": "Échec DNSSEC",
  "blocked": "Bloqué (permission system-change requise)",
  "clusterDone": "Terminé ({{status}})",
  "clusterPartial": "Pas entièrement réussi ({{status}}) — voir les détails ci-dessous",
  "clusterFailed": "Échec de l'opération cluster",
  "validateFailed": "Échec de la validation de l'enregistrement",
  "validateRequestFailed": "Échec de la requête de validation",
  "lookupFailed": "Échec de la recherche",
  "statRecords": "Enregistrements",
  "statSelected": "Sélectionné",
  "notInstalled": "Le logiciel DNS requis n'est pas installé",
  "dsForRegistrar": "DS (pour le registrar ; non publié automatiquement) :",
  "tabs": {
    "zones": "Zones",
    "records": "Enregistrements",
    "cluster": "Grappe",
    "dnssec": "DNSSEC",
    "tools": "Outils",
    "ddns": "DDNS",
    "about": "À propos"
  },
  "recentWrite": "Résultat d'écriture récent",
  "zonesTitle": "Zones ({{count}})",
  "zonesDesc": "Après la création, écrire/appliquer la zone",
  "createZone": "+ Créer une zone",
  "mailZonesMissing": "Les domaines de messagerie n'ont pas de zone DNS ici : {{domains}}.",
  "createMailZone": "Créer une zone de messagerie",
  "colZoneName": "Nom de zone",
  "colServerIp": "IP du serveur",
  "colTemplate": "Modèle",
  "colStatus": "Statut",
  "emptyZonesTitle": "Aucune zone DNS pour l'instant",
  "emptyZonesDesc": "Utilisez « Créer une zone » dans la barre d'outils de la liste",
  "applyZoneTitle": "Écrire le fichier de zone et l'enregistrer dans named.conf de PowerDNS + redécouvrir (write ≠ réponses dig)",
  "applyZone": "Écrire / appliquer",
  "recordsFor": "Enregistrements — {{zone}}",
  "recordsNeedSelect": "Enregistrements (sélectionnez d'abord une zone)",
  "statusLabel": "Statut",
  "addRecord": "+ Ajouter un enregistrement",
  "writeZoneFile": "Écrire et charger la zone",
  "healthLoaded": "Chargé",
  "stateLoaded": "Chargé",
  "healthPublicNs": "NS publics",
  "statePublicNs": "NS publics",
  "publicNsHere": "→ cet hôte",
  "requestLeTitle": "Demander Let’s Encrypt pour {{zone}}",
  "requestZoneSsl": "Demander un SSL pour la zone",
  "soaTitle": "SOA / TTL par défaut",
  "soaDesc": "Serveur de noms SOA et $TTL lors de l’écriture du fichier de zone ;",
  "soaBlockNs": "Serveurs de noms",
  "soaBlockTiming": "TTL et minuteries",
  "recordsListTitle": "Enregistrements DNS ({{count}})",
  "recordsListDesc": "Après modification, utilisez « Écrire le fichier de zone » ci-dessus pour mettre à jour le fichier sur disque de named.",
  "soaNsLabel": "Serveur de noms SOA",
  "soaNsHint": "Laisser vide → ns1.zone par défaut.",
  "defaultTtl": "TTL par défaut (secondes)",
  "min1": "1 minute",
  "min5": "5 minutes",
  "min10": "10 minutes",
  "hour1": "1 heure",
  "day1": "1 jour",
  "customSeconds": "Secondes personnalisées",
  "soaSaved": "SOA enregistré (plan de contrôle) — « Écrire le fichier de zone » pour appliquer",
  "soaSaveFailed": "Échec de l’enregistrement du SOA",
  "soaSavedAndWritten": "Enregistré et fichier de zone écrit",
  "soaWriteFailed": "Échec de l’écriture du SOA",
  "failed": "Échoué",
  "colType": "Taper",
  "colName": "Nom",
  "colValue": "Valeur",
  "emptyRecords": "Aucun enregistrement",
  "noZoneSelectedTitle": "Aucune zone sélectionnée",
  "noZoneSelectedDesc": "Choisissez une zone dans l’onglet Zones",
  "clusterTitle": "Cluster DNS",
  "clusterDesc": "Après SCP des fichiers de zone, rechargement distant (rndc / named / bind9 / pdns)",
  "peerHost": "Hôte pair",
  "peerHostHint": "Nom d’hôte ou IP du NS secondaire (connexion par clé SSH)",
  "sshUser": "Utilisateur SSH",
  "sshUserHint": "Nécessite l’écriture sur le chemin cible et la permission de rechargement",
  "labelOptional": "Libellé (facultatif)",
  "labelPlaceholder": "ex. ns2 / hkg-edge-dns",
  "opPerPeer": "Cette opération (par pair)",
  "registeredPeers": "Pairs enregistrés ({{count}})",
  "lastProbeHint": "lastProbe se met à jour après un probe ou un push",
  "noPeers": "Aucun pair enregistré pour l’instant",
  "zoneDirMissing": "· répertoire de zone manquant",
  "generateKeys": "Générer les clés ; ne passe pas en production automatiquement",
  "selectZoneFirst": "Sélectionnez d’abord une zone",
  "lookupTitle": "Recherche DNS (dig)",
  "lookupDesc": "Interroge les résolveurs publics ; vérifie multi-A / CDN. N’invente pas de réponses.",
  "lookupNamePlaceholder": "ex. example.com ou www.example.com",
  "lookupType": "Type de requête",
  "lookupResults": "Résultats ({{count}})",
  "lookupNoAnswerFail": "Aucune réponse / échec",
  "digNotInstalled": "dig n'est pas installé",
  "digNotInstalledHint": "Cet onglet nécessite le binaire dig (bind9-dnsutils). Ce n'est pas NXDOMAIN. Installez bind9-dnsutils à partir du gestionnaire de packages hôte ; cette page ne l'installe pas automatiquement.",
  "method": "Méthode : {{method}}",
  "noAnswers": "Aucune réponse",
  "noAnswersDesc": "NXDOMAIN, RRset vide ou échec de résolution",
  "lookupOkHint": "Résultats de requête en direct",
  "lookupFailHint": "Recherche échouée ou vide. Vérifiez le nom, le type et les résolveurs amont.",
  "validateTitle": "Validation d'enregistrement",
  "validateDesc": "La création/modification valide automatiquement (conflits CNAME, format A/AAAA, etc.).",
  "createZoneTitle": "Créer une zone DNS",
  "createZoneDesc": "Générer des enregistrements à partir d'un modèle",
  "createZoneNeedValid": "Entrez un nom de zone et une adresse IPv4 valides",
  "zoneNameHint": "ex. example.com (sans point final)",
  "invalidZone": "Nom de zone invalide. Utilisez un vrai domaine (par exemple exemple.com).",
  "invalidIpv4": "IPv4 invalide. Chaque octet doit être compris entre 0 et 255.",
  "serverIpv4": "IPv4 du serveur",
  "serverIpv4Hint": "Adresse utilisée pour les enregistrements A du modèle",
  "thisHostIpv4": "IPv4 public de cet hôte",
  "serverIpv6Optional": "IPv6 du serveur (facultatif)",
  "serverIpv6Hint": "Écrit AAAA si une IPv6 publique existe ; peut rester vide",
  "thisHostIpv6": "IPv6 publique de cet hôte (facultatif)",
  "soaNsCreateHint": "Laisser vide pour ns1.zone-name",
  "defaultTtlLabel": "TTL par défaut",
  "defaultTtlHint": "Par défaut pour le SOA et les nouveaux enregistrements",
  "recordTemplate": "Modèle d'enregistrement",
  "editRecord": "Modifier l'enregistrement",
  "addRecordTitle": "Ajouter un enregistrement",
  "recordModalDesc": "Zone {{zone}} · écrire le fichier de zone après enregistrement",
  "recordType": "Type d'enregistrement DNS",
  "nameHint": "@ = apex ; www = sous-domaine",
  "mxPlaceholder": "ex. 10 mail.example.com.",
  "spfPlaceholder": "ex. v=spf1 a mx ip4:… ip6:… ~all",
  "needIpv6": "Saisissez une adresse IPv6",
  "needIpv4": "Saisissez une adresse IPv4",
  "valueHint": "IP, nom d'hôte ou contenu d'enregistrement",
  "ipv6Address": "Adresse IPv6",
  "ipv4Address": "Adresse IPv4",
  "cacheTime": "Durée de cache",
  "deleteZoneTitle": "Supprimer la zone ?",
  "deleteZoneDesc": "Supprime également ses enregistrements DNS.",
  "deleteRecordTitle": "Supprimer l'enregistrement ?",
  "deleteRecordDesc": "Écrire le fichier de zone après suppression",
  "addPeer": "Ajouter un pair",
  "probe": "Sonder",
  "pushZones": "Pousser les zones",
  "reloadRemote": "Rechargement distant",
  "generateDnssec": "Générer les clés DNSSEC",
  "lookup": "Recherche",
  "saveSoa": "Enregistrer le SOA",
  "saveSoaAndWrite": "Enregistrer et écrire le fichier de zone",
  "saveSoaSettings": "Enregistrer les paramètres SOA",
  "saveSoaAndWriteBtn": "Enregistrer et écrire le fichier de zone",
  "goToZones": "Aller aux zones",
  "refresh": "Actualiser",
  "pushReload": "Pousser + recharger",
  "pushOnly": "Pousser uniquement (sans rechargement)",
  "reloadOnly": "Rechargement distant uniquement",
  "probePeers": "Sonder les pairs",
  "clusterDefaultHint": "Par défaut : pousser puis recharger le DNS sur les pairs ; nécessite les droits de modification système.",
  "notProbed": "Pas encore sondé",
  "probeHealthy": "Sonde : {{status}}",
  "pushReloadShort": "Pousser+recharger",
  "dnssecCardDesc": "Générer les clés/DS ;",
  "currentZone": "Zone actuelle :",
  "generateAndSign": "Générer les clés et tenter de signer la zone",
  "lookupName": "Nom",
  "fillCurrentZone": "Remplir la zone actuelle",
  "lookupToolHint": "Préfère dig de l'hôte ;",
  "validateExtra": "Les erreurs bloquent l'enregistrement ; les avertissements (p. ex. CNAME apex) notifient uniquement.",
  "createAfterHint": "Après création, vérifiez l'onglet Enregistrements et écrivez le fichier de zone sur le disque.",
  "valueLabel": "Valeur",
  "ttlHint": "Durée de cache",
  "soaSavedControl": "SOA enregistré (plan de contrôle) — écrire le fichier de zone pour appliquer",
  "soaNs2Label": "NS secondaire (optionnel)",
  "soaNs2Hint": "FQDN du second serveur de noms, p. ex. ns2.example.com.",
  "soaHostmaster": "Hostmaster SOA (RNAME)",
  "soaHostmasterHint": "Utilisez des points à la place de @, p. ex. hostmaster.example.com.",
  "soaRefresh": "Refresh (secondes)",
  "soaRetry": "Retry (secondes)",
  "soaExpire": "Expire (secondes)",
  "soaMinimum": "Minimum / TTL de cache négatif (secondes)",
  "soaTimingHint": "Paramètres de timing SOA en secondes.",
  "healthTitle": "Santé du service DNS",
  "healthDesc": "Vérité hôte : unit / port 53 / fichiers de zone écrits / réponses dig locales (écrit ≠ rechargé ≠",
  "healthPillOk": "DNS OK",
  "healthPillBad": "Problèmes DNS",
  "healthService": "Service",
  "healthServiceDown": "hors service",
  "healthListen": "Port 53",
  "healthWritten": "Fichiers de zone",
  "healthAnswering": "Réponse locale",
  "healthAnsweringYes": "Oui",
  "healthAnsweringNo": "non/refusé",
  "healthRefresh": "Re-sonder",
  "healthProbeLocal": "Sonder à nouveau l'état de santé",
  "healthOpen53": "Ouvrir le pare-feu 53 (TCP+UDP)",
  "healthOpened53": "Ouverture de 53 TCP+UDP demandée",
  "healthOpen53Failed": "Échec de l'ouverture du 53",
  "healthPortClosed": "n'écoute pas",
  "healthPortOpenAlready": "Le 53 semble ouvert",
  "healthHint": "Si dig est refusé, corrigez PowerDNS, ouvrez le port 53, puis écrivez les zones.",
  "stateService": "Service",
  "stateListen": "Écoute",
  "stateWritten": "Écrit",
  "stateAnswering": "Réponse locale active",
  "lookupServer": "Serveur (@)",
  "lookupServerHint": "127.0.0.1 = auth locale ; IP publique teste l'externe ; vide = résolveur système",
  "healthHealPdns": "Réparer le bind PowerDNS",
  "healNeedInstall": "PowerDNS n'est pas installé - installez-le d'abord dans l'onglet Logiciel",
  "applyNeedService": "Le service DNS n'est pas en cours d'exécution : démarrez-le ou installez-le avant de l'appliquer.",
  "goStartService": "Démarrer le service DNS",
  "startBindHint": "Si start revient à l'arrêt, le port 53 est souvent détenu par systemd-resolved. Utilisez Heal bind ci-dessous, puis recommencez.",
  "deleteZoneNeedName": "Supprimez cette zone — vous saisirez le nom de la zone pour confirmer",
  "healthHealPdnsHint": "Définir local-address sur l'IP publique pour éviter le conflit avec systemd-resolved sur 0",
  "healthHealPdnsOk": "PowerDNS lié à {{ip}} et démarrage tenté",
  "healthHealPdnsFailed": "Échec de la réparation PowerDNS",
  "startProbeFailed": "Impossible de revérifier l'état du DNS après le démarrage",
  "startNotListening": "Le démarrage PowerDNS est renvoyé, mais l'unité ne répond pas sur le port 53",
  "aboutTitle": "Essentiels DNS",
  "aboutSub": "Zones d'abord ; enregistrements, cluster et DNSSEC nécessitent un domaine sélectionné.",
  "aboutZonesTitle": "Zones et portée",
  "aboutZonesBody": "Choisissez une zone sous Zones, puis gérez les enregistrements, le cluster et DNSSEC pour ce domaine.",
  "aboutHealthTitle": "Santé des services",
  "aboutHealthBody": "Utilisez Outils pour sonder PowerDNS, réparer le bind et ouvrir le port 53.",
  "aboutStackTitle": "Logiciels",
  "aboutStackBody": "Vérifiez/mettez à jour le paquet PowerDNS sous Logiciels.",
  "aboutDdnsTitle": "DDNS",
  "aboutDdnsBody": "L'onglet DDNS met à jour les enregistrements nommés A/AAAA lorsque l'adresse WAN de cet hôte change. Elle ne remplace pas la zone CRUD. L'écrit n'est pas la même chose que la vérité publique du résolveur.",
  "ddns": {
    "honesty": "Une écriture réussie n'est pas encore un DNS public. Les caches de résolution et le registraire NS s'appliquent toujours. Les IP vides ou privées ne sont jamais publiées.",
    "needExecute": "Les mises à jour du fournisseur nécessitent root et YSK_EXECUTE=1. La détection fonctionne toujours.",
    "lastRun": "Dernière course",
    "nextRun": "Prochaine exécution",
    "wanRemembered": "Mémorisé WAN IPv4",
    "updateNow": "Mettre à jour maintenant",
    "updateTitle": "Publier les adresses WAN détectées ?",
    "updateDesc": "Calls Cloudflare, nsupdate, or the local zone for each enabled record. Type UPDATE to confirm.",
    "updated": "Mise à jour DDNS terminée",
    "updateFailed": "Échec de la mise à jour DDNS",
    "probe": "Sonder le réseau étendu",
    "probed": "Sonde WAN terminée",
    "probeFailedUi": "La sonde WAN a échoué",
    "forceHint": "La mise à jour republie désormais même lorsque l'adresse est inchangée. Probe n’appelle jamais un fournisseur.",
    "saved": "Enregistré",
    "saveFailed": "Impossible d'enregistrer",
    "deleted": "Enregistrement supprimé",
    "emptyTitle": "Aucun enregistrement DDNS",
    "emptyDesc": "Ajoutez un nom d'hôte ci-dessous. Cloudflare, RFC 2136 ou la zone PowerDNS de cet hôte (managedBy=ddns).",
    "colFqdn": "Nom d'hôte",
    "colProvider": "Fournisseur",
    "colPublished": "Publié",
    "colEnabled": "État",
    "colFrom": "Depuis",
    "colTo": "À",
    "colWhen": "Quand",
    "colNote": "Note",
    "pauseRecord": "Pause",
    "resumeRecord": "CV",
    "statusCard": "État du réseau étendu",
    "recordsCard": "Noms d'hôtes",
    "addCard": "Ajouter un nom d'hôte",
    "settingsCard": "Paramètres",
    "historyTitle": "Mises à jour récentes",
    "historyEmpty": "Pas d'historique DDNS pour l'instant",
    "paused": "Planificateur suspendu",
    "pausedHint": "Les mises à jour programmées sont désactivées. La sonde et la mise à jour sont toujours en cours d'exécution.",
    "schedulerOn": "Mises à jour programmées",
    "schedulerOnHint": "Planificateur en cours de processus. Pas crontab. Désactivé signifie pas d'insertion automatique.",
    "zone": "Zone",
    "zoneHint": "Leave empty to use the last two labels of the hostname",
    "zoneSelectHint": "Zones locales sur cet hôte. Cloudflare et RFC 2136 peuvent utiliser n'importe quel nom de zone.",
    "noLocalZones": "Aucune zone locale pour l'instant. Créez-en d'abord un dans l'onglet Zones si vous utilisez Local PowerDNS.",
    "providerLocal": "PowerDNS local",
    "proxied": "Cloudflare mandaté",
    "proxiedHint": "Nuage orange. Laissez de côté pour les noms d’hôtes VPN/WireGuard.",
    "proxiedWarnTitle": "Nuage orange Cloudflare ?",
    "proxiedWarnDesc": "Un enregistrement proxy masque l’adresse IP d’origine. Les noms d'hôte VPN et WireGuard doivent rester uniquement DNS. Tapez PROXY pour confirmer.",
    "addRecord": "Ajouter un nom d'hôte",
    "interval": "Intervalle (secondes)",
    "intervalHint": "60-86400. Planificateur en cours ; pas crontab.",
    "cfToken": "Jeton API Cloudflare",
    "cfTokenHint": "En écriture seule. Env CF_API_TOKEN est utilisé s'il est défini. Plus jamais montré.",
    "tokenConfigured": "Un jeton Cloudflare est stocké. Laissez vide pour le conserver.",
    "tokenMissing": "Aucun jeton Cloudflare stocké (env CF_API_TOKEN s'applique toujours).",
    "rfcServer": "Serveur RFC 2136",
    "rfcServerHint": "Les serveurs distants ont besoin d'un fichier de clé TSIG dans le répertoire de données. Le bouclage peut être non signé. Le secret n'est jamais transmis sur argv.",
    "rfcKeyFile": "Fichier de clé TSIG",
    "rfcKeyFileHint": "Par rapport au répertoire de données DDNS ou à un chemin absolu sous le répertoire de données.",
    "rfcKeyConfigured": "Un chemin de fichier clé est stocké. Laissez vide pour le conserver.",
    "primaryFqdn": "Nom d'hôte principal",
    "primaryFqdnHint": "Utilisé comme indice de point de terminaison VPN. Ne réécrit pas les pairs existants.",
    "updateIdentity": "N'oubliez pas le WAN IPv4",
    "updateIdentityHint": "Stocker la dernière IPv4 publique dans l'état DDNS pour cet hôte",
    "vpnHint": "Le point de terminaison VPN peut utiliser un nom d'hôte DDNS (non réécrit automatiquement).",
    "sslHint": "Let's Encrypt HTTP-01 a besoin du nom d'hôte pour être résolu ici. Les certificats ne sont pas réémis en cas de changement d'adresse IP.",
    "deleteTitle": "Supprimer le nom d'hôte DDNS ?",
    "deleteDesc": "Tapez {{fqdn}} pour confirmer. Les lignes locales gérées par = ddns ne sont pas supprimées de l'éditeur de zone.",
    "err": {
      "requiresExecute": "Nécessite root et YSK_EXECUTE=1 pour publier.",
      "missingToken": "Le jeton API Cloudflare est manquant.",
      "rfc2136NeedKey": "La RFC 2136 distante nécessite un fichier de clé TSIG dans le répertoire de données.",
      "rfc2136KeyMissing": "Le fichier de clé TSIG est manquant ou se trouve en dehors du répertoire de données.",
      "noPublicIpv4": "Aucune IPv4 publique détectée.",
      "noPublicIpv6": "Aucune IPv6 publique détectée.",
      "notPublicIpv4": "L'IPv4 détecté n'est pas public.",
      "notPublicIpv6": "L'IPv6 détecté n'est pas public.",
      "probeFailed": "La sonde IP publique a échoué.",
      "localNoZone": "Aucune zone DNS locale pour ce nom d'hôte.",
      "localNeedsDb": "Le fournisseur local a besoin de la base de données du plan de contrôle.",
      "managedByClash": "Ce nom appartient à une autre fonctionnalité (pas à DDNS).",
      "unknownProvider": "Fournisseur DDNS inconnu.",
      "nsupdateFailed": "nsupdate a échoué.",
      "updateFailed": "La mise à jour du fournisseur a échoué.",
      "invalidFqdn": "Nom d'hôte invalide.",
      "invalidType": "Le type doit être A ou AAAA.",
      "invalidProvider": "Fournisseur inconnu.",
      "notFound": "Enregistrement introuvable.",
      "confirmMismatch": "Confirmer doit correspondre au nom d'hôte.",
      "schedulerDisabled": "Le DDNS planifié est suspendu.",
      "provider": "Le fournisseur a renvoyé une erreur."
    }
  },
  "createMailZoneNow": "Zone de messagerie créée {{domain}}",
  "toolsFirewallTitle": "Pare-feu (UFW)",
  "toolsFirewallHint": "Autoriser ou refuser le port 53. N’arrête ni ne démarre PowerDNS.",
  "toolsUnitTitle": "Unité PowerDNS",
  "toolsUnitHint": "Unité systemd pdns — démarrer, arrêter, redémarrer, recharger.",
  "installConfirmTitle": "Installer PowerDNS ?",
  "installConfirmDesc": "Installe pdns-server et écrit la config gérée. Nécessite root et YSK_EXECUTE=1.",
  "installConfirmConsequence": "Après installation et démarrage, PowerDNS liera le port 53.",
  "installPort53Busy": "Le port 53 est déjà utilisé. PowerDNS peut échouer à se lier tant que cet écouteur n’est pas arrêté ou réparé.",
  "installPort53BusyConsequence": "Réparez la liaison ou arrêtez l’autre écouteur avant d’attendre des réponses sur 53."
}
