{
  "serviceSettings": "Paramètres du service",
  "installedOk": "{{engine}} installé",
  "startedOk": "{{engine}} démarré",
  "installFirst": "Installer {{engine}} d’abord",
  "softwareMissing": "Le logiciel {{engine}} n’est pas installé",
  "serviceOverview": "Vue d’ensemble du service",
  "readonlyStatus": "État en lecture seule",
  "readonlyProbe": "Sonde en lecture seule",
  "systemChange": "Modifications système",
  "opened": "Activé",
  "notOpened": "Désactivé",
  "admin": "Administrateur",
  "client": "Client",
  "hasClient": "Oui",
  "noClient": "Non",
  "canProvision": "Peut créer des BDD",
  "dumpOk": "Dump terminé",
  "dumpFailed": "Échec du dump",
  "noDumpToImport": "Aucun fichier de dump à importer",
  "expiredTempUsersProcessed": "Utilisateurs temporaires expirés traités",
  "dumpFirstDb": "Dumper la première BDD",
  "importLatestDump": "Importer le dernier dump",
  "cleanupExpiredTempUsers": "Nettoyer les utilisateurs temporaires expirés",
  "adminerEntry": "Projet explorateur BD",
  "browserProjectTitle": "Créer un projet navigateur BDD",
  "browserTool": "Outil",
  "browserNameHint": "Crée un projet PHP ; le nom doit être unique",
  "browserNameTaken": "Le nom de projet existe déjà : {{name}}",
  "browserProjectCreated": "Projet navigateur BDD créé",
  "createBrowserProject": "Créer le projet et déployer",
  "downloadPhpMyAdmin": "Télécharger phpMyAdmin (nécessite modification système + réseau)",
  "createDatabase": "Créer une base de données",
  "installBannerHint": "Utilisez la bannière ci-dessus pour installer {{engine}}.",
  "exclusiveMariaHint": "Cet hôte exécute MariaDB. Utilisez la page MariaDB ou le basculement en un clic (type SWITCH).",
  "exclusiveMysqlHint": "Cet hôte exécute MySQL. Utilisez la page MySQL ou le basculement en un clic (type SWITCH).",
  "openMaria": "MariaDB",
  "openMysql": "MySQL",
  "openMariaService": "Service MariaDB",
  "openMysqlService": "Service MySQL",
  "startService": "Démarrer le service",
  "openServiceConsole": "Ouvrir la console du service",
  "opsResult": "Résultat ops",
  "tempPasswordOnce": "Mot de passe temporaire en lecture seule (affiché une seule fois) :",
  "tabDatabases": "Bases de données ({{count}})",
  "tabUsers": "Utilisateurs ({{count}})",
  "tabTemp": "Lecture seule temp. ({{count}})",
  "tabRemote": "Hôtes distants ({{count}})",
  "dbList": "Liste des bases de données",
  "charset": "Jeu de caractères",
  "noDatabasesYet": "Aucune base de données pour l'instant",
  "emptyDbInstallFirst": "Installez {{engine}} via la bannière, puis Créer une base de données",
  "emptyDbCannotProvision": "Impossible de créer des bases de données sur le serveur pour le moment",
  "emptyDbCreateHint": "Utilisez Créer une base de données, puis Appliquer",
  "emptyDbHostHasRows": "L'hôte possède déjà des bases de données qui ne figurent pas dans cette liste de plan de contrôle.",
  "registeredVsHostHint": "Enregistré dans le panneau / trouvé sur l’hôte",
  "registeredCount": "Inscrit",
  "hostCount": "Sur l'hôte",
  "registeredUsers": "Utilisateurs enregistrés",
  "registeredUsersHint": "Inscriptions au panel uniquement – ​​pas tous les comptes MySQL",
  "hostStillExists": "Toujours chez l'hôte",
  "expiresLabel": "Expire",
  "dumpNeedRegistered": "Enregistrez d’abord une base dans le panneau",
  "dumpFirstDbTitle": "Exporter la première base enregistrée",
  "importNeedRegistered": "Enregistrez d’abord une base dans le panneau",
  "importLatestNeedConfirm": "Confirmation requise — importe dans la base enregistrée",
  "hostHasUntracked": "{{count}} les bases de données hôtes ne sont pas enregistrées dans le panneau",
  "hostInventoryHint": "Le tableau contient uniquement des lignes du plan de contrôle. Les noms live proviennent de SHOW DATABASES.",
  "userList": "Utilisateurs",
  "userListDesc": "Accorder aux utilisateurs l'accès aux bases de données",
  "createUserBtn": "+ Créer un utilisateur",
  "noUsersYet": "Aucun utilisateur pour l'instant",
  "tempReadonlyUsers": "Utilisateurs temporaires en lecture seule",
  "tempReadonlyDesc": "Le plan de contrôle marque comme expiré après le TTL ;",
  "dbName": "Nom de la base de données",
  "ttlHours": "TTL (heures)",
  "ttlHoursHint": "Marqué invalide après expiration",
  "createReadonlyUser": "Créer un utilisateur en lecture seule",
  "tempUserCreated": "Utilisateur temporaire en lecture seule créé",
  "expiresAt": "Expire",
  "revokeRegistration": "Révoquer l'enregistrement",
  "remoteDbHosts": "Hôtes de bases de données distants",
  "remoteDbHostsDesc": "Enregistrer les cibles de connexion (le mot de passe n'est pas renvoyé)",
  "remoteTest": "Tester la connexion",
  "remoteTestDone": "Sonde d'hôte distant terminée",
  "remoteTestOk": "accessible",
  "remoteTestFail": "inaccessible",
  "remoteNotChecked": "non testé",
  "remoteDeleteTitle": "Retirer uniquement cet enregistrement",
  "remoteDeleteConfirm": "Retirer l’enregistrement {{name}} ? Le serveur distant n’est pas modifié.",
  "displayName": "Nom d'affichage",
  "prodReplicaPlaceholder": "Réplica de production",
  "remoteHostSaved": "Hôte distant enregistré",
  "createDbTitle": "Créer une base de données {{engine}}",
  "createDbDesc": "Après l'enregistrement du plan de contrôle, Appliquer pour écrire sur le serveur",
  "dbNameHint": "Alphanumériques minuscules et underscore ; appliquer au système après création",
  "alsoCreateUser": "Créer aussi un utilisateur",
  "alsoCreateUserDesc": "Créer un identifiant pouvant se connecter à cette base de données",
  "passwordMin8": "Au moins 8 caractères",
  "passwordMin8chars": "Au moins 8 caractères",
  "allowConnectHost": "Hôte autorisé",
  "allowConnectHostHint": "Souvent % (tous) ou localhost",
  "allowConnectHostHintShort": "Souvent % ou localhost",
  "createDbHint": "Écrit uniquement le plan de contrôle ; Appliquer exécute CREATE DATABASE sur le serveur.",
  "createUserTitle": "Créer un utilisateur {{engine}}",
  "createUserDesc": "Appliquer après création",
  "bindDatabase": "Lier une base de données",
  "bindDatabaseHint": "Facultatif ; accorder des privilèges sur cette BD",
  "noneOption": "— aucun —",
  "importDumpTitle": "Importer le dump ?",
  "importDumpDesc": "Importer {{dump}} dans {{db}}",
  "import": "Importer",
  "importOk": "Importation terminée",
  "importFailed": "Échec de l'importation",
  "deleteDbTitle": "Supprimer l'enregistrement de la base de données ?",
  "deleteDbDesc": "Supprime uniquement l'enregistrement du plan de contrôle ; ne fait pas de DROP de la base sur le serveur.",
  "deleteUserTitle": "Supprimer l'inscription de l'utilisateur ?",
  "deleteUserDesc": "Supprime uniquement l'enregistrement du plan de contrôle.",
  "adminerTitle": "Navigateur de base de données Adminer",
  "adminerDesc": "Télécharger Adminer + écrire la conf Nginx ; appliquer au système exécute nginx -t + reload",
  "adminerWritten": "Adminer écrit dans les fichiers de gestion",
  "adminerApplied": "Adminer appliqué",
  "writeOnly": "Écriture seule (écrit)",
  "applyToSystem": "Appliquer au système",
  "adminerRisk": "Adminer public est risqué — restreignez les IP sources ou ajoutez une authentification HTTP. Nécessite le socket PHP-FPM (par défaut php8.2).",
  "vhostName": "Nom de l'hôte virtuel",
  "vhostHint": "Pointez l'enregistrement DNS A vers cet hôte pour un accès externe",
  "downloadAdminer": "Télécharger Adminer PHP (nécessite YSK_EXECUTE + réseau sortant)",
  "downloadAdminerDesc": "Désactivé = utiliser uniquement le fichier déjà téléchargé",
  "adminerWriteHint": "Écriture seule = gestion écrite ;",
  "pgInstallBanner": "Installez d'abord PostgreSQL via la bannière",
  "pgEmptyCreateHint": "Après la création, Appliquer au système pour écrire sur le serveur",
  "pgNoDbs": "Aucune base de données PostgreSQL pour l'instant",
  "pgCreateTitle": "Créer une base de données PostgreSQL",
  "pgCreateDesc": "Inscription au plan de contrôle ; Appliquer au système exécute CREATE DATABASE",
  "pgAlsoCreateRole": "Créer aussi un rôle",
  "pgAlsoCreateRoleDesc": "Créer un rôle de connexion et accorder cette base de données",
  "roleName": "Nom du rôle",
  "roleHint": "Rôle PostgreSQL / utilisateur de connexion",
  "pgDeleteDbDesc": "Supprime l'enregistrement du plan de contrôle (ne fait pas de DROP automatique sauf si une application de révocation est exécutée).",
  "update": "Mettre à jour",
  "alsoCreateRole": "Créer aussi un rôle",
  "cluster": {
    "standaloneOtherEngines": "Ce moteur est autonome. D'autres moteurs ont des clusters : {{names}}.",
    "roleUnassigned": "Aucun rôle attribué",
    "title": "Grappe",
    "description": "Plan → écrire la gestion → appliquer → sonder → distribution aux pairs / flotte. Simulation par défaut.",
    "redirectedFromCluster": "Vous avez été redirigé ici depuis /cluster. Il s'agit de l'onglet du cluster de bases de données.",
    "notApplied": "Non appliqué",
    "plannedAt": "Créé {{when}}",
    "clearStalePlans": "Effacer les plans obsolètes",
    "clearStalePlansTitle": "Supprimer les clusters planifiés obsolètes ?",
    "clearStalePlansDesc": "Supprime {{n}} inscription(s) planifiée(s)/projet(s) datant de plus de 7 jours. Ne s'applique pas et ne pousse pas. La configuration du système n'est pas touchée.",
    "landingTitle": "Cluster de base de données",
    "landingDesc": "No database engine is installed on this host. Open an engine page to install, then return here.",
    "landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. /cluster does not open a MySQL tab when MySQL is missing.",
    "openEngine": "Ouvrir {{engine}}",
    "overviewPill": "Grappes {{n}}",
    "enginesInstalled": "Moteurs",
    "plannedCount": "Prévu",
    "overviewList": "Grappes ({{count}})",
    "overviewEmpty": "Aucune inscription de cluster pour l'instant.",
    "engine": "Moteur",
    "kind": "Gentil",
    "members": "Membres",
    "kindGalera": "Galera simple",
    "kindMysqlReplica": "MySQL primaire/réplica",
    "kindPgReplica": "Réplica en streaming PostgreSQL",
    "kindRedisReplica": "Redis primaire/réplica",
    "createGalera": "Créer un Galera simple",
    "createMysqlReplica": "Créer primaire/réplica",
    "createPgReplica": "Créer une réplica en streaming",
    "createSentinel": "Créer Sentinel",
    "createRedisReplica": "Créer une réplica Redis",
    "needRealIps": "Saisissez les IP/noms d'hôte locaux et pairs réels",
    "hostInvalid": "Entrez un IPv4, IPv6 ou un nom d'hôte valide.",
    "statusNote": "État : {{status}} (succès du plan ≠ santé du cluster)",
    "artifactNote": "Artefacts : {{dir}}",
    "planGenerated": "Plan généré (simulation)",
    "planUpdated": "Plan mis à jour",
    "manageWritten": "Fichiers de gestion écrits (simulation)",
    "bootstrapTried": "Amorçage tenté",
    "applyTried": "Application de la conf système tentée",
    "localOk": "OK local",
    "localProbeFail": "Sonde locale échouée",
    "probedWithPeers": "Sondé (y compris les pairs)",
    "probedLocal": "Sondé local",
    "peerTarNote": "Paquet pair téléchargé (.tar.gz) — extraire et installer la conf sur le pair",
    "downloaded": "Téléchargé",
    "peerPushed": "Poussé vers le pair",
    "pushPlanGenerated": "Plan de push généré",
    "registrationDeleted": "Enregistrement supprimé",
    "nodes": "Nœuds",
    "remoteInstallPlan": "Plan d'installation distante",
    "fleetSession": "Identifiant de session de l'agent de flotte",
    "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
    "fleetSessionPh": "UUID de la session de la page Agents",
    "fleetSessionNone": "Aucun — utilisez SSH",
    "fleetSessionOpenAgents": "Ouvrir /agents pour enregistrer une session",
    "createWizardTitle": "Ouvre l'assistant de plan. Nécessite une adresse IP locale et ≥1 homologue. Écrit uniquement les artefacts du panneau (essai à sec). Ne redémarre pas le moteur jusqu'à ce que vous l'appliquiez.",
    "bootstrap": "Amorçage",
    "fleetApply": "Flotte postuler",
    "planTitle": "Régénérer le plan de cluster (pas de changement d'hôte)",
    "writeFileTitle": "Écrire les fichiers de gestion sous le répertoire de données du panneau (essai à sec)",
    "probeLocalTitle": "Sonder cet hôte uniquement",
    "probeAllTitle": "Sondez chaque membre enregistré",
    "bootstrapTitle": "Installez le drop-in local et amorcez le premier nœud",
    "remoteInstallPlanTitle": "Aperçu de l'installation à distance (pas d'exécution)",
    "downloadBundleTitle": "Téléchargez le bundle de configuration entre pairs (.tar.gz)",
    "pushPlanTitle": "Aperçu push to peer (pas de scp)",
    "fleetSyncPlanTitle": "Aperçu de la synchronisation de la flotte (pas d'exécution)",
    "fleetApplyTitle": "La mise en file d'attente s'applique-t-elle aux membres de la flotte ?",
    "status": {
      "healthy": "En bonne santé",
      "planned": "Prévu",
      "partial": "Partiel",
      "failed": "Échoué",
      "draft": "Brouillon",
      "degraded": "Dégradé",
      "applied": "Appliqué"
    },
    "fleetSyncPlan": "Plan de sync de flotte",
    "standaloneTitle": "Actuellement : autonome",
    "standaloneRepl": "Aucun réplica enregistré. Définir primary/master + réplica pour générer la conf et les scripts.",
    "standaloneHa": "Aucun HA enregistré. Ajouter des nœuds pairs pour générer le plan de conf, puis bootstrap / join.",
    "recentProbe": "Sonde récente (wsrep local)",
    "probeRequired": "healthy exige une sonde réussie",
    "planPreview": "Aperçu du plan",
    "planPreviewDesc": "dry-run · succès signifie uniquement que les étapes/conf ont été générées",
    "files": "Fichiers",
    "systemChangeNeed": "Requis à l'application",
    "planModalDesc": "Choisir les nœuds → générer le plan (ne modifie pas les systèmes pairs)",
    "generatePlan": "Générer le plan",
    "clusterName": "Nom du cluster",
    "localIp": "IP / hôte local",
    "primaryIpHint": "Hôte du plan de contrôle (primary/master + access=local)",
    "localIpHint": "Hôte du plan de contrôle (access=local)",
    "ipExample1": "ex. 10.0.0.1",
    "ipExample2": "ex. 10.0.0.2",
    "ipExample3": "ex. 10.0.0.3",
    "replicaIp": "IP / hôte du réplica",
    "peerIp": "IP / hôte du pair",
    "replicaHint": "Nœud réplica",
    "peerHint": "Deuxième nœud (Galera préfère 3)",
    "thirdNode": "3e nœud (optionnel)",
    "thirdNodeHint": "Recommandé pour Galera / multi-réplica",
    "sstMethod": "Méthode SST",
    "forbidDemoIp": "Pas d'IP de démo (203.0.113.x).",
    "fwGalera": "Ouvrir en interne 3306 / 4567 / 4444 / 4568.",
    "fwPg": "Le streaming nécessite 5432 en interne ; changer les mots de passe CHANGE_ME dans les scripts.",
    "fwRedis": "Redis interne 6379 (sentinel 26379).",
    "fwRepl": "Les réplicas doivent avoir les ports internes correspondants ; changer les mots de passe CHANGE_ME.",
    "needExecuteRoot": "L'application de la conf système nécessite YSK_EXECUTE=1 + root.",
    "topology": "Topologie : {{kind}}",
    "applyLocalTitle": "Appliquer la conf système locale ?",
    "applyBootstrapDesc": "Installe le drop-in Galera et le bootstrap (galera_new_cluster)",
    "applyJoinDesc": "Installe le drop-in Galera et systemctl restart mariadb",
    "confirmApply": "Confirmer l'application",
    "deleteClusterTitle": "Supprimer l'enregistrement du cluster ?",
    "remoteInstallTitle": "Installer à distance sur le pair ?",
    "pushTitle": "Pousser vers le pair ?",
    "fleetSyncTitle": "Sync de flotte ?",
    "confirmOp": "Confirmer",
    "deleteClusterDesc": "La conf système n'est pas effacée automatiquement (v1).",
    "remoteInstallDesc": "Installer la conf + redémarrer sur le pair. Nécessite YSK_EXECUTE + SSH.",
    "pushDesc": "scp des fichiers vers le pair /tmp ?",
    "fleetSyncDesc": "Synchroniser l'instantané du cluster vers le edge de la flotte, puis appliquer.",
    "fleetApplyDesc": "Mettre en file l'application vers les membres de la flotte.",
    "remoteInstalled": "Installé à distance",
    "fleetSynced": "Sync de flotte mise en file",
    "fleetApplyQueued": "Application flotte mise en file d'attente",
    "engineNotInstalled": "{{engine}} n'est pas installé sur cet hôte — installez-le d'abord ou ouvrez le moteur qui est réellement en cours d'exécution.",
    "plan": "Plan",
    "writeFile": "Écrire les fichiers",
    "applyLocal": "Appliquer en local",
    "probeAll": "Sonder tous les nœuds",
    "remoteInstall": "Installation distante",
    "downloadBundle": "Télécharger le bundle",
    "pushPlan": "Pousser le plan",
    "pushExecute": "Pousser l'exécution",
    "fleetSync": "Synchronisation de flotte",
    "localConfPreview": "Aperçu conf locale",
    "refresh": "Actualiser",
    "close": "Fermer",
    "cancel": "Annuler",
    "delete": "Supprimer",
    "probe": "Sonder",
    "name": "Nom",
    "type": "Taper"
  },
  "console": {
    "dataBrowse": "Parcourir les données",
    "dbManage": "Admin base de données",
    "realtime": "En direct",
    "reload": "Recharger",
    "needRestart": "Redémarrage requis",
    "affectsProjects": "Les sites et services qui utilisent ce moteur seront interrompus.",
    "lifecycle": "Cycle de vie",
    "overview": "Vue d'ensemble",
    "actionDone": "{{action}} terminé",
    "installDone": "Installation terminée",
    "noChanges": "Rien à appliquer",
    "settingsApplied": "Paramètres appliqués",
    "notReadFromService": "Non lu depuis le service",
    "applyMode": "Mode d'application : {{mode}}",
    "dirtyNotApplied": "Modifié, non appliqué",
    "highRisk": "Paramètres à haut risque",
    "engine": "Moteur",
    "bootEnabled": "Démarrer au démarrage",
    "uptimeSec": "Temps de disponibilité (s)",
    "currentConnections": "Connexions",
    "changes": "Modifications",
    "serviceTitle": "Service {{title}}",
    "softwareMissing": "Le logiciel {{title}} n'est pas installé",
    "overviewDesc": "Infos en lecture seule issues du probe (pas des champs de formulaire)",
    "lifecycleDesc": "Installer, démarrer, arrêter et activer au démarrage",
    "about": "À propos",
    "cluster": "Grappe",
    "noSettings": "Aucun paramètre dans cette catégorie (ou non pris en charge dans cette version)",
    "applyHint": "Live peut être modifié en ligne ;",
    "applyCategory": "Appliquer la catégorie",
    "applyAll": "Appliquer toutes les modifications",
    "applyCatCount": "Appliquer la catégorie ({{n}})",
    "applyAllCount": "Tout appliquer ({{n}})",
    "lifecycleNote": "Dans Paramètres, les changements Live s'appliquent en ligne ; un redémarrage requis nécessite un redémarrage Lifecycle après application.",
    "installEngine": "Utilisez la bannière ci-dessus pour installer {{title}}.",
    "reloadConfig": "Recharger la conf",
    "disableBoot": "Désactiver au démarrage",
    "disableBootConfirm": "Le moteur ne démarrera pas après le redémarrage tant que vous ne l'aurez pas réactivé.",
    "needRights": "Nécessite des droits de modification système et admin. Les échecs affichent les raisons — jamais de faux succès.",
    "noneFetched": "— aucun —"
  },
  "importEntry": "Entrée : {{url}}",
  "adminerRiskFull": "Adminer public est risqué — restreignez les IP sources ou ajoutez une authentification HTTP. Nécessite le socket PHP-FPM (par défaut php8.2).",
  "adminerWriteHintFull": "Écriture seule = gestion écrite ;",
  "pgInstalled": "PostgreSQL installé",
  "pgStarted": "PostgreSQL démarré",
  "notInstalledShort": "Non installé",
  "serviceConsole": "Console de service",
  "installPgFirst": "Installez d'abord PostgreSQL",
  "pgSoftwareMissing": "Le logiciel PostgreSQL n'est pas installé",
  "installPgBanner": "Utilisez la bannière ci-dessus pour installer PostgreSQL.",
  "createPlus": "+ Créer",
  "dbNameHintPg": "Minuscules alphanumériques et underscore ; appliquer après la création",
  "deleteNotePg": "La suppression de l'enregistrement ne DROP pas la BD du serveur ; un apply réussi signifie que le DDL a été exécuté sur l'hôte.",
  "tabDatabasesSimple": "Bases de données ({{count}})",
  "frozenTitle": "Le service de base de données nécessite une réparation",
  "frozenBody": "Problèmes détectés (mode freeze : {{mode}} ;",
  "unfreezeBtn": "Diagnostiquer et réparer",
  "unfreezeConfirmTitle": "Réparer {{engine}} ?",
  "unfreezeConfirmDesc": "Exécute un plan de réparation générique issu des diagnostics (arrêt, levée du freeze, assainissement de la config, init emp",
  "unfreezeConfirmBtn": "Confirmer la réparation",
  "unfreezeOk": "Réparation de {{engine}} terminée",
  "startAfterUnfreeze": "Démarrer le service (exécute automatiquement le plan de réparation en cas d'échec)",
  "serviceDownTitle": "Le service de base de données est arrêté",
  "serviceDownBody": "Le service est en mauvais état",
  "adoptHostDb": "S'inscrire {{name}}",
  "adoptHostDbTitle": "N’enregistre que le nom dans le plan de contrôle ; n’altère pas les données hôte.",
  "cleanupExpiredTempUsersTitle": "Supprime les utilisateurs temporaires du panneau déjà expirés",
  "invalidSqlIdent": "Utilisez un identifiant minuscule : commencez par une lettre, puis des lettres, des chiffres ou un trait de soulignement.",
  "remoteHostRequired": "Entrez un hôte distant.",
  "remoteTestUnsaved": "Enregistrez d'abord cet hôte, puis testez la connexion. Ou remplissez l'hôte et enregistrez.",
  "serverNotInstalled": "Ce moteur n'est pas installé sur le serveur.",
  "dumpNeedEngine": "Installez le moteur avant d'exporter une base de données.",
  "unboundDatabase": "Enregistrement de la base de données supprimé",
  "userGoneRefresh": "Cet utilisateur est parti. La liste a été rafraîchie."
}
