home-hosted 0.8.1 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ var e={"activity.emptyTitle":`Aucun événement depuis 24 heures`,"activity.emptyDescription":`Démarrages, arrêts, plantages et rétablissements apparaissent ici au fur et à mesure.`,"activity.ran":`a tourné {duration}`,"addServer.title":`Ajouter un serveur`,"addServer.description":`Ajoute une entrée au servers.config.json de {workspace} ; toute politique omise est héritée de ses valeurs par défaut.`,"addServer.thisWorkspace":`cet espace de travail`,"addServer.identity":`Identité`,"addServer.id":`Id`,"addServer.idHint":`Lettres minuscules, chiffres, tirets et traits de soulignement ; utilisé dans les URL et les journaux.`,"addServer.labelHint":`Affiché dans le panneau ; par défaut, l'id.`,"addServer.process":`Processus`,"addServer.commandHint":`Lancé sans shell.`,"addServer.argumentsHint":`Un argument par ligne ; les espaces à l'intérieur d'une ligne sont conservés.`,"addServer.portLifecycle":`Port et cycle de vie`,"addServer.bindHint":`lan l'expose au réseau ; à ne faire que derrière une authentification.`,"addServer.advanced":`Paramètres avancés`,"addServer.advancedHint":`environnement, sauvegardes, politique, cycle de vie, bootstrap`,"addServer.backups":`Sauvegardes`,"addServer.backupIgnore":`Ignorer les fichiers générés connus`,"addServer.bootstrapDescription":`Une commande ponctuelle exécutée avant le premier démarrage.`,"addServer.bootstrapHint":`Installations, migrations, téléchargements — avant le premier démarrage, pas à chaque fois.`,"addServer.policyResources":`Politique et ressources`,"addServer.logBufferHint":`Vide conserve la valeur par défaut.`,"addServer.inheritNote":`Redémarrage, santé et arrêt commencent comme dans {settings} ; si vous en modifiez un ici, il est écrit dans cette entrée au lieu de rester hérité.`,"addServer.serverDefaults":`Paramètres → Valeurs par défaut des serveurs`,"addServer.placeholdersTitle":`Espaces réservés disponibles pour les arguments`,"addServer.submit":`Ajouter à servers.config.json`,"app.name":`home-hosted`,"app.tagline":`Panneau de contrôle du superviseur de processus`,"bind.local":`local — 127.0.0.1`,"bind.lan":`lan — 0.0.0.0`,"bind.explicit":`{bind} — explicite`,"common.cancel":`Annuler`,"common.confirm":`Confirmer`,"common.reset":`Réinitialiser`,"common.keepIt":`Conserver`,"common.remove":`Retirer`,"common.close":`Fermer`,"common.save":`Enregistrer`,"common.saving":`Enregistrement…`,"common.discard":`Abandonner`,"common.delete":`Supprimer`,"common.edit":`Modifier`,"common.add":`Ajouter`,"common.retry":`Réessayer`,"common.copy":`Copier`,"common.copied":`Copié`,"common.enabled":`Activé`,"common.disabled":`Désactivé`,"common.none":`Aucun`,"common.unknown":`inconnu`,"common.loading":`Chargement…`,"common.selectAll":`Tout sélectionner`,"common.selectNone":`Ne rien sélectionner`,"common.name":`Nom`,"common.label":`Libellé`,"common.hostname":`Nom d'hôte`,"common.port":`Port`,"common.command":`Commande`,"common.environment":`Environnement`,"common.memory":`Mémoire`,"common.cpu":`CPU`,"common.disk":`Disque`,"common.uptime":`Durée de fonctionnement`,"common.status":`État`,"common.actions":`Actions`,"common.details":`Détails`,"common.overview":`Vue d'ensemble`,"common.warning":`Avertissement`,"common.error":`Erreur`,"common.confirmQuestion":`{label} ?`,"common.unset":`non défini`,"common.never":`jamais`,"common.now":`à l'instant`,"common.dismiss":`Ignorer`,"connection.live":`En direct`,"connection.connecting":`Connexion`,"connection.reconnecting":`Reconnexion`,"connection.liveUpdates":`Mises à jour en direct`,"editor.title":`Modifier la configuration`,"editor.description":`Écrit les remplacements dans {file} ; tout ce qui n'est pas touché continue d'hériter des valeurs par défaut.`,"editor.inSync":`synchronisé`,"editor.process":`Processus`,"editor.processDescription":`Ce qui est lancé, où, et avec quel environnement.`,"editor.labelPlaceholder":`revient à l'id si vide`,"editor.argumentsHint":`Un par ligne ; {port} {host} {home} {projectDir} {dataRoot} {id} {label} {cwd} {bind} {lanIp} sont substitués.`,"editor.portTitle":`Port et liaison`,"editor.portDescription":`Comment le port est précontrôlé et où le processus est joignable.`,"editor.bindHint":`Une IPv4 personnalisée déjà définie dans la configuration reste sélectionnable.`,"editor.lifecycle":`Cycle de vie`,"editor.lifecycleDescription":`Si le superviseur gère ou non cette entrée.`,"editor.save":`Enregistrer dans servers.config.json`,"editor.changesTitle":`Modifications non enregistrées`,"editor.changesDescription":`Ce qu'Enregistrer écrirait dans servers.config.json.`,"editor.nothingToSave":`Rien à enregistrer.`,"health.disabled":`Non vérifié`,"health.unknown":`Non sondé`,"health.healthy":`Sain`,"health.unhealthy":`En panne`,"history.start":`Démarré`,"history.exit":`Arrêté`,"history.crash":`Planté`,"history.forcedRestart":`Redémarrage forcé`,"history.unhealthy":`En panne`,"history.recovered":`Rétabli`,"host.loadPerCpu":`Charge / cpu`,"host.cpuTemp":`Temp. CPU`,"host.samplingOff":`L'échantillonnage de l'hôte est désactivé`,"host.samplingOffDescription":`Activez-le dans les paramètres pour collecter charge, mémoire, disque et température.`,"host.swap":`Swap`,"host.cpus":`CPU`,"host.loadAverage":`Charge 1 / 5 / 15`,"host.memoryUsed":`Mémoire utilisée`,"host.sampled":`Échantillonné`,"host.filesystems":`Systèmes de fichiers`,"host.thresholdsBreached":`Seuils dépassés`,"killPort.trigger":`Tuer ce qui occupe le port {port}`,"killPort.title":`Tuer le processus sur le port {port} ?`,"killPort.body":`On lui demande d'abord de s'arrêter, et il n'est tué que s'il l'ignore. Tout ce que ce panneau supervise est refusé : un serveur géré ne peut donc pas être perdu ainsi.`,"killPort.confirm":`Le tuer`,"language.label":`Langue`,"language.select":`Choisir une langue`,"lifecycle.restartTitle":`Politique de redémarrage`,"lifecycle.restartDescription":`Attente entre les tentatives après un plantage.`,"lifecycle.restartOnCrash":`Redémarrer après un plantage`,"lifecycle.maxRetries":`Tentatives max`,"lifecycle.maxRetriesHint":`Tentatives avant de laisser le serveur planté.`,"lifecycle.baseDelay":`Délai de base (ms)`,"lifecycle.factor":`Facteur d'attente`,"lifecycle.maxDelay":`Délai max (ms)`,"lifecycle.resetAfter":`Réinitialiser après (ms)`,"lifecycle.resetAfterHint":`Une exécution de cette durée remet le compteur de tentatives à zéro.`,"lifecycle.healthTitle":`Vérification de santé`,"lifecycle.healthDescription":`Comment la disponibilité est sondée une fois le processus lancé.`,"lifecycle.probe":`Sonder ce serveur`,"lifecycle.probeType":`Type de sonde`,"lifecycle.probePort":`Port TCP — connexion seulement`,"lifecycle.probeHttp":`Requête HTTP — vérifier une réponse`,"lifecycle.interval":`Intervalle (ms)`,"lifecycle.timeout":`Délai (ms)`,"lifecycle.unhealthyAfter":`En panne après`,"lifecycle.unhealthyAfterHint":`Sondes échouées consécutives.`,"lifecycle.forceRestartAfter":`Redémarrage forcé après (ms)`,"lifecycle.forceRestartAfterHint":`0 le désactive.`,"lifecycle.startTimeout":`Délai de démarrage (ms)`,"lifecycle.httpPath":`Chemin HTTP`,"lifecycle.httpMethod":`Méthode HTTP`,"lifecycle.expectStatus":`Statut attendu`,"lifecycle.expectStatusHint":`Vide accepte tout ce qui est en dessous.`,"lifecycle.expectStatusBelow":`Sain en dessous du statut`,"lifecycle.expectBody":`Le corps doit contenir`,"lifecycle.expectBodyPlaceholder":`sous-chaîne facultative`,"lifecycle.headBodyHint":`HEAD n'a pas de corps de réponse, donc cette vérification est ignorée — utilisez GET, ou videz-la.`,"lifecycle.stopTitle":`Comportement à l'arrêt`,"lifecycle.stopDescription":`Comment on demande à l'arbre de processus de partir.`,"lifecycle.signal":`Signal`,"lifecycle.signalTerm":`SIGTERM — lui demander de s'arrêter`,"lifecycle.signalInt":`SIGINT — interrompre (Ctrl-C)`,"lifecycle.signalKill":`SIGKILL — tuer immédiatement`,"lifecycle.grace":`Délai de grâce (ms)`,"lifecycle.killGroup":`Tuer tout le groupe de processus`,"lifecycle.killPortHolders":`Tuer aussi ce qui occupe le port`,"login.title":`Connectez-vous pour continuer`,"login.firstRunTitle":`Ce panneau n'a pas encore de mot de passe`,"login.firstRunSubtitle":`Tout ce qui tourne sur cette machine peut y accéder. Définissez un mot de passe dès votre entrée.`,"login.authOffTitle":`L'authentification est désactivée`,"login.authOffSubtitle":`Le panneau n'écoute que sur la boucle locale, seule protection pour l'instant.`,"login.subtitle":`Le panneau de contrôle est protégé. Saisissez le mot de passe pour continuer.`,"login.password":`Mot de passe`,"login.showPassword":`Afficher le mot de passe`,"login.hidePassword":`Masquer le mot de passe`,"login.signIn":`Se connecter`,"login.openDashboard":`Ouvrir le tableau de bord`,"login.exposed":`Exposé`,"login.defaultPasswordWarning":`Le mot de passe par défaut {password} est toujours en place. Changez-le dans les paramètres — l'écoute au-delà de 127.0.0.1 reste refusée tant que ce n'est pas fait.`,"login.noPasswordWarning":`Aucun mot de passe n'est défini. Ouvrez les paramètres depuis cette machine pour en ajouter un, ou lancez {command}.`,"login.sessionNote":`Les sessions restent connectées {days} jours après la dernière visite — chaque requête prolonge ce délai. La déconnexion ne nettoie que ce navigateur.`,"login.servedFromThisMachine":`servi depuis cette machine`,"logs.emptyHint":`Aucune sortie pour l'instant.`,"logs.noMatches":`Rien ne correspond à cette recherche ni à ce filtre de flux.`,"logs.searchPlaceholder":`Rechercher dans cette sortie`,"logs.searchLabel":`Rechercher dans la sortie du journal`,"logs.clearSearch":`Effacer la recherche`,"logs.prevMatch":`Correspondance précédente`,"logs.nextMatch":`Correspondance suivante`,"logs.showTimestamps":`Afficher les horodatages`,"logs.hideTimestamps":`Masquer les horodatages`,"logs.timestampsShort":`horod.`,"logs.pause":`Pause`,"logs.follow":`Suivre`,"logs.clearHint":`Vider le tampon en mémoire`,"logs.clearLabel":`Vider le tampon de journal`,"logs.downloadHint":`Télécharger le fichier conservé`,"logs.downloadLabel":`Télécharger le fichier de journal`,"logs.outputLabel":`Sortie du journal`,"logs.jumpToLatest":`Aller au plus récent`,"logs.streaming":`en direct`,"logs.paused":`en pause`,"logs.snapshot":`instantané`,"logs.linesOf":`{count} lignes sur {total}`,"logs.matches":`{count} correspondances`,"logs.rowHeight":`hauteur de ligne {height}px · virtualisée`,"logs.streamAll":`Tout`,"logs.streamOut":`sortie`,"logs.streamErr":`err`,"logs.streamSys":`sys`,"metric.emptyHint":`collecte…`,"nav.global":`Global`,"nav.workspace":`Espace de travail`,"nav.others":`Autres`,"nav.overview":`Vue d'ensemble`,"nav.servers":`Serveurs`,"nav.logs":`Journaux`,"nav.workspaceSettings":`Paramètres de l'espace de travail`,"nav.globalOverview":`Vue d'ensemble globale`,"nav.globalSettings":`Paramètres globaux`,"nav.reverseProxy":`Proxy inverse`,"nav.navigation":`Navigation`,"nav.closeNavigation":`Fermer la navigation`,"nav.hostVitals":`Santé de l'hôte`,"notice.configError":`La configuration est illisible : {error}`,"notice.configErrorHint":`Le panneau continue avec la configuration qu'il avait ; corrigez {path} et il se recharge tout seul.`,"notice.defaultPassword":`Ce panneau utilise encore son mot de passe par défaut.`,"notice.defaultPasswordHint":`Changez-le dans les paramètres globaux — l'écoute au-delà de 127.0.0.1 reste refusée tant que ce n'est pas fait.`,"notice.noPassword":`L'authentification est active mais aucun mot de passe n'est défini, donc rien n'est demandé.`,"notice.noPasswordHint":`Définissez-en un dans les paramètres globaux pour vraiment verrouiller le panneau.`,"notice.exposed":`Ce panneau est joignable au-delà de 127.0.0.1.`,"notice.exposedHint":`Gardez un mot de passe solide, ou placez devant un proxy qui termine le TLS.`,"notice.authOff":`L'authentification est désactivée — le panneau n'est protégé que par son écoute en boucle locale.`,"onPortConflict.block":`block — refuser de démarrer`,"onPortConflict.warn":`warn — démarrer quand même`,"onPortConflict.follow":`follow — adopter un redémarrage détaché de lui-même`,"onPortConflict.reclaim":`reclaim — le remplacer par une copie supervisée`,"onPortConflict.kill":`kill — arrêter ce qui occupe le port`,"palette.placeholder":`Aller à un serveur, lancer une action, ouvrir un paramètre…`,"palette.openServer":`Ouvrir {label}`,"palette.serverLogs":`Journaux de {label}`,"palette.startServer":`Démarrer {label}`,"palette.stopServer":`Arrêter {label}`,"palette.restartServer":`Redémarrer {label}`,"palette.goOverview":`Aller à la vue d'ensemble`,"palette.goGlobalOverview":`Aller à la vue d'ensemble globale`,"palette.goGlobalSettings":`Aller aux paramètres globaux`,"palette.goProxy":`Aller au proxy inverse`,"palette.goServers":`Aller aux serveurs`,"palette.goLogs":`Aller aux journaux`,"palette.goWorkspaceSettings":`Aller aux paramètres de l'espace de travail`,"palette.startAll":`Démarrer tous les serveurs activés ici`,"palette.stopAll":`Arrêter tous les serveurs ici`,"palette.switchWorkspace":`Basculer vers {label}`,"palette.globalSetting":`Paramètre global : {label}`,"palette.workspaceSetting":`Paramètre de l'espace de travail : {label}`,"palette.theme":`Thème {theme}`,"palette.groupServers":`Serveurs`,"palette.groupActions":`Actions`,"palette.groupNavigate":`Navigation`,"palette.groupWorkspaces":`Espaces de travail`,"palette.groupAppearance":`Apparence`,"palette.navigate":`naviguer`,"palette.run":`exécuter`,"palette.noMatches":`Rien ne correspond à « {query} ».`,"proxy.account.automatic":`Automatique (le seul compte qui peut répondre)`,"proxy.account.noTxt":`pas de prise en charge TXT`,"proxy.account.noCredentials":`aucun identifiant`,"proxy.account.gone":`Ce compte n'est plus configuré.`,"proxy.account.emptyHint":`DNS-01 écrit ici l'enregistrement de défi. Vide utilise le seul compte qui peut répondre à un défi, quand il y en a un.`,"proxy.account.cannotWrite":`Un compte {provider} ne peut pas écrire d'enregistrements TXT : il ne peut donc pas répondre à un défi DNS-01.`,"proxy.account.noCredentialsYet":`Aucun identifiant n'est encore stocké pour ce compte {provider}.`,"proxy.account.through":`Le défi est écrit via ce compte {provider}.`,"proxy.certificate.title":`Certificats téléversés`,"proxy.certificate.description":`Servis par les routes réglées sur « Certificat téléversé ». Tout le reste — public ou local — est certifié par le moteur lui-même.`,"proxy.certificate.add":`Ajouter un certificat`,"proxy.certificate.emptyTitle":`Aucun certificat téléversé`,"proxy.certificate.emptyDescription":`Une route réglée sur « Certificat téléversé » a besoin d'une paire couvrant son nom d'hôte, sinon le moteur n'a rien à servir pour elle.`,"proxy.certificate.daysLeft":`{days} jours restants`,"proxy.certificate.subject":`Sujet`,"proxy.certificate.issuer":`Émetteur`,"proxy.certificate.validUntil":`Valide jusqu'au`,"proxy.certificate.covers":`Couvre`,"proxy.certificate.noSans":`aucun nom d'hôte dans ses SAN`,"proxy.certificate.removeAria":`Retirer {name}`,"proxy.certificate.removeQuestion":`Retirer « {name} » ?`,"proxy.certificate.removeBody":`La paire est supprimée du disque. Une route encore réglée sur « Certificat téléversé » continue de servir le certificat propre du moteur jusqu'à ce que vous changiez cela, et le panneau refuse cette action tant qu'une route le sert encore.`,"proxy.certificate.removeIt":`Le retirer`,"proxy.certificate.stored":`« {label} » stocké.`,"proxy.certificate.removed":`« {name} » retiré.`,"proxy.certificateDialog.title":`Ajouter un certificat`,"proxy.certificateDialog.description":`La paire est stockée sur le disque sous son id, et une route réglée sur « Certificat téléversé » peut la servir.`,"proxy.certificateDialog.label":`Libellé`,"proxy.certificateDialog.labelPlaceholder":`Joker maison`,"proxy.certificateDialog.id":`Id`,"proxy.certificateDialog.idHint":`nomme les fichiers sur le disque`,"proxy.certificateDialog.certFile":`Fichier de certificat (.pem, .crt)`,"proxy.certificateDialog.keyFile":`Fichier de clé privée (.pem, .key)`,"proxy.certificateDialog.pasteCert":`Ou collez le certificat`,"proxy.certificateDialog.pasteKey":`Ou collez la clé privée`,"proxy.certificateDialog.certPlaceholder":`-----BEGIN CERTIFICATE-----`,"proxy.certificateDialog.keyPlaceholder":`-----BEGIN PRIVATE KEY-----`,"proxy.certificateDialog.store":`Stocker le certificat`,"proxy.certificateDialog.errorLabel":`un libellé est requis`,"proxy.certificateDialog.errorId":`l'id doit commencer par une lettre ou un chiffre, puis des lettres, des chiffres, un tiret ou un trait de soulignement`,"proxy.certificateDialog.errorTaken":`« {id} » est déjà utilisé par un autre certificat`,"proxy.certificateDialog.errorCertificate":`collez ou choisissez le certificat`,"proxy.certificateDialog.errorPrivateKey":`collez ou choisissez la clé privée`,"proxy.engine.title":`Moteur`,"proxy.engine.description":`Le proxy inverse lui-même. Le panneau télécharge la version courante, la supervise et applique sa configuration via l'API d'administration du moteur.`,"proxy.engine.notInFrame":`L'état du proxy n'est pas encore dans le cadre de ce panneau.`,"proxy.engine.readFailed":`Le moteur n'a pas pu être lu`,"proxy.engine.notInstalled":`Aucun moteur installé`,"proxy.engine.installNote":`L'installation télécharge la version courante de {engine} que le panneau supervise — environ 46 Mo, une seule fois. Rien n'est exposé tant qu'une route n'est pas ajoutée et le proxy activé.`,"proxy.engine.version":`Version`,"proxy.engine.notProbed":`pas encore sondé`,"proxy.engine.source":`Source`,"proxy.engine.sourceCustom":`un chemin configuré à la main`,"proxy.engine.sourceDownloaded":`téléchargé par le panneau`,"proxy.engine.size":`Taille`,"proxy.engine.binary":`Binaire`,"proxy.engine.copyPath":`Copier le chemin du binaire`,"proxy.engine.address":`Adresse active`,"proxy.engine.process":`Processus`,"proxy.engine.certificates":`Certificats`,"proxy.engine.noCert":`aucun certificat public pour l'instant`,"proxy.engine.expiresSoon":`le plus proche expire dans {days} jours`,"proxy.engine.acme":`Certificats ACME`,"proxy.engine.localCa":`CA locale`,"proxy.engine.dns01":`DNS-01`,"proxy.engine.tcpUdp":`TCP/UDP`,"proxy.engine.documentation":`Documentation de {engine}`,"proxy.engine.failed":`Le moteur a signalé un échec`,"proxy.engine.setcapHint":`Un port privilégié (sous 1024) nécessite ceci une fois sous Linux :`,"proxy.engine.copyCommand":`Copier la commande`,"proxy.engine.install":`Installer le moteur`,"proxy.engine.start":`Démarrer`,"proxy.engine.stop":`Arrêter`,"proxy.engine.apply":`Appliquer la configuration`,"proxy.engine.revert":`Revenir en arrière`,"proxy.engine.revertHint":`Revenir à la configuration appliquée avant la dernière`,"proxy.engine.update":`Mettre à jour le moteur`,"proxy.listener.title":`Écoute et certificats`,"proxy.listener.description":`Où le proxy écoute. 80 et 443 sont ce qu'un routeur redirige et ce qu'attend un défi ACME ; un port sous 1024 exige une liaison privilégiée.`,"proxy.listener.unprivilegedPorts":`ports non privilégiés`,"proxy.listener.run":`Exécuter le proxy inverse`,"proxy.listener.runHint":`Enregistré avec Enregistrer les paramètres ; le panneau démarre ou arrête le moteur en conséquence.`,"proxy.listener.httpPort":`Port HTTP`,"proxy.listener.httpPortHint":`Défis HTTP-01 d'ACME et redirection vers HTTPS.`,"proxy.listener.httpsPort":`Port HTTPS`,"proxy.listener.httpsPortHint":`Où les certificats sont servis.`,"proxy.listener.useFallback":`Utiliser {http} / {https}`,"proxy.listener.useStandard":`Utiliser 80 / 443`,"proxy.listener.forwardHint":`Exécution non privilégiée — redirigez 80 et 443 vers ces ports sur votre routeur.`,"proxy.listener.privilegedTitle":`Un port sous 1024 exige une liaison privilégiée`,"proxy.listener.privilegedBody":`Exécuter le panneau avec votre propre utilisateur ne permet pas de lier 80 ou 443 sans autorisation. Soit vous l'accordez une fois {how} et redémarrez le moteur, soit vous gardez {http}/{https} et redirigez 80/443 depuis votre routeur. Sous Windows, le port est libre à lier, mais autre chose peut l'occuper.`,"proxy.listener.privilegedWithSetcap":`avec {command} sur le binaire du moteur`,"proxy.listener.email":`E-mail du compte ACME`,"proxy.listener.emailPlaceholder":`you@example.com`,"proxy.listener.emailHint":`Let's Encrypt l'utilise pour vous avertir d'un certificat qui expire. Un nom purement local obtient la CA propre du moteur et n'en a pas besoin.`,"proxy.listener.emailNeededTitle":`Un e-mail est nécessaire pour le HTTPS automatique`,"proxy.listener.emailNeededBody":`« {host} » est un nom d'hôte public : le moteur demande donc un certificat à une CA et l'adresse du compte est obligatoire. Renseignez-la, désactivez le TLS de la route, ou activez le point de terminaison de préproduction pendant vos essais.`,"proxy.listener.staging":`Utiliser le point de terminaison de préproduction ACME`,"proxy.listener.stagingHint":`Certificats non fiables et aucune consommation du quota pendant vos essais.`,"proxy.listener.dns01":`Répondre aux défis par DNS-01`,"proxy.listener.dns01Hint":`Le panneau écrit l'enregistrement de défi via le compte DNS d'une route : aucun port entrant n'est donc nécessaire pour obtenir un certificat.`,"proxy.listener.resolvers":`Vérifier l'enregistrement auprès de`,"proxy.listener.resolversPlaceholder":`1.1.1.1, 8.8.8.8`,"proxy.listener.resolversHint":`Serveurs de noms auprès desquels le moteur lit l'enregistrement ; vide utilise les siens. Nécessaire quand un DNS à horizon scindé lui montre une autre vue.`,"proxy.listener.noAccountTitle":`Aucun compte DNS ne peut répondre à un défi`,"proxy.listener.noAccountBody":`DNS-01 est actif, mais aucun compte n'a d'identifiants utilisables. Ajoutez-en un dans Paramètres de l'espace de travail → DNS dynamique, sinon les noms publics restent sur les défis par port et attendent une CA qui ne peut pas les joindre.`,"proxy.listener.manyAccountsTitle":`Chaque route publique doit choisir un compte`,"proxy.listener.manyAccountsBody":`Plus d'un compte peut répondre, donc « Automatique » ne peut pas choisir. Choisissez-en un par route, sinon ces noms restent sur les défis par port.`,"proxy.listener.accountNote":`Chaque route choisit son propre compte : les noms de zones différentes obtiennent donc le bon. Une route laissée sur « Automatique » utilise le seul compte que le tableau nomme. Un nom auquel aucun compte ne répond reste sur les défis par port.`,"proxy.listener.pendingNote":`Un nom public dont le certificat est encore en cours d'émission reste joignable entre-temps — en HTTPS avec un certificat temporaire non fiable, ou en HTTP simple avec une page indiquant les ports à rediriger.`,"proxy.retry.inFallback":`~8 heures`,"proxy.retryButton.force":`Forcer une nouvelle tentative de certificat`,"proxy.retryButton.question":`Redemander la CA pour {host} ?`,"proxy.retryButton.body":`Le moteur n'a pas réussi à obtenir auparavant un certificat de CA pour ce nom d'hôte et utilise sa CA locale. Il réessaie automatiquement toutes les {retryIn}.`,"proxy.retryButton.warning":`Réessayer maintenant va tuer cette route et la rendre indisponible un moment ; êtes-vous sûr de vouloir continuer ?`,"proxy.retryButton.leave":`Laisser`,"proxy.retryButton.now":`Réessayer maintenant`,"proxy.routeDialog.titleEdit":`Modifier la route`,"proxy.routeDialog.titleAdd":`Ajouter une route`,"proxy.routeDialog.description":`Un nom d'hôte, ce vers quoi il redirige, et comment il est servi en TLS.`,"proxy.routeDialog.hostname":`Nom d'hôte`,"proxy.routeDialog.hostnamePlaceholder":`gitea.example.com`,"proxy.routeDialog.path":`Préfixe de chemin`,"proxy.routeDialog.pathPlaceholder":`/facultatif`,"proxy.routeDialog.pathHint":`Vide sert tout l'hôte.`,"proxy.routeDialog.target":`Cible`,"proxy.routeDialog.tls":`TLS`,"proxy.routeDialog.dnsAccount":`Compte DNS`,"proxy.routeDialog.localNote":`Un nom purement local est signé par la CA propre du moteur : aucun compte DNS n'intervient.`,"proxy.routeDialog.workspace":`Espace de travail`,"proxy.routeDialog.server":`Serveur`,"proxy.routeDialog.noServers":`cet espace de travail n'a aucun serveur`,"proxy.routeDialog.stoppedNote":`Un serveur arrêté n'est pas routé : la ligne affiche « Aucun amont » jusqu'à ce qu'il tourne à nouveau.`,"proxy.routeDialog.upstream":`Amont`,"proxy.routeDialog.upstreamPlaceholder":`http://10.0.0.5:8080`,"proxy.routeDialog.upstreamHint":`Une adresse littérale, port compris. Le schéma est facultatif.`,"proxy.routeDialog.panelNote":`Servir le panneau de contrôle exige l'authentification active et un mot de passe qui n'est pas celui par défaut — sinon le panneau refuse l'enregistrement.`,"proxy.routeDialog.save":`Enregistrer la route`,"proxy.routes.title":`Routes`,"proxy.routes.description":`Un nom d'hôte public par service. Une route peut pointer vers un serveur supervisé de n'importe quel espace de travail, vers ce panneau, ou vers un amont littéral.`,"proxy.routes.add":`Ajouter une route`,"proxy.routes.cannotSaveTitle":`Ces routes ne peuvent pas être enregistrées en l'état`,"proxy.routes.cannotRoute":`{host} ne peut pas être routé`,"proxy.routes.emptyTitle":`Aucune route pour l'instant`,"proxy.routes.emptyDescription":`Ajoutez-en une pour exposer un serveur via un domaine — le moteur obtient le certificat tout seul.`,"proxy.routes.addFirst":`Ajouter la première route`,"proxy.routes.columnHostname":`Nom d'hôte`,"proxy.routes.columnTarget":`Cible`,"proxy.routes.columnUpstream":`Amont`,"proxy.routes.columnTls":`TLS`,"proxy.routes.columnState":`État`,"proxy.routes.columnOn":`Active`,"proxy.routes.openInTab":`Ouvrir {url} dans un nouvel onglet`,"proxy.routes.noHostname":`aucun nom d'hôte pour l'instant`,"proxy.routes.toggle":`Route {name}`,"proxy.routes.edit":`Modifier {name}`,"proxy.routes.remove":`Retirer {name}`,"proxy.status.certified":`certificat prêt`,"proxy.status.localCa":`CA du moteur`,"proxy.status.uploaded":`paire téléversée`,"proxy.status.awaitingCa":`en attente de la CA`,"proxy.status.failed":`échec du certificat`,"proxy.status.fellBack":`Retour à la CA locale`,"proxy.status.serving":`En service`,"proxy.status.disabled":`Désactivé`,"proxy.status.noUpstream":`Aucun amont`,"proxy.status.error":`Erreur`,"proxy.status.unapplied":`Pas encore appliqué`,"proxy.status.off":`Inactif`,"proxy.status.stopped":`Arrêté`,"proxy.status.starting":`Démarrage`,"proxy.status.running":`En cours`,"proxy.status.unsupported":`Non pris en charge`,"proxy.target.server":`Un serveur supervisé`,"proxy.target.panel":`Ce panneau de contrôle`,"proxy.target.external":`Un amont littéral`,"proxy.target.controlPanel":`panneau de contrôle`,"proxy.target.noServer":`aucun serveur choisi`,"proxy.target.noUpstream":`aucun amont`,"proxy.tls.auto":`Automatique — le moteur décide`,"proxy.tls.off":`Arrêté — HTTP simple`,"proxy.tls.manual":`Certificat téléversé`,"proxy.tls.plain":`HTTP simple`,"proxy.tls.uploaded":`certificat téléversé`,"proxy.tls.letsEncrypt":`Let's Encrypt`,"proxy.tls.engineCa":`CA du moteur (locale)`,"proxy.tls.hintOff":`HTTP simple : aucun certificat n'est servi pour ce nom d'hôte.`,"proxy.tls.hintManual":`Sert la paire de certificats téléversée ci-dessous.`,"proxy.tls.hintEmpty":`Un nom d'hôte public obtient un certificat ACME ; un nom purement local obtient la CA propre du moteur.`,"proxy.tls.hintPublic":`Nom d'hôte public : le moteur demande donc un certificat à une CA — une adresse e-mail de compte ACME est nécessaire.`,"proxy.tls.hintLocal":`Nom purement local : le moteur le signe donc avec sa propre CA de confiance locale.`,"proxy.validation.labelRequired":`un libellé est requis`,"proxy.validation.idPattern":`l'id doit commencer par une lettre ou un chiffre, puis des lettres, des chiffres, un tiret ou un trait de soulignement`,"proxy.validation.hostRequired":`un nom d'hôte est requis`,"proxy.validation.hostPattern":`un nom d'hôte fait de lettres, de chiffres, de points et de tirets, par ex. home.example.com`,"proxy.validation.hostTaken":`"{host}" est déjà routé pour ce chemin`,"proxy.validation.pathSlash":`un préfixe de chemin commence par /`,"proxy.validation.pathSpace":`un préfixe de chemin ne peut pas contenir d'espace`,"proxy.validation.idTaken":`l'id de route "{id}" est utilisé deux fois`,"proxy.validation.workspaceRequired":`choisissez l'espace de travail propriétaire du serveur`,"proxy.validation.serverRequired":`choisissez un serveur dans cet espace de travail`,"proxy.validation.url":`un amont comme http://10.0.0.5:8080`,"proxy.view.title":`Proxy inverse`,"proxy.view.description":`Exposez vos serveurs via des domaines, avec HTTPS automatique par 80/443 ou un défi DNS.`,"proxy.view.dnsNote":`Pour DNS-01, ajoutez le fournisseur DNS du domaine à n'importe quel espace de travail sous Paramètres de l'espace de travail → DNS dynamique ; une route peut alors choisir ce compte, depuis n'importe quel espace de travail.`,"proxy.view.readFailed":`Le proxy inverse n'a pas pu être lu`,"proxy.view.reading":`Lecture du proxy inverse…`,"proxy.view.engineInstalled":`Moteur installé`,"proxy.view.engineStarting":`Démarrage du moteur`,"proxy.view.engineStopping":`Arrêt du moteur`,"proxy.view.configApplied":`Configuration appliquée`,"proxy.view.configReverted":`Configuration rétablie`,"proxy.view.settingsSaved":`Paramètres enregistrés.`,"proxy.view.settingsSavedToast":`Paramètres enregistrés`,"proxy.view.retryFailed":`la nouvelle tentative a échoué`,"proxy.view.retryAsked":`nouvelle demande de la CA pour {host}`,"proxy.view.fieldChanged":`champ modifié`,"proxy.view.fieldsChanged":`champs modifiés`,"proxy.view.noChanges":`Aucune modification non enregistrée`,"proxy.view.discard":`Abandonner les modifications`,"proxy.view.save":`Enregistrer les paramètres`,"serverCard.open":`Ouvrir {url}`,"serverCard.adoptedHint":`Ce processus s'est remplacé lui-même : le panneau a adopté le successeur au lieu de démarrer un second exemplaire. L'arrêt fonctionne toujours et sa sortie reste là où le successeur l'a envoyée.`,"serverCard.detached":`détaché`,"serverCard.persistentHint":"Cette entrée tourne sous sa propre nounou : elle continue quand le panneau s'arrête, redémarre ou est tué. `home-hosted down` la signale au lieu de l'arrêter ; seul un arrêt explicite le fait.","serverCard.persistent":`persistant`,"serverCard.disabled":`désactivé`,"serverCard.autostart":`démarrage auto`,"serverCard.healthProbe":`Sonde de santé`,"serverCard.notProbed":`non sondé`,"serverCard.restarts":`Redémarrages`,"serverCard.pid":`PID`,"serverCard.rss":`RSS`,"serverCard.procs":`Processus`,"serverCard.portFree":`libre`,"serverCard.portInUse":`occupé`,"serverCard.uptime24h":`24 h actif`,"serverCard.probe":`Sonde`,"serverCard.crashes24h":`plantages sur 24 h`,"serverCard.lastCrash":`Dernier plantage`,"serverCard.unhealthyFor":`En panne depuis {duration}`,"serverCard.nextAttempt":`Prochaine tentative {when}`,"serverCard.start":`Démarrer`,"serverCard.stop":`Arrêter`,"serverCard.restart":`Redémarrer`,"serverCard.detailsHint":`Journaux en direct et télémétrie complète`,"serverCard.moreActions":`Autres actions pour {label}`,"serverCard.disable":`Désactiver le serveur`,"serverCard.enable":`Activer le serveur`,"serverCard.removeFromAutostart":`Retirer du démarrage auto`,"serverCard.autostartWithPanel":`Démarrer avec le panneau`,"serverCard.clearLogBuffer":`Vider le tampon de journal`,"serverCard.removeServer":`Supprimer le serveur`,"serverCard.removeTitle":`Supprimer ce serveur ?`,"serverCard.removeDescription":`{label} est retiré de servers.config.json : son processus est arrêté, et ses journaux et son historique de plantages sont supprimés avec lui.`,"serverCard.statusField":`état`,"serverForm.workingDirectory":`Répertoire de travail`,"serverForm.cwdHint":`Les chemins relatifs se résolvent sous projectDir.`,"serverForm.arguments":`Arguments`,"serverForm.portHint":`Vide signifie que le serveur n'a aucun port à sonder ni à précontrôler.`,"serverForm.bindAddress":`Adresse d'écoute`,"serverForm.autostart":`Démarrer avec up`,"serverForm.autostartHint":`Le démarrer chaque fois que le plan de contrôle démarre.`,"serverForm.persistent":`Persistant`,"serverForm.persistentHint":"Continue de tourner quand le panneau s'arrête ; `down` le signale au lieu de l'arrêter.","serverForm.envHint":`KEY=valeur par ligne, exporté vers le processus.`,"serverForm.dataEnvs":`Envs de données`,"serverForm.dataEnvsHint":`ENV=chemin par ligne — exporté vers le processus et sauvegardé automatiquement.`,"serverForm.envFile":`Fichier d'env`,"serverForm.envFilePlaceholder":`fichier KEY=valeur facultatif`,"serverForm.envFileHint":`Chargé au lancement ; ses valeurs remplacent celles d'env.`,"serverForm.dependsOn":`Dépend de`,"serverForm.dependsOnHint":`Séparés par des virgules ; démarrés en premier et attendus jusqu'à ce qu'ils soient sains, arrêtés en dernier.`,"serverForm.backupPaths":`Chemins de sauvegarde supplémentaires`,"serverForm.backupPathsHint":`Un par ligne, espaces réservés autorisés ; les envs de données sont déjà inclus.`,"serverForm.backupIgnore":`Ignorer les fichiers générés connus lors de la sauvegarde`,"serverForm.backupIgnoreHint":`Ignore node_modules, dist, .next et les autres caches dont rien ne se restaure.`,"serverForm.bootstrap":`Bootstrap`,"serverForm.bootstrapDescription":`Une commande ponctuelle exécutée avant le premier démarrage — installations, migrations, téléchargements.`,"serverForm.runBootstrap":`Exécuter un bootstrap`,"serverForm.bootstrapHint":`Désactivé signifie que l'entrée n'en a aucun et que la clé est envoyée à null.`,"serverForm.timeoutMs":`Délai (ms)`,"serverForm.runOnce":`Une seule fois par session`,"serverForm.runOnceHint":`Désactivé signifie qu'il est réexécuté à chaque démarrage.`,"serverForm.bootstrapArgs":`Arguments du bootstrap`,"serverForm.bootstrapArgsHint":`Un par ligne ; les mêmes espaces réservés que les arguments principaux.`,"serverForm.bootstrapEnv":`Environnement du bootstrap`,"serverForm.bootstrapEnvHint":`KEY=valeur par ligne, exporté uniquement vers le processus de bootstrap.`,"serverForm.onPortConflict":`En cas de conflit de port`,"serverForm.logBufferLines":`Lignes du tampon de journal`,"serverForm.maxRssMb":`RSS max (MB)`,"serverForm.maxRssHint":`Redémarrer au-delà ; vide ou 0 le désactive.`,"serverForm.enabledHint":`Désactivé garde l'entrée dans la configuration mais refuse de la démarrer.`,"settings.auth.policyTitle":`Politique d'accès`,"settings.auth.policyDescription":`L'authentification s'applique que le panneau soit sur la boucle locale ou exposé au réseau.`,"settings.auth.requirePassword":`Exiger un mot de passe`,"settings.auth.requirePasswordHint":`Chaque requête exige une session connectée.`,"settings.auth.sessionLifetime":`Durée de session (ms)`,"settings.auth.sessionLifetimeHint":`Délai d'inactivité : 604800000 correspond à une semaine sans activité. Chaque requête le relance.`,"settings.auth.cookieSecure":`Cookie Secure`,"settings.auth.cookieSecureAuto":`Auto — uniquement en HTTPS`,"settings.auth.cookieSecureAlways":`Toujours`,"settings.auth.cookieSecureNever":`Jamais — HTTP simple`,"settings.auth.trustProxy":`Derrière un proxy inverse`,"settings.auth.trustProxyOff":`Non — ignorer x-forwarded-*`,"settings.auth.trustProxyLoopback":`Oui, depuis cette machine uniquement`,"settings.auth.trustProxyAny":`Oui, depuis n'importe quel appelant`,"settings.auth.trustProxyHint":`Faire confiance à x-forwarded-* pour l'adresse et le protocole du client. « Depuis cette machine uniquement » est le choix sûr pour un proxy sur le même hôte. « Depuis n'importe quel appelant » croit l'en-tête de l'appelant lui-même : le verrouillage après échecs compte donc par adresse falsifiée et peut être contourné.`,"settings.auth.maxLoginAttempts":`Tentatives de connexion max`,"settings.auth.maxLoginAttemptsHint":`Échecs avant un verrouillage temporaire.`,"settings.auth.lockout":`Verrouillage (ms)`,"settings.auth.apiTokenSet":`Un token d'API est défini`,"settings.auth.apiTokenMissing":`Aucun token d'API`,"settings.auth.apiTokenNote":`Les scripts peuvent appeler l'API avec {code} au lieu de se connecter.`,"settings.auth.noTokenNote":`Pour les scripts shell et les agents, générez-en un avec {command}.`,"settings.auth.defaultPasswordTitle":`Le mot de passe par défaut est toujours utilisé`,"settings.auth.defaultPasswordText":`Définissez votre propre mot de passe ci-dessous. L'écoute au-delà de {address} reste refusée tant que ce n'est pas fait.`,"settings.auth.blockedTitle":`Cette écoute est refusée`,"settings.auth.noPasswordTitle":`L'authentification est active mais aucun mot de passe n'est défini`,"settings.auth.noPasswordText":`Rien n'est encore réellement exigé, et l'écoute au-delà de {address} reste refusée tant qu'aucun mot de passe n'existe.`,"settings.auth.exposedTitle":`Joignable au-delà de 127.0.0.1`,"settings.auth.exposedText":`Gardez un mot de passe solide, ou placez devant le panneau un proxy qui termine le TLS.`,"settings.auth.changePassword":`Changer le mot de passe`,"settings.auth.setPassword":`Définir un mot de passe`,"settings.auth.passwordDescription":`Stocké sous forme de hachage scrypt dans le fichier de secrets, jamais dans la configuration.`,"settings.auth.currentPassword":`Mot de passe actuel`,"settings.auth.newPassword":`Nouveau mot de passe`,"settings.auth.repeatPassword":`Répéter le nouveau mot de passe`,"settings.auth.passwordMismatch":`Les deux mots de passe ne correspondent pas.`,"settings.auth.updatePassword":`Mettre à jour le mot de passe`,"settings.auth.setPasswordAndEnable":`Définir le mot de passe et activer l'authentification`,"settings.auth.clearPassword":`Effacer le mot de passe`,"settings.auth.clearPasswordConfirm":`Confirmer l'effacement`,"settings.auth.clearPasswordTitle":`Effacer le mot de passe ?`,"settings.auth.clearPasswordHint":`L'authentification est désactivée avec lui, et quiconque atteint le panneau entre directement.`,"settings.auth.shortPasswordTitle":`Ce mot de passe est court`,"settings.auth.shortPasswordText":`Il est autorisé, mais plus long est la seule chose qui sépare le réseau de ce panneau.`,"settings.auth.passwordUpdated":`Mot de passe mis à jour. Les autres sessions ont été déconnectées.`,"settings.auth.passwordCleared":`Mot de passe effacé et authentification désactivée.`,"settings.backup.createTitle":`Créer une sauvegarde`,"settings.backup.createDescription":`Choisissez ce que cette archive capture. Rien n'est écrit tant que vous ne la créez pas.`,"settings.backup.chooseItems":`Choisir les éléments`,"settings.backup.partialCapture":`Seuls les éléments choisis sont capturés.`,"settings.backup.withoutGlobalSettings":`Sans les paramètres globaux, une restauration ne peut placer un espace de travail que là où le panneau cible le déclare déjà.`,"settings.backup.password":`Mot de passe (facultatif)`,"settings.backup.passwordHint":`Chiffre l'archive ; sa restauration demande le même mot de passe.`,"settings.backup.create":`Créer la sauvegarde`,"settings.backup.chooseItemsFor":`{label} — choisir les éléments`,"settings.backup.subDescription":`Un espace de travail peut être capturé en entier ou seulement ses paramètres, serveurs, secrets et chemins de données déclarés.`,"settings.backup.selectedOf":`{selected} sur {total} sélectionnés`,"settings.backup.nothingSelectable":`Cet espace de travail ne déclare encore rien de sélectionnable.`,"settings.backup.apply":`Appliquer`,"settings.backup.created":`Sauvegarde créée.`,"settings.backup.leafSettingsHint":`Valeurs par défaut des serveurs, rétention des journaux et notifications`,"settings.backup.leafServersHint":`Chaque entrée de servers.config.json`,"settings.backup.leafSecretsHint":`Token du bot Telegram et identifiants DDNS`,"settings.backup.leafDataHint":`Un chemin de données déclaré`,"settings.backup.pathFromOrigin":`{path} — depuis {origin}`,"settings.backup.entrySettingsHint":`Écoute, authentification, santé de l'hôte et politique de sauvegarde`,"settings.backup.entrySecretsHint":`Hachage du mot de passe et hachage du token d'API`,"settings.backup.entryTlsHint":`La paire de certificats du panneau lui-même`,"settings.backup.entryWorkspaceHint":`Ses paramètres, serveurs, secrets et chemins de données déclarés`,"settings.backup.entryGlobalSettings":`Paramètres globaux`,"settings.backup.entryGlobalSecrets":`Secrets globaux (mot de passe, jeton d'API)`,"settings.backup.entryTlsCertificate":`Certificat TLS`,"settings.backup.leafSettings":`Paramètres`,"settings.backup.leafServers":`Serveurs`,"settings.backup.leafSecrets":`Secrets`,"settings.backup.secretPassword":`Mot de passe`,"settings.backup.secretPasswordHint":`Le hachage du mot de passe du panneau ; le restaurer rétablit l'ancien mot de passe`,"settings.backup.secretApiToken":`Jeton d'API`,"settings.backup.secretApiTokenHint":`Le jeton de longue durée qu'utilisent les scripts et les agents`,"settings.backup.secretTelegram":`Token du bot Telegram`,"settings.backup.secretTelegramHint":`Utilisé pour les notifications`,"settings.backup.secretDdns":`Identifiants DDNS`,"settings.backup.secretDdnsHint":`Identifiants du fournisseur, conservés scellés avec leur clé`,"settings.backup.restoreItemLabel":`{workspace} : {item}`,"settings.backup.noteMissing":`n'existe pas encore`,"settings.backup.noteCovered":`couvert par {path}`,"settings.backup.noteAlreadyDeclared":`déjà déclaré par {origin}`,"settings.backup.noteContainsBackupDir":`contient le répertoire de sauvegarde`,"settings.backup.noteUnknownWorkspace":`espace de travail inconnu`,"settings.backup.noteMissingFromArchive":`absent de l'archive`,"settings.backup.noteDeclaredByBackup":`déclaré par la configuration de la sauvegarde, qui n'est pas restaurée`,"settings.backup.noteNotDeclared":`déclaré ni par cette configuration ni par la sauvegarde`,"settings.backup.noteRestoredFrom":`restauré depuis {path}`,"settings.backups.policyTitle":`Politique`,"settings.backups.policyDescription":`Combien d'archives le panneau conserve, et les chemins supplémentaires que chacune capture.`,"settings.backups.allow":`Autoriser les sauvegardes`,"settings.backups.allowHint":`Désactivé arrête les nouvelles archives ; ce qui est déjà sur le disque reste téléchargeable et restaurable.`,"settings.backups.offTitle":`Les sauvegardes sont désactivées`,"settings.backups.offText":`Rien de nouveau n'est archivé tant que ce n'est pas réactivé. Les archives ci-dessous peuvent toujours être téléchargées, restaurées et supprimées.`,"settings.backups.keep":`Conserver`,"settings.backups.keepHint":`Les archives plus anciennes sont élaguées après chaque sauvegarde.`,"settings.backups.extraPaths":`Chemins supplémentaires`,"settings.backups.extraPathsHint":`Séparés par des virgules, capturés dans chaque archive en plus de ce que déclare chaque espace de travail.`,"settings.backups.extraPathsPlaceholder":`{home}/myapp-data`,"settings.backups.archiveDirectory":`Répertoire des archives`,"settings.backups.copyArchiveDirectory":`Copier le répertoire des archives`,"settings.backups.changeDirectory":`Le changer est une décision au niveau fichier : modifiez {path}.`,"settings.backups.theSettingsFile":`le fichier de paramètres`,"settings.backups.capturesTitle":`Ce qu'une sauvegarde capture`,"settings.backups.capturesDescription":`Choisissez-les dans la boîte de création. Un espace de travail peut être pris en entier ou seulement ses paramètres, serveurs, secrets et chemins de données déclarés.`,"settings.backups.nothingSelectable":`Rien n'est encore sélectionnable.`,"settings.backups.fromOrigin":`depuis {origin}`,"settings.backups.notCaptured":`non capturé`,"settings.backups.generatedSkipped":`répertoires générés ignorés`,"settings.backups.included":`inclus`,"settings.backups.skipped":`ignoré`,"settings.backups.workspacesNote":`Ce panneau sert {count} espaces de travail ; chacun est sa propre entrée sélectionnable.`,"settings.backups.archivesTitle":`Archives`,"settings.backups.archivesDescription":`Stockées dans le répertoire de sauvegarde et téléchargeables à tout moment.`,"settings.backups.create":`Créer une sauvegarde…`,"settings.backups.restore":`Restaurer…`,"settings.backups.noArchives":`Aucune archive pour l'instant`,"settings.backups.noArchivesEnabled":`Créez-en une maintenant pour capturer le panneau et les espaces de travail de votre choix.`,"settings.backups.noArchivesDisabled":`Rien n'a encore été archivé, et les sauvegardes sont désactivées.`,"settings.backups.encrypted":`chiffrée`,"settings.backups.download":`Télécharger`,"settings.backups.restoreAction":`Restaurer`,"settings.backups.confirmDelete":`Confirmer la suppression`,"settings.backups.deleted":`{name} supprimé.`,"settings.backups.kindSettings":`paramètres`,"settings.backups.kindServers":`serveurs`,"settings.backups.kindSecrets":`secrets`,"settings.backups.kindTls":`tls`,"settings.backups.kindData":`données`,"settings.backups.kindWorkspace":`espace de travail`,"settings.ddns.statePending":`En attente`,"settings.ddns.stateOk":`Mis à jour`,"settings.ddns.stateUnchanged":`À jour`,"settings.ddns.stateSkipped":`Ignoré`,"settings.ddns.stateError":`Échec`,"settings.ddns.passFinished":`Passe de DNS dynamique terminée`,"settings.ddns.credentialsSaved":`Identifiants enregistrés pour {account}`,"settings.ddns.credentialsRemoved":`Identifiants supprimés pour {account}`,"settings.ddns.loadErrorTitle":`Les paramètres de DNS dynamique n'ont pas pu être chargés`,"settings.ddns.title":`DNS dynamique`,"settings.ddns.description":`Gardez ces noms d'hôte pointés vers l'adresse publique de cette machine. Les identifiants vivent dans le fichier de secrets, jamais dans servers.config.json.`,"settings.ddns.checking":`vérification`,"settings.ddns.needsAttention":`demande attention`,"settings.ddns.watching":`surveillance`,"settings.ddns.updateNow":`Mettre à jour maintenant`,"settings.ddns.enabled":`Maintenir le DNS dynamique à jour`,"settings.ddns.enabledHint":`Une passe s'exécute à l'intervalle ci-dessous ; un fournisseur n'est appelé que si l'adresse a réellement changé.`,"settings.ddns.interval":`Vérifier toutes les (ms)`,"settings.ddns.intervalHint":`60000 correspond à une minute ; la valeur par défaut est cinq.`,"settings.ddns.ttl":`TTL (s)`,"settings.ddns.ttlHint":`1 signifie automatique là où le fournisseur le prend en charge.`,"settings.ddns.detectIpv4":`Détecter l'IPv4`,"settings.ddns.detectIpv4Hint":`Nécessaire pour les enregistrements A.`,"settings.ddns.detectIpv6":`Détecter l'IPv6`,"settings.ddns.detectIpv6Hint":`Nécessaire pour les enregistrements AAAA.`,"settings.ddns.accountsTitle":`Comptes fournisseurs`,"settings.ddns.accountsDescription":`Une entrée par token d'API. Les identifiants sont stockés sur le serveur et ne reviennent jamais.`,"settings.ddns.credentialsSet":`identifiants enregistrés`,"settings.ddns.noCredentials":`aucun identifiant`,"settings.ddns.credentials":`Identifiants`,"settings.ddns.removeAccountBlocked":`Retirez d'abord les noms d'hôte qui utilisent ce compte`,"settings.ddns.noAccounts":`Aucun compte pour l'instant. Choisissez un fournisseur et ajoutez-en un.`,"settings.ddns.provider":`Fournisseur`,"settings.ddns.accountId":`Id du compte`,"settings.ddns.accountIdPlaceholder":`cloudflare-home`,"settings.ddns.accountIdHint":"L'id du compte nomme le compte et sert de clé à ses identifiants stockés ; lettres minuscules, chiffres, `-` et `_`.","settings.ddns.hostnamesTitle":`Noms d'hôte`,"settings.ddns.hostnamesDescription":`La liste complète à maintenir à jour — suba.domaine.com, domaine.xyz, etc.`,"settings.ddns.account":`Compte`,"settings.ddns.recordA":`A (IPv4)`,"settings.ddns.recordAaaa":`AAAA (IPv6)`,"settings.ddns.aaaaUnsupported":`Ce fournisseur ne peut pas gérer les enregistrements AAAA.`,"settings.ddns.proxied":`Via proxy`,"settings.ddns.proxiedHint":`Cloudflare sert cet enregistrement via son propre réseau.`,"settings.ddns.ipv6Off":`La détection IPv6 est désactivée`,"settings.ddns.advanced":`Avancé`,"settings.ddns.advancedHint":`domaine enregistré et remplacement du TTL`,"settings.ddns.registeredDomain":`Domaine enregistré`,"settings.ddns.registeredDomainPlaceholder":`example.co.uk`,"settings.ddns.registeredDomainHint":`Uniquement quand le fournisseur doit connaître l'apex, par ex. les domaines à trois libellés.`,"settings.ddns.ttlOverride":`Remplacement du TTL (s)`,"settings.ddns.ttlOverrideHint":`Vide utilise la valeur ci-dessus.`,"settings.ddns.noHostnames":`Aucun nom d'hôte pour l'instant.`,"settings.ddns.hostnamePlaceholder":`home.example.com`,"settings.ddns.lastPass":`Dernière passe`,"settings.ddns.ipv4Value":`IPv4 {address}`,"settings.ddns.ipv6Value":`IPv6 {address}`,"settings.ddns.type":`Type`,"settings.ddns.state":`État`,"settings.ddns.address":`Adresse`,"settings.ddns.detail":`Détail`,"settings.ddns.credentialsTitle":`Identifiants du fournisseur`,"settings.ddns.credentialsDescription":`Les champs enregistrés ne sont jamais renvoyés. Enregistrer remplace tous les champs de ce compte et lance une passe immédiatement.`,"settings.ddns.optional":`Facultatif.`,"settings.ddns.whereToGet":`Où les obtenir`,"settings.ddns.forget":`Oublier`,"settings.ddns.forgetConfirm":`Les oublier`,"settings.ddns.forgetTitle":`Oublier les identifiants stockés ?`,"settings.ddns.forgetHint":`Ils sont supprimés du disque et ne peuvent plus être relus ; il faudrait les recoller.`,"settings.ddns.saveCredentials":`Enregistrer les identifiants`,"settings.defaults.title":`Valeurs par défaut des serveurs`,"settings.defaults.description":`Appliquées à chaque entrée qui ne définit pas sa propre valeur.`,"settings.defaults.enabledHint":`Les nouvelles entrées démarrent activées.`,"settings.defaults.autostart":`Démarrer avec le panneau`,"settings.defaults.bind":`Liaison`,"settings.defaults.bindLocal":`Local — 127.0.0.1`,"settings.defaults.bindLan":`LAN — 0.0.0.0`,"settings.defaults.onPortConflict":`En cas de conflit de port`,"settings.defaults.conflictBlock":`Bloquer le démarrage`,"settings.defaults.conflictWarn":`Avertir et démarrer quand même`,"settings.defaults.conflictFollow":`Suivre un redémarrage détaché de lui-même`,"settings.defaults.conflictReclaim":`Remplacer un redémarrage détaché par une copie supervisée`,"settings.defaults.conflictKill":`Tuer ce qui occupe le port`,"settings.defaults.logBufferLines":`Lignes du tampon de journal`,"settings.defaults.logBufferLinesHint":`Conservées en mémoire par serveur.`,"settings.host.title":`Seuils`,"settings.host.description":`Un seuil de 0 désactive cette alerte. Les dépassements notifient une fois, puis une fois de plus au rétablissement.`,"settings.host.enabled":`Échantillonner cette machine`,"settings.host.enabledHint":`Charge, mémoire, swap, disque et température du CPU, à l'intervalle ci-dessous.`,"settings.host.interval":`Intervalle (ms)`,"settings.host.intervalHint":`Fréquence d'échantillonnage de l'hôte et de vérification des alertes.`,"settings.host.diskPaths":`Chemins de disque`,"settings.host.diskPathsHint":`Séparés par des virgules ; les gabarits comme {home} sont développés.`,"settings.host.diskUsed":`Disque utilisé (%)`,"settings.host.memoryUsed":`Mémoire utilisée (%)`,"settings.host.swapUsed":`Swap utilisé (%)`,"settings.host.zeroDisables":`0 désactive l'alerte.`,"settings.host.loadPerCpu":`Charge par CPU`,"settings.host.loadPerCpuHint":`La charge moyenne sur 1 minute divisée par le nombre de cœurs.`,"settings.host.tempCelsius":`Température du CPU (°C)`,"settings.host.tempCelsiusHint":`Linux uniquement ; ignoré là où le système ne l'expose pas.`,"settings.host.breachingNow":`Dépassés maintenant :`,"settings.host.nothingBreaching":`Rien n'est dépassé pour l'instant.`,"settings.interface.title":`Interface`,"settings.interface.description":`Le panneau est un site statique : gardez celui fourni, ou servez votre propre build depuis le répertoire d'état.`,"settings.interface.currentlyServing":`Actuellement servi`,"settings.interface.copyDirectory":`Copier le répertoire de l'UI`,"settings.interface.fileCount":`{count} fichiers`,"settings.interface.sourceStock":`fournie`,"settings.interface.sourceCustom":`personnalisée`,"settings.interface.unnamed":`sans nom`,"settings.interface.panelVersion":`Version du panneau`,"settings.interface.copyPanelVersion":`Copier la version du panneau`,"settings.interface.panelVersionHint":`La version qu'exécute ce processus du panneau — {command} affiche le même numéro.`,"settings.interface.panelName":`Nom du panneau`,"settings.interface.panelNameHint":`Affiché dans la barre latérale par l'UI fournie. Une UI personnalisée peut afficher son propre nom.`,"settings.interface.uploadLabel":`Téléverser un build d'UI (.zip avec un index.html)`,"settings.interface.docsHint":`Voir {docs} pour le contrat d'API. Si une UI personnalisée casse le panneau, {command} remet celle fournie depuis le terminal.`,"settings.interface.resetName":`Réinitialiser le nom`,"settings.interface.confirmRevert":`Confirmer le retour`,"settings.interface.revertToStock":`Revenir à l'UI fournie`,"settings.interface.install":`Installer l'UI`,"settings.interface.installed":`UI remplacée par {name} — rechargez la page`,"settings.interface.yourBuild":`votre build`,"settings.interface.restored":`UI fournie restaurée — rechargez la page`,"settings.interface.nothingInstalled":`aucune UI personnalisée n'était installée`,"settings.listener.title":`Écoute`,"settings.listener.description":`Où le panneau répond. Le déplacer redémarre le panneau et envoie cette page à la nouvelle adresse.`,"settings.listener.port":`Port de contrôle`,"settings.listener.portHint":`3999 par défaut.`,"settings.listener.bind":`Liaison`,"settings.listener.bindLocal":`Local`,"settings.listener.bindLan":`LAN`,"settings.listener.bindCustom":`Personnalisé`,"settings.listener.bindLanHint":`0.0.0.0 — joignable depuis tout le réseau.`,"settings.listener.bindLocalHint":`127.0.0.1 — cette machine uniquement.`,"settings.listener.bindCustomHint":`Une adresse d'interface précise que vous saisissez ci-dessous.`,"settings.listener.ipv4":`Adresse IPv4`,"settings.listener.ipv4Placeholder":`192.168.1.20`,"settings.listener.ipv4Error":`Saisissez une adresse IPv4, par exemple 192.168.1.20.`,"settings.listener.ipv4Hint":`Écouter au-delà de 127.0.0.1 exige un vrai mot de passe.`,"settings.listener.openBrowser":`Ouvrir un navigateur au démarrage du panneau`,"settings.listener.liveAddress":`Adresse active`,"settings.listener.restartRequired":`redémarrage requis`,"settings.listener.copyLiveAddress":`Copier l'adresse active`,"settings.listener.liveAddressHint":`Ce à quoi l'écoute est liée en ce moment ; les modifications enregistrées prennent effet quand le panneau se relie.`,"settings.logs.title":`Rétention`,"settings.logs.description":`La vue en direct vient toujours de la mémoire ; ces fichiers survivent à un redémarrage et alimentent la page Journaux.`,"settings.logs.persist":`Conserver les journaux sur disque`,"settings.logs.persistHint":`Désactivez pour tout garder en mémoire uniquement.`,"settings.logs.maxBytes":`Rotation à (octets)`,"settings.logs.maxBytesHint":`Par serveur, avant de passer à .1, .2, …`,"settings.logs.keep":`Conserver les fichiers archivés`,"settings.logs.directory":`Répertoire des journaux`,"settings.logs.copyDirectory":`Copier le répertoire des journaux`,"settings.logs.browseHint":`Parcourez et téléchargez ces fichiers sur la page {logs}.`,"settings.paths.dataRoot":`Racine des données`,"settings.paths.dataRootHint":`HHOSTED_HOME — paramètres globaux, espaces de travail, TLS, sauvegardes et l'UI.`,"settings.paths.globalSettings":`Paramètres globaux`,"settings.paths.globalSettingsHint":`settings.json — écoute, authentification, politique TLS, santé de l'hôte, sauvegardes.`,"settings.paths.projectDir":`Répertoire du projet`,"settings.paths.projectDirHint":`Base des chemins relatifs des entrées.`,"settings.paths.panelAddress":`Adresse du panneau`,"settings.paths.panelAddressHint":`Où ce panneau de contrôle est actif en ce moment.`,"settings.paths.serversConfig":`Configuration des serveurs`,"settings.paths.serversConfigHint":`servers.config.json de {label}.`,"settings.paths.workspaceSettings":`Paramètres de l'espace de travail`,"settings.paths.workspaceSettingsHint":`Valeurs par défaut des serveurs, rétention des journaux, notifications, DDNS.`,"settings.paths.logs":`Journaux`,"settings.paths.logsHint":`Sortie conservée pour cet espace de travail.`,"settings.paths.copyPath":`Copier {label}`,"settings.paths.whereThingsLive":`Où vivent les choses`,"settings.paths.whereThingsLiveDescription":`Lecture seule. Copiez un chemin directement dans un shell ou un éditeur.`,"settings.paths.workspaceFiles":`Fichiers de l'espace de travail`,"settings.paths.workspaceFilesDescription":`Chaque espace de travail possède sa configuration, ses paramètres et son répertoire de journaux ; rien n'est partagé entre eux.`,"settings.rebind.failed":`Le panneau de contrôle n'a pas répondu sur {target}. Consultez la console pour la nouvelle écoute.`,"settings.restore.title":`Restaurer une sauvegarde`,"settings.restore.description":`Rien n'est écrit tant que le plan n'est pas appliqué.`,"settings.restore.archive":`Archive`,"settings.restore.archiveHint":`Une archive stockée, ou un .zip de cette machine.`,"settings.restore.encryptedName":`{name} — chiffrée`,"settings.restore.uploadOption":`Téléverser un fichier…`,"settings.restore.archiveFile":`Fichier d'archive (.zip)`,"settings.restore.unchangedTitle":`Rien n'a encore changé`,"settings.restore.archiveLine":`Archive {name}.`,"settings.restore.uploadedArchive":`L'archive téléversée.`,"settings.restore.passwordProtected":`Cette sauvegarde est protégée par mot de passe.`,"settings.restore.password":`Mot de passe`,"settings.restore.checkAgain":`Vérifier à nouveau avec le mot de passe`,"settings.restore.choosePrompt":`Choisissez quoi restaurer — {selected} sur {total} sélectionnés.`,"settings.restore.willRestore":`Sera restauré : {items}.`,"settings.restore.skipped":`Ignoré : {items}.`,"settings.restore.nothing":`rien`,"settings.restore.restartNote":`Les paramètres du panneau lui-même diffèrent : redémarrez le panneau ensuite.`,"settings.restore.reloadedNote":`Les espaces de travail restaurés sont rechargés immédiatement ; les entrées marquées en démarrage auto démarrent d'elles-mêmes.`,"settings.restore.applyStored":`Appliquer cette restauration`,"settings.restore.applyUpload":`Restaurer le fichier téléversé`,"settings.restore.restored":`{count} élément(s) restauré(s).`,"settings.restore.restoredWithNotes":`{count} élément(s) restauré(s) — {notes}.`,"settings.restore.noteReloaded":`les serveurs restaurés sont actifs, les entrées en démarrage auto démarrent`,"settings.restore.noteRestart":`redémarrez le panneau pour appliquer ses propres paramètres`,"settings.restore.reasonSymbolicLink":`lien symbolique, ignoré`,"settings.restore.reasonNotSelected":`non sélectionné`,"settings.restore.reasonUnrestorable":`ne peut pas être restauré ici`,"settings.restore.reasonInvalidSettings":`les paramètres de l'archive ne sont pas valides`,"settings.restore.reasonInvalidServers":`les serveurs de l'archive ne sont pas valides`,"settings.shell.noUnsavedChanges":`Aucune modification non enregistrée`,"settings.shell.discard":`Abandonner les modifications`,"settings.shell.save":`Enregistrer les paramètres`,"settings.shell.unsavedTitle":`Modifications non enregistrées`,"settings.shell.nothingToSave":`Rien à enregistrer.`,"settings.telegram.title":`Telegram`,"settings.telegram.description":`La politique vit dans la configuration ; le token du bot est un secret et ne revient jamais du serveur.`,"settings.telegram.enabled":`Envoyer des notifications`,"settings.telegram.enabledHint":`Un message par événement, limité par le délai ci-dessous.`,"settings.telegram.chatId":`Id du chat`,"settings.telegram.chatIdPlaceholder":`123456789 ou @channel`,"settings.telegram.chatIdHint":`Utilisez Détecter les chats pour le remplir depuis les mises à jour du bot.`,"settings.telegram.cooldown":`Délai par événement (ms)`,"settings.telegram.cooldownHint":`Par serveur et par motif, pour qu'un serveur instable ne puisse pas inonder.`,"settings.telegram.onCrash":`Tentatives épuisées`,"settings.telegram.onUnhealthy":`Port en panne`,"settings.telegram.onForcedRestart":`Redémarrage forcé`,"settings.telegram.onRecovered":`Rétabli`,"settings.telegram.onHost":`Seuils de l'hôte dépassés`,"settings.telegram.onHostHint":`Disque, mémoire, swap, charge et température du CPU, selon les seuils de Santé de l'hôte.`,"settings.telegram.onDdns":`DNS dynamique modifié ou en échec`,"settings.telegram.onDdnsHint":`Un message par passe ayant modifié un enregistrement, et un pour une passe en échec.`,"settings.telegram.botToken":`Token du bot`,"settings.telegram.tokenSet":`token défini`,"settings.telegram.noToken":`aucun token`,"settings.telegram.tokenNote":`Depuis @BotFather — un secret, jamais dans servers.config.json.`,"settings.telegram.tokenPlaceholder":`123456789:AA…`,"settings.telegram.tokenSavedPlaceholder":`Enregistré — saisissez un nouveau token pour le remplacer`,"settings.telegram.saveToken":`Enregistrer le token`,"settings.telegram.detectChats":`Détecter les chats`,"settings.telegram.sendTest":`Envoyer un test`,"settings.telegram.removeToken":`Retirer le token`,"settings.telegram.removeTokenConfirm":`Confirmer le retrait`,"settings.telegram.removeTokenTitle":`Retirer le token du bot ?`,"settings.telegram.removeTokenHint":`Les notifications s'arrêtent jusqu'à ce que vous recolliez un token.`,"settings.telegram.tokenSaved":`Token enregistré.`,"settings.telegram.tokenSavedFor":`Token enregistré pour @{username}.`,"settings.telegram.tokenRemoved":`Token retiré.`,"settings.telegram.noChats":`Aucun chat trouvé. Envoyez d'abord /start au bot, puis détectez à nouveau.`,"settings.telegram.testSent":`Message de test envoyé.`,"settings.telegram.testFailed":`Le message de test a échoué.`,"settings.telegram.chatsSeen":`Chats vus par le bot :`,"settings.telegram.lastSend":`Dernier envoi : {result}`,"settings.tls.title":`HTTPS`,"settings.tls.description":`Téléversez une paire PEM et le panneau sert TLS sur sa propre écoute. Un certificat auto-signé suffit sur un réseau domestique.`,"settings.tls.serve":`Servir le panneau en HTTPS`,"settings.tls.serveHint":`Enregistré avec Enregistrer les paramètres ; le panneau se relie à nouveau et cette page le suit.`,"settings.tls.certificateTitle":`Certificat`,"settings.tls.certificateDescription":`Certificat encodé PEM et sa clé privée. Les deux restent dans le fichier de secrets.`,"settings.tls.unusableTitle":`Le certificat stocké est inutilisable`,"settings.tls.subject":`Sujet`,"settings.tls.issuer":`Émetteur`,"settings.tls.validUntil":`Valide jusqu'au`,"settings.tls.days":`{count} jours`,"settings.tls.privateKey":`Clé privée`,"settings.tls.keyMatches":`correspond au certificat`,"settings.tls.keyMismatch":`ne correspond pas`,"settings.tls.fingerprint":`Empreinte`,"settings.tls.copyFingerprint":`Copier l'empreinte`,"settings.tls.noCertificateTitle":`Aucun certificat téléversé`,"settings.tls.noCertificateText":`Téléversez ci-dessous un certificat PEM et sa clé, puis enregistrez. HTTPS n'est pas servi tant qu'aucun certificat n'est présent.`,"settings.tls.certFile":`Fichier de certificat (.pem, .crt)`,"settings.tls.keyFile":`Fichier de clé privée (.pem, .key)`,"settings.tls.pasteCertificate":`Ou collez le certificat`,"settings.tls.pasteKey":`Ou collez la clé privée`,"settings.tls.saveCertificate":`Enregistrer le certificat`,"settings.tls.removeCertificate":`Retirer le certificat`,"settings.tls.confirmRemove":`Confirmer le retrait`,"settings.tls.removeTitle":`Retirer le certificat ?`,"settings.tls.removeHint":`TLS reste actif mais n'a plus rien à servir : le panneau repasse en http dès que l'écoute se relie à nouveau.`,"settings.tls.stored":`Certificat stocké.`,"settings.tls.removed":`Certificat retiré.`,"status.stopped":`Arrêté`,"status.starting":`Démarrage`,"status.running":`En cours`,"status.stopping":`Arrêt`,"status.backoff":`Redémarrage`,"status.crashed":`Planté`,"status.conflict":`Conflit de port`,"theme.label":`Thème : {theme}`,"theme.light":`clair`,"theme.dark":`sombre`,"theme.system":`système`,"topbar.search":`Rechercher ou exécuter une commande`,"topbar.openNavigation":`Ouvrir la navigation`,"topbar.commandPalette":`Palette de commandes`,"topbar.account":`Compte`,"topbar.signedIn":`Connecté`,"topbar.signOut":`Se déconnecter`,"topbar.workspaceLabel":`Espace de travail : {name}`,"validation.port":`Le port doit être un nombre entier compris entre 1 et 65535.`,"validation.idRequired":`Un id est requis — c'est la clé sous laquelle vit ce serveur.`,"validation.idPattern":`L'id doit commencer par une lettre minuscule ou un chiffre et ne contenir que des lettres minuscules, des chiffres, des tirets et des traits de soulignement.`,"validation.commandRequired":`Une commande est requise — l'exécutable que le superviseur lance.`,"validation.bootstrapCommand":`Un bootstrap a besoin d'une commande à exécuter.`,"views.actions.addAServer":`Ajouter un serveur`,"views.actions.addServer":`Ajouter un serveur`,"views.actions.startAll":`Tout démarrer`,"views.actions.stopAll":`Tout arrêter`,"views.common.thisWorkspace":`cet espace de travail`,"views.globalOverview.configError":`La configuration est illisible : {error}`,"views.globalOverview.degraded":`dégradé`,"views.globalOverview.description":`Santé de l'hôte et tous les serveurs de tous les espaces de travail, groupés par lieu de vie.`,"views.globalOverview.emptyDescription":`Choisissez un espace de travail dans l'en-tête et ajoutez le premier processus qu'il doit maintenir en vie.`,"views.globalOverview.emptyTitle":`Aucun serveur nulle part pour l'instant`,"views.globalOverview.groupEmptyDescription":`Ajoutez-en un et il apparaîtra ici et sur la page de l'espace de travail.`,"views.globalOverview.groupRunning":`{running}/{total} en cours`,"views.globalOverview.hostUptime":`Durée de fonctionnement de l'hôte`,"views.globalOverview.hostVitals":`Santé de l'hôte`,"views.globalOverview.hostVitalsNote":`Cette machine, partagée par tous les espaces de travail.`,"views.globalOverview.openWorkspace":`Ouvrir l'espace de travail`,"views.globalOverview.panelUptime":`Durée de fonctionnement du panneau`,"views.globalOverview.samplingOff":`échantillonnage arrêté`,"views.globalOverview.samplingOn":`échantillonnage actif`,"views.globalOverview.serversTotal":`{count} serveurs au total`,"views.globalOverview.serving":`en service`,"views.globalOverview.workspaces":`Espaces de travail`,"views.globalSettings.authenticationDescription":`Qui peut se connecter à ce panneau, et comment une session est considérée comme fiable.`,"views.globalSettings.backupsDescription":`Une archive par capture, couvrant le panneau et tout espace de travail de votre choix.`,"views.globalSettings.changesDescription":`Ce qu'Enregistrer écrirait dans le fichier de paramètres du panneau.`,"views.globalSettings.description":`Écoute, accès, santé de l'hôte, sauvegardes, TLS et chemins de ce panneau — partagés par tous les espaces de travail.`,"views.globalSettings.hostDescription":`Seuils d'alerte pour les ressources de cette machine.`,"views.globalSettings.interfaceDescription":`Servez votre propre UI de panneau au lieu de celle fournie.`,"views.globalSettings.languageDescription":`La langue d'affichage de ce panneau, pour ce navigateur.`,"views.globalSettings.languageNote":`Votre choix est conservé dans ce navigateur et s'applique aussi à la page de connexion. Il ne change ni la sortie de journal du panneau ni ses messages d'API.`,"views.globalSettings.listenerDescription":`Où le panneau de contrôle écoute et comment il s'annonce.`,"views.globalSettings.loadErrorTitle":`Certaines valeurs propres aux fichiers n'ont pas pu être chargées`,"views.globalSettings.navLabel":`Sections des paramètres globaux`,"views.globalSettings.pathsDescription":`Où home-hosted garde ses fichiers, globalement et par espace de travail.`,"views.globalSettings.saveFailed":`Les paramètres n'ont pas pu être enregistrés.`,"views.globalSettings.saved":`Paramètres enregistrés.`,"views.globalSettings.savedRebinding":`Paramètres enregistrés — le panneau passe à une nouvelle adresse.`,"views.globalSettings.savedToast":`Paramètres enregistrés`,"views.globalSettings.sectionAuthentication":`Authentification`,"views.globalSettings.sectionBackups":`Sauvegardes`,"views.globalSettings.sectionHost":`Santé de l'hôte`,"views.globalSettings.sectionInterface":`Interface`,"views.globalSettings.sectionListener":`Écoute`,"views.globalSettings.sectionPaths":`Chemins`,"views.globalSettings.sectionTls":`TLS`,"views.globalSettings.title":`Paramètres globaux`,"views.globalSettings.tlsDescription":`Servez le panneau en HTTPS avec votre propre certificat.`,"views.logs.allStreams":`Tous les flux`,"views.logs.clear":`Vider`,"views.logs.clearDescription":`{server} — le fichier sur disque est tronqué. Le processus continue de tourner et de nouvelles lignes sont écrites à partir de là.`,"views.logs.clearFile":`Vider le fichier`,"views.logs.clearNote":`Téléchargez-le d'abord si la sortie est encore nécessaire — cette action est irréversible depuis le panneau.`,"views.logs.clearTitle":`Vider le fichier de journal conservé ?`,"views.logs.fileEmpty":`Le fichier conservé est vide.`,"views.logs.loadedLines":`{count} lignes chargées`,"views.logs.modeLive":`Flux en direct`,"views.logs.modePersisted":`Conservé`,"views.logs.noServersDescription":`Ajoutez-en un et sa sortie sera conservée ici.`,"views.logs.noServersTitle":`Aucun serveur`,"views.logs.nothingOnDisk":`Rien sur le disque pour ce serveur — la persistance est désactivée, ou il n'a encore rien écrit.`,"views.logs.nothingPersisted":`rien de conservé`,"views.logs.persistedSummary":`{workspace} · {persisted} serveurs sur {total} sur disque · {size}`,"views.logs.persistedTitle":`Journaux conservés`,"views.logs.pickServerDescription":`La sortie conservée et les flux en direct sont par serveur. Choisissez-en un dans la liste.`,"views.logs.pickServerTitle":`Choisir un serveur`,"views.logs.reload":`Recharger`,"views.logs.retentionNote":`La rotation et la rétention se règlent dans Paramètres de l'espace de travail → Journaux.`,"views.logs.searchAria":`Rechercher dans le journal`,"views.logs.searchPlaceholder":`rechercher dans la fenêtre de fin`,"views.logs.searchedLines":`{count} lignes parcourues`,"views.logs.streamAria":`Flux`,"views.logs.tailAria":`Taille de fin`,"views.logs.waitingOutput":`Connecté — en attente de sortie.`,"views.overview.acrossTree":`dans tout l'arbre`,"views.overview.cpuNow":`{value} % de CPU maintenant`,"views.overview.crashedOrUnhealthy":`plantés ou en panne`,"views.overview.description":`État en direct de chaque serveur de cet espace de travail, rafraîchi par un seul flux d'événements.`,"views.overview.emptyDescription":`Ajoutez le premier processus que cet espace de travail doit maintenir en vie.`,"views.overview.emptyTitle":`Aucun serveur dans cet espace de travail`,"views.overview.enabled":`{count} activés`,"views.overview.longestUptime":`Plus longue durée de fonctionnement`,"views.overview.needsAttention":`Demande attention`,"views.overview.notUp":`{count} non démarrés`,"views.overview.nothingBroken":`rien n'est cassé`,"views.overview.nothingRunning":`rien ne tourne`,"views.overview.openFullList":`Ouvrir la liste complète`,"views.overview.peak":`pic {value}`,"views.overview.processMemory":`Mémoire des processus`,"views.overview.recentActivity":`Activité récente`,"views.overview.running":`En cours`,"views.overview.sampling":`l'historique des ressources est échantillonné toutes les 5 s et conservé pour cette session`,"views.overview.stopped":`Arrêté`,"views.overview.workspaceLabel":`espace de travail {id}`,"views.route.server":`Serveur`,"views.serverDetail.allServers":`Tous les serveurs`,"views.serverDetail.autostart":`Démarrer avec le panneau`,"views.serverDetail.backToServers":`Retour aux serveurs`,"views.serverDetail.bind":`Liaison`,"views.serverDetail.bindCustom":`{bind} — personnalisé`,"views.serverDetail.bindLan":`0.0.0.0 — toutes les interfaces`,"views.serverDetail.bindLocal":`127.0.0.1 — cette machine uniquement`,"views.serverDetail.closeEditor":`Fermer l'éditeur`,"views.serverDetail.copyJson":`Copier la configuration JSON`,"views.serverDetail.crashes24":`plantages sur 24 h`,"views.serverDetail.dependencies":`Dépendances`,"views.serverDetail.detached":`détaché`,"views.serverDetail.detachedHint":`Ce processus s'est remplacé lui-même : le panneau a adopté le successeur au lieu de démarrer un second exemplaire. L'arrêt fonctionne toujours et sa sortie reste là où le successeur l'a envoyée.`,"views.serverDetail.disableServer":`Désactiver le serveur`,"views.serverDetail.editHint":`Modifier chaque champ de cette entrée`,"views.serverDetail.effectiveConfig":`Configuration effective`,"views.serverDetail.effectiveConfigNote":`Les valeurs par défaut des paramètres sont déjà fusionnées dans ces valeurs.`,"views.serverDetail.enableServer":`Activer le serveur`,"views.serverDetail.eventHistory":`Historique des événements`,"views.serverDetail.eventHistoryNote":`Conservé par le panneau pendant 24 heures.`,"views.serverDetail.fieldArgs":`args`,"views.serverDetail.fieldBackupPaths":`chemins de sauvegarde`,"views.serverDetail.fieldBootstrap":`bootstrap`,"views.serverDetail.fieldCommand":`commande`,"views.serverDetail.fieldCwd":`cwd`,"views.serverDetail.fieldDataEnvs":`envs de données`,"views.serverDetail.fieldDependsOn":`dépend de`,"views.serverDetail.fieldEnv":`env`,"views.serverDetail.fieldEnvFile":`fichier d'env`,"views.serverDetail.fieldHealth":`santé`,"views.serverDetail.fieldLogBuffer":`tampon de journal`,"views.serverDetail.fieldOnPortConflict":`en cas de conflit de port`,"views.serverDetail.fieldPortBind":`port · liaison`,"views.serverDetail.fieldRestart":`redémarrage`,"views.serverDetail.fieldRssLimit":`limite RSS`,"views.serverDetail.fieldStop":`arrêt`,"views.serverDetail.fields":`Champs`,"views.serverDetail.goneDescription":`{id} n'est plus dans servers.config.json. Il a peut-être été retiré depuis un autre onglet.`,"views.serverDetail.goneTitle":`Ce serveur a disparu`,"views.serverDetail.health":`Santé`,"views.serverDetail.healthProbe":`Sonde de santé`,"views.serverDetail.lastCrash":`Dernier plantage`,"views.serverDetail.lastProbe":`Dernière sonde`,"views.serverDetail.logBufferLines":`{count} lignes`,"views.serverDetail.memoryRss":`Mémoire (RSS)`,"views.serverDetail.moreActions":`Autres actions pour {label}`,"views.serverDetail.neverWritten":`Ce serveur n'a encore rien écrit.`,"views.serverDetail.nextAttempt":`Prochaine tentative`,"views.serverDetail.none":`aucun`,"views.serverDetail.off":`arrêté`,"views.serverDetail.persistent":`persistant`,"views.serverDetail.persistentHint":"Cette entrée tourne sous sa propre nounou : elle continue quand le panneau s'arrête, redémarre ou est tué. `home-hosted down` la signale au lieu de l'arrêter ; seul Arrêter le fait.","views.serverDetail.pid":`PID`,"views.serverDetail.portFree":`libre`,"views.serverDetail.portInUse":`occupé`,"views.serverDetail.portState":`État du port`,"views.serverDetail.probeFailed":`La sonde de santé n'a pas réussi.`,"views.serverDetail.probeFailedFor":`La sonde de santé n'a pas réussi depuis {duration}.`,"views.serverDetail.processes":`Processus`,"views.serverDetail.rawJson":`JSON brut`,"views.serverDetail.removeAutostart":`Retirer du démarrage auto`,"views.serverDetail.removeDescription":`{label} est retiré de servers.config.json : son processus est arrêté, et ses journaux et son historique de plantages sont supprimés avec lui.`,"views.serverDetail.removeNote":`Cette action est irréversible depuis le panneau — l'entrée doit être rajoutée à la main ou depuis une sauvegarde.`,"views.serverDetail.removeServer":`Supprimer le serveur`,"views.serverDetail.removeTitle":`Supprimer ce serveur ?`,"views.serverDetail.restart":`Redémarrer`,"views.serverDetail.restarts":`Redémarrages`,"views.serverDetail.sectionConfig":`Configuration`,"views.serverDetail.sectionHistory":`Historique`,"views.serverDetail.sectionOutput":`Sortie en direct`,"views.serverDetail.start":`Démarrer`,"views.serverDetail.startsOnItsOwn":`Démarre tout seul. Ajoutez des ids sous {code} pour le placer après d'autres serveurs.`,"views.serverDetail.stop":`Arrêter`,"views.serverDetail.telemetry":`Télémétrie`,"views.serverDetail.telemetryNote":`Échantillonnée toutes les 5 s tant que cette page est ouverte.`,"views.serverDetail.unhealthyFor":`En panne depuis`,"views.serverDetail.uptime24":`activité sur 24 h`,"views.serverDetail.waitingFirstLine":`En attente de la première ligne…`,"views.servers.clearFilter":`Effacer le filtre`,"views.servers.clearFilters":`Effacer les filtres`,"views.servers.description":`Chaque entrée du servers.config.json de {workspace}, avec ressources en direct, santé et historique.`,"views.servers.emptyDescription":`Ajoutez le premier processus que ce panneau doit superviser. Sa commande, ses arguments, son env et son répertoire de travail vivent tous dans le fichier de configuration.`,"views.servers.emptyTitle":`Aucun serveur configuré`,"views.servers.filterAll":`Tous`,"views.servers.filterAria":`Filtrer les serveurs`,"views.servers.filterAttention":`Attention`,"views.servers.filterDisabled":`Désactivés`,"views.servers.filterPlaceholder":`Filtrer par id, libellé, commande ou port`,"views.servers.filterRunning":`En cours`,"views.servers.filterStopped":`Arrêtés`,"views.servers.noMatchDescription":`Essayez un autre état ou effacez la recherche.`,"views.servers.noMatchTitle":`Rien ne correspond à ce filtre`,"views.settings.changesDescription":`Ce qu'Enregistrer écrirait dans les paramètres de {workspace}.`,"views.settings.configErrorNote":`Le panneau continue de superviser avec la configuration qu'il avait ; corriger le fichier le recharge tout seul.`,"views.settings.configErrorTitle":`La configuration de l'espace de travail est illisible`,"views.settings.configWarningTitle":`La configuration de cet espace de travail comporte un avertissement`,"views.settings.ddnsDescription":`Gardez les noms d'hôte pointés vers l'adresse publique de cette machine, quel que soit le registrar qui les détient.`,"views.settings.defaultsDescription":`Appliquées à chaque entrée de cet espace de travail qui ne définit pas sa propre valeur.`,"views.settings.description":`Valeurs par défaut des serveurs, rétention des journaux, notifications et DNS dynamique pour {workspace}.`,"views.settings.logsDescription":`Combien de sortie cet espace de travail garde sur disque et pendant combien de temps.`,"views.settings.navLabel":`Sections des paramètres de l'espace de travail`,"views.settings.notificationsDescription":`Alertes de plantage et de santé pour cet espace de travail, envoyées à un chat Telegram.`,"views.settings.saveFailed":`Les paramètres n'ont pas pu être enregistrés.`,"views.settings.saved":`Paramètres de l'espace de travail enregistrés.`,"views.settings.savedToast":`Paramètres de l'espace de travail enregistrés`,"views.settings.sectionDdns":`DNS dynamique`,"views.settings.sectionDefaults":`Valeurs par défaut des serveurs`,"views.settings.sectionLogs":`Journaux`,"views.settings.sectionNotifications":`Notifications`,"workspace.new":`Nouvel espace de travail`,"workspace.rename":`Renommer l'espace de travail`,"workspace.create":`Créer l'espace de travail`,"workspace.renameAction":`Renommer`,"workspace.createHint":`Ses propres paramètres, serveurs, journaux, secrets et entrée de sauvegarde — servis par ce même panneau.`,"workspace.renameHint":`Seul le nom change ; l'id de l'espace de travail reste, donc les URL et les chemins continuent de fonctionner.`,"workspace.nameHint":`Affiché dans la barre supérieure.`,"workspace.nameHintId":`Affiché dans la barre supérieure. Id : {id}`,"workspace.none":`Aucun espace de travail`,"workspace.delete":`Supprimer l'espace de travail`,"days.remaining":{one:`{count} jour`,other:`{count} jours`},"editor.unsaved":{one:`modification non enregistrée`,other:`modifications non enregistrées`},"editor.saveChanges":{one:`Enregistrer {count} modification`,other:`Enregistrer {count} modifications`},"logs.lines":{one:`{count} ligne`,other:`{count} lignes`},"palette.results":{one:`{count} résultat`,other:`{count} résultats`},"proxy.retry.inMinutes":{one:`~{count} minute`,other:`~{count} minutes`},"proxy.retry.inHours":{one:`~{count} heure`,other:`~{count} heures`},"servers.total":{one:`{count} serveur`,other:`{count} serveurs`},"servers.running":{one:`{count} en cours`,other:`{count} en cours`},"settings.backup.entriesCount":{one:`{count} entrée`,other:`{count} entrées`},"settings.backup.itemsSelected":{one:`{count} élément sélectionné`,other:`{count} éléments sélectionnés`},"settings.ddns.hostnameCount":{one:`{count} nom d'hôte`,other:`{count} noms d'hôte`},"settings.shell.fieldsChanged":{one:`champ modifié`,other:`champs modifiés`},"settings.shell.saveChanges":{one:`Enregistrer {count} modification`,other:`Enregistrer {count} modifications`},"views.globalOverview.needLook":{one:`{count} serveur à surveiller`,other:`{count} serveurs à surveiller`},"views.logs.filesOnDisk":{one:`{count} fichier`,other:`{count} fichiers`},"views.overview.needLook":{one:`{count} serveur à surveiller`,other:`{count} serveurs à surveiller`}};export{e as default};