{
  "openSourceLicenses.title": "Licences open source",
  "openSourceLicenses.description": "Logiciels et polices open source utilisés par ce produit, crédités selon leurs licences.",
  "openSourceLicenses.chartsDescription": "Moteur de graphiques. TradingView Lightweight Charts™ est protégé par le droit d'auteur de TradingView, Inc.",
  "openSourceLicenses.fontDescription": "Police de l'interface.",
  "openSourceLicenses.uiDescription": "Base de composants d'interface sans style.",
  "apiKeyPool.title": "Pool de clés {{provider}}",
  "apiKeyPool.manage": "Gérer les clés",
  "apiKeyPool.importTitle": "Import en lot",
  "apiKeyPool.importHint": "Une clé par ligne ; nom après tabulation, virgule ou barre verticale. Tableaux JSON acceptés.",
  "apiKeyPool.invalidImport": "Lignes invalides : {{lines}}. Aucun import.",
  "apiKeyPool.limit": "Limite de clés : {{count}}",
  "apiKeyPool.summary": "Disponibles : {{ready}} / Total : {{total}}",
  "apiKeyPool.remaining": "Caractères restants estimés",
  "apiKeyPool.runUsage": "Requêtes sur la période : {{requests}} ; caractères facturés confirmés : {{billed}} ; sans justificatif : {{unknown}}.",
  "apiKeyPool.policy": "Rotation des clés disponibles, selon les délais et les quotas réservés.",
  "apiKeyPool.check": "Vérifier la clé",
  "apiKeyPool.checkAll": "Vérifier toutes les clés",
  "apiKeyPool.search": "Rechercher un nom ou un endpoint",
  "apiKeyPool.disabled": "Désactivée",
  "apiKeyPool.cooldown": "En attente",
  "apiKeyPool.duplicate": "Cette clé est déjà dans le pool.",
  "apiKeyPool.invalidConfig": "Vérifiez les noms, les clés et les URL officielles de l’API.",
  "apiKeyPool.quotaBlocked": "Quota indisponible",
  "apiKeyPool.usageScope": "Les requêtes métier sont conservées 30 jours ; l’usage du fournisseur suit sa période de facturation.",
  "apiKeyPool.usageUnavailable": "Les relevés d’usage métier sont temporairement indisponibles.",
  "taskResult.rawOutput": "Sortie brute",
  "recordViews.userAccounts": "Comptes",
  "recordViews.userEntitled": "Accès actif",
  "recordViews.userDisabled": "Comptes désactivés",
  "recordViews.securityDescription": "Analyser l'activité de connexion et les actions des administrateurs par type d'enregistrement.",
  "recordViews.recentNotifications": "Les 50 dernières notifications enregistrées",
  "recordViews.userCountsError": "Les statistiques d'utilisateurs n'ont pas pu être actualisées ; les chiffres affichés sont peut-être obsolètes.",
  "recordViews.notificationHistory": "Historique des notifications",
  "recordViews.securityRecords": "Dossiers de sécurité",
  "recordViews.query": "Explorateur de l'histoire",
  "recordViews.settings": "Gestion des documents",
  "processing.status.newsTitle": "Traitement des détails de l'annonce",
  "processing.status.ingestConnected": "Connexions aux collections en ligne",
  "processing.status.title": "Traitement en temps réel",
  "processing.status.snapshotUnavailable": "Aperçu d'exécution indisponible ; les paramètres restent disponibles.",
  "processing.status.computeWaiting": "En attente du premier calcul",
  "processing.status.computeWaitingDetail": "Intervalle de calcul : {{interval}} ms ; aucun résultat n'a encore été validé.",
  "processing.status.computeRecorded": "Calcul enregistré",
  "processing.status.computeOverrun": "Le dernier calcul a dépassé son intervalle",
  "processing.status.computeSample": "Dernier calcul {{duration}} ms ; intervalle de calcul {{interval}} ms.",
  "processing.status.publishIdle": "Aucun flux de publication",
  "processing.status.publishIdleDetail": "Sessions associées : {{sessions}} ; il n'y a pas de flux de publication.",
  "processing.status.publishWaiting": "En attente d'une première publication",
  "processing.status.publishWaitingDetail": "Flux de publication {{streams}}, sessions connectées {{sessions}} ; aucune publication n'a encore été enregistrée.",
  "processing.status.publishRecorded": "Publication enregistrée",
  "processing.status.publishSample": "Flux de publication {{streams}}, sessions connectées {{sessions}} ; dernier lot de publication du serveur {{duration}} ms.",
  "processing.status.dataTitle": "Services de données",
  "processing.status.ingestCounts": "Connecté {{connected}}, dégradé {{degraded}}, interrompu {{disconnected}}, en pause {{paused}}.",
  "processing.status.historyAccess": "Pour toute question : {{readable}} ; enregistrement : {{recording}}.",
  "processing.status.readable": "disponible",
  "processing.status.unreadable": "indisponible",
  "processing.status.historyLatest": "Dernières données historiques : {{time}}.",
  "processing.status.historyProtected": "L'écriture de l'histoire a suscité une réaction de défense et mérite qu'on s'y intéresse.",
  "processing.status.historyWriteIssue": "La rédaction de l'histoire s'en trouve affectée. Consultez les données historiques ouvertes pour plus de détails.",
  "processing.status.historyWriting": "Les données d'historique sont en cours d'écriture.",
  "processing.status.newsUnavailable": "Le traitement des détails de l'annonce n'est pas disponible. Ouvrez la gestion des annonces.",
  "processing.status.newsActivity": "Traitement de {{active}}, en attente de {{waiting}}.",
  "processing.status.newsIdle": "Le traitement des détails est terminé. Ouvrez la gestion des annonces pour consulter l'état de la collecte des sources.",
  "processing.status.newsProcessing": "Traitement",
  "processing.collectionCredentialsRequired": "Configurer les identifiants d'accès aux données de marché",
  "processing.collectionWaiting": "En attente de données de marché valides",
  "processing.collectionInterrupted": "Interruption de la collecte des données de marché",
  "processing.collectionDegraded": "Certaines données de marché sont concernées",
  "processing.pause": "Pause",
  "processing.latestData": "Dernières données",
  "processing.instruments": "Instruments",
  "processing.title": "Traitement en temps réel",
  "processing.ingestTitle": "Données de marché",
  "processing.operation": "Fonctionnement",
  "processing.groups.cadence": "Calcul et publication",
  "processing.groups.validity": "Validité du devis",
  "processing.groups.connection": "Paramètres de connexion",
  "processing.descriptions.cadence": "Configurez séparément la cadence de calcul et celle de publication. Les modifications sont prises en compte dès leur enregistrement.",
  "processing.descriptions.validity": "Déterminer la validité en fonction de la fraîcheur des cotations, du calendrier des échéances et des limites de l'écart.",
  "processing.descriptions.connection": "La période de pulsation permet de vérifier que la connexion est active. Les modifications sont prises en compte au prochain démarrage du service.",
  "processing.fields.batch": "Intervalle de calcul",
  "processing.fields.publish": "Intervalle minimal entre deux publications",
  "processing.fields.delta": "Différence maximale de temps entre les étapes",
  "processing.fields.stale": "Date d'expiration du devis",
  "processing.fields.spread": "Écart absolu maximal",
  "processing.fields.ping": "Période de pulsation de la connexion",
  "processing.effective": "{{value}}s utiles {{unit}}",
  "processing.pending": "Enregistré, en attente de redémarrage · {{value}} actuel {{unit}}",
  "processing.unavailable": "Ce service ne propose pas ce paramètre.",
  "processing.invalid": "Saisissez une adresse {{field}} valide comprise entre {{min}} et {{max}} {{unit}}.",
  "processing.deltaLimit": "La différence maximale entre les dates des jambes ne peut pas dépasser la date d'expiration du contrat.",
  "processing.conflict": "Ces paramètres ont été modifiés ailleurs. Votre brouillon a été conservé. Vérifiez les valeurs actuelles avant d'enregistrer à nouveau.",
  "processing.restartPending": "Certains paramètres nécessitent un redémarrage",
  "processing.restartDescription": "Le calcul, la publication et la validité du devis prennent effet immédiatement. La période de « heartbeat » s'applique dès le prochain démarrage du service.",
  "processing.saved": "Paramètres enregistrés",
  "processing.applied": "Les paramètres ont été appliqués.",
  "processing.savedAt": "Enregistré {{time}}",
  "processing.running": "Course à pied",
  "processing.notPublished": "Pas encore de publication",
  "processing.publishSummary": "Liens {{sessions}} · Dernière publication {{duration}} ms",
  "processing.computeSummary": "Dernier calcul : {{duration}} ms",
  "processing.readAt": "Lire « {{time}} »",
  "processing.collection": "État du recouvrement",
  "processing.settings": "Paramètres d'Exchange",
  "processing.quotes": "Citations",
  "processing.affected": "Citations concernées",
  "processing.publishUnknown": "Statut de publication : indisponible",
  "common.back": "Retour",
  "common.numericDraft.invalid": "Saisissez un nombre valide.",
  "common.numericDraft.grouping": "Utilisez un point décimal sans séparateur de milliers.",
  "common.numericDraft.integer": "Saisissez un nombre entier.",
  "common.numericDraft.precision": "Utilisez au plus {{digits}} décimales.",
  "common.numericDraft.min": "Saisissez une valeur d'au moins {{min}}.",
  "common.numericDraft.max": "Saisissez une valeur d'au plus {{max}}.",
  "common.numericDraft.required": "Ce champ est obligatoire.",
  "common.language": "Langue",
  "common.discardChanges": "Ignorer les modifications",
  "common.cancel": "Annuler",
  "common.confirm": "Confirmer",
  "common.close": "Fermer",
  "common.closeNavigation": "Fermer la navigation",
  "common.retry": "Réessayer",
  "common.reapply": "Postuler à nouveau",
  "common.save": "Enregistrer",
  "common.saving": "Enregistrement en cours…",
  "common.loading": "Chargement en cours…",
  "common.readError": "Échec de la lecture",
  "common.subscriptionRequired": "Votre abonnement a expiré. Renouvelez-le pour continuer à consulter ces informations.",
  "common.sessionExpired": "Votre session a expiré. Reconnectez-vous et réessayez.",
  "common.rateLimited": "Nombre de requêtes trop élevé. Veuillez réessayer dans quelques instants.",
  "common.unrecognizedValue": "Non reconnu ({{value}})",
  "common.moduleError.retryMessage": "Ce module est temporairement indisponible.",
  "common.moduleError.namedRetryMessage": "{{title}} est temporairement indisponible.",
  "common.snapshot.retained": "L'actualisation a échoué. Le dernier instantané réussi reste visible.",
  "common.snapshot.retainedWithError": "Échec de l'actualisation. Le dernier instantané réussi reste visible : {{error}}",
  "common.feedback.toastRegion": "Retour d'action",
  "common.permissionDenied": "Ce compte n'est pas autorisé à consulter ces données.",
  "common.enabled": "Activé",
  "common.disabled": "Désactivé",
  "common.missingValue": "Aucune donnée",
  "common.showPassword": "Afficher le mot de passe",
  "common.hidePassword": "Masquer le mot de passe",
  "common.showValue": "Afficher «{{label}} »",
  "common.hideValue": "Masquer l'{{label}}",
  "common.secret": "secret",
  "common.selectPlaceholder": "Sélectionnez une option",
  "common.unknownOption": "Option inconnue : {{value}}",
  "common.optionsAria": "{{label}} options",
  "common.detailsAria": "Informations sur « {{label}} »",
  "common.statusLabel.healthy": "En bonne santé",
  "common.statusLabel.active": "En cours",
  "common.statusLabel.warning": "Dégradé",
  "common.statusLabel.error": "Échec",
  "common.statusLabel.idle": "Au ralenti",
  "common.statusLabel.stale": "Données obsolètes",
  "common.statusLabel.offline": "Hors ligne",
  "common.statusLabel.unknown": "Inconnu",
  "common.skipToMain": "Aller directement au contenu principal",
  "common.tableSort.idle": "{{label}} ; cliquez pour trier",
  "common.tableSort.active": "{{label}} ; actuellement {{current}} ; cliquez ici pour accéder à {{next}}",
  "common.tableSort.ascending": "ascendant",
  "common.tableSort.descending": "décroissant",
  "common.sortable.targetPosition": "position cible",
  "common.sortable.dragStart": "J'ai récupéré « {{item}} ». Utilisez les touches fléchées pour choisir une nouvelle position.",
  "common.sortable.dragOverInvalid": "{{item}} ne se trouve pas sur une case valide.",
  "common.sortable.dragOverSame": "{{item}} se trouve toujours à son emplacement d'origine.",
  "common.sortable.dragOver": "{{item}} est désormais disponible sur {{target}}.",
  "common.sortable.dragEndSame": "{{item}} n'a pas été déplacé.",
  "common.sortable.dragEnd": "{{item}} a été déplacé vers {{target}}.",
  "common.sortable.dragCancel": "{{item}} de déménagement annulés.",
  "common.pagination.first": "Tout d'abord",
  "common.pagination.previous": "Précédent",
  "common.pagination.next": "Suivant",
  "common.pagination.last": "Dernier",
  "common.pagination.firstPage": "Déjà en première page.",
  "common.pagination.lastPage": "On en est déjà à la dernière page.",
  "common.chartData.points": "{{count}} points",
  "common.chartData.pageAria": "{{label}}, page {{page}}",
  "common.chartData.caption": "{{label}} contient {{total}} points ; affiche actuellement les points {{start}} à {{end}}.",
  "common.chartData.pageStatus": "Page {{page}}/{{pageCount}} · {{start}}–{{end}}/{{total}}",
  "common.chartData.paginationAria": "{{label}} pagination",
  "common.chartData.actionsAria": "Opérations sur les graphiques",
  "common.dataTable.scrollRegion": "{{label}} zone de défilement",
  "common.lazyRegion.unavailable": "Cette rubrique est temporairement indisponible",
  "common.transportClose.payloadOverload": "Les données du navigateur ont été sauvegardées ; reconnexion en cours",
  "common.transportClose.invalidPayload": "Échec de la validation de la séquence de données en temps réel ; reconnexion en cours",
  "common.transportClose.protocolMismatch": "Incompatibilité de version du protocole en temps réel ; actualisez la page",
  "common.transportClose.unauthorized": "Votre session a expiré ; veuillez vous reconnecter",
  "common.transportClose.forbidden": "Ce compte ne peut plus maintenir la connexion en direct ; veuillez contacter un administrateur ou vérifier votre abonnement.",
  "common.transportClose.abnormal": "La connexion en direct s'est interrompue de manière inattendue ; reconnexion en cours",
  "common.workspaceSettings.loadFailed": "Impossible de charger les paramètres du compte.",
  "common.workspaceSettings.reloadFailed": "Impossible d'actualiser les paramètres du compte.",
  "common.workspaceSettings.templateConflict": "Les modèles de conditions ont été modifiés sur une autre page. Choisissez la version que vous souhaitez conserver.",
  "common.workspaceSettings.saveFailed": "Les paramètres du compte n'ont pas pu être enregistrés.",
  "common.workspaceSettings.saveUnconfirmed": "L'enregistrement n'a pas pu être validé. Vérifiez votre connexion et réessayez.",
  "common.workspaceSettings.saveRetry": "Impossible d'enregistrer les paramètres du compte. Veuillez réessayer.",
  "common.overlayResize.title": "Faites glisser pour redimensionner ; double-cliquez, appuyez sur Entrée ou sur la barre d'espace pour rétablir la largeur par défaut.",
  "common.overlayResize.aria": "Redimensionnez le panneau ; appuyez sur Entrée ou sur la barre d'espace pour rétablir la largeur par défaut",
  "common.overlayResize.defaultWidth": "Largeur par défaut",
  "common.overlayResize.widthPixels": "{{value}} pixels",
  "common.route.openingPage": "Page d'accueil…",
  "common.route.openingAccount": "Ouverture d'un compte…",
  "common.route.unavailableSr": "Page temporairement indisponible",
  "common.route.openFailed": "Cette page n'a pas pu être ouverte",
  "common.route.recoveringTitle": "Récupération de la page",
  "common.route.recoveringMessage": "Ce module est temporairement indisponible et se remet automatiquement en service.",
  "common.route.retryMessage": "Ce module n'est toujours pas disponible. Vous pouvez réessayer d'accéder à la page actuelle.",
  "common.route.bootstrapFailed": "L'application n'a pas pu démarrer",
  "common.route.loginUnavailableAria": "La page de connexion est temporairement indisponible",
  "common.route.loadException": "La page est temporairement indisponible.",
  "common.route.authUnavailable": "Le service d'authentification est temporairement indisponible",
  "common.route.backToMonitor": "Retour à l'écran",
  "common.route.openInNewTab": "Ouvrir dans un nouvel onglet",
  "common.route.reload": "Actualiser",
  "common.route.notFoundTitle": "Page introuvable",
  "common.route.notFoundDescription": "Vérifiez l'adresse ou revenez à la page de suivi.",
  "common.localeName.zh-CN": "Chinois",
  "common.localeName.en": "Anglais",
  "common.systemState.healthy": "En bonne santé",
  "common.systemState.disabled": "Personnes en situation de handicap",
  "common.systemState.paused": "En pause",
  "common.systemState.starting": "Début",
  "common.systemState.adapting": "S'adapter",
  "common.systemState.verifying": "Vérification",
  "common.systemState.recordingStopped": "L'enregistrement s'est arrêté",
  "common.systemState.recovering": "En voie de rétablissement",
  "common.systemState.warmingUp": "Échauffement",
  "common.systemState.degraded": "Dégradé",
  "common.systemState.disconnected": "Déconnecté",
  "common.systemState.unavailable": "Indisponible",
  "common.systemState.unknown": "Inconnu",
  "common.ui.matches": "Correspondances",
  "common.ui.state": "État",
  "common.ui.queryFailed": "Échec de la requête",
  "common.ui.applyingChanges": "Appliquer les modifications",
  "common.ui.availableExchanges": "Bourses disponibles",
  "common.ui.spotTurnover": "Chiffre d'affaires au comptant",
  "common.ui.perpetualTurnover": "Volume d'échanges perpétuel",
  "common.ui.openInterest": "Valeur notionnelle des positions ouvertes (USD)",
  "common.ui.noMinimum": "Pas de seuil minimum",
  "common.ui.excludedExchanges": "Bourses exclues",
  "common.ui.excludedCombinations": "Combinaisons exclues",
  "common.ui.excludedMarkets": "Marchés exclus",
  "common.ui.viewFilters": "Filtres de vue",
  "common.ui.assetSearch": "Recherche d'actifs",
  "common.ui.useCurrentView": "Utiliser la vue actuelle",
  "common.ui.liquidityPerLeg": "Liquidité par jambe",
  "common.ui.listOptions": "Options de la liste",
  "common.ui.sectionHelp": "Aide sur {{title}}",
  "common.ui.displayProperties": "Propriétés d'affichage",
  "common.ui.reset": "Réinitialiser",
  "common.ui.ordering": "Tri",
  "common.ui.direction": "Direction",
  "common.ui.sortDirection": "Sens de tri",
  "common.ui.descending": "Par ordre décroissant",
  "common.ui.ascending": "Par ordre croissant",
  "common.ui.asset": "Actif",
  "common.ui.spotBasis": "Base au comptant",
  "common.ui.spread": "Spread",
  "common.ui.highestPositiveRate": "Taux positif le plus élevé",
  "common.ui.lowestNegativeRate": "Taux négatif le plus bas",
  "common.ui.matrixOptions": "Options de la matrice",
  "common.ui.rateNormalization": "Normalisation des taux",
  "common.ui.period": "Période",
  "common.ui.exchanges": "Bourses",
  "common.ui.search": "Recherche",
  "common.ui.clear": "Effacer",
  "common.ui.status": "Statut",
  "common.ui.affected": "Concerne",
  "common.ui.summary": "Résumé",
  "common.ui.instruments": "Instruments",
  "common.ui.excludedStructures": "Structures exclues",
  "common.ui.clearFilters": "Effacer les filtres",
  "common.ui.displayOptions": "Options d'affichage",
  "common.ui.tagLiquidityHelp": "S'applique uniquement à ce tag, à ses alertes et à ses règles Trade. L'absence d'un élément n'est pas interdite ; l'absence de données obligatoires entraîne le rejet.",
  "common.ui.marketExclusionsHelp": "Les exclusions sélectionnées rejettent l'une ou l'autre des jambes, indépendamment de la paire de marchés.",
  "common.ui.volume24h": "Volume des transactions sur 24 heures (USD)",
  "common.ui.excludeStructure": "Exclure {{structure}}",
  "common.ui.unavailableView": "Cette vue n'est pas disponible ou vous n'y avez pas accès. Affichage actuel : « {{name}} ».",
  "common.ui.filter": "Filtre",
  "common.ui.searchFilters": "Filtres de recherche",
  "common.ui.addFilter": "Ajouter un filtre…",
  "common.ui.noMatchingFilters": "Aucun filtre ne correspond",
  "common.languageSearch": "Langues de recherche",
  "common.languageChangeFailed": "Impossible de changer de langue. La langue précédemment sélectionnée est toujours active.",
  "common.languageNoResults": "Aucune correspondance de langue",
  "common.bootstrap.title": "Impossible de charger les modules de la page",
  "common.bootstrap.recovering": "Le service est en cours de rétablissement. Cette page se rechargera dès que ses modules seront disponibles.",
  "common.bootstrap.unavailable": "Les modules de la page ne sont toujours pas disponibles. Vous pouvez actualiser cette page.",
  "common.bootstrap.reload": "Actualiser",
  "common.sidebar.autoHide": "Masquer automatiquement la barre latérale",
  "common.sidebar.keepOpen": "Garder la barre latérale ouverte",
  "pairs.quoteFamilies.title": "Citer des familles",
  "pairs.quoteFamilies.description": "Les titres d'une même famille peuvent être appariés entre eux.",
  "pairs.quoteFamilies.states.loading": "Chargement des familles de devis…",
  "pairs.quoteFamilies.states.unavailable": "Les familles de cotations ne sont pas disponibles",
  "pairs.quoteFamilies.states.empty": "Aucune famille de devis",
  "pairs.quoteFamilies.states.emptyDescription": "Créez la première famille, puis ajoutez-y les éléments de citation qui vont ensemble.",
  "pairs.quoteFamilies.states.noMembers": "Cette famille ne compte aucun membre.",
  "pairs.quoteFamilies.memberCount": "{{count}} membres",
  "pairs.quoteFamilies.itemCount": "{{count}} articles",
  "pairs.quoteFamilies.addToFamily": "Ajouter à {{family}}",
  "pairs.quoteFamilies.addAssetAria": "Ajouter un élément à {{family}}",
  "pairs.quoteFamilies.assetPlaceholder": "Saisissez un actif de cotation, par exemple l'USDT",
  "pairs.quoteFamilies.newFamily.label": "Une nouvelle famille",
  "pairs.quoteFamilies.newFamily.hint": "Le nom est mis en minuscules.",
  "pairs.quoteFamilies.newFamily.aria": "Nouveau nom de famille pour le devis",
  "pairs.quoteFamilies.newFamily.placeholder": "Saisissez un nom de famille, par exemple « usd »",
  "pairs.quoteFamilies.unassigned.columns.asset": "Cotation d'un actif",
  "pairs.quoteFamilies.unassigned.columns.markets": "Marchés",
  "pairs.quoteFamilies.unassigned.columns.actions": "Ajouter à la famille",
  "pairs.quoteFamilies.unassigned.title": "Éléments de devis non attribués",
  "pairs.quoteFamilies.unassigned.aria": "Éléments de devis non attribués",
  "pairs.quoteFamilies.unassigned.noMarkets": "Pas de marchés",
  "pairs.quoteFamilies.unassigned.empty": "Chaque titre dont le cours est observé est attribué.",
  "pairs.quoteFamilies.unassigned.description": "Un élément non attribué ne peut être associé qu'à un élément exactement identique. L'ajouter à une famille permet de le coupler au niveau de la famille.",
  "pairs.quoteFamilies.actions.deleteFamily": "Supprimer la famille de devis « {{family}} »",
  "pairs.quoteFamilies.actions.moveUnassigned": "Déplacer « {{coin}} » vers « Non attribué »",
  "pairs.quoteFamilies.actions.addMember": "Ajouter un membre",
  "pairs.quoteFamilies.actions.createFamily": "Créer une famille",
  "pairs.quoteFamilies.actions.return": "Retour",
  "pairs.quoteFamilies.actions.add": "Ajouter",
  "pairs.quoteFamilies.actions.returnAssetAria": "Renvoyez « {{asset}} » à {{family}}",
  "pairs.quoteFamilies.actions.addAssetToFamilyAria": "Ajouter {{asset}} à {{family}}",
  "pairs.quoteFamilies.actions.restoreDefaults": "Rétablir les paramètres par défaut",
  "pairs.quoteFamilies.actions.discard": "Ignorer les modifications",
  "pairs.quoteFamilies.announcements.removedMember": "{{coin}} Déplacé de « {{family}} » vers « non attribué ».",
  "pairs.quoteFamilies.announcements.addedMember": "{{coin}} ajouté à {{family}}.",
  "pairs.quoteFamilies.announcements.deletedFamily": "{{count}} Les membres de « {{family}} » ont été déplacés vers la catégorie « Non attribué ».",
  "pairs.quoteFamilies.announcements.defaultsLoaded": "La version préliminaire par défaut de la famille de guillemets est chargée.",
  "pairs.quoteFamilies.disabled.saving": "Les devis sont en cours de sauvegarde. Veuillez patienter jusqu'à la fin de l'opération.",
  "pairs.quoteFamilies.disabled.unchanged": "Les familles de devis ne comportent aucune modification non enregistrée.",
  "pairs.quoteFamilies.errors.title": "Échec de l'action",
  "pairs.quoteFamilies.errors.load": "Les familles de devis n'ont pas pu être chargées ; ces paramètres ne constituent donc pas une configuration validée.",
  "pairs.quoteFamilies.errors.previewConflict": "Un autre administrateur a mis à jour la configuration. Votre brouillon a été conservé ; comparez-le avec la dernière version et affichez à nouveau l'aperçu.",
  "pairs.quoteFamilies.errors.preview": "L'aperçu de la famille de devis a échoué. Aucune demande n'a été envoyée.",
  "pairs.quoteFamilies.errors.saveConflict": "Un autre administrateur a enregistré en premier. Votre brouillon a été conservé ; comparez-le avec la dernière version et prévisualisez-le à nouveau.",
  "pairs.quoteFamilies.errors.save": "Les familles de devis n'ont pas pu être enregistrées, et le backend n'a pas validé la mise à jour en temps réel.",
  "pairs.quoteFamilies.confirm.title": "Valider les modifications apportées à la famille de devis",
  "pairs.quoteFamilies.confirm.description": "Cette modification supprime les paires « {{removed}} » et ajoute les paires « {{added}} » ({{net}} net). Elle prend effet immédiatement dans les tables de surveillance.",
  "pairs.quoteFamilies.confirm.save": "Valider et enregistrer",
  "pairs.matching.title": "Identité et unités",
  "pairs.matching.description": "Identifiant d'appariement en lecture seule, libellés d'affichage et unités.",
  "pairs.matching.help": "Lire la clé d'appariement canonicalAssetId en mémoire, les libellés d'affichage et CMC, les unités de prix et de taille, ainsi que les informations relatives à la durée. Le prix ne détermine jamais l'identité.",
  "pairs.matching.instrumentCount": "{{count}} instruments",
  "pairs.matching.tableAria": "Liste des résolutions des instruments",
  "pairs.matching.status.all": "Tous les statuts",
  "pairs.matching.status.confirmed": "Confirmé",
  "pairs.matching.status.pending": "Décision en attente",
  "pairs.matching.status.conflict": "Conflit",
  "pairs.matching.status.manual": "Fait tiré du manuel",
  "pairs.matching.assetKey.nameFallback": "Correspondance de nom · {{value}}",
  "pairs.matching.term.spot": "Spot",
  "pairs.matching.term.perpetual": "Perpétuel",
  "pairs.matching.term.future": "Contrat à terme à date fixe",
  "pairs.matching.term.futureAt": "Contrat à terme à date fixe · {{time}}",
  "pairs.matching.states.snapshotChanged": "Les données sont en cours de mise à jour. Un résultat cohérent est en cours de restauration.",
  "pairs.matching.states.snapshotMismatch": "Les instantanés du plan de contrôle ne sont pas entièrement synchronisés",
  "pairs.matching.states.epochMismatch": "Liste des époques d'exécution {{list}} ; état des époques d'exécution {{status}}",
  "pairs.matching.states.loading": "Chargement des informations relatives aux identités et aux unités…",
  "pairs.matching.states.listUnavailable": "Identité et liste des unités indisponibles",
  "pairs.matching.states.empty": "Aucun instrument correspondant",
  "pairs.matching.states.emptyDescription": "Modifiez votre recherche ou vos critères de filtrage.",
  "pairs.matching.errors.status": "Impossible de lire l'état d'exécution du résolveur.",
  "pairs.matching.errors.list": "Impossible de lire la liste des identifiants et des unités.",
  "pairs.matching.errors.detail": "Il n'a pas été possible de lire les données relatives à la résolution en temps réel de cet instrument.",
  "pairs.matching.search.toolbarAria": "Rechercher les résolutions des instruments",
  "pairs.matching.search.inputAria": "Rechercher des instruments",
  "pairs.matching.search.placeholder": "Identifiant de l'appareil / clé d'appairage / étiquette de l'écran ou du CMC",
  "pairs.matching.search.statusAria": "Filtre selon l'état de résolution",
  "pairs.matching.columns.instrument": "Instrument / clé de couplage",
  "pairs.matching.columns.display": "Étiquette « Affichage / AssetKey »",
  "pairs.matching.columns.exposure": "Exposition / durée",
  "pairs.matching.columns.priceUnit": "Unité de prix",
  "pairs.matching.columns.sizeUnit": "Unité de mesure",
  "pairs.matching.columns.identity": "Identité",
  "pairs.matching.columns.term": "Terme",
  "pairs.matching.detail.fallbackTitle": "Identification de l'instrument et unités de mesure",
  "pairs.matching.detail.description": "L'appariement s'appuie sur l'identité des ressources locales. Les noms d'affichage et les libellés CMC n'entrent pas en ligne de compte.",
  "pairs.matching.detail.help": "« canonicalAssetId » est la seule clé d'association à l'exécution. « displaySlug », « CMC » et « AssetKey » sont des libellés d'affichage et n'ont qu'une valeur indicative.",
  "pairs.matching.detail.closeAria": "Détails sur l'unité et son effectif",
  "pairs.matching.detail.loading": "Chargement des détails de la résolution…",
  "pairs.matching.detail.unavailable": "Détails de la résolution indisponibles",
  "pairs.matching.pagination.aria": "Pagination selon la résolution de l'instrument",
  "pairs.matching.pagination.status": "Page {{page}} / {{pages}} · {{total}} au total",
  "pairs.matching.pagination.updating": "La liste est en cours de mise à jour.",
  "pairs.matching.runtime.loading": "Chargement d'un instantané d'exécution…",
  "pairs.matching.runtime.unavailable": "Instantané d'exécution indisponible",
  "pairs.matching.runtime.aria": "Résumé de l'exécution de la résolution",
  "pairs.matching.runtime.epoch": "Époque d'exécution : {{epoch}}",
  "pairs.matching.runtime.total": "{{count}}s totales",
  "pairs.matching.runtime.pending": "{{count}} en attente",
  "pairs.matching.runtime.conflicts": "Conflits {{count}}",
  "pairs.matching.runtime.manual": "Informations sur le manuel {{count}}",
  "pairs.matching.runtime.pairable": "{{count}}s compatibles",
  "pairs.matching.row.expand": "Développer « {{instrument}} »",
  "pairs.matching.row.collapse": "Réduire {{instrument}}",
  "pairs.matching.facts.canonicalAssetId": "canonicalAssetId (clé d'appariement)",
  "pairs.matching.facts.displaySlug": "displaySlug (affichage)",
  "pairs.matching.facts.assetKey": "AssetKey / Label CMC",
  "pairs.matching.facts.runtimeEpoch": "époque d'exécution",
  "pairs.matching.facts.representation": "représentation",
  "pairs.matching.facts.exposureTerm": "Exposition / durée",
  "pairs.matching.facts.listingIncarnation": "liste des incarnations",
  "pairs.matching.facts.discoveryFingerprint": "empreinte de découverte",
  "pairs.matching.facts.priceUnit": "Unité de prix",
  "pairs.matching.facts.sizeUnit": "Unité de mesure",
  "pairs.matching.facts.unitEffectiveFrom": "Unité en vigueur à compter du",
  "pairs.matching.facts.identitySource": "Source d'identité",
  "pairs.matching.facts.identityReason": "Base d'identité",
  "pairs.matching.facts.unitSource": "Source de l'unité",
  "pairs.matching.facts.revisions": "preuve / sémantique / révision d'unité",
  "pairs.matching.evidence.title": "Justificatifs d'identité",
  "pairs.matching.evidence.empty": "Aucune information d'identité",
  "pairs.matching.evidence.emptyDescription": "Aucune information d'identité pour l'instant.",
  "pairs.matching.evidence.tableAria": "Liste des éléments d'identité",
  "pairs.matching.evidence.source": "Source",
  "pairs.matching.evidence.reference": "Référence",
  "pairs.matching.evidence.observedAt": "Observé à",
  "pairs.overview.title": "Présentation des paires de devises",
  "pairs.overview.unsaved": "Non enregistré",
  "pairs.overview.pairCount": "{{count}} paires",
  "pairs.overview.states.loading": "Chargement des informations sur les paires de devises…",
  "pairs.overview.states.unavailable": "Aperçu de la paire de devises indisponible",
  "pairs.overview.states.loadFailed": "Impossible de charger les informations sur les paires de devises. Veuillez réessayer.",
  "pairs.overview.metrics.activePairs": "Paires actives",
  "pairs.overview.metrics.activeInstruments": "Instruments actifs",
  "pairs.overview.discovery.title": "Contrôle de la découverte",
  "pairs.overview.discovery.controlsAria": "Contrôles de détection des paires de devises",
  "pairs.overview.discovery.interval": "Intervalle de découverte",
  "pairs.overview.discovery.intervalError": "Entrez un nombre entier compris entre 30 et 3 600.",
  "pairs.overview.discovery.intervalHint": "Plage autorisée : 30 à 3 600 secondes.",
  "pairs.overview.discovery.seconds": "sec",
  "pairs.overview.discovery.running": "À la découverte de",
  "pairs.overview.discovery.runningEllipsis": "À la découverte de…",
  "pairs.overview.discovery.runNow": "Découvrez-le dès maintenant",
  "pairs.overview.pairClassControl.title": "Contrôle par paires de classes",
  "pairs.overview.pairClassControl.description": "Sélectionnez les classes de paires à inclure dans la surveillance et la découverte.",
  "pairs.overview.pairClassControl.updating": "Mise à jour",
  "pairs.overview.pairClasses.spot_swap": "Au comptant × à terme",
  "pairs.overview.pairClasses.swap_swap": "Perpétuel × perpétuel",
  "pairs.overview.pairClasses.spot_spot": "Spot × spot",
  "pairs.overview.pairClasses.spot_future": "Marché au comptant × contrat à terme daté",
  "pairs.overview.pairClasses.swap_future": "Contrat perpétuel × contrat à terme à échéance fixe",
  "pairs.overview.pairClasses.future_future": "Contrat à terme à date fixe × contrat à terme à date fixe",
  "pairs.overview.actions.reset": "Réinitialiser",
  "pairs.overview.actions.refresh": "Actualiser",
  "pairs.overview.actions.refreshing": "Rafraîchissant…",
  "pairs.overview.disabled.refreshingOverview": "La vue d'ensemble de la paire est rafraîchissante. Attendez que le processus soit terminé.",
  "pairs.overview.disabled.refreshingDiscovery": "La recherche dans Exchange est en cours. Veuillez patienter jusqu'à la fin de l'opération.",
  "pairs.overview.disabled.savingMarkets": "Les changements de marché sont en cours d'enregistrement. Veuillez patienter jusqu'à la fin de l'opération.",
  "pairs.overview.disabled.savingInterval": "L'intervalle de découverte est en cours d'enregistrement. Veuillez patienter jusqu'à la fin de l'opération.",
  "pairs.overview.disabled.togglingClass": "Une classe « pair » est en cours de mise à jour. Veuillez patienter jusqu'à la fin de l'opération.",
  "pairs.overview.disabled.invalidInterval": "L'intervalle de découverte doit être un nombre entier compris entre 30 et 3 600 secondes.",
  "pairs.overview.disabled.intervalUnchanged": "L'intervalle de découverte ne comporte aucune modification à enregistrer.",
  "pairs.overview.disabled.noIntervalDraft": "La plage de découverte ne contient aucune modification non enregistrée.",
  "pairs.overview.disabled.intervalDraftPending": "Enregistrez ou réinitialisez d'abord l'intervalle de découverte en attente.",
  "pairs.overview.disabled.marketDraftPending": "Appliquez ou réinitialisez d'abord le projet de changement de marché en attente.",
  "pairs.overview.disabled.noMarketReset": "Il n'y a aucun changement de marché à réinitialiser.",
  "pairs.overview.disabled.noMarketChanges": "Il n'y a aucun changement de marché à appliquer.",
  "pairs.overview.disabled.exchangeDisabled": "Cet Exchange est désactivé au niveau global. Vous devez d'abord l'activer dans l'interface d'administration d'Exchange.",
  "pairs.overview.disabled.marketDisabled": "Ce marché est désactivé. Activez-le avant de sélectionner les actifs de règlement.",
  "pairs.overview.disabled.marketGenerationConflict": "Les fonctionnalités du marché backend ont changé. Réinitialisez le brouillon et modifiez-le à partir de la dernière configuration.",
  "pairs.overview.refreshResult.totalInstruments": "Nombre total d'instruments",
  "pairs.overview.refreshResult.added": "Nouvelles annonces",
  "pairs.overview.refreshResult.removed": "Retiré de la cote",
  "pairs.overview.refreshResult.detailsAria": "Détails sur l'actualisation des instruments",
  "pairs.overview.columns.exchange": "Échange",
  "pairs.overview.columns.market": "Marché",
  "pairs.overview.columns.count": "Comte",
  "pairs.overview.columns.change": "Modifier",
  "pairs.overview.columns.spot": "Spot",
  "pairs.overview.columns.perpetual": "Perpétuel",
  "pairs.overview.columns.lastDiscovery": "Dernière découverte",
  "pairs.overview.columns.status": "Statut",
  "pairs.overview.venues.title": "Répartition des titres par bourse",
  "pairs.overview.venues.description": "Vérifiez les connexions entre les bourses et la couverture des marchés, puis appliquez les projets de changement de marché en une seule fois.",
  "pairs.overview.venues.unsavedSuffix": "modifications non enregistrées",
  "pairs.overview.venues.draftAria": "Projet de changement de marché boursier",
  "pairs.overview.venues.pendingChanges": "{{count}} Modifications relatives au changement de marché prêtes à être appliquées",
  "pairs.overview.venues.confirmed": "Les changements de marché correspondent à l'état confirmé par le backend",
  "pairs.overview.venues.draftDescription": "Mode brouillon ; rien n'a encore été envoyé.",
  "pairs.overview.venues.applying": "En cours de candidature…",
  "pairs.overview.venues.apply": "Utilisez cette application et faites des économies",
  "pairs.overview.venues.empty": "Pas de données d'échange",
  "pairs.overview.venues.emptyDescription": "En attente de la connexion du backend aux plateformes d'échange.",
  "pairs.overview.venues.tableAria": "État de mise en service sur le marché des changes",
  "pairs.overview.venues.settlementsAria": "{{market}} actifs de règlement",
  "pairs.overview.venues.generationConflict": "Les fonctionnalités du marché backend ont changé pendant que vous modifiiez ce document. Ce brouillon a été conservé mais ne peut pas être appliqué ; réinitialisez-le et resélectionnez-le.",
  "pairs.overview.venues.changedUnsaved": "Modifié, pas encore enregistré",
  "pairs.overview.refreshOutcome.partialTitle": "Exploration partiellement achevée",
  "pairs.overview.refreshOutcome.convergingTitle": "La découverte continue de se préciser",
  "pairs.overview.refreshOutcome.partialDescription": "Cette évolution a confirmé les marchés {{refreshed}}/{{expected}}. {{instruments}} : des instruments de référence sont visibles ; les connecteurs continueront à faire converger les marchés inachevés.",
  "pairs.overview.refreshOutcome.noMarketsTitle": "Aucun marché activé à actualiser",
  "pairs.overview.refreshOutcome.noMarketsDescription": "L'ensemble des marchés activés est vide ; le système affiche toujours les instruments de référence d'{{instruments}}.",
  "pairs.overview.refreshOutcome.completedTitle": "La mise à jour de Discovery est terminée",
  "pairs.overview.refreshOutcome.completedDescription": "J'ai fait un tour sur {{refreshed}} et j'ai trouvé des instruments sur {{instruments}}.",
  "pairs.overview.notices.refreshFailed.title": "Échec de l'actualisation",
  "pairs.overview.notices.refreshFailed.message": "Le dernier aperçu des paires de devises ayant généré des profits reste affiché.",
  "pairs.overview.notices.classUpdated.title": "Mise à jour des cours par paires",
  "pairs.overview.notices.classUpdated.message": "Le backend a validé les classes de paires et a appliqué la mise à jour en temps réel.",
  "pairs.overview.notices.classStatsFailed.title": "Mise à jour des classes de paires ; échec de l'actualisation des statistiques",
  "pairs.overview.notices.classStatsFailed.message": "Les cours en binôme sont en cours, mais les statistiques actuelles n'ont pas pu être actualisées. Veuillez réessayer dans quelques instants.",
  "pairs.overview.notices.classConflictReloaded.title": "Configuration mise à jour",
  "pairs.overview.notices.classConflictReloaded.message": "Un autre administrateur a modifié les classes de paires. La dernière configuration est chargée ; veuillez répéter votre action.",
  "pairs.overview.notices.classConflictFailed.title": "Conflit de configuration",
  "pairs.overview.notices.classConflictFailed.message": "Un autre administrateur a modifié la configuration et l'état le plus récent n'a pas pu être chargé. Veuillez réessayer dans quelques instants.",
  "pairs.overview.notices.classUpdateFailed.title": "Échec de la mise à jour de la classe de paires",
  "pairs.overview.notices.classUpdateFailed.message": "Le backend n'a pas validé la modification de la classe de paire.",
  "pairs.overview.notices.intervalUpdated.title": "Intervalle de découverte mis à jour",
  "pairs.overview.notices.intervalUpdated.message": "L'intervalle est enregistré et le paramètre d'exécution est actif.",
  "pairs.overview.notices.intervalConflictReloaded.title": "La période de découverte a été mise à jour dans un autre document",
  "pairs.overview.notices.intervalConflictReloaded.message": "Un autre administrateur a enregistré un nouvel intervalle. La référence officielle a été mise à jour, mais vos données locales ont été conservées ; veuillez les vérifier avant d'enregistrer à nouveau.",
  "pairs.overview.notices.intervalConflictFailed.title": "Conflit d'intervalle de découverte",
  "pairs.overview.notices.intervalConflictFailed.message": "Un autre administrateur a modifié l'intervalle, et la dernière valeur n'a pas pu être chargée. Veuillez réessayer dans quelques instants.",
  "pairs.overview.notices.intervalSaveFailed.title": "L'intervalle de découverte n'a pas été enregistré",
  "pairs.overview.notices.intervalSaveFailed.message": "Le paramètre d'exécution actuel reste inchangé.",
  "pairs.overview.notices.intervalReset.title": "Réinitialisation du brouillon",
  "pairs.overview.notices.intervalReset.message": "L'intervalle de découverte non enregistré correspond désormais à la valeur actuelle de la durée d'exécution.",
  "pairs.overview.notices.discoveryOverviewFailed.completedTitle": "Découverte terminée ; échec de l'actualisation de la vue d'ensemble",
  "pairs.overview.notices.discoveryOverviewFailed.completedMessage": "Le serveur a confirmé que la recherche était terminée, mais le dernier aperçu n'a pas pu être actualisé. Veuillez réessayer dans quelques instants.",
  "pairs.overview.notices.discoveryOverviewFailed.partialTitle": "Convergence de la découverte ; échec de l'actualisation de la vue d'ensemble",
  "pairs.overview.notices.discoveryOverviewFailed.partialMessage": "Le serveur a renvoyé des données partielles ; les marchés non finalisés continueront de converger ; le dernier aperçu est temporairement indisponible.",
  "pairs.overview.notices.discoveryFailed.title": "Échec de la recherche",
  "pairs.overview.notices.discoveryFailed.message": "Le backend n'a renvoyé aucun résultat de recherche.",
  "pairs.overview.notices.marketsUpdated.title": "Mise à jour des changements de marché",
  "pairs.overview.notices.marketsUpdated.message": "La configuration du marché est enregistrée. Les entrées désactivées ont été supprimées ; les entrées activées continueront à mettre à jour leur état d'exécution en temps réel.",
  "pairs.overview.notices.marketStatsFailed.title": "Mise à jour des changements de marché ; échec de l'actualisation des statistiques",
  "pairs.overview.notices.marketStatsFailed.message": "Les commutateurs sont sous tension, mais les statistiques actuelles des instruments n'ont pas pu être actualisées. Veuillez réessayer dans quelques instants.",
  "pairs.overview.notices.marketConflict.title": "La configuration du marché a été mise à jour ailleurs",
  "pairs.overview.notices.marketConflict.message": "Un autre administrateur a soumis une nouvelle configuration. La configuration de référence officielle a été mise à jour et votre brouillon local a été conservé ; veuillez le vérifier avant de l'enregistrer à nouveau.",
  "pairs.overview.notices.marketUpdateFailed.title": "Les revirements du marché ne sont pas encore pleinement confirmés",
  "pairs.overview.notices.marketUpdateFailed.message": "La configuration actuelle a été relue, mais le backend n'a pas confirmé que cette transition d'exécution s'était achevée dans son intégralité.",
  "pairs.overview.notices.marketReset.title": "Réinitialisation du brouillon",
  "pairs.overview.notices.marketReset.message": "Les modifications non enregistrées apportées au changement de marché correspondent désormais à l'état confirmé par le backend.",
  "linkage.time.unknown": "Inconnu",
  "linkage.time.justNow": "À l'instant",
  "linkage.time.milliseconds": "{{value}} ms",
  "linkage.time.seconds": "{{value}} sec",
  "linkage.time.minutes": "{{value}} min",
  "linkage.time.hours": "{{value}} hr",
  "linkage.time.minutesSeconds": "{{minutes}} min{{seconds}}sec",
  "linkage.time.daysHours": "{{days}} {{hours}} h",
  "linkage.time.hoursMinutes": "{{hours}} {{minutes}} min",
  "linkage.time.minutesAgo": "{{value}} il y a quelques minutes",
  "linkage.time.hoursAgo": "{{value}} il y a une heure",
  "linkage.time.daysAgo": "{{value}} il y a d",
  "linkage.pair.title": "Exploration par paires",
  "linkage.pair.description": "Le serveur recalcule avec précision, à la demande, les données persistantes afin d'afficher l'évolution des scores et la répartition dans la fenêtre actuelle. Aucun historique des scores n'est conservé.",
  "linkage.pair.inputPlaceholder": "Identifiant de la paire (numéro)",
  "linkage.pair.actions.drillDown": "Approfondir",
  "linkage.pair.errors.notFound": "Cette paire ne comporte actuellement aucune information utile concernant la fenêtre de liaison.",
  "linkage.pair.errors.server": "Le serveur n'a pas pu effectuer l'exploration. Veuillez réessayer.",
  "linkage.pair.errors.load": "Échec du chargement",
  "linkage.pair.states.idleTitle": "Entrez un numéro de paire",
  "linkage.pair.states.idleDescription": "Saisissez un numéro de paire pour consulter l'évolution des scores et la fenêtre actuelle.",
  "linkage.pair.states.loading": "Recalcul de l'évolution du score sur 7 jours pour {{id}}…",
  "linkage.pair.states.errorTitle": "Échec de l'exploration en profondeur",
  "linkage.pair.metrics.score": "Score actuel",
  "linkage.pair.metrics.representedMinutes": "Minutes des réunions représentées",
  "linkage.pair.metrics.representedValue": "{{minutes}} ({{share}}%)",
  "linkage.pair.metrics.validBuckets": "Paniers de fenêtre valides",
  "linkage.pair.metrics.fingerprint": "Empreinte du segment",
  "linkage.pair.curveTitle": "Évolution du score (par tranches de 15 minutes · la résolution de la courbe correspond à celle des tranches)",
  "linkage.pair.scatter.title": "Nuage de points de la fenêtre actuelle",
  "linkage.pair.scatter.aria": "Dispersion de la fenêtre de liaison",
  "linkage.pair.scatter.xAxis": "x : état de propagation →",
  "linkage.pair.scatter.yAxis": "↑ y : financement horaire net",
  "linkage.pair.scatter.description": "Les points en haut à droite et en bas à gauche se déplacent ensemble ; ceux en haut à gauche et en bas à droite se déplacent en sens inverse. Les points les plus pâles sont les plus anciens.",
  "linkage.pair.scatter.help": "Les points orientés vers le haut à droite/bas à gauche donnent un score plus positif (même direction) ; ceux orientés vers le haut à gauche/bas à droite donnent un score plus négatif (direction inverse). Le désordre tend vers 0. Les points les plus transparents sont les plus anciens et ont moins de poids.",
  "linkage.overview.summary.status": "Fonctionnement",
  "linkage.overview.summary.ready": "Disponible",
  "linkage.overview.summary.delayed": "Mise à jour retardée",
  "linkage.overview.summary.attention": "Les vérifications des données nécessitent une attention particulière",
  "linkage.overview.summary.attentionDescription": "Les vérifications des données ont mis en évidence un problème. Vous trouverez ci-dessous les derniers résultats et la couverture.",
  "linkage.overview.title": "Lien de financement",
  "linkage.overview.description": "Comment le financement et le spread évoluent de concert.",
  "linkage.overview.errors.load": "Échec du chargement",
  "linkage.overview.states.loading": "Chargement de la présentation générale des articulations…",
  "linkage.overview.states.stale": "Échec de l'actualisation ; l'instantané précédent est toujours affiché : {{error}}",
  "linkage.overview.states.unavailable": "Aperçu de la liaison temporairement indisponible",
  "linkage.overview.states.recoveringTitle": "Le moteur d'évaluation des liens est en cours de rétablissement",
  "linkage.overview.states.recoveringDescription": "La fenêtre des scores est en cours de restauration à partir des données historiques. La progression est mise à jour automatiquement.",
  "linkage.overview.states.warmStart": "Affichage du dernier score publié sur {{age}}. La fenêtre de score se rafraîchit et se met à jour automatiquement.",
  "linkage.overview.metrics.lastPublished": "Dernière publication",
  "linkage.overview.metrics.lastPublishedValue": "{{time}} ({{age}})",
  "linkage.overview.metrics.lastPublishedDescription": "Publié une fois par minute",
  "linkage.overview.metrics.latency": "Latence de bout en bout (donnée → score)",
  "linkage.overview.metrics.latencyDescription": "{{delivery}}s sur la livraison + partition complète {{score}}",
  "linkage.overview.metrics.coverage": "Couverture des fenêtres",
  "linkage.overview.metrics.coverageDescription": "Paires notées {{scored}} / mesurables {{measurable}} / livre complet {{total}}",
  "linkage.overview.metrics.accuracy": "Précision",
  "linkage.overview.metrics.selfCheckValue": "Auto-évaluation ≤{{points}} pts",
  "linkage.overview.metrics.calibratedValue": "Étalonnage : ±{{points}} pts",
  "linkage.overview.metrics.selfCheckDescription": "{{count}} paires recalculées toutes les heures · {{time}} · étalonnage ±{{points}}",
  "linkage.overview.metrics.calibratedDescription": "Étalonnage hors ligne p90 ±{{points}} pts · premier autocontrôle environ 3 minutes après le démarrage",
  "linkage.overview.formula.title": "Formule et interprétation",
  "linkage.overview.formula.description": "Cet indicateur répond à une question : au cours des 7 derniers jours, les écarts entre les États et les financements nets des États ont-ils évolué de manière monotone dans le même sens (+) ou dans des sens opposés (−) ?",
  "linkage.overview.formula.waiver": "{{duration}} concernant la dérogation relative au pont",
  "linkage.overview.formula.scoreBefore": "+100 correspond à une forte tendance dans le même sens, −100 à une forte tendance inverse, et la valeur absolue indique l'intensité ; ",
  "linkage.overview.formula.zeroMeaning": "La valeur « 0 » signifie simplement que la fenêtre actuelle n'est pas mesurable",
  "linkage.overview.formula.scoreAfter": ", et non pas la preuve qu’il n’y a pas de lien.",
  "linkage.overview.formula.details": "Détails de la formule (paramètres · définitions x/y · étalonnage de la précision)",
  "linkage.overview.formula.hardWindow": "Fenêtre fixe",
  "linkage.overview.formula.hardWindowValue": "{{days}} derniers jours ({{minutes}} minutes) ; la valeur est toujours égale à 0 en dehors de cette période",
  "linkage.overview.formula.timeWeight": "Pondération temporelle",
  "linkage.overview.formula.timeWeightValue": "Le poids diminue de moitié toutes les {{hours}} heures : environ la moitié au bout de 3 jours et un cinquième au bout de 7 jours.",
  "linkage.overview.formula.representation": "Représentation",
  "linkage.overview.formula.representationValue": "{{buckets}} × {{minutes}}- tranches de minute, plus la tranche en temps réel",
  "linkage.overview.formula.identity": "Identité du segment",
  "linkage.overview.formula.identityValue": "La fenêtre est recalculée lorsque sa signification change",
  "linkage.overview.formula.calibrationDescription": ": {{note}} — moyenne ±{{mae}} pts, p90 ±{{p90}} pts. Cette erreur provient de la représentation par tranches de 15 minutes et résulte d'un compromis délibéré entre vitesse et précision.",
  "linkage.overview.coverage.title": "Répartition de la couverture des fenêtres",
  "linkage.overview.coverage.description": "{{count}} paires de livres complets regroupées en fonction du degré de complétude de la fenêtre",
  "linkage.overview.coverage.note": "Des lacunes peuvent apparaître lorsque les données relatives au financement ou aux observations de répartition ne sont pas disponibles. De nouvelles combinaisons viennent compléter la couverture à mesure que des données valides sont disponibles ; utilisez la dernière mise à jour et l'état d'exploitation pour évaluer la disponibilité.",
  "linkage.overview.coverage.rows.full": "Fenêtre pleine (≥ 90 %)",
  "linkage.overview.coverage.rows.high": "Presque complet (50 à 90 %)",
  "linkage.overview.coverage.rows.low": "Rare (<50 %)",
  "linkage.overview.coverage.rows.insufficient": "Échantillons insuffisants (note du contrat : 0)",
  "linkage.overview.coverage.rows.zeroVariance": "Aucune variance de série (score du contrat = 0)",
  "linkage.overview.storage.title": "Données et stockage",
  "linkage.overview.storage.spread1m": "Tableau récapitulatif en 1 minute",
  "linkage.overview.storage.spread15m": "Table à godets de 15 minutes",
  "linkage.overview.storage.clickhouseTable": "Table ClickHouse",
  "linkage.overview.storage.listingIncarnations": "Registre des inscriptions et des incarnations",
  "linkage.overview.storage.calibratedEvidence": "Preuve relative à l'unité étalonnée",
  "linkage.overview.storage.postgresTable": "Table PostgreSQL",
  "linkage.overview.storage.clickhouseValue": "{{bytes}} · {{rows}} lignes · dernier compartiment {{age}}",
  "linkage.overview.storage.postgresValue": "{{bytes}} · {{rows}} lignes",
  "linkage.overview.storage.unavailable": "Inventaire de stockage indisponible ; nouvelle tentative automatique toutes les 60 secondes.",
  "linkage.overview.integrity.title": "Intégrité des données",
  "linkage.overview.integrity.issue": "Problèmes actuels",
  "linkage.overview.integrity.mirrorMismatches": "Décalages entre miroirs",
  "linkage.overview.integrity.invalidFingerprints": "Lignes d'empreintes digitales non valides",
  "linkage.overview.integrity.dirtyBuckets": "Seaux sales en attente de réparation",
  "linkage.overview.integrity.duplicatePublished": "Publications en double",
  "linkage.overview.integrity.segmentResets": "Réinitialisation des segments {{count}}",
  "linkage.overview.integrity.retired": "{{count}}, à la retraite",
  "linkage.overview.integrity.ingested": "Lignes d'{{count}}s importées",
  "linkage.overview.integrity.recovery": "{{time}}s de récupération les plus récentes ({{age}}), durée {{duration}} : {{windowRows}} lignes de fenêtre + {{tailRows}} lignes de fin du « current-bucket », taux d'empreintes obsolètes {{staleRatio}}. Une hausse soutenue indique une dérive d'identité dans les données conservées.",
  "ipRules.denyTitle": "Liste noire d'adresses IP",
  "ipRules.allowTitle": "Liste blanche d'adresses IP",
  "ipRules.ruleCount": "{{count}} règles",
  "ipRules.whitelistNote": "Lorsque cette option est activée, seules les adresses IP répertoriées peuvent se connecter et accéder aux API ; les connexions en temps réel existantes sont également revalidées. La notation CIDR est prise en charge, par exemple 192.168.0.0/16.",
  "ipRules.states.loading": "Chargement des règles IP…",
  "ipRules.states.unavailable": "Contrôles IP indisponibles",
  "ipRules.states.empty": "Pas de règles",
  "ipRules.states.emptyDescription": "{{title}} ne comporte actuellement aucune règle.",
  "ipRules.errors.readFailed": "Impossible de charger les règles IP et la configuration de sécurité.",
  "ipRules.errors.missingConfig": "La configuration de sécurité est manquante.",
  "ipRules.errors.policyFailed": "Le backend n'a pas confirmé la modification de la politique.",
  "ipRules.errors.addFailed": "Le backend n'a pas validé la nouvelle règle.",
  "ipRules.errors.deleteFailed": "Le serveur n'a pas confirmé la suppression de la règle.",
  "ipRules.notice.policyUpdatedTitle": "Mise à jour des contrôles IP",
  "ipRules.notice.policyUpdated": "Le résultat de l'enregistrement de la politique a été renvoyé. Utilisez l'état d'exécution de l'application ci-dessus pour vérifier à quel moment il prend effet.",
  "ipRules.notice.conflictTitle": "Un autre administrateur a mis à jour la politique relative aux adresses IP",
  "ipRules.notice.conflict": "La politique en vigueur a été actualisée. Veuillez la consulter avant de réessayer.",
  "ipRules.notice.policyFailedTitle": "Échec de la mise à jour du contrôle IP",
  "ipRules.notice.addedTitle": "Règle ajoutée",
  "ipRules.notice.addedAllow": "{{ip}} a été ajouté à la liste blanche.",
  "ipRules.notice.addedDeny": "{{ip}} a été ajouté à la liste noire.",
  "ipRules.notice.addFailedTitle": "Impossible d'ajouter la règle IP",
  "ipRules.notice.deletedTitle": "Règle supprimée",
  "ipRules.notice.deletedAllow": "{{ip}} a été retiré de la liste blanche.",
  "ipRules.notice.deletedDeny": "{{ip}} a été retiré de la liste noire.",
  "ipRules.notice.deleteFailedTitle": "Impossible de supprimer la règle IP",
  "ipRules.confirm.allowTitle": "Supprimer une règle de liste blanche d'adresses IP",
  "ipRules.confirm.denyTitle": "Supprimer une règle de liste noire d'adresses IP",
  "ipRules.confirm.allowDescription": "Supprimer «{{ip}} » ? Tant que la liste blanche est activée, la connexion, l'accès à l'API et les connexions en temps réel provenant de cette adresse peuvent être refusés.",
  "ipRules.confirm.denyDescription": "Supprimer «{{ip}} » ? Cette adresse ne sera plus soumise à cette règle de liste noire.",
  "ipRules.status.updating": "Mise à jour",
  "ipRules.status.enabledEmpty": "Activé · aucune règle",
  "ipRules.status.empty": "Pas de règles",
  "ipRules.status.enabled": "Activé",
  "ipRules.status.disabled": "Non activé",
  "ipRules.toggleAria": "{{title}}: {{status}}",
  "ipRules.whitelist.enabledEmpty": "La liste blanche est activée mais ne contient aucune règle d'autorisation. La connexion et l'accès à l'API peuvent être refusés depuis toutes les adresses IP.",
  "ipRules.whitelist.empty": "La liste blanche ne contient aucune règle d'autorisation. Ajoutez au moins une adresse IP ou un bloc CIDR de confiance avant de l'activer afin d'éviter de bloquer la connexion et l'accès à l'API.",
  "ipRules.tableAria": "{{title}} règles",
  "ipRules.columns.ip": "IP / CIDR",
  "ipRules.columns.note": "Remarque",
  "ipRules.columns.actions": "Actions",
  "ipRules.disabled.mutation": "Une autre modification des paramètres IP est en cours. Veuillez patienter jusqu'à ce qu'elle soit terminée.",
  "ipRules.disabled.ruleMutation": "Une modification des règles de sécurité est en cours. Veuillez patienter jusqu'à ce qu'elle soit terminée.",
  "ipRules.disabled.enterIp": "Saisissez une adresse IP ou un CIDR.",
  "ipRules.actions.delete": "Supprimer la règle",
  "ipRules.actions.deleting": "Suppression en cours…",
  "ipRules.actions.deleteAria": "Supprimer la règle pour {{ip}}",
  "ipRules.actions.addRule": "Ajouter une règle",
  "ipRules.actions.add": "Ajouter",
  "ipRules.actions.adding": "Ajout…",
  "ipRules.add.aria": "Ajouter une règle IP",
  "ipRules.add.ipLabel": "IP ou CIDR",
  "ipRules.add.ipPlaceholder": "Par exemple, 203.0.113.10 ou 203.0.113.0/24",
  "ipRules.add.notePlaceholder": "Facultatif",
  "announcementManagement.dataAsOf": "Données au{{time}}",
  "announcementManagement.actions.saveSection": "Enregistrer la section actuelle",
  "announcementManagement.actions.reloadDiscardAria": "Recharger et supprimer le brouillon actuel des paramètres d'annonce",
  "announcementManagement.actions.reloadAria": "Actualiser les paramètres des annonces",
  "announcementManagement.actions.reloadDiscard": "Supprimer le brouillon et recharger",
  "announcementManagement.actions.refresh": "Actualiser",
  "announcementManagement.states.loadingSettings": "Chargement des paramètres d'annonce…",
  "announcementManagement.states.forbidden": "Aucune autorisation de gestion des annonces",
  "announcementManagement.states.settingsUnavailable": "Paramètres d'annonce indisponibles",
  "announcementManagement.states.loadingCatalogue": "Chargement du catalogue source…",
  "announcementManagement.states.catalogueForbidden": "Autorisation de lecture du catalogue source refusée",
  "announcementManagement.states.catalogueUnavailable": "Catalogue source indisponible",
  "announcementManagement.states.loadingHealth": "Chargement de l'instantané « source-health »…",
  "announcementManagement.states.healthUnavailable": "Source d'informations sur la santé indisponible",
  "announcementManagement.errors.conflict": "Un autre administrateur a modifié ces paramètres. La version actuelle se met à jour automatiquement ; vérifiez votre brouillon enregistré avant de l'enregistrer à nouveau.",
  "announcementManagement.errors.unknown": "Erreur inconnue",
  "announcementManagement.errors.catalogueChanged": "Le catalogue source a été modifié et est en cours d'harmonisation. Vérifiez vos choix de sélection avant d'enregistrer.",
  "announcementManagement.errors.collectionNotLoaded": "Les paramètres de la collection n'ont pas été chargés.",
  "announcementManagement.errors.invalidEndpoint": "Chaque point de terminaison DeepL doit avoir un nom et une URL. Les nouveaux points de terminaison nécessitent également une clé API.",
  "announcementManagement.errors.staleSettings": "Échec de l'actualisation des paramètres. Affichage du dernier instantané validé provenant de {{time}} : {{error}}",
  "announcementManagement.errors.permissionLost": "Le compte courant ne dispose plus des droits de gestion des annonces. Le dernier instantané reste disponible pour consultation, mais toute modification est désactivée.",
  "announcementManagement.errors.noCatalogue": "Aucun catalogue faisant autorité n'a été reçu.",
  "announcementManagement.errors.staleCatalogue": "Échec de l'actualisation du catalogue source. Les éléments candidats et l'état d'exécution proviennent toujours de {{time}} : {{error}}",
  "announcementManagement.errors.catalogueMismatch": "Les paramètres et le catalogue source utilisent des versions différentes. L'enregistrement est suspendu pendant l'alignement du catalogue ; votre brouillon est conservé.",
  "announcementManagement.errors.noSnapshot": "Aucun instantané disponible",
  "announcementManagement.errors.staleHealth": "Échec de l'actualisation de l'état. Affichage du dernier instantané réussi provenant de {{time}} : {{error}}",
  "announcementManagement.collection.title": "Sources officielles",
  "announcementManagement.collection.description": "Sélectionnez les sources de cette liste fournie par le serveur que vous souhaitez collecter. Les icônes d'état indiquent celles qui sont actuellement en cours d'exécution.",
  "announcementManagement.collection.revision": "Catalogue n°{{revision}}",
  "announcementManagement.collection.empty": "Le catalogue de serveurs de référence n'a explicitement renvoyé aucune source prise en charge.",
  "announcementManagement.collection.enableAria": "Activer la collecte des annonces pour {{source}}",
  "announcementManagement.collection.disableAria": "Désactiver la collecte des annonces pour {{source}}",
  "announcementManagement.collection.running": "Course à pied",
  "announcementManagement.collection.notRunning": "Ne fonctionne pas",
  "announcementManagement.collectionState.live": "Collectionner",
  "announcementManagement.collectionState.starting": "Début",
  "announcementManagement.collectionState.degraded": "Dégradé",
  "announcementManagement.collectionState.interrupted": "Interrompu",
  "announcementManagement.collectionState.disabled": "Personnes en situation de handicap",
  "announcementManagement.publicationState.recent": "Publié récemment",
  "announcementManagement.publicationState.quiet": "Pas de publication",
  "announcementManagement.publicationState.old": "Aucun élément récent",
  "announcementManagement.publicationState.none": "Aucune publication répertoriée",
  "announcementManagement.providerState.ready": "Prêt",
  "announcementManagement.providerState.quotaExhausted": "Quota épuisé",
  "announcementManagement.providerState.invalid": "Identifiants non valides",
  "announcementManagement.providerState.unreachable": "Inaccessible",
  "announcementManagement.providerState.unchecked": "En attente de validation",
  "announcementManagement.providerState.unconfigured": "Non configuré",
  "announcementManagement.disabledReason.venueDisabled": "La synchronisation est désactivée. Activez-la pour récupérer les données depuis cette source.",
  "announcementManagement.disabledReason.sourceOverride": "Cette source est désactivée dans les paramètres de la collection.",
  "announcementManagement.disabledReason.unknown": "Cette source est désactivée ; la raison n'est pas identifiée pour le moment.",
  "announcementManagement.health.title": "État d'exécution de la source",
  "announcementManagement.health.description": "La collecte et la publication sont indiquées séparément. L'absence d'annonces récentes ne signifie pas que la collecte a échoué.",
  "announcementManagement.health.empty": "Le catalogue de référence ne contient actuellement aucune notice de source.",
  "announcementManagement.health.attentionPriority": "À surveiller",
  "announcementManagement.health.supported": "Prise en charge",
  "announcementManagement.health.unsupported": "Non pris en charge",
  "announcementManagement.health.configured": "Configuré",
  "announcementManagement.health.unconfigured": "Non configuré",
  "announcementManagement.health.effective": "En vigueur",
  "announcementManagement.health.ineffective": "Inefficace",
  "announcementManagement.health.consecutiveFailures": "{{count}} échecs successifs",
  "announcementManagement.health.lastAttempt": "Dernière tentative : ",
  "announcementManagement.health.lastSuccess": "Dernier succès : ",
  "announcementManagement.health.latestDocument": "Dernier document : ",
  "announcementManagement.health.constituentsAria": "Composantes liées à la santé pour {{source}}",
  "announcementManagement.health.failedCount": " · Échec de la requête « {{count}} »",
  "announcementManagement.health.coverage": "Article : {{items}}",
  "announcementManagement.health.coverageGaps": "Lacunes en matière de couverture : {{items}}",
  "announcementManagement.constituents.transport": "Transports",
  "announcementManagement.constituents.schema": "Schéma",
  "announcementManagement.constituents.pagination": "Pagination",
  "announcementManagement.constituents.detail": "Détails",
  "announcementManagement.constituents.translation": "Traduction",
  "announcementManagement.constituents.coverage": "Couverture",
  "announcementManagement.localization.title": "Traduction des annonces",
  "announcementManagement.localization.description": "Traduisez les annonces avec DeepL. Les clés restent masquées ; les erreurs du fournisseur sont visibles dans leur forme originale.",
  "announcementManagement.localization.enabled": "Activer la localisation",
  "announcementManagement.localization.endpointsTitle": "Pool de points de terminaison DeepL",
  "announcementManagement.localization.endpointsDescription": "Laissez la clé de remplacement vide pour conserver la clé enregistrée. Les modifications s’appliquent après l’enregistrement.",
  "announcementManagement.localization.addEndpoint": "Ajouter un point de terminaison",
  "announcementManagement.localization.empty": "Aucun point de terminaison DeepL n'est configuré. Il s'agit de l'état vide de référence lorsque la localisation est désactivée.",
  "announcementManagement.localization.endpointFallback": "{{index}} des terminaux",
  "announcementManagement.localization.enableAria": "Activer l'{{name}}",
  "announcementManagement.localization.deleteAria": "Supprimer {{name}}",
  "announcementManagement.localization.delete": "Supprimer",
  "announcementManagement.localization.endpointName": "Nom du terminal",
  "announcementManagement.localization.currentKey": "Clé actuelle",
  "announcementManagement.localization.configured": "Configuré",
  "announcementManagement.localization.unconfigured": "Non configuré",
  "announcementManagement.localization.previewLabel": "Aperçu de la clé de {{name}}",
  "announcementManagement.localization.replaceKey": "Remplacer la clé (laisser vide pour la conserver)",
  "announcementManagement.localization.apiKey": "Clé API",
  "announcementManagement.localization.clearAfterSave": "Effacer lors de l'enregistrement",
  "announcementManagement.localization.keepExisting": "Ne rien indiquer pour conserver la clé actuelle",
  "announcementManagement.localization.showKey": "Afficher la nouvelle clé pour {{name}}",
  "announcementManagement.localization.hideKey": "Masquer la nouvelle clé pour {{name}}",
  "announcementManagement.localization.clearKey": "Touche « Effacer »",
  "announcementManagement.localization.lastValidated": "Dernière validation : {{time}}",
  "announcementManagement.localization.usage": "Utilisation : {{count}}{{limit}}",
  "announcementManagement.localization.unknown": "Inconnu",
  "announcementManagement.policy.title": "Alertes de retrait de cotation",
  "announcementManagement.policy.description": "Seules les radiations officielles vérifiées donnent lieu à des alertes et des notifications.",
  "announcementManagement.policy.help": "Seules les suppressions de cotation pour lesquelles une source officielle vérifiée, la paire exacte, le type de produit et l'heure exacte de la suppression ont été confirmés donnent lieu à des alertes, des badges de paire et des notifications. Les annonces ordinaires ne sont pas concernées.",
  "announcementManagement.policy.enabled": "Activer les alertes de retrait de la cote",
  "cmcIdentity.description": "Gérer les données de référence des ressources, les clés API et la fréquence d'actualisation.",
  "cmcIdentity.help": "CMC fournit uniquement des preuves d'identité et de métadonnées ; il ne décide jamais de l'appariement. Les clés API sont stockées dans la base de données avec une divulgation protégée, une rotation automatique et une répartition des requêtes.",
  "cmcIdentity.retry.ready": "Prêt à réessayer maintenant ?",
  "cmcIdentity.retry.after": "Fonctionnalité de nouvelle tentative disponible dans « {{age}} »",
  "cmcIdentity.status.loading": "Chargement en cours",
  "cmcIdentity.status.failed": "Échec du chargement",
  "cmcIdentity.status.unknown": "Inconnu",
  "cmcIdentity.status.refreshing": "Rafraîchissant",
  "cmcIdentity.status.configured": "Configuré",
  "cmcIdentity.status.unconfigured": "Non configuré",
  "cmcIdentity.actions.refresh": "Recueillir à nouveau des données",
  "cmcIdentity.actions.refreshing": "En cours de collecte…",
  "cmcIdentity.actions.clearCache": "Vider le cache",
  "cmcIdentity.actions.clearing": "Chargement…",
  "cmcIdentity.actions.manageKeys": "Gérer les clés CMC",
  "cmcIdentity.actions.discard": "Ignorer les modifications",
  "cmcIdentity.actions.saveSettings": "Enregistrer les paramètres",
  "cmcIdentity.actions.saving": "Enregistrement en cours…",
  "cmcIdentity.states.loading": "Chargement du CMC et de l'état de la résolution…",
  "cmcIdentity.states.unavailable": "État de la source de données CMC : indisponible",
  "cmcIdentity.errors.readFailed": "Impossible de charger le CMC et l'état de la résolution d'identité/d'unité.",
  "cmcIdentity.errors.refreshTitle": "Échec de l'actualisation de l'état",
  "cmcIdentity.errors.staleSnapshot": "L'état actuel n'a pas pu être actualisé. Le dernier instantané réussi reste visible.",
  "cmcIdentity.feedback.refreshComplete": "Les catalogues CMC et la présentation de l'identité ont tous deux été mis à jour.",
  "cmcIdentity.feedback.refreshConverging": "Les catalogues CMC ont été mis à jour ; la projection d'identité continue de converger en arrière-plan. Les appariements actuels ne sont pas affectés.",
  "cmcIdentity.feedback.refreshIncomplete": "La mise à jour du CMC n'a pas abouti. Vérifiez les erreurs de cache et l'état du délai d'attente.",
  "cmcIdentity.feedback.refreshFailed": "La demande de rafraîchissement du CMC a échoué.",
  "cmcIdentity.feedback.clearComplete": "Le cache CMC a été vidé.",
  "cmcIdentity.feedback.clearFailed": "Impossible de vider le cache CMC.",
  "cmcIdentity.failure.derivativesCoverage": "Ni le catalogue des produits dérivés de CMC ni le catalogue des bourses ne contiennent cet identifiant de bourse. Il s'agit d'une lacune dans la couverture et aucune nouvelle tentative ne sera effectuée.",
  "cmcIdentity.failure.exchangeCoverage": "Le catalogue des bourses de CMC ne contient actuellement pas cet identifiant de bourse. Il s’agit d’une lacune dans la couverture et aucune nouvelle tentative ne sera effectuée.",
  "cmcIdentity.failure.safetyBudget": "Toutes les clés CMC sont actuellement inutilisables. Dernière raison invoquée : la clé «{{key}} » dépasserait le budget mensuel alloué à la sécurité (prévision : {{projected}}, limite de sécurité : {{limit}}).",
  "cmcIdentity.failure.forbidden": "Certaines données de référence ne sont pas couvertes par le plan CMC actuel ou ne sont pas autorisées. Vérifiez le plan de la clé.",
  "cmcIdentity.failure.rateLimited": "CMC applique une limitation du nombre de requêtes. Le système réessaiera automatiquement ultérieurement.",
  "cmcIdentity.failure.timeout": "La requête CMC a dépassé le délai d'attente. Les données précédentes restent disponibles et le système effectuera automatiquement une nouvelle tentative.",
  "cmcIdentity.failure.upstream": "Certaines données de référence CMC n'ont pas pu être mises à jour. Veuillez réessayer plus tard.",
  "cmcIdentity.failure.line": "{{cache}}: {{reason}}",
  "cmcIdentity.failure.latestTitle": "Problème lié à la dernière demande CMC",
  "cmcIdentity.coverage.title": "Bourse ou marché non encore couvert par CMC",
  "cmcIdentity.coverage.description": "Ces marchés ne disposent pas de correspondance CMC spécifique. Les paires actuelles restent inchangées.",
  "cmcIdentity.coverage.help": "Ces entrées ne correspondent à aucune entrée unique dans le catalogue CMC. Il s'agit de lacunes de couverture, et non d'échecs de requête, et elles ne consomment aucun crédit de nouvelle tentative. Le dernier instantané réussi et l'appariement en mémoire restent actifs.",
  "cmcIdentity.coverage.more": "{{count}} d'autres lacunes dans la couverture des soins de santé.",
  "cmcIdentity.retryFailures.title": "Certaines données de référence ne sont pas disponibles",
  "cmcIdentity.retryFailures.description": "Chaque clé de cache défaillante est mise en attente de manière indépendante. Le dernier instantané réussi et l'appariement en mémoire restent actifs.",
  "cmcIdentity.retryFailures.retry": " ({{count}} consecutive failures ; {{retry}})",
  "cmcIdentity.retryFailures.more": "{{count}} d'autres clés de cache défaillantes.",
  "cmcIdentity.keyPool.title": "Pool de clés API CMC",
  "cmcIdentity.keyPool.description": "Les requêtes sont réparties entre les clés et basculent vers une autre lorsqu'une d'entre elles est soumise à une limitation de débit.",
  "cmcIdentity.keyPool.help": "Les clés sont stockées dans la base de données et communiquées à la demande. Les requêtes sont réparties entre toutes les clés disponibles et basculent automatiquement lorsqu'une clé est soumise à une limitation de débit ou a épuisé son budget.",
  "cmcIdentity.keyPool.summary": "État des clés : {{enabled}} / {{total}} activé · {{ready}} prêt · {{attention}} en phase de refroidissement ou défaillant",
  "cmcIdentity.refreshSettings.title": "Paramètres de rafraîchissement du CMC",
  "cmcIdentity.refreshSettings.description": "Un rafraîchissement plus court épuise plus rapidement les crédits CMC. Les cotations en temps réel ne sont pas affectées.",
  "cmcIdentity.refreshSettings.help": "Détermine la fréquence à laquelle les données sont à nouveau récupérées depuis CMC et, par conséquent, le rythme de consommation des crédits. Les données de marché en temps réel affichées à l'écran proviennent des connecteurs boursiers et ne dépendent pas de ces paramètres. Les modifications prennent effet immédiatement après l'enregistrement.",
  "cmcIdentity.refreshSettings.catalogLabel": "Intervalle de mise à jour du catalogue (en heures)",
  "cmcIdentity.refreshSettings.catalogHint": "Des intervalles plus courts consomment davantage de crédits. Par défaut : 24 heures.",
  "cmcIdentity.refreshSettings.detailLabel": "Intervalle de mise à jour des détails (heures)",
  "cmcIdentity.refreshSettings.detailHint": "Concerne les pages de détails des actifs. Valeur par défaut : 1 heure.",
  "cmcIdentity.refreshSettings.validation.catalog": "L'intervalle de mise à jour du catalogue doit être compris entre 1 et 168 heures.",
  "cmcIdentity.refreshSettings.validation.detail": "L'intervalle de mise à jour des détails doit être compris entre 5 minutes et 48 heures.",
  "cmcIdentity.refreshSettings.validation.order": "L'intervalle de mise à jour des détails ne peut pas dépasser l'intervalle de mise à jour du catalogue.",
  "cmcIdentity.refreshSettings.saved": "Les paramètres sont actualisés, enregistrés et appliqués immédiatement.",
  "cmcIdentity.refreshSettings.saveFailed": "Échec de l'enregistrement.",
  "cmcIdentity.refreshSettings.saveFailedWithReason": "Échec de l'enregistrement : {{reason}}",
  "cmcIdentity.usage.title": "Utilisation mensuelle totale du crédit",
  "cmcIdentity.usage.updatedAt": "Mise à jour le {{time}}",
  "cmcIdentity.usage.used": "<used>{{used}}</used> utilisé / <total>{{total}}</total> total",
  "cmcIdentity.usage.remainingPrefix": "· Restant",
  "cmcIdentity.usage.budgetPrefix": "<percent>{{percent}}%</percent> solde de sécurité du budget",
  "cmcIdentity.datasets.title": "Mettre en cache des ensembles de données",
  "cmcIdentity.datasets.description": "Consultez la durée de vie du cache, les éléments qu’il contient et les dernières erreurs par famille.",
  "cmcIdentity.datasets.unavailable": "Le cache est temporairement indisponible.",
  "cmcIdentity.datasets.empty": "Il n'y a pas encore de données de cache CMC.",
  "cmcIdentity.datasets.errorCount": "{{count}} erreurs",
  "cmcIdentity.datasets.healthy": "En bonne santé",
  "cmcIdentity.datasets.age": "{{age}} il y a",
  "cmcKeyPool.title": "Gérer le pool de clés CMC",
  "cmcKeyPool.unnamed": "Sans titre",
  "cmcKeyPool.stats.aria": "Chiffres clés du CMC",
  "cmcKeyPool.stats.total": "{{count}} total",
  "cmcKeyPool.stats.enabled": "{{count}} activé",
  "cmcKeyPool.stats.configured": "{{count}} configuré",
  "cmcKeyPool.stats.ready": "{{count}} prêt",
  "cmcKeyPool.stats.attention": "{{count}} se refroidir ou tomber en panne",
  "cmcKeyPool.toolbar.aria": "Rechercher et filtrer les clés CMC",
  "cmcKeyPool.toolbar.searchAria": "Rechercher les clés CMC",
  "cmcKeyPool.toolbar.showSearch": "Afficher la valeur de recherche",
  "cmcKeyPool.toolbar.hideSearch": "Masquer la valeur de recherche",
  "cmcKeyPool.toolbar.searchPlaceholder": "Nom / clé",
  "cmcKeyPool.toolbar.filterAria": "Filtrer l'état des clés CMC",
  "cmcKeyPool.filters.all": "Tous les statuts",
  "cmcKeyPool.filters.attention": "Temps de recharge / problème",
  "cmcKeyPool.status.ready": "Prêt",
  "cmcKeyPool.status.cooldown": "Temps de recharge",
  "cmcKeyPool.status.error": "Problème",
  "cmcKeyPool.status.unverified": "Non vérifié",
  "cmcKeyPool.status.unsaved": "Non enregistré",
  "cmcKeyPool.status.disabled": "Personnes en situation de handicap",
  "cmcKeyPool.status.unconfigured": "Non configuré",
  "cmcKeyPool.status.testing": "Test…",
  "cmcKeyPool.disabled.testing": "Un test est en cours. Veuillez patienter jusqu'à ce qu'il soit terminé.",
  "cmcKeyPool.disabled.saving": "La sauvegarde du jeu de clés est en cours. Veuillez patienter jusqu'à la fin de l'opération.",
  "cmcKeyPool.actions.testAll": "Tout tester",
  "cmcKeyPool.actions.testingAll": "Test de l'{{done}}/{{total}}",
  "cmcKeyPool.actions.import": "Importation en masse",
  "cmcKeyPool.actions.add": "Ajouter une clé",
  "cmcKeyPool.actions.enableSelected": "Activer les éléments sélectionnés",
  "cmcKeyPool.actions.disableSelected": "Désactiver la sélection",
  "cmcKeyPool.actions.deleteSelected": "Supprimer les éléments sélectionnés",
  "cmcKeyPool.actions.confirmImport": "Clés d'importation",
  "cmcKeyPool.actions.save": "Enregistrer le pool de clés",
  "cmcKeyPool.actions.delete": "Touche Suppr",
  "cmcKeyPool.actions.collapse": "Réduire",
  "cmcKeyPool.actions.edit": "Clé d'édition",
  "cmcKeyPool.pagination.aria": "Pagination des clés CMC",
  "cmcKeyPool.selection.selected": "{{count}} sélectionné",
  "cmcKeyPool.selection.pageAria": "Sélectionner les clés CMC de la page actuelle",
  "cmcKeyPool.selection.page": "Sélectionner la page actuelle",
  "cmcKeyPool.selection.pageCount": "Clés : {{count}}",
  "cmcKeyPool.import.descriptionBefore": "Saisissez une clé par ligne, éventuellement sous la forme",
  "cmcKeyPool.import.descriptionAfter": "(séparés par une virgule, une barre verticale ou une tabulation).",
  "cmcKeyPool.import.aria": "Importation groupée des clés API CMC",
  "cmcKeyPool.import.placeholder": "8a5adb2dbace4d449c9812ce0bc8a17f\n399f9100...,sauvegarde-10",
  "cmcKeyPool.import.show": "Afficher les clés d'importation en masse",
  "cmcKeyPool.import.hide": "Masquer les clés d'importation en masse",
  "cmcKeyPool.import.preview": "Aperçu : les participations à l'{{count}}",
  "cmcKeyPool.import.defaultLabel": "Référence d'importation CMC n°{{index}}",
  "cmcKeyPool.columns.name": "Nom de la clé",
  "cmcKeyPool.columns.enabled": "Activé",
  "cmcKeyPool.columns.status": "Statut",
  "cmcKeyPool.columns.monthlyCredits": "Crédits mensuels",
  "cmcKeyPool.columns.actions": "Actions",
  "cmcKeyPool.states.empty": "Il n'y a pas encore de clés CMC. Sélectionnez « Ajouter une clé » ou « Importation groupée ».",
  "cmcKeyPool.states.noMatches": "Aucune clé correspondante.",
  "cmcKeyPool.listAria": "Clés CMC",
  "cmcKeyPool.note": "Les modifications prennent effet dès leur enregistrement. Si un autre administrateur modifie le pool en même temps, actualisez la page avant d'enregistrer à nouveau.",
  "cmcKeyPool.confirm.deleteTitle": "Supprimer la clé CMC",
  "cmcKeyPool.confirm.deleteDescription": "Supprimer «{{label}} » ? La clé sera supprimée du pool après l’enregistrement.",
  "cmcKeyPool.confirm.bulkDeleteTitle": "Supprimer les clés CMC",
  "cmcKeyPool.confirm.bulkDeleteDescription": "Souhaitez-vous supprimer les clés sélectionnées {{count}} ? La modification prendra effet après l'enregistrement.",
  "cmcKeyPool.feedback.noValidImport": "Aucune clé valide n'a été analysée.",
  "cmcKeyPool.feedback.imported": "Clés d'{{count}}s importées. Enregistrez le pool pour les appliquer.",
  "cmcKeyPool.feedback.importedWithSkipped": "J'ai importé les clés « {{count}} » et ignoré les doublons « {{skipped}} ». Enregistrez le pool pour les appliquer.",
  "cmcKeyPool.feedback.enterKeyFirst": "Entrez une clé avant de lancer le test",
  "cmcKeyPool.feedback.testFailed": "Échec du test",
  "cmcKeyPool.feedback.noTestableKeys": "Il n'y a aucune clé configurée et activée à tester.",
  "cmcKeyPool.feedback.tested": "Clés «{{count}}» testées.",
  "cmcKeyPool.feedback.copied": "Clé API copiée.",
  "cmcKeyPool.feedback.copyFailed": "La copie a échoué. Vérifiez les autorisations d'accès au presse-papiers de votre navigateur.",
  "cmcKeyPool.feedback.savedUsageIssue": "Le pool de clés a été sauvegardé, mais l'actualisation de l'utilisation a signalé un problème : {{error}}",
  "cmcKeyPool.feedback.saved": "Le pool de clés a été enregistré et les informations d'utilisation ont été actualisées pour chaque clé.",
  "cmcKeyPool.feedback.saveFailed": "Échec de l'enregistrement",
  "cmcKeyPool.row.unnamed": "Clé sans nom {{index}}",
  "cmcKeyPool.row.accessibleName": "{{index}}s clés sur le CMC : {{name}}",
  "cmcKeyPool.row.selectAria": "Sélectionnez « {{name}} »",
  "cmcKeyPool.row.nameAria": "Nom de la clé : {{name}}",
  "cmcKeyPool.row.namePlaceholder": "Nom de la clé ou note",
  "cmcKeyPool.row.enableAria": "Activer l'{{name}}",
  "cmcKeyPool.row.statusDetailAria": "Afficher les détails du statut de {{name}}",
  "cmcKeyPool.row.testAria": "{{name}} de test",
  "cmcKeyPool.row.copyTooltip": "Copiez la clé de {{name}}",
  "cmcKeyPool.row.copyAria": "Copiez la clé de {{name}}",
  "cmcKeyPool.row.deleteTooltip": "Supprimer {{name}}",
  "cmcKeyPool.row.deleteAria": "Supprimer {{name}}",
  "cmcKeyPool.row.secretLabel": "Clé API pour {{name}}",
  "cmcKeyPool.row.budgetRemaining": "· Solde budgétaire {{count}}",
  "cmcKeyPool.row.rpm": "· RPM {{count}}",
  "cmcKeyPool.row.requests": "· Requêtes : {{total}} / échecs : {{failed}}",
  "cmcKeyPool.row.unsavedNote": "· Non enregistré : l'enregistrement permettra de vérifier la clé et de collecter les données d'utilisation",
  "cmcKeyPool.row.collapseEditAria": "Réduire l'éditeur pour {{name}}",
  "cmcKeyPool.row.editAria": "Modifier {{name}}",
  "cmcKeyPool.row.apiKey": "Clé API",
  "cmcKeyPool.row.apiKeyAria": "Clé API : {{name}}",
  "cmcKeyPool.row.apiKeyPlaceholder": "Clé API CMC",
  "cmcKeyPool.row.showSecret": "Afficher la clé API pour {{name}}",
  "cmcKeyPool.row.hideSecret": "Masquer la clé API pour {{name}}",
  "networkEgress.title": "Sortie du réseau",
  "networkEgress.description": "Modifie la sortie sortante uniquement pour les centraux téléphoniques sélectionnés.",
  "networkEgress.help": "Acheminer toutes les connexions sortantes uniquement vers les centraux sélectionnés. Le trafic provenant de l'interface utilisateur, de l'API, de la base de données, des opérations et du système en général reste sur le chemin d'accès local.",
  "networkEgress.readyCount": "Prêt {{ready}}/{{total}}",
  "networkEgress.running": "Course à pied",
  "networkEgress.secondsShort": "{{value}} sec",
  "networkEgress.states.loading": "Chargement de la configuration de la sortie réseau et de l'état d'exécution…",
  "networkEgress.states.unavailable": "État de la sortie du réseau indisponible",
  "networkEgress.errors.readFailed": "Impossible de lire l'état de la sortie du réseau.",
  "networkEgress.errors.requestFailed": "La requête a échoué. Veuillez réessayer.",
  "networkEgress.errors.refreshTitle": "Échec de l'actualisation de l'état",
  "networkEgress.errors.staleSnapshot": "{{error}} Le dernier instantané réussi reste visible.",
  "networkEgress.feedback.operationInProgress.title": "Opération déjà en cours",
  "networkEgress.feedback.operationInProgress.message": "Attendez que l'opération de sortie du réseau en cours soit terminée.",
  "networkEgress.feedback.acceptedTitle": "Opération acceptée",
  "networkEgress.feedback.completedTitle": "Opération terminée",
  "networkEgress.feedback.acceptedMany": "{{action}} Les opérations simultanées sur « {{count}} » sont autorisées. Le statut sera mis à jour automatiquement.",
  "networkEgress.feedback.accepted": "{{action}} a été acceptée. Le statut sera mis à jour automatiquement.",
  "networkEgress.feedback.completed": "{{action}} terminé.",
  "networkEgress.feedback.failedTitle": "{{action}} a échoué",
  "networkEgress.feedback.gatewayInUse": "Serveur de sortie en cours d'utilisation",
  "networkEgress.feedback.updateUnavailable": "Le serveur Egress ne peut pas être mis à jour",
  "networkEgress.disabled.busy": "Une opération de sortie du réseau est en cours.",
  "networkEgress.disabled.activeOperation": "Une autre opération de sortie du réseau est déjà en cours.",
  "networkEgress.disabled.selectAssignment": "Sélectionnez d'abord au moins une affectation de sortie modifiée.",
  "networkEgress.disabled.targetNotReady": "La cible sélectionnée n'a pas terminé la vérification de l'interface, du tunnel et de l'adresse IP de sortie.",
  "networkEgress.actions.refresh": "Actualiser",
  "networkEgress.actions.refreshing": "Rafraîchissant…",
  "networkEgress.actions.addGateway": "Ajouter un serveur de sortie",
  "networkEgress.actions.updateGateway": "Mettre à jour le serveur de sortie",
  "networkEgress.actions.batchSave": "Enregistrer les sorties réseau par lots",
  "networkEgress.actions.clearSelection": "Effacer la sélection",
  "networkEgress.actions.selectAllPending": "Sélectionner toutes les modifications en attente",
  "networkEgress.actions.clearAllPending": "Effacer toutes les sélections en attente",
  "networkEgress.actions.install": "Installer",
  "networkEgress.actions.reconcile": "Synchroniser la configuration",
  "networkEgress.actions.retryInstall": "Réessayer l'installation",
  "networkEgress.actions.testSsh": "Tester SSH",
  "networkEgress.actions.editGateway": "Modifier le serveur",
  "networkEgress.actions.editSwitchFirst": "Modifier (changer d'abord)",
  "networkEgress.actions.disable": "Désactiver la configuration du tunnel",
  "networkEgress.actions.disableSwitchFirst": "Désactiver (basculer d'abord)",
  "networkEgress.actions.uninstall": "Désinstaller la configuration réseau",
  "networkEgress.actions.uninstallSwitchFirst": "Désinstaller (activer d'abord)",
  "networkEgress.actions.deleteGateway": "Supprimer le serveur",
  "networkEgress.actions.deleteSwitchFirst": "Supprimer (activer d'abord)",
  "networkEgress.actions.saveChanges": "Enregistrer les modifications",
  "networkEgress.actionLabels.test": "Test SSH pour {{gateway}}",
  "networkEgress.actionLabels.install": "Installer ou harmoniser la configuration réseau pour {{gateway}}",
  "networkEgress.actionLabels.disable": "Désactiver la configuration du tunnel pour {{gateway}}",
  "networkEgress.actionLabels.uninstall": "Désinstaller la configuration réseau d'{{gateway}}",
  "networkEgress.actionLabels.delete": "Supprimer {{gateway}}",
  "networkEgress.columns.select": "Sélectionner",
  "networkEgress.columns.server": "Serveur",
  "networkEgress.columns.liveTraffic": "Info-trafic en direct",
  "networkEgress.columns.reachability": "Accessibilité",
  "networkEgress.columns.tunnelEgress": "Tunnel / issue de secours",
  "networkEgress.columns.feedback": "Retour d'information sur l'état",
  "networkEgress.columns.actions": "Actions",
  "networkEgress.columns.exchange": "Échange",
  "networkEgress.columns.desiredEgress": "Sortie souhaitée",
  "networkEgress.columns.effectiveEgress": "Sortie efficace",
  "networkEgress.columns.selectEgress": "Sélectionner manuellement la sortie",
  "networkEgress.target.local": "Sortie publique locale",
  "networkEgress.target.unknown": "{{id}} du serveur inconnu",
  "networkEgress.gateways.title": "Serveurs de sortie",
  "networkEgress.gateways.description": "Installez et maintenez le tunnel sur l'hôte de sortie. L'état est déterminé à partir d'une observation locale.",
  "networkEgress.gateways.help": "Installe de manière idempotente WireGuard standard, nftables, le transfert d'IP et la configuration persistante de systemd via une connexion SSH privée. L'état est déterminé à partir des observations du tunnel local de ZML Monitor, et non par un agent distant personnalisé.",
  "networkEgress.gateways.count": "{{count}} serveurs",
  "networkEgress.gateways.empty": "Pas de serveurs de sortie",
  "networkEgress.gateways.emptyDescription": "Ajoutez un hôte de sortie accessible depuis cette machine, testez la connexion, puis procédez à l'installation.",
  "networkEgress.gateways.tableAria": "Serveurs de sortie",
  "networkEgress.gateways.notInUse": "Non utilisé",
  "networkEgress.gateways.credentialMissing": "Identifiant manquant",
  "networkEgress.gateways.fingerprint": "{{value}} d'empreintes digitales",
  "networkEgress.gateways.trafficTotal": "Total ↓ {{rx}} · ↑ {{tx}}",
  "networkEgress.gateways.trafficTotalLabel": "Trafic cumulé",
  "networkEgress.gateways.trafficObservedLabel": "Trafic observé",
  "networkEgress.gateways.detailsExpand": "Afficher les détails du tunnel et du trafic de {{gateway}}",
  "networkEgress.gateways.detailsCollapse": "Masquer les détails du tunnel et du trafic de {{gateway}}",
  "networkEgress.gateways.interface": "Interface",
  "networkEgress.gateways.tunnel": "Tunnel",
  "networkEgress.gateways.tunnelObservation": "Tunnel RTT {{rtt}} · observé {{time}}",
  "networkEgress.gateways.publicIp": "Adresse IP publique",
  "networkEgress.gateways.publicIpHistorical": "Adresse IP publique (historique)",
  "networkEgress.gateways.probeFailed": "Défaillance de la sonde de courant",
  "networkEgress.gateways.probeFailedWithIp": "{{ip}} · Défaillance de la sonde de courant",
  "networkEgress.gateways.peer": "Pair",
  "networkEgress.gateways.installFailed": "L'installation de la configuration réseau a échoué.",
  "networkEgress.gateways.noIssues": "Aucun problème",
  "networkEgress.gateways.installAria": "Installer ou harmoniser la configuration réseau standard pour {{gateway}}",
  "networkEgress.gateways.installing": "Installation en cours…",
  "networkEgress.gateways.moreActionsAria": "Plus d'actions pour « {{gateway}} »",
  "networkEgress.gateways.actionsAria": "Actions du serveur pour {{gateway}}",
  "networkEgress.gateways.usageReason": "Utilisé par {{exchanges}}. Veuillez d'abord configurer explicitement ces échanges pour qu'ils passent par le réseau local ou une autre sortie.",
  "networkEgress.assignments.title": "Sortie Exchange",
  "networkEgress.assignments.description": "Tout le trafic sortant d'un central téléphonique passe par une seule sortie. Un commutateur défaillant reste déconnecté.",
  "networkEgress.assignments.help": "Toutes les connexions sortantes (WS, REST, SBE, FIX, annonces et autres) pour chaque bourse utilisent une seule sortie sélectionnée. La commutation interrompt la connexion avec la bourse, libère les anciennes connexions, valide le mappage unique, puis rétablit la connexion. En cas d'échec, la connexion reste interrompue et il n'y a jamais de basculement silencieux.",
  "networkEgress.assignments.count": "{{count}} correspondances",
  "networkEgress.assignments.batchAria": "Enregistrer les sorties d'échange par lots",
  "networkEgress.assignments.selected": "{{count}} sélectionné",
  "networkEgress.assignments.changed": "{{count}} modifié",
  "networkEgress.assignments.tableAria": "Sortie du réseau d'échange",
  "networkEgress.assignments.selectPendingAria": "Sélectionner les sorties en attente pour {{exchange}}",
  "networkEgress.assignments.selectEgressAria": "Sélectionner la sortie réseau pour l'{{exchange}}",
  "networkEgress.assignments.notEffective": "Non opérationnel (déconnecté)",
  "networkEgress.assignments.exchangeDisabled": "Échange désactivé",
  "networkEgress.assignments.targetNotReady": "La sortie cible n'a pas terminé la vérification de son état de préparation",
  "networkEgress.assignments.missing": "Configuration de la sortie Exchange manquante",
  "networkEgress.assignments.missingDescription": "Le backend n'a pas renvoyé de mappage de sortie unique pour chaque échange. Cette page ne déduira ni ne créera de valeur par défaut implicite.",
  "networkEgress.dialog.createTitle": "Ajouter un serveur de sortie",
  "networkEgress.dialog.editTitle": "Modifier le serveur de sortie",
  "networkEgress.dialog.description": "Enregistrez les informations de connexion privées pour installer Egress. Le mot de passe n'apparaît jamais à l'écran.",
  "networkEgress.dialog.help": "Enregistrez les informations de connexion SSH privées afin de tester et d'installer de manière idempotente les configurations standard de WireGuard, nftables, du transfert d'adresses IP et de systemd. Le mot de passe n'est transmis qu'au backend authentifié et n'est jamais renvoyé.",
  "networkEgress.dialog.name": "Nom",
  "networkEgress.dialog.namePlaceholder": "Par exemple : sortie du Japon 1",
  "networkEgress.dialog.privateIp": "Adresse IP privée",
  "networkEgress.dialog.privateIpHint": "Il doit être accessible depuis le réseau privé de ZML Monitor ; n'utilisez pas d'adresse publique.",
  "networkEgress.dialog.sshUser": "Utilisateur SSH",
  "networkEgress.dialog.sshPort": "Port SSH",
  "networkEgress.dialog.password": "Mot de passe SSH",
  "networkEgress.dialog.passwordStoredHint": "Un mot de passe est enregistré. Laissez ce champ vide pour le conserver ou saisissez-en un autre.",
  "networkEgress.dialog.passwordEditHint": "Laissez ce champ vide pour conserver vos identifiants actuels ou saisissez un nouveau mot de passe.",
  "networkEgress.dialog.passwordCreateHint": "Utilisé à des fins de test et d'installation ; n'a jamais été restitué.",
  "networkEgress.dialog.passwordKeepPlaceholder": "Ne rien indiquer pour conserver le mot de passe enregistré",
  "networkEgress.dialog.passwordPlaceholder": "Saisissez le mot de passe SSH",
  "networkEgress.dialog.showPassword": "Afficher le mot de passe SSH",
  "networkEgress.dialog.hidePassword": "Masquer le mot de passe SSH",
  "networkEgress.validation.name": "Saisissez un nom de serveur.",
  "networkEgress.validation.privateIp": "Saisissez une adresse IP privée.",
  "networkEgress.validation.sshUser": "Saisissez un utilisateur SSH.",
  "networkEgress.validation.sshPort": "Le port doit être un nombre entier compris entre 1 et 65 535.",
  "networkEgress.validation.password": "Un mot de passe est requis lors de l'ajout d'un serveur.",
  "networkEgress.confirm.batchTitle": "Conserver la sortie pour les échanges «{{count}} »",
  "networkEgress.confirm.batchDescription": "Modifications : {{changes}}. Le système interrompt et libère simultanément les connexions Exchange sélectionnées, valide les mappages de sortie uniques, puis rétablit toutes les connexions aux données de marché, REST et d’annonce. Il s’agit d’une reconnexion brève et contrôlée, et non d’une interruption TCP nulle. {{publicIpSummary}}Vérifiez d’abord les listes d’adresses IP autorisées pour les identifiants. Une cible dont la connexion a échoué reste effectivement déconnectée et ne se reconnecte jamais automatiquement.",
  "networkEgress.confirm.publicIps": "Adresses IP publiques cibles confirmées : {{ips}}. ",
  "networkEgress.confirm.noPublicIps": "Les cibles sont locales ou ne disposent pas d'adresse IP publique vérifiée à afficher. ",
  "networkEgress.confirm.batchConfirm": "Enregistrer et changer",
  "networkEgress.confirm.thisGateway": "ce serveur",
  "networkEgress.confirm.installTitle": "Installer ou harmoniser la configuration réseau pour {{gateway}}",
  "networkEgress.confirm.installDescription": "Le système vérifie l'hôte via une connexion SSH privée et installe de manière idempotente WireGuard standard, nftables, le transfert d'IP et une configuration systemd persistante. Il ne déploie ni programme distant ZML Monitor ni point de terminaison d'état. Un serveur utilisé par une plateforme d'échange ne peut pas exécuter cette action.",
  "networkEgress.confirm.reconcile": "Lancer le rapprochement",
  "networkEgress.confirm.install": "Lancer l'installation",
  "networkEgress.confirm.disableTitle": "Désactiver la configuration du tunnel pour {{gateway}}",
  "networkEgress.confirm.disableDescription": "Désactivez la configuration persistante de WireGuard en local et à distance. Seul un serveur inutilisé peut être désactivé ; le système ne bascule jamais implicitement la sortie d'échange.",
  "networkEgress.confirm.disable": "Confirmer la désactivation",
  "networkEgress.confirm.uninstallTitle": "Désinstaller la configuration réseau d'{{gateway}}",
  "networkEgress.confirm.uninstallDescription": "Supprimez les configurations WireGuard, nftables et systemd gérées par ZML Monitor via une connexion SSH privée, tout en conservant les informations de connexion au serveur. Seul un serveur inutilisé peut être désinstallé.",
  "networkEgress.confirm.uninstall": "Confirmer la désinstallation",
  "networkEgress.confirm.deleteTitle": "Supprimer {{gateway}}",
  "networkEgress.confirm.deleteDescription": "Cette opération ne nettoie que les éléments gérés par ZML Monitor : WireGuard local, les routes, les nftables, les clés temporaires et l'enregistrement du serveur. Elle ne nécessite aucune connexion au serveur distant et ne dépend pas de celui-ci. Elle supprime tout résidu distant présent sur cet hôte. Seul un serveur inutilisé peut être supprimé.",
  "networkEgress.reachability.failed": "Échec",
  "networkEgress.reachability.unknown": "Inconnu",
  "networkEgress.readiness.installing": "Installation",
  "networkEgress.readiness.installFailed": "Échec de l'installation",
  "networkEgress.readiness.disabled": "Non activé",
  "networkEgress.readiness.interfaceNotReady": "Interface non prête",
  "networkEgress.readiness.tunnelUnreachable": "Tunnel inaccessible",
  "networkEgress.readiness.handshakeUnknown": "Poignée de main du groupe de travail non confirmée",
  "networkEgress.readiness.handshakeExpired": "Expiration de la poignée de main WG",
  "networkEgress.readiness.ipProbeFailed": "Échec de la sonde IP de sortie",
  "networkEgress.readiness.ipUnconfirmed": "Adresse IP de sortie non confirmée",
  "networkEgress.readiness.notReady": "Pas encore prêt",
  "networkEgress.installState.notInstalled": "Non installé",
  "networkEgress.installState.installing": "Installation",
  "networkEgress.installState.ready": "Installé",
  "networkEgress.installState.disabled": "Personnes en situation de handicap",
  "networkEgress.installState.failed": "Échec de l'installation",
  "networkEgress.installState.readyOperational": "Installé · prêt à l'emploi",
  "networkEgress.installState.readyNotOperational": "Installé · pas encore prêt",
  "networkEgress.assignmentPhase.stable": "Stable",
  "networkEgress.assignmentPhase.switching": "Commutation",
  "networkEgress.assignmentPhase.failed": "Échec",
  "networkEgress.operationPhase.queued": "En attente",
  "networkEgress.operationPhase.running": "Course à pied",
  "networkEgress.operationPhase.succeeded": "Terminé",
  "networkEgress.operationPhase.failed": "Échec",
  "networkEgress.operationPhase.superseded": "Remplacé",
  "assetCatalog.title": "Catalogue des ressources",
  "assetCatalog.description": "Ouvrez un élément d'actif pour examiner les instruments, les unités et les combinaisons.",
  "assetCatalog.all": "Tout",
  "assetCatalog.filterLabel": "Filtre de classification des actifs",
  "assetCatalog.tableAria": "Liste du catalogue des ressources",
  "assetCatalog.catalogOnlyGroup": "Uniquement dans le catalogue · ce n'est pas un groupe d'exécution",
  "assetCatalog.catalogData": "Données du catalogue",
  "assetCatalog.actions.refresh": "Actualiser",
  "assetCatalog.actions.refreshing": "Rafraîchissant…",
  "assetCatalog.errors.load": "Impossible de charger le catalogue de ressources.",
  "assetCatalog.states.loading": "Chargement du catalogue de ressources…",
  "assetCatalog.states.unavailable": "Catalogue de ressources indisponible",
  "assetCatalog.states.staleTitle": "Liste non mise à jour",
  "assetCatalog.states.staleDescription": "Le dernier instantané reste visible avec les dernières données lues avec succès.",
  "assetCatalog.states.noMatches": "Aucun élément correspondant",
  "assetCatalog.states.noMatchesDescription": "Aucun élément ne correspond à la classification et à la recherche actuelles.",
  "assetCatalog.states.empty": "Aucun actif",
  "assetCatalog.states.emptyDescription": "En attente que le backend détecte les instruments et compile le catalogue.",
  "assetCatalog.coverage.runtime": "Ressources d'exécution {{count}}",
  "assetCatalog.coverage.leveraged": "Produits à réinitialisation à effet de levier {{count}}",
  "assetCatalog.coverage.security": "{{count}} de titres structurés",
  "assetCatalog.coverage.cmcLabeled": "CMC a identifié {{count}}",
  "assetCatalog.coverage.ambiguous": "{{count}} ambiguë",
  "assetCatalog.coverage.conflict": "Conflits d'identité {{count}}",
  "assetCatalog.coverage.catalogOnly": "Uniquement sur catalogue {{count}}",
  "assetCatalog.classification.resolved": "Identifié",
  "assetCatalog.classification.leveraged": "Produit à réinitialisation à effet de levier",
  "assetCatalog.classification.security": "Titres structurés",
  "assetCatalog.classification.ambiguous": "CMC ambigu",
  "assetCatalog.classification.conflict": "Conflit d'identité",
  "assetCatalog.classification.unavailable": "CMC non identifié",
  "assetCatalog.search.toolbarAria": "Rechercher dans le catalogue de ressources",
  "assetCatalog.search.inputAria": "Recherche dans le catalogue des ressources",
  "assetCatalog.search.placeholder": "Rechercher un actif, un symbole boursier, un nom ou un identifiant CMC",
  "assetCatalog.search.total": "{{count}} au total",
  "assetCatalog.search.matchedOfTotal": "{{matched}} sur {{total}}",
  "assetCatalog.columns.asset": "Actif",
  "assetCatalog.columns.assetKey": "Identifiant CMC",
  "assetCatalog.columns.identity": "Statut d'identité",
  "assetCatalog.columns.name": "Nom",
  "assetCatalog.columns.classification": "Classification",
  "assetCatalog.columns.rank": "Classement CMC",
  "assetCatalog.columns.instruments": "Instruments",
  "assetCatalog.columns.pairs": "Paires",
  "assetCatalog.columns.underlying": "Contexte économique",
  "assetCatalog.pagination.aria": "Pagination du catalogue de ressources",
  "assetCatalog.pagination.status": "Page {{page}} / {{pages}} · {{total}} assets",
  "assetCatalog.pagination.updating": "Le catalogue des ressources est en cours de mise à jour.",
  "assetCatalog.group.pageCount": "{{page}} sur cette page / Nombre total de produits « {{total}} »",
  "assetCatalog.group.count": "{{count}} produits",
  "assetCatalog.detail.title": "Détails sur les paires d'actifs",
  "assetCatalog.detail.runtimeDescription": "Consultez les instruments négociables actuels et les combinaisons réelles de cet actif.",
  "assetCatalog.detail.catalogDescription": "Cette entrée ne contient que des données de catalogue et ne comporte ni instruments ni paires d'exécution.",
  "assetCatalog.detail.instrumentCount": "Instruments {{count}}",
  "assetCatalog.detail.pairCount": "Combinaisons ciblées {{count}}",
  "assetCatalog.detail.errors.load": "Impossible de lire les détails relatifs à l'appairage en cours d'exécution.",
  "assetCatalog.detail.states.loading": "Chargement des appariements en mémoire…",
  "assetCatalog.detail.states.unavailable": "Détails de l'association indisponibles",
  "assetCatalog.detail.states.catalogOnly": "Pas d'associations à l'exécution",
  "assetCatalog.detail.states.catalogOnlyDescription": "Cet actif n'est actuellement pas négocié sur les marchés suivis. Vous trouverez ci-dessous ses données de référence.",
  "assetCatalog.detail.states.staleTitle": "Échec de l'actualisation ; affichage d'un instantané obsolète",
  "assetCatalog.detail.states.staleDescription": "Affichage des derniers instruments et combinaisons chargés avec succès. Veuillez réessayer pour actualiser la page.",
  "assetCatalog.detail.tabs.aria": "Détails sur les paires d'actifs",
  "assetCatalog.detail.tabs.instruments": "Instruments",
  "assetCatalog.detail.tabs.pairs": "Combinaisons réelles",
  "assetCatalog.detail.pagination.status": "Page {{page}} / {{pages}} · {{size}} par page · {{total}} au total",
  "assetCatalog.detail.actions.refresh": "Actualiser les associations",
  "assetCatalog.detail.actions.coinLookup": "Recherche de pièces",
  "assetCatalog.detail.unit.standard": "Unité standard",
  "assetCatalog.detail.unit.multiplier": "Multiplicateur ×{{value}}",
  "assetCatalog.detail.instruments.empty": "Pas d'outils d'exécution",
  "assetCatalog.detail.instruments.emptyDescription": "Cet actif ne comporte aucun instrument de négociation affichable.",
  "assetCatalog.detail.instruments.tableAria": "Outils d'exécution des ressources",
  "assetCatalog.detail.instruments.symbol": "Symbole autochtone",
  "assetCatalog.detail.instruments.exchangeMarket": "Bourse / marché",
  "assetCatalog.detail.instruments.rawAsset": "Nom de l'actif brut",
  "assetCatalog.detail.instruments.quoteUnit": "Unité de cotation",
  "assetCatalog.detail.instruments.pairingStatus": "Statut de la paire",
  "assetCatalog.detail.instruments.combinations": "Combinaisons",
  "assetCatalog.detail.instruments.pairable": "Inclus dans l'association",
  "assetCatalog.detail.instruments.notPairable": "Non inclus dans l'association",
  "assetCatalog.detail.opportunities.empty": "Aucune combinaison réelle",
  "assetCatalog.detail.opportunities.emptyDescription": "Aucune combinaison n'est publiée en vertu des classes de paires, des familles de cotations et des règles de liste noire actuellement en vigueur.",
  "assetCatalog.detail.opportunities.tableAria": "Combinaisons réelles d'actifs",
  "assetCatalog.detail.opportunities.class": "Classe",
  "assetCatalog.detail.opportunities.direction": "Direction réelle",
  "assetCatalog.detail.opportunities.id": "Référence de l'opportunité",
  "systemParams.title": "Paramètres système",
  "systemParams.errors.readTitle": "Échec de la lecture",
  "systemParams.errors.readFailed": "Impossible de lire les paramètres système. Vérifiez l'état du backend et réessayez.",
  "systemParams.errors.refreshTitle": "Échec de l'actualisation des paramètres système",
  "systemParams.summary.effective": "Valeur effective",
  "systemParams.summary.persisted": "Valeur persistante",
  "systemParams.summary.range": "Plage autorisée",
  "systemParams.editor.title": "Intervalle de calcul unifié",
  "systemParams.editor.parameter": "Paramètre",
  "systemParams.editor.mode": "Mode :",
  "systemParams.editor.persistence": ". Les modifications sont enregistrées immédiatement et s'appliquent dès le prochain lot de calcul.",
  "systemParams.editor.controlsAria": "Commandes unifiées de gestion des intervalles de calcul",
  "systemParams.editor.field": "Intervalle de calcul unifié",
  "systemParams.disabled.saving": "Les paramètres de calcul sont en cours d'enregistrement. Veuillez patienter jusqu'à la fin de l'opération.",
  "systemParams.disabled.refreshFailed": "L'actualisation de l'instantané des paramètres a échoué. Veuillez actualiser correctement avant d'enregistrer.",
  "systemParams.actions.refresh": "Actualiser",
  "systemParams.actions.retry": "Réessayer",
  "systemParams.actions.saving": "Enregistrement en cours…",
  "systemParams.actions.save": "Enregistrer",
  "systemParams.feedback.error": "Échec de l'action",
  "systemParams.feedback.saved": "Enregistré",
  "systemParams.details.title": "Exécution et configuration",
  "systemParams.details.overruns": "Dépassements budgétaires",
  "systemParams.details.source": "Source des paramètres",
  "systemParams.details.revision": "Révision des paramètres",
  "systemParams.details.savedAt": "Dernière sauvegarde",
  "systemParams.details.neverSaved": "Aucune révision enregistrée",
  "billingManagement.errors.signedOut": "Votre session a expiré. Reconnectez-vous et réessayez.",
  "billingManagement.errors.forbidden": "Ce compte ne permet pas de gérer la facturation ni les commandes.",
  "billingManagement.pricing.title": "Tarifs",
  "billingManagement.pricing.description": "Les modifications de prix s'appliquent uniquement aux nouvelles commandes. Pour les commandes existantes, le montant indiqué lors du paiement reste inchangé.",
  "billingManagement.pricing.loading": "Chargement de la configuration de facturation…",
  "billingManagement.pricing.fields.monthlyPrice": "Prix mensuel",
  "billingManagement.pricing.fields.maxDevices": "Appareils connectés simultanément",
  "billingManagement.pricing.fields.orderTtl": "Validité de la commande",
  "billingManagement.pricing.units.devices": "appareils",
  "billingManagement.pricing.units.minutes": "minutes",
  "billingManagement.pricing.units.seconds": "secondes",
  "billingManagement.pricing.sales.title": "Accepter de nouvelles commandes",
  "billingManagement.pricing.sales.description": "Lorsque cette fonction est désactivée, les utilisateurs ne peuvent pas créer de nouvelles commandes. Les commandes existantes ne sont pas affectées.",
  "billingManagement.pricing.entitlement.title": "Interruption du service après expiration",
  "billingManagement.pricing.entitlement.description": "Lorsque cette fonctionnalité est activée, les comptes ne disposant pas d'un abonnement actif ne peuvent pas consulter les données de surveillance.",
  "billingManagement.pricing.entitlement.help": "Lorsque cette option est activée, les comptes ne disposant pas d'un abonnement actif ne peuvent pas utiliser les données de surveillance ; ils peuvent toutefois se connecter, consulter les détails de leur abonnement et le renouveler. Lorsque cette option est désactivée, les niveaux sont enregistrés et affichés sans contrôle d'accès.",
  "billingManagement.pricing.entitlement.warning": "Avant d'enregistrer, vérifiez que les comptes devant conserver leur accès disposent d'un abonnement permanent ou non expiré.",
  "billingManagement.pricing.tiers.title": "Niveaux",
  "billingManagement.pricing.tiers.description": "Avec les formules, les utilisateurs choisissent le prix et le nombre d'appareils. L'accès reste soumis aux conditions de statut et de durée de validité.",
  "billingManagement.pricing.tiers.help": "Lorsque des niveaux sont définis, les utilisateurs en choisissent un lors du paiement. En l'absence de niveaux, le prix unique et le nombre d'appareils autorisés indiqués ci-dessus s'appliquent. Les niveaux n'ont d'incidence que sur le prix et le nombre d'appareils autorisés ; ce sont le statut du niveau et sa date d'expiration qui déterminent l'accès.",
  "billingManagement.pricing.receiving.title": "Réception des paiements",
  "billingManagement.pricing.receiving.description": "Configurez l'adresse de réception TRC20 et la recherche des paiements.",
  "billingManagement.pricing.receiving.address": "Adresse de réception TRC20",
  "billingManagement.pricing.receiving.addressPlaceholder": "Adresse de 34 caractères commençant par T",
  "billingManagement.pricing.receiving.usdtContract": "Adresse du contrat USDT",
  "billingManagement.pricing.receiving.trongridKey": "Clé en lecture seule TronGrid",
  "billingManagement.pricing.receiving.optional": "Ne rien indiquer pour désactiver cette fonction",
  "billingManagement.pricing.receiving.showKey": "Afficher la clé TronGrid",
  "billingManagement.pricing.receiving.hideKey": "Masquer la clé TronGrid",
  "billingManagement.pricing.receiving.pollInterval": "Intervalle d'interrogation",
  "billingManagement.pricing.receiving.addressWarning": "L'adresse de réception a changé. Une adresse erronée rend tout paiement irrécupérable ; vérifiez-la caractère par caractère avant de l'enregistrer.",
  "billingManagement.pricing.actions.discard": "Ignorer les modifications",
  "billingManagement.pricing.actions.saving": "Enregistrement en cours…",
  "billingManagement.pricing.actions.savePricing": "Enregistrer les tarifs",
  "billingManagement.pricing.actions.saveReceiving": "Enregistrer la configuration de réception",
  "billingManagement.pricing.confirmAddress.title": "Modifier l'adresse de réception ?",
  "billingManagement.pricing.confirmAddress.description": "\nNouvelle adresse : {{address}}\n. Toutes les commandes ultérieures devront être réglées à cette adresse. Une adresse erronée rendra les fonds irrécupérables.",
  "billingManagement.pricing.confirmAddress.confirm": "Modifier l'adresse",
  "billingManagement.pricing.feedback.pricingSaved": "Les tarifs ont été enregistrés. Ils s'appliquent immédiatement aux nouvelles commandes.",
  "billingManagement.pricing.feedback.receivingSaved": "La configuration de réception des paiements a été enregistrée.",
  "billingManagement.pricing.validation.monthlyPrice": "Le prix mensuel doit être un nombre valide compris entre 0 et 1 000 000.",
  "billingManagement.pricing.validation.maxDevices": "Le nombre d'appareils connectés simultanément doit être un nombre entier compris entre 1 et 10.",
  "billingManagement.pricing.validation.orderTtl": "La durée de validité de la commande doit être un nombre entier compris entre 5 et 1 440 minutes.",
  "billingManagement.pricing.validation.tooManyTiers": "Vous pouvez définir au maximum 12 niveaux d'achat.",
  "billingManagement.pricing.validation.tierIdFormat": "L'identifiant « Tier{{position}} » ne peut contenir que des lettres, des chiffres, des traits de soulignement et des tirets, pour un maximum de 32 caractères.",
  "billingManagement.pricing.validation.duplicateTierId": "L'identifiant de niveau «{{id}} » existe déjà.",
  "billingManagement.pricing.validation.tierName": "Le nom de l'{{position}} de niveau est obligatoire et ne doit pas dépasser 40 caractères.",
  "billingManagement.pricing.validation.tierPrice": "Le prix mensuel du niveau «{{position}}» doit être un nombre positif valide.",
  "billingManagement.pricing.validation.tierDevices": "La valeur attribuée au niveau « {{position}} » doit être un nombre entier compris entre 1 et 10.",
  "billingManagement.pricing.validation.pollInterval": "L'intervalle d'interrogation doit être un nombre entier compris entre 30 et 3 600 secondes.",
  "billingManagement.pricing.errors.loadStatus": "Impossible de charger la configuration de facturation ({{status}} HTTP).",
  "billingManagement.pricing.errors.loadFailed": "Impossible de charger la configuration de facturation. Veuillez réessayer dans quelques instants.",
  "billingManagement.pricing.errors.saveConfigFailed": "Impossible d'enregistrer les tarifs. Veuillez réessayer dans quelques instants.",
  "billingManagement.pricing.errors.saveReceivingFailed": "La configuration de réception des paiements n'a pas pu être enregistrée. Veuillez réessayer dans quelques instants.",
  "billingManagement.orders.title": "Commandes",
  "billingManagement.orders.description": "Chaque montant à payer comporte un suffixe fractionnaire unique permettant un rapprochement automatique. Procédez à un rapprochement manuel lorsqu'un paiement reçu ne correspond pas.",
  "billingManagement.orders.statusAria": "État de la commande",
  "billingManagement.orders.status.all": "Tout",
  "billingManagement.orders.status.pending": "En attente de paiement",
  "billingManagement.orders.status.paid": "Reçu",
  "billingManagement.orders.status.expired": "Périmé",
  "billingManagement.orders.status.cancelled": "Annulé",
  "billingManagement.orders.errors.loadStatus": "Les commandes et les reçus de paiement n'ont pas pu être chargés ({{status}} HTTP).",
  "billingManagement.orders.errors.loadFailed": "Les commandes et les reçus de paiement n'ont pas pu être chargés. Veuillez réessayer dans quelques instants.",
  "billingManagement.orders.errors.settleFailed": "La commande n'a pas pu être traitée. Veuillez réessayer dans quelques instants.",
  "billingManagement.orders.feedback.settled": "Le paiement a été confirmé et l'abonnement à {{username}} a été prolongé.",
  "billingManagement.orders.accountFallback": "ce compte",
  "billingManagement.orders.stale": "Affichage des derniers enregistrements chargés avec succès.",
  "billingManagement.orders.filteredEmpty.title": "Aucune commande ne présente ce statut",
  "billingManagement.orders.filteredEmpty.description": "Sélectionnez un autre statut pour afficher d'autres commandes.",
  "billingManagement.orders.loading": "Chargement des commandes…",
  "billingManagement.orders.empty.title": "Aucune commande",
  "billingManagement.orders.empty.description": "Les commandes apparaissent ici une fois que l'utilisateur a finalisé sa commande.",
  "billingManagement.orders.table.aria": "Liste des commandes",
  "billingManagement.orders.table.account": "Compte",
  "billingManagement.orders.table.duration": "Durée",
  "billingManagement.orders.table.amount": "Montant dû (USDT)",
  "billingManagement.orders.table.status": "Statut",
  "billingManagement.orders.table.createdAt": "Créé",
  "billingManagement.orders.table.actions": "Actions",
  "billingManagement.orders.months": "{{count}} mois",
  "billingManagement.orders.months_one": "{{count}} mois",
  "billingManagement.orders.months_other": "{{count}} mois",
  "billingManagement.orders.actions.manualSettle": "Effectuer le rapprochement manuellement",
  "billingManagement.orders.settleDialog.title": "Confirmer la réception de ce paiement ?",
  "billingManagement.orders.settleDialog.targetChanged": "Cette commande a été modifiée. Fermez cette boîte de dialogue et vérifiez la commande actuelle.",
  "billingManagement.orders.settleDialog.description": "La confirmation prolonge immédiatement <username>{{username}}</username> de <months>{{months}}</months> mois. Vérifiez d’abord sur la blockchain que <amount>{{amount}} USDT</amount> a bien été reçu.",
  "billingManagement.orders.settleDialog.confirm": "Accuser réception",
  "billingManagement.receipts.title": "Reçus non réconciliés",
  "billingManagement.receipts.description": "Transferts sur la chaîne qui n'ont pas pu être associés à un ordre. Les montants modifiés, les transferts en retard et les paiements en double apparaissent ici.",
  "billingManagement.receipts.loading": "Chargement des reçus de paiement…",
  "billingManagement.receipts.empty.title": "Aucun justificatif ne nécessite d'attention particulière",
  "billingManagement.receipts.empty.description": "Aucun paiement entrant ne nécessite actuellement de vérification manuelle.",
  "billingManagement.receipts.status.unmatched": "Inégalé",
  "billingManagement.receipts.status.matched": "Correspondant",
  "billingManagement.receipts.table.aria": "Reçus de paiement non rapprochés",
  "billingManagement.receipts.table.txHash": "Hachage de la transaction",
  "billingManagement.receipts.table.amount": "Montant (USDT)",
  "billingManagement.receipts.table.status": "Statut",
  "billingManagement.receipts.table.fromAddress": "Adresse de l'expéditeur",
  "billingManagement.receipts.table.observedAt": "Reçu",
  "billingManagement.tiers.fields.id": "Identifiant du niveau",
  "billingManagement.tiers.fields.name": "Nom d'affichage",
  "billingManagement.tiers.fields.monthlyPrice": "Prix mensuel · USDT",
  "billingManagement.tiers.fields.devices": "Appareils",
  "billingManagement.tiers.standardName": "Standard",
  "billingManagement.tiers.deleteAria": "Supprimer le niveau « {{tier}} »",
  "billingManagement.tiers.identityWarning": "Une fois qu'une commande utilise un identifiant de niveau, ne le modifiez pas et ne le réutilisez pas : les commandes antérieures renvoient toujours à cet identifiant ; le modifier reviendrait donc à modifier la signification des reçus déjà émis. La suppression d'un niveau n'a aucune incidence sur les abonnés existants ; leurs droits actuels restent valables jusqu'à leur date d'expiration.",
  "billingManagement.tiers.add": "Ajouter un niveau",
  "systemManagement.deferred.observabilityLoading": "Chargement des données d'abonnement et de visibilité du trafic…",
  "systemManagement.deferred.observabilityUnavailable": "Impossible de charger les données relatives aux abonnements et à la visibilité du trafic. Veuillez réessayer.",
  "systemManagement.deferred.paramsTitle": "Paramètres système",
  "systemManagement.format.uptime.seconds": "{{seconds}} sec",
  "systemManagement.format.uptime.minutes": "{{minutes}} min{{seconds}}sec",
  "systemManagement.format.uptime.hours": "{{hours}} {{minutes}} min",
  "systemManagement.format.relative.seconds": "{{count}} il y a quelques secondes",
  "systemManagement.format.relative.minutes": "{{count}} il y a quelques minutes",
  "systemManagement.format.relative.hours": "{{count}} il y a une heure",
  "systemManagement.format.relative.days": "{{count}} il y a d",
  "systemManagement.format.streamType.bookTicker": "Haut de la page",
  "systemManagement.format.streamType.markPrice": "$t(zml:zml.metric.mark_price)",
  "systemManagement.format.streamType.funding": "Financement",
  "systemManagement.format.streamType.ticker24h": "Cotations en temps réel sur 24 heures",
  "systemManagement.format.streamType.other": "Autres",
  "systemManagement.format.ingestEvent.connected": "Connecté",
  "systemManagement.format.ingestEvent.disconnected": "Déconnecté",
  "systemManagement.format.ingestEvent.reconnecting": "Renouer le contact",
  "systemManagement.format.ingestEvent.error": "Erreur",
  "systemManagement.format.ingestEvent.degraded": "Dégradé",
  "systemManagement.format.ingestEvent.restored": "Restauré",
  "systemManagement.format.ingestEvent.subscribed": "Abonné",
  "systemManagement.format.ingestEvent.recovered": "Le flux de messages a été rétabli",
  "systemManagement.format.ingestEvent.watchdog_stalled": "Le mécanisme de contrôle est au point mort",
  "systemManagement.format.ingestEvent.symbol_stale_repair": "Actualisation d'un seul symbole",
  "systemManagement.format.invalidReason.none": "Aucun",
  "systemManagement.format.invalidReason.long_stale": "Problème de fraîcheur à long terme",
  "systemManagement.format.invalidReason.short_stale": "Problème de fraîcheur lié à la courte durée de conservation",
  "systemManagement.format.invalidReason.legs_desynced": "Les jambes ne sont pas synchronisées",
  "systemManagement.format.invalidReason.spread_out_of_range": "Au-delà des limites du bon sens",
  "systemManagement.format.historyReason.recordingStopped": "L'enregistrement du nouvel historique est interrompu ; les données enregistrées restent disponibles",
  "systemManagement.format.historyReason.rollupRepair": "Les intervalles plus longs sont reconstitués à partir de données à la minute près",
  "systemManagement.format.historyReason.storeUnavailable": "L'historique n'est pas disponible",
  "systemManagement.format.historyReason.spread1mMissing": "Le résumé d'une minute manque",
  "systemManagement.format.historyReason.spread5mMissing": "Le rollup de 5 minutes manque",
  "systemManagement.format.historyReason.spread15mMissing": "Le rapport cumulatif de 15 minutes est manquant",
  "systemManagement.format.historyReason.spread30mMissing": "Il manque le récapitulatif de 30 minutes",
  "systemManagement.format.historyReason.spread1hMissing": "Il manque le rapport cumulatif sur 1 heure",
  "systemManagement.format.historyReason.spread1dMissing": "Il manque le récapitulatif quotidien",
  "systemManagement.format.historyReason.recording": "L'historique des enregistrements, les synthèses et les requêtes sont corrects",
  "systemManagement.format.historyReason.degraded": "Le pipeline d'historique est dégraded",
  "systemManagement.format.historyReason.unavailable": "Le pipeline d'historique n'est pas disponible",
  "systemManagement.page.backendUnavailable": "Backend indisponible",
  "systemManagement.page.viewportReadFailed": "Impossible de lire les diagnostics du plan de données de la fenêtre d'affichage ; les métriques sont peut-être obsolètes.",
  "systemManagement.page.statusReadFailed": "Impossible de lire l'état du système.",
  "systemManagement.page.paramsReadFailed": "Impossible de lire les paramètres de calcul en temps réel.",
  "systemManagement.page.checkBackend": "Vérifiez si le serveur zml-monitor est en cours d'exécution.",
  "systemManagement.page.refresh": "Actualiser",
  "systemManagement.page.refreshing": "Rafraîchissant…",
  "systemManagement.page.refreshFailed": "Échec de l'actualisation de l'état du système",
  "systemManagement.page.retainedSnapshot": "Le dernier « snapshot » réussi reste visible : {{error}}",
  "systemManagement.page.publishTitle": "Présentation générale de la publication des requêtes",
  "systemManagement.page.publishDescription": "La question est de savoir si le secteur de l'édition suit le rythme et s'il mérite qu'on s'y intéresse.",
  "systemManagement.page.validation.integerMilliseconds": "Saisissez un nombre entier valide exprimé en millisecondes.",
  "systemManagement.page.validation.millisecondRange": "Entrez une valeur comprise entre {{min}} et {{max}} ms.",
  "systemManagement.page.feedback.connectorDegraded": "{{venue}} a été mis en pause manuelle.",
  "systemManagement.page.feedback.connectorRestored": "{{venue}} a été remis en service.",
  "systemManagement.page.errors.computeConflict": "Un autre opérateur a mis à jour la configuration. La version de référence a été actualisée ; vérifiez les données saisies et enregistrez à nouveau.",
  "systemManagement.page.errors.publishConflict": "Un autre opérateur a mis à jour les paramètres de publication. La dernière version de référence a été chargée et vos données locales ont été conservées ; vérifiez-les et enregistrez à nouveau.",
  "systemManagement.page.errors.saveFailed": "Échec de l'enregistrement. Vérifiez l'état du serveur et réessayez.",
  "systemManagement.page.errors.connectorRefreshFailed": "L'action {{venue}} a été soumise, mais l'état du connecteur n'a pas pu être actualisé.",
  "systemManagement.page.errors.connectorActionFailed": "L'action {{venue}} a échoué. Vérifiez l'état du backend ou le journal d'audit.",
  "systemManagement.overview.view": "Afficher",
  "systemManagement.overview.resource.sampling": "Échantillonnage du processeur",
  "systemManagement.overview.resource.shared": "Environnement d'exécution partagé",
  "systemManagement.overview.resource.dedicated": "Fils de discussion dédiés",
  "systemManagement.overview.resource.coverage": "Couverture du processeur",
  "systemManagement.overview.resource.hotThread": "Discussion populaire {{thread}}{{cpu}}",
  "systemManagement.overview.healthTitle": "État du pipeline",
  "systemManagement.overview.health.ingest": "Intégration du marché",
  "systemManagement.overview.health.ingestDescription": "{{connected}} en ligne / {{disconnected}} hors ligne",
  "systemManagement.overview.health.compute": "Calcul en temps réel",
  "systemManagement.overview.health.computeDescription": "{{commit}} ms commit · {{interval}} ms interval",
  "systemManagement.overview.health.publish": "Publication d'une requête",
  "systemManagement.overview.health.publishDescription": "{{sessions}} Sessions WS",
  "systemManagement.overview.health.sharedRuntime": "Environnement d'exécution asynchrone partagé",
  "systemManagement.overview.health.sharedRuntimeDescription": "Les employés de Tokio · {{count}} : tâches spécifiques en vol",
  "systemManagement.overview.health.history": "Données historiques",
  "systemManagement.overview.metrics.uptime": "Temps de disponibilité",
  "systemManagement.overview.metrics.memory": "Mémoire (RSS)",
  "systemManagement.overview.metrics.exchanges": "Échanges",
  "systemManagement.overview.metrics.combinations": "Combinaisons",
  "systemManagement.overview.metrics.shards": "Éclats",
  "systemManagement.overview.runtime.title": "Durée d'exécution",
  "systemManagement.overview.runtime.startedAt": "Lancé",
  "systemManagement.overview.runtime.orchestrator": "État de l'Orchestrator",
  "systemManagement.overview.announcements.title": "Prise en charge des annonces",
  "systemManagement.overview.announcements.pipeline": "Pipeline de traitement des détails natifs",
  "systemManagement.overview.announcements.ready": "Prêt",
  "systemManagement.overview.announcements.idle": "Au ralenti",
  "systemManagement.overview.announcements.queue": "En attente / en cours de traitement",
  "systemManagement.overview.announcements.duration": "Derniers détails natifs / Durée de la porte",
  "systemManagement.overview.history.title": "Histoire et dégradation",
  "systemManagement.overview.history.ingress": "Enregistrement de l'historique",
  "systemManagement.overview.history.running": "Course à pied",
  "systemManagement.overview.history.stopped": "Arrêté",
  "systemManagement.overview.history.outbox": "Blocs / lignes / octets en attente de validation",
  "systemManagement.overview.history.volatile": "Lots / lignes / octets en mémoire",
  "systemManagement.overview.history.critical": "Échec critique de l'historique-entrée",
  "systemManagement.overview.history.latched": "Verrouillé ; en attente d'une action au niveau du processus",
  "systemManagement.overview.history.status": "Historique des statuts",
  "systemManagement.overview.history.degradedReasons": "Causes de la dégradation",
  "systemManagement.ingest.tabs.connectors": "Connexions",
  "systemManagement.ingest.tabs.subscriptions": "Abonnements et trafic",
  "systemManagement.ingest.tabs.benchmark": "Marché de référence",
  "systemManagement.ingest.tabs.suspicious": "Combinaisons suspectes",
  "systemManagement.ingest.actionFailed": "Échec de l'action",
  "systemManagement.ingest.diagnostics": "Diagnostic des ingestion",
  "systemManagement.ingest.disconnected": "{{count}} les canaux sont déconnectés.",
  "systemManagement.ingest.degraded": "{{count}} les chaînes sont de mauvaise qualité.",
  "systemManagement.benchmark.asset": "Actif de référence",
  "systemManagement.benchmark.allAssets": "Tout",
  "systemManagement.benchmark.loading": "Chargement des données de référence du marché…",
  "systemManagement.benchmark.loadFailed": "Les données de référence du marché n'ont pas pu être lues.",
  "systemManagement.benchmark.stale": "Les données sont obsolètes",
  "systemManagement.benchmark.noSourceTimestamp": "Horodatage source indisponible",
  "systemManagement.benchmark.snapshot": "Aperçu : {{time}}",
  "systemManagement.benchmark.refreshFailed": "Échec de la mise à jour du marché de référence",
  "systemManagement.benchmark.unavailable": "Marché de référence indisponible",
  "systemManagement.benchmark.empty.title": "Aucune donnée de marché",
  "systemManagement.benchmark.empty.description": "Vérifiez que le backend importe bien les ressources sélectionnées.",
  "systemManagement.benchmark.table.aria": "Marché de référence",
  "systemManagement.benchmark.table.symbol": "Symbole",
  "systemManagement.benchmark.table.exchange": "Échange",
  "systemManagement.benchmark.table.type": "Type",
  "systemManagement.benchmark.table.bidAsk": "Meilleur cours acheteur / vendeur",
  "systemManagement.benchmark.table.spread": "Écart",
  "systemManagement.benchmark.table.fundingRate": "$t(zml:zml.metric.funding_rate)",
  "systemManagement.benchmark.table.fundingCap": "Limites",
  "systemManagement.benchmark.table.interval": "Intervalle",
  "systemManagement.benchmark.table.openInterest": "$t(zml:zml.metric.open_interest_notional)",
  "systemManagement.benchmark.table.volume24h": "$t(zml:zml.metric.quote_volume_24h)",
  "systemManagement.connectors.statusTitle": "État de la connexion",
  "systemManagement.connectors.overviewTitle": "Diagnostic des connecteurs",
  "systemManagement.connectors.currentFocus": "Priorité actuelle",
  "systemManagement.connectors.groupCount": "{{count}} groupes",
  "systemManagement.connectors.refreshedAt": "Version actualisée {{time}}",
  "systemManagement.connectors.waiting": "En attente de données",
  "systemManagement.connectors.summary.groups": "Groupes boursiers / de marché",
  "systemManagement.connectors.summary.streams": "Flux logiques",
  "systemManagement.connectors.summary.abnormalGroups": "Groupes anormaux",
  "systemManagement.connectors.summary.abnormalStreams": "Flux anormaux",
  "systemManagement.connectors.summary.watchdog5m": "Mécanisme de surveillance de 5 minutes",
  "systemManagement.connectors.summary.fallback": "Espaces réservés pour la compatibilité",
  "systemManagement.connectors.table.aria": "Présentation du diagnostic des connecteurs",
  "systemManagement.connectors.table.exchange": "Échange",
  "systemManagement.connectors.table.market": "Marché",
  "systemManagement.connectors.table.overallStatus": "Situation générale",
  "systemManagement.connectors.table.instrumentsStreams": "Instruments / flux",
  "systemManagement.connectors.table.transportAge": "La pire époque en matière de transports",
  "systemManagement.connectors.table.businessAge": "Le pire âge pour les événements professionnels",
  "systemManagement.connectors.table.reconnectErrors": "Reconnexions / erreurs",
  "systemManagement.connectors.table.actions": "Actions",
  "systemManagement.connectors.abnormalStreams": "{{count}} flux anormaux",
  "systemManagement.connectors.noStreamTypes": "Aucun type de flux",
  "systemManagement.connectors.latestTransport": "Dernières actualités sur les transports {{time}}",
  "systemManagement.connectors.connectedFor": "Connecté pour « {{duration}} »",
  "systemManagement.connectors.latestBusiness": "Dernier événement professionnel : {{time}}",
  "systemManagement.connectors.stallWatchdog": "Stands {{stalls}} · surveillance {{watchdog}}",
  "systemManagement.connectors.fallbackOnly": "Seules les lignes de remplacement relatives à la compatibilité sont disponibles",
  "systemManagement.connectors.coveredStreams": "Sites concernés : {{streams}}",
  "systemManagement.connectors.issue.disabledHeadline": "Cette bourse ou ce marché est désactivé(e) et n'est pas pris(e) en compte dans le décompte des anomalies",
  "systemManagement.connectors.issue.disabledTag": "Personnes en situation de handicap",
  "systemManagement.connectors.issue.abnormalStreams": "{{count}} flux anormaux",
  "systemManagement.connectors.issue.watchdogHistory": "Une association de défense de la mémoire historique rétablit le lien {{count}}",
  "systemManagement.connectors.issue.errorHistory": "Erreurs historiques {{count}}",
  "systemManagement.connectors.issue.fallback": "Espace réservé à la compatibilité",
  "systemManagement.connectors.issue.authenticatedWsMissing": "Désactivation des identifiants WS authentifiés",
  "systemManagement.connectors.issue.noRealStreams": "Pas de diffusion en direct",
  "systemManagement.connectors.issue.abnormalHeadline": "{{count}} les flux posent des problèmes",
  "systemManagement.connectors.issue.authenticatedWsHeadline": "Coinbase International {{market}} : les identifiants WS authentifiés sont manquants ou désactivés",
  "systemManagement.connectors.issue.fallbackHeadline": "Seules les lignes de remplacement relatives à la compatibilité sont disponibles",
  "systemManagement.connectors.issue.healthyHeadline": "Aucun problème au niveau du flux n'a été détecté",
  "systemManagement.connectors.actions.running": "Course à pied",
  "systemManagement.connectors.actions.runningEllipsis": "Je cours…",
  "systemManagement.connectors.actions.disabled": "Désactivé dans le plan de contrôle",
  "systemManagement.connectors.actions.busyReason": "Une action de connecteur est en cours d'exécution. Veuillez patienter jusqu'à ce qu'elle soit terminée.",
  "systemManagement.connectors.actions.restore": "Restaurer",
  "systemManagement.connectors.actions.degrade": "Dégrader",
  "systemManagement.connectors.actions.expand": "Développer",
  "systemManagement.connectors.actions.collapse": "Réduire",
  "systemManagement.connectors.streams.empty": "Aucune information détaillée concernant le débit n'est disponible.",
  "systemManagement.connectors.streams.aria": "Détails du flux {{venue}}",
  "systemManagement.connectors.streams.type": "Type de cours d'eau",
  "systemManagement.connectors.streams.name": "Nom du cours d'eau",
  "systemManagement.connectors.streams.chunk": "Chunk",
  "systemManagement.connectors.streams.subscriptions": "Abonnements",
  "systemManagement.connectors.streams.status": "Statut",
  "systemManagement.connectors.streams.lastEvent": "Dernier événement valide",
  "systemManagement.connectors.streams.freshness": "Fraîcheur du cours d'eau",
  "systemManagement.connectors.streams.watchdog": "Organisme de surveillance",
  "systemManagement.connectors.streams.stalls": "Stands",
  "systemManagement.connectors.streams.errors": "Erreurs",
  "systemManagement.connectors.streams.rowAria": "{{venue}} {{market}} {{type}} {{stream}}{{chunk}}",
  "systemManagement.connectors.streams.chunkSuffix": " chunk {{chunk}}",
  "systemManagement.connectors.streams.errorAria": "Afficher la dernière erreur concernant {{stream}}",
  "systemManagement.connectors.empty": "Aucun diagnostic des connecteurs n'est disponible.",
  "systemManagement.connectors.loadingData": "Chargement des diagnostics du connecteur…",
  "systemManagement.connectors.errors.dataLoad": "Impossible de lire les informations de diagnostic du connecteur.",
  "systemManagement.connectors.errors.dataRefresh": "Échec de l'actualisation du diagnostic du connecteur",
  "systemManagement.connectors.errors.dataUnavailable": "Diagnostic des connecteurs indisponible",
  "systemManagement.connectors.logs.title": "Journal des événements en temps réel",
  "systemManagement.connectors.logs.eventType": "Type d'événement",
  "systemManagement.connectors.logs.all": "Tout",
  "systemManagement.connectors.logs.scope": "Portée du journal",
  "systemManagement.connectors.logs.focus": "Focus actuel : {{venue}} / {{market}}",
  "systemManagement.connectors.logs.global": "Mondial",
  "systemManagement.connectors.logs.recent": "Dernières actualités d'{{count}}",
  "systemManagement.connectors.logs.connection": "Connexion",
  "systemManagement.connectors.logs.stream": "Diffusion en continu",
  "systemManagement.connectors.logs.connector": "Connecteur",
  "systemManagement.connectors.logs.empty": "Aucun événement en direct ne correspond aux filtres actuels.",
  "systemManagement.suspicious.retainedSnapshotPrefix": "Le dernier instantané réussi reste visible : ",
  "systemManagement.suspicious.presentation.side.long": "Jambe longue",
  "systemManagement.suspicious.presentation.side.short": "Jambe courte",
  "systemManagement.suspicious.presentation.assessment.desynced": "La synchronisation des données de fraîcheur des segments n'est pas correcte ; les valeurs en temps réel sont figées",
  "systemManagement.suspicious.presentation.assessment.longStale": "La mise à jour des données à long terme a échoué ; les valeurs en temps réel sont figées",
  "systemManagement.suspicious.presentation.assessment.shortStale": "La mise à jour des données à court terme a échoué ; les valeurs en temps réel sont figées",
  "systemManagement.suspicious.presentation.assessment.nearInvalid": "La combinaison est sur le point d'expirer ; vérifiez la fraîcheur des cuisses.",
  "systemManagement.suspicious.presentation.assessment.valid": "Cette combinaison est actuellement valide en temps réel",
  "systemManagement.suspicious.presentation.rootCause.sideHeadline": "{{side}}: {{label}}",
  "systemManagement.suspicious.presentation.rootCause.nearThresholdHeadline": "Combinaison proche des seuils diagnostiques",
  "systemManagement.suspicious.presentation.rootCause.nearThresholdDetail": "La combinaison reste valable, mais les indices de fraîcheur « long-leg » ({{longAge}}), « short-leg » ({{shortAge}}) et le delta des jambes ({{delta}}) approchent des seuils diagnostiques.",
  "systemManagement.suspicious.presentation.rootCause.unknown": "Évaluation diagnostique indisponible",
  "systemManagement.suspicious.presentation.diagnostic.no_quote.label": "Aucun devis reçu",
  "systemManagement.suspicious.presentation.diagnostic.no_quote.detail": "Aucun instantané de cotation utilisable n'est disponible pour {{venue}} {{symbol}}.",
  "systemManagement.suspicious.presentation.diagnostic.fresh.label": "Le devis est récent",
  "systemManagement.suspicious.presentation.diagnostic.fresh.detail": "La cotation {{venue}} {{symbol}} se trouve dans la fenêtre en temps réel.",
  "systemManagement.suspicious.presentation.diagnostic.no_price_stream.label": "Source de la citation indisponible",
  "systemManagement.suspicious.presentation.diagnostic.no_price_stream.detail": "{{venue}} {{symbol}} ne dispose actuellement d'aucune source de cotation disponible.",
  "systemManagement.suspicious.presentation.diagnostic.stream_unhealthy.label": "Source de la citation non disponible",
  "systemManagement.suspicious.presentation.diagnostic.stream_unhealthy.detail": "La source de cotation pour {{venue}} {{symbol}} est actuellement hors ligne.",
  "systemManagement.suspicious.presentation.diagnostic.official_book_not_two_sided.label": "Cours acheteur et vendeur incomplets",
  "systemManagement.suspicious.presentation.diagnostic.official_book_not_two_sided.detail": "{{venue}} {{symbol}} ne fournit pas actuellement de cours acheteur et vendeur complets. Les anciennes cotations ne sont pas utilisées pour mettre à jour l'écart de cotation en temps réel.",
  "systemManagement.suspicious.presentation.diagnostic.upstream_symbol_sparse.label": "Exchange n'a pas mis à jour cette paire",
  "systemManagement.suspicious.presentation.diagnostic.upstream_symbol_sparse.detail": "La cotation de {{venue}} {{symbol}} date de {{age}}. La connexion à la bourse est active, mais aucune nouvelle cotation n'est parvenue pour cette paire.",
  "systemManagement.suspicious.presentation.diagnostic.unknown.label": "Statut des données inconnu",
  "systemManagement.suspicious.presentation.diagnostic.unknown.detail": "Il n'est actuellement pas possible de déterminer le statut de la proposition.",
  "systemManagement.suspicious.thresholds.title": "Paramètres de validité des devis",
  "systemManagement.suspicious.thresholds.deltaValue": "{{value}} du delta de la jambe",
  "systemManagement.suspicious.thresholds.staleValue": "{{value}} sur une jambe",
  "systemManagement.suspicious.thresholds.controlsAria": "Contrôles des seuils de diagnostic",
  "systemManagement.suspicious.thresholds.deltaField": "Delta des jambes · s",
  "systemManagement.suspicious.thresholds.staleField": "Temps mort sur une seule jambe · s",
  "systemManagement.suspicious.validation.validSeconds": "Entrez un nombre de secondes valide.",
  "systemManagement.suspicious.validation.legDeltaRange": "Le delta de la jambe doit être compris entre {{min}} et {{max}}.",
  "systemManagement.suspicious.validation.legStaleRange": "Le temps mort pour une seule équipe doit être demandé à partir de {{min}} jusqu'à {{max}}.",
  "systemManagement.suspicious.validation.deltaExceedsStale": "Le « leg delta » ne peut pas dépasser le délai d'attente pour une jambe.",
  "systemManagement.suspicious.feedback.thresholdSaved": "Mise à jour en temps réel et enregistrement.",
  "systemManagement.suspicious.disabled.saving": "Les seuils de diagnostic sont en cours d'enregistrement. Veuillez patienter jusqu'à la fin de l'opération.",
  "systemManagement.suspicious.disabled.refreshFailed": "Échec de l'actualisation du seuil d'exécution. Veuillez effectuer l'actualisation avant d'enregistrer.",
  "systemManagement.suspicious.disabled.notLoaded": "Les seuils d'exécution n'ont pas été chargés et ne peuvent pas être enregistrés.",
  "systemManagement.suspicious.disabled.refreshFailedLabel": "Échec de l'actualisation",
  "systemManagement.suspicious.disabled.notLoadedLabel": "Non chargé",
  "systemManagement.suspicious.actions.saving": "Enregistrement en cours…",
  "systemManagement.suspicious.actions.save": "Enregistrer",
  "systemManagement.suspicious.actions.viewDiagnostics": "Voir la raison",
  "systemManagement.suspicious.actions.viewStream": "Afficher la connexion aux données de marché",
  "systemManagement.suspicious.errors.thresholdLoad": "Les seuils de diagnostic n'ont pas pu être lus.",
  "systemManagement.suspicious.errors.thresholdRefresh": "Échec de la mise à jour du seuil de diagnostic",
  "systemManagement.suspicious.errors.thresholdConflict": "Un autre opérateur a mis à jour les seuils. La dernière référence officielle a été chargée et vos données locales sont toujours présentes ; vérifiez-les et enregistrez à nouveau.",
  "systemManagement.suspicious.errors.listLoad": "Les combinaisons suspectes n'ont pas pu être lues.",
  "systemManagement.suspicious.errors.listRefresh": "Échec de l'actualisation d'une combinaison suspecte",
  "systemManagement.suspicious.errors.listUnavailable": "Combinaisons suspectes indisponibles",
  "systemManagement.suspicious.errors.detailLoad": "Les diagnostics combinés n'ont pas pu être lus.",
  "systemManagement.suspicious.errors.detailRefresh": "Échec de la mise à jour du diagnostic combiné",
  "systemManagement.suspicious.metrics.invalid": "Combinaisons non valides",
  "systemManagement.suspicious.metrics.currentList": "Liste actuelle",
  "systemManagement.suspicious.metrics.reconnects5m": "Raccordements · 5 m",
  "systemManagement.suspicious.metrics.worstVenue": "Le pire échange",
  "systemManagement.suspicious.list.title": "Combinaisons suspectes",
  "systemManagement.suspicious.list.description": "N'affiche que les cas avérés de non-conformité en matière de fraîcheur ; les combinaisons proches du seuil sont exclues.",
  "systemManagement.suspicious.list.filterAria": "Filtrer les combinaisons suspectes",
  "systemManagement.suspicious.list.baseAssetAria": "Ressource de base pour le diagnostic du système",
  "systemManagement.suspicious.list.baseAssetPlaceholder": "Actif sous-jacent, par exemple le BTC",
  "systemManagement.suspicious.list.invalidOnly": "Uniquement les pannes confirmées",
  "systemManagement.suspicious.list.openHint": "Sélectionnez une ligne ou utilisez la fonction « Diagnostics de la vue » pour examiner son instantané de référence.",
  "systemManagement.suspicious.list.loading": "Chargement des combinaisons suspectes…",
  "systemManagement.suspicious.list.empty": "Aucune combinaison suspecte n'a été trouvée.",
  "systemManagement.suspicious.list.freshnessInvalid": "Problème de fraîcheur",
  "systemManagement.suspicious.list.table.aria": "Combinaisons suspectes",
  "systemManagement.suspicious.list.table.asset": "Actif sous-jacent",
  "systemManagement.suspicious.list.table.route": "Combinaison",
  "systemManagement.suspicious.list.table.status": "Statut",
  "systemManagement.suspicious.list.table.spread": "Position ouverte",
  "systemManagement.suspicious.list.table.funding8h": "financement net équivalent à 8 heures",
  "systemManagement.suspicious.list.table.longAge": "Une fraîcheur qui dure longtemps",
  "systemManagement.suspicious.list.table.shortAge": "Fraîcheur à court terme",
  "systemManagement.suspicious.list.table.delta": "Delta de la jambe",
  "systemManagement.suspicious.list.table.diagnostics": "Diagnostics",
  "systemManagement.suspicious.detail.title": "Opportunité concernée",
  "systemManagement.suspicious.detail.description": "Vérifiez pourquoi cette opportunité n'est pas valable et examinez les cotations des deux segments.",
  "systemManagement.suspicious.detail.readingLive": "Aperçu actuel",
  "systemManagement.suspicious.detail.waitingSelection": "En attente d'une sélection",
  "systemManagement.suspicious.detail.selectTitle": "Sélectionnez une combinaison à vérifier",
  "systemManagement.suspicious.detail.selectDescription": "La liste présente les problèmes de fraîcheur confirmés. Sélectionnez-en un pour afficher ici son instantané de référence.",
  "systemManagement.suspicious.detail.loading": "Chargement des diagnostics combinés…",
  "systemManagement.suspicious.detail.assessment": "Situation actuelle",
  "systemManagement.suspicious.detail.readingSnapshot": "Lecture du dernier instantané de diagnostic.",
  "systemManagement.suspicious.detail.freshness": "Frais et varié",
  "systemManagement.suspicious.detail.statusTitle": "Statut de la combinaison",
  "systemManagement.suspicious.detail.status": "Statut",
  "systemManagement.suspicious.detail.valid": "Valide",
  "systemManagement.suspicious.detail.invalid": "Non valide",
  "systemManagement.suspicious.detail.reason": "Raison",
  "systemManagement.suspicious.detail.longAge": "Une fraîcheur qui dure longtemps",
  "systemManagement.suspicious.detail.shortAge": "Fraîcheur à court terme",
  "systemManagement.suspicious.detail.delta": "Delta de la jambe",
  "systemManagement.suspicious.detail.spreadFunding": "Position ouverte / financement net équivalent à 8 heures",
  "systemManagement.suspicious.detail.longLeg": "Citation sur les longues jambes",
  "systemManagement.suspicious.detail.shortLeg": "Citation « Short-leg »",
  "systemManagement.suspicious.streams.title": "Flux associés",
  "systemManagement.suspicious.streams.description": "Aperçus de l'état des flux pour les segments actuels",
  "systemManagement.suspicious.streams.empty": "Aucun instantané de flux associé n'est disponible.",
  "systemManagement.suspicious.streams.aria": "État combiné des flux liés au diagnostic",
  "systemManagement.suspicious.streams.stream": "Diffusion en continu",
  "systemManagement.suspicious.streams.status": "Statut",
  "systemManagement.suspicious.streams.lastEvent": "Dernier événement valide",
  "systemManagement.suspicious.streams.freshness": "Fraîcheur du cours d'eau",
  "systemManagement.suspicious.streams.watchdog": "Organisme de surveillance",
  "systemManagement.suspicious.events.title": "Événements de connexion récents",
  "systemManagement.suspicious.events.description": "Uniquement les événements en direct directement liés aux deux étapes en cours",
  "systemManagement.suspicious.events.empty": "Aucun événement de connexion récent ne correspond.",
  "systemManagement.suspicious.events.aria": "Diagnostic combiné des événements de connexion récents",
  "systemManagement.suspicious.events.time": "Heure",
  "systemManagement.suspicious.events.exchange": "Échange",
  "systemManagement.suspicious.events.stream": "Diffusion en continu",
  "systemManagement.suspicious.events.event": "Événement",
  "systemManagement.suspicious.events.detail": "Détails",
  "systemManagement.suspicious.leg.exchange": "Échange",
  "systemManagement.suspicious.leg.market": "Marché",
  "systemManagement.suspicious.leg.symbol": "Symbole",
  "systemManagement.suspicious.leg.displayPrice": "Prix affiché",
  "systemManagement.suspicious.leg.diagnostics": "État des données",
  "systemManagement.suspicious.leg.bidAsk": "Meilleur cours acheteur / vendeur",
  "systemManagement.suspicious.leg.quoteAge": "Actualité des cotations",
  "systemManagement.suspicious.leg.streamAge": "Fraîcheur du cours d'eau",
  "systemManagement.suspicious.leg.volumeOpenInterest": "Volume sur 24 heures / positions ouvertes",
  "systemManagement.suspicious.leg.funding": "Financement",
  "systemManagement.suspicious.leg.relatedStream": "Flux associé",
  "systemManagement.compute.warning.title": "Diagnostics informatiques",
  "systemManagement.compute.warning.description": "La dernière validation se situe à proximité ou au-delà de l'intervalle de calcul actuel. Examinez conjointement les métriques des shards et le volume de lignes modifiées.",
  "systemManagement.compute.paramsTitle": "Calculer les paramètres",
  "systemManagement.compute.shards.title": "État du shard ({{count}})",
  "systemManagement.compute.shards.aria": "Calculer l'état d'un shard",
  "systemManagement.compute.shards.shard": "Éclat",
  "systemManagement.compute.shards.rows": "Lignes",
  "systemManagement.compute.shards.dirtyRows": "Lignes erronées",
  "systemManagement.compute.shards.latestDirty": "Dernières séries de blagues grivoises",
  "systemManagement.compute.shards.composition": "Composition de l'impact",
  "systemManagement.compute.shards.p99": "Latence P99",
  "systemManagement.degradeDialog.title": "Confirmer la mise en pause",
  "systemManagement.degradeDialog.description": "Déconnecter manuellement <strong>{{venue}}</strong> ? Cela suspend toute collecte de données de marché pour cette bourse jusqu’à ce que vous la réactiviez.",
  "systemManagement.degradeDialog.confirm": "Mettre l'échange en pause",
  "settingsManagement.exchangeFrame.title": "Gestion des échanges",
  "settingsManagement.exchangeFrame.preparing": "Module de préparation",
  "settingsManagement.exchangeFrame.unavailable": "Module indisponible",
  "settingsManagement.exchangeFrame.reset": "Réinitialiser",
  "settingsManagement.exchanges.errors.signedOut": "Votre session a expiré. Reconnectez-vous et réessayez.",
  "settingsManagement.exchanges.errors.forbidden": "Ce compte ne permet pas de gérer la configuration de l'échange.",
  "settingsManagement.exchanges.errors.loadStatus": "Impossible de charger la configuration d'Exchange ({{status}} HTTP).",
  "settingsManagement.exchanges.errors.loadFailed": "Impossible de charger la configuration d'Exchange. Veuillez réessayer dans quelques instants.",
  "settingsManagement.exchanges.errors.saveFailed": "Impossible d'enregistrer la configuration d'Exchange. Veuillez réessayer dans quelques instants.",
  "settingsManagement.exchanges.errors.conflict": "Un autre administrateur a soumis une configuration plus récente. La configuration de référence a été mise à jour et votre version locale provisoire a été conservée ; vérifiez-la et enregistrez-la à nouveau.",
  "settingsManagement.exchanges.errors.loadTitle": "Impossible de charger la gestion d'Exchange",
  "settingsManagement.exchanges.disabled.refreshing": "Le statut de l'échange est en cours d'actualisation.",
  "settingsManagement.exchanges.disabled.loading": "Le statut de l'Exchange est « en cours de chargement ».",
  "settingsManagement.exchanges.disabled.saving": "La configuration d'Exchange est en cours d'enregistrement.",
  "settingsManagement.exchanges.disabled.dirtyRefresh": "Enregistrez les modifications en attente concernant l'activation de l'échange avant d'actualiser la page.",
  "settingsManagement.exchanges.disabled.noSnapshot": "Aucun instantané d'échange modifiable n'a encore été chargé.",
  "settingsManagement.exchanges.disabled.clean": "La configuration actuelle ne comporte aucune modification non enregistrée.",
  "settingsManagement.exchanges.disabled.nothingToReset": "Il n'y a aucune modification non enregistrée à réinitialiser.",
  "settingsManagement.exchanges.disabled.refreshingToggle": "Le statut de l'échange est en cours d'actualisation. Vous pourrez effectuer des modifications une fois cette opération terminée.",
  "settingsManagement.exchanges.disabled.loadingToggle": "Le statut de la synchronisation est « en cours de chargement ». Vous pourrez effectuer des modifications une fois cette opération terminée.",
  "settingsManagement.exchanges.disabled.savingToggle": "La configuration d'Exchange est en cours d'enregistrement. Vous pourrez apporter des modifications une fois l'opération terminée.",
  "settingsManagement.exchanges.notice.saveFailed": "Échec de l'enregistrement",
  "settingsManagement.exchanges.notice.retainedAfterSaveFailure": "{{error}} Le dernier instantané réussi reste visible.",
  "settingsManagement.exchanges.notice.refreshFailed": "Échec de l'actualisation",
  "settingsManagement.exchanges.feedback.synced.title": "Configuration synchronisée",
  "settingsManagement.exchanges.feedback.synced.message": "La configuration d'Exchange a été enregistrée.",
  "settingsManagement.exchanges.feedback.persisted.title": "Configuration enregistrée",
  "settingsManagement.exchanges.feedback.persisted.message": "La configuration de référence est confirmée ; les connecteurs et la topologie d'exécution continueront à converger vers l'état actuel.",
  "settingsManagement.exchanges.status.refreshing": "Rafraîchissant",
  "settingsManagement.exchanges.status.staleSnapshot": "Instantané obsolète",
  "settingsManagement.exchanges.status.unsaved": "Non enregistré",
  "settingsManagement.exchanges.status.synced": "Synchronisé",
  "settingsManagement.exchanges.snapshot": "Aperçu",
  "settingsManagement.exchanges.actions.refreshing": "Rafraîchissant…",
  "settingsManagement.exchanges.actions.refresh": "Actualiser",
  "settingsManagement.exchanges.empty.title": "Aucun échange",
  "settingsManagement.exchanges.empty.staleTitle": "Aucun échange n'a eu lieu lors du dernier instantané",
  "settingsManagement.exchanges.empty.staleDescription": "Cette mise à jour a échoué ; l'instantané vide précédent reste donc visible.",
  "settingsManagement.exchanges.table.aria": "État d'exécution et d'activation d'Exchange",
  "settingsManagement.exchanges.table.exchange": "Échange",
  "settingsManagement.exchanges.table.global": "Mondial",
  "settingsManagement.exchanges.table.runtime": "Durée d'exécution",
  "settingsManagement.exchanges.table.discovery": "Découverte",
  "settingsManagement.exchanges.table.announcements": "Annonces",
  "settingsManagement.exchanges.table.instruments": "Instruments",
  "settingsManagement.exchanges.table.disabledSupported": "Personnes en situation de handicap / bénéficiant d'un accompagnement",
  "settingsManagement.exchanges.table.toggleAria": "Activation globale {{venue}} ; actuellement {{state}}",
  "settingsManagement.exchanges.table.enabled": "activé",
  "settingsManagement.exchanges.table.disabled": "handicapé",
  "settingsManagement.exchanges.table.marketCountAria": "{{disabled}} des marchés d'{{total}}s désactivés",
  "settingsManagement.exchanges.capability.available": "Disponible",
  "settingsManagement.exchanges.capability.unavailable": "Indisponible",
  "settingsManagement.credentialsFrame.title": "Identifiants API",
  "settingsManagement.credentials.errors.signedOut": "Votre session a expiré. Reconnectez-vous et réessayez.",
  "settingsManagement.credentials.errors.forbidden": "Ce compte ne permet pas de gérer les identifiants de connexion à la plateforme d'échange.",
  "settingsManagement.credentials.errors.loadStatus": "Impossible de charger les identifiants de l'API ({{status}} HTTP).",
  "settingsManagement.credentials.errors.loadFailed": "Impossible de charger les identifiants de l'API. Veuillez réessayer dans quelques instants.",
  "settingsManagement.credentials.errors.saveFailed": "Les identifiants de l'API n'ont pas pu être enregistrés. Veuillez réessayer dans quelques instants.",
  "settingsManagement.credentials.errors.loadTitle": "Impossible de charger les identifiants de l'API",
  "settingsManagement.credentials.errors.noSnapshot": "Aucun instantané des identifiants de l'API d'échange n'est encore disponible.",
  "settingsManagement.credentials.disabled.saving": "Les identifiants API sont en cours d'enregistrement. Vous pourrez poursuivre la modification une fois cette opération terminée.",
  "settingsManagement.credentials.disabled.refreshing": "Les identifiants de l'API sont en cours d'actualisation. Vous pourrez reprendre la modification une fois cette opération terminée.",
  "settingsManagement.credentials.disabled.loading": "Le chargement des identifiants API est en cours. Vous pourrez poursuivre la modification une fois cette opération terminée.",
  "settingsManagement.credentials.disabled.clean": "Le brouillon actuel ne comporte aucune modification non enregistrée.",
  "settingsManagement.credentials.disabled.nothingToReset": "Il n'y a aucune modification non enregistrée à réinitialiser.",
  "settingsManagement.credentials.disabled.dirtyRefresh": "Enregistrez ou réinitialisez le brouillon des identifiants avant d'actualiser la page.",
  "settingsManagement.credentials.disabled.emptyDraft": "Le brouillon actuel est déjà vide.",
  "settingsManagement.credentials.notice.saveFailed": "Échec de l'enregistrement",
  "settingsManagement.credentials.notice.refreshFailed": "Échec de l'actualisation",
  "settingsManagement.credentials.notice.updated": "Informations d'identification mises à jour",
  "settingsManagement.credentials.status.refreshing": "Rafraîchissant…",
  "settingsManagement.credentials.status.stale": "Instantané obsolète",
  "settingsManagement.credentials.status.staleUnsaved": "Instantané périmé · Non enregistré",
  "settingsManagement.credentials.status.unsaved": "Non enregistré",
  "settingsManagement.credentials.status.configured": "Configuré",
  "settingsManagement.credentials.status.notConfigured": "Non configuré",
  "settingsManagement.credentials.description.loading": "Chargement de l'état des identifiants",
  "settingsManagement.credentials.description.noSnapshot": "Aucun instantané des informations d'identification n'est disponible",
  "settingsManagement.credentials.description.lastSaved": "Dernière sauvegarde :",
  "settingsManagement.credentials.description.neverSaved": "Jamais enregistré",
  "settingsManagement.credentials.fields.apiKey": "Clé API",
  "settingsManagement.credentials.fields.apiSecret": "Clé secrète de l'API",
  "settingsManagement.credentials.fields.passphrase": "phrase de passe",
  "settingsManagement.credentials.fields.showApiKey": "Afficher la clé API",
  "settingsManagement.credentials.fields.hideApiKey": "Masquer la clé API",
  "settingsManagement.credentials.fields.showApiSecret": "Afficher la clé secrète de l'API",
  "settingsManagement.credentials.fields.hideApiSecret": "Masquer la clé secrète de l'API",
  "settingsManagement.credentials.fields.showPassphrase": "Afficher la phrase de passe",
  "settingsManagement.credentials.fields.hidePassphrase": "Masquer la phrase secrète",
  "settingsManagement.credentials.wsEnabled": "Activer les connexions authentifiées aux données de marché {{venue}}",
  "settingsManagement.credentials.actions.clearDraft": "Effacer le brouillon",
  "settingsManagement.credentials.actions.clearing": "Chargement…",
  "settingsManagement.credentials.actions.clearCredentials": "Effacer les identifiants",
  "settingsManagement.pairs.tabs.overview": "Présentation générale",
  "settingsManagement.pairs.tabs.matching": "Identité et unités",
  "settingsManagement.pairs.tabs.quoteFamilies": "Citer des familles",
  "metadata.documentTitles.monitor": "Monitor · ZML Monitor",
  "metadata.documentTitles.funding": "$t(zml:zml.metric.funding_rate) · ZML Monitor",
  "metadata.documentTitles.history": "Historique · ZML Monitor",
  "metadata.documentTitles.historyCurve": "Graphique historique · ZML Monitor",
  "metadata.documentTitles.historyFunding": "Historique des financements · ZML Monitor",
  "metadata.documentTitles.news": "Actualités · ZML Monitor",
  "metadata.documentTitles.notificationSettings": "Paramètres de notification · ZML Monitor",
  "metadata.documentTitles.tools": "Boîte à outils · ZML Monitor",
  "metadata.documentTitles.notFound": "Page introuvable · ZML Monitor",
  "metadata.descriptions.default": "Suivi en temps réel des marchés interbourses, des financements, de l'actualité et des alertes, le tout en un seul endroit.",
  "metadata.descriptions.login": "Connectez-vous à ZML Monitor pour accéder en toute sécurité aux données sur les marchés inter-bourses, au financement, aux actualités et aux alertes.",
  "metadata.descriptions.register": "Vérifiez auprès de Google, créez votre compte ZML Monitor et commencez à surveiller les différentes bourses.",
  "metadata.descriptions.management": "Gérer les utilisateurs de ZML Monitor, la facturation, les méthodes de connexion, les sources de données et les opérations système.",
  "metadata.descriptions.history": "Consultez l'historique des spreads, des financements et des règlements sur l'ensemble des places boursières.",
  "metadata.descriptions.notificationSettings": "Gérer les canaux de notification Web et Feishu ZML Monitor.",
  "metadata.descriptions.notFound": "Cette adresse n'existe pas. Revenez à la console de surveillance ZML Monitor.",
  "standalone.historyCurve.title": "Historique des combinaisons",
  "standalone.historyCurve.loadingStatus": "Chargement en cours",
  "standalone.historyCurve.errorStatus": "Échec du chargement",
  "standalone.historyCurve.loading": "Chargement de la courbe historique…",
  "standalone.historyCurve.errorTitle": "Courbe historique indisponible",
  "standalone.historyCurve.missingTitle": "Impossible d'ouvrir la courbe d'historique",
  "standalone.historyCurve.missingDescription": "Les détails de cette combinaison ne sont pas valides. Rouvrez la courbe depuis « Monitor » ou depuis sa fiche d'alerte.",
  "standalone.fundingHistory.title": "Historique des financements",
  "standalone.fundingHistory.loadingStatus": "Chargement en cours",
  "standalone.fundingHistory.moduleErrorStatus": "Échec du chargement",
  "standalone.fundingHistory.loading": "Chargement de l'historique des financements…",
  "standalone.fundingHistory.moduleErrorTitle": "Historique des financements indisponible",
  "standalone.fundingHistory.missingTitle": "Impossible d'ouvrir l'historique des financements",
  "standalone.fundingHistory.missingDescription": "Les détails relatifs à cette combinaison ne sont pas valides. Ouvrez à nouveau l'historique de financement depuis Monitor ou depuis sa fiche d'alerte.",
  "standalone.fundingHistory.requestErrorStatus": "Échec de la lecture",
  "standalone.fundingHistory.requestErrorTitle": "Impossible de lire l'historique des financements",
  "standalone.fundingHistory.requestErrorFallback": "Impossible de charger l'historique des financements.",
  "standalone.notificationSettings.title": "Paramètres de notification",
  "standalone.notificationSettings.loading": "Chargement des paramètres de notification…",
  "standalone.notificationSettings.moduleErrorTitle": "Impossible d'afficher les paramètres de notification",
  "standalone.notificationSettings.quickPause": "Petite pause",
  "standalone.notificationSettings.missingTitle": "Impossible d'ouvrir la fenêtre de pause des notifications Feishu",
  "standalone.notificationSettings.missingDescription": "Ce lien ne correspond à aucune combinaison valide. Réactivez la mise en pause des notifications depuis la fiche d'alerte correspondante.",
  "standalone.notificationSettings.context.currentCombination": "Combinaison actuelle",
  "standalone.notificationSettings.context.target": "Cible",
  "standalone.notificationSettings.context.scope": "Champ d'application",
  "standalone.notificationSettings.context.duration": "Durée",
  "standalone.notificationSettings.context.muteDuration": "Durée de la mise en sourdine",
  "standalone.notificationSettings.context.customDuration": "Durée personnalisée",
  "standalone.notificationSettings.context.minuteUnit": "minutes",
  "standalone.notificationSettings.context.invalidDuration": "La durée personnalisée doit être un nombre entier compris entre 1 et 43 200 minutes.",
  "standalone.notificationSettings.context.invalidDurationField": "Entrez un nombre entier compris entre 1 et 43 200.",
  "standalone.notificationSettings.context.selectTarget": "Sélectionnez au moins une cible de notification.",
  "standalone.notificationSettings.context.ruleLoadFailed": "Impossible de valider les règles de mise en sourdine actuelles : {{error}}. Elles seront relues automatiquement.",
  "standalone.notificationSettings.context.busyReading": "En lisant les règles de notification en vigueur…",
  "standalone.notificationSettings.context.busyConfirming": "Confirmation des règles de notification en vigueur…",
  "standalone.notificationSettings.context.busyUpdating": "Les règles de notification sont en cours de mise à jour. Veuillez patienter jusqu'à la fin de l'opération en cours.",
  "standalone.notificationSettings.context.sourceTabNotice": "Onglet « Filtre de source » : {{tab}}. La source indique uniquement l'endroit où vous vous êtes connecté ; la mise en pause s'applique néanmoins à tous les onglets et canaux correspondants de ce compte.",
  "standalone.notificationSettings.context.deletedSourceTab": "Onglet « Source » supprimé ou indisponible",
  "standalone.notificationSettings.context.idle.webBadge": "Mise en surbrillance de la ligne active",
  "standalone.notificationSettings.context.idle.soundCooldown": "Intervalle du son d’alerte {{duration}}",
  "standalone.notificationSettings.context.idle.soundOff": "Coupé sur ce navigateur",
  "standalone.notificationSettings.context.idle.settingsNotReady": "Les paramètres de notification ne sont pas encore configurés",
  "standalone.notificationSettings.context.idle.feishu": "Couvre tous les onglets et canaux correspondants de ce compte",
  "standalone.notificationSettings.context.state.reading": "Lecture",
  "standalone.notificationSettings.context.state.readingDetail": "Confirmation de la règle de suspension actuellement en vigueur",
  "standalone.notificationSettings.context.state.unknown": "Statut inconnu",
  "standalone.notificationSettings.context.state.unknownDetail": "La règle de suspension en vigueur n'a pas pu être confirmée.",
  "standalone.notificationSettings.context.state.paused": "En pause",
  "standalone.notificationSettings.context.state.clear": "Pas en pause",
  "standalone.notificationSettings.context.notice.paused": "{{targets}} en pause.",
  "standalone.notificationSettings.context.notice.pauseFailed": "La mise en pause n'a pas fonctionné : {{reason}}",
  "standalone.notificationSettings.context.notice.restored": "{{target}} restauré.",
  "standalone.notificationSettings.context.notice.restoreFailed": "La restauration n'a pas pris effet : {{reason}}",
  "standalone.notificationSettings.context.notice.extended": "{{target}} étendue.",
  "standalone.notificationSettings.context.notice.extendFailed": "L'extension n'a pas été prise en compte : {{reason}}",
  "standalone.notificationSettings.context.submit.syncing": "Synchronisation",
  "standalone.notificationSettings.context.submit.submitting": "Envoyer",
  "standalone.notificationSettings.context.submit.confirm": "Confirmer la mise en pause",
  "standalone.notificationSettings.context.accountSound.title": "Son d’alerte",
  "standalone.notificationSettings.context.accountSound.current": "Actuel",
  "standalone.notificationSettings.context.accountSound.recent": "Dernières nouvelles",
  "standalone.notificationSettings.context.accountSound.on": "Activé sur ce navigateur",
  "standalone.notificationSettings.context.accountSound.off": "Coupé sur ce navigateur",
  "standalone.notificationSettings.context.accountSound.cooldown": "intervalle du son d’alerte {{duration}}",
  "standalone.notificationSettings.context.accountSound.loading": "Chargement des paramètres de notification…",
  "standalone.notificationSettings.context.accountSound.notReady": "Les paramètres de notification ne sont pas encore configurés",
  "standalone.notificationSettings.context.accountSound.readingReason": "Lecture des paramètres de notification de ce compte.",
  "standalone.notificationSettings.context.accountSound.test": "Test",
  "standalone.notificationSettings.context.accountSound.openSettings": "Ouvrir les réglages du son d’alerte",
  "standalone.notificationSettings.context.accountSound.cooldownSeconds": "{{count}}s",
  "standalone.notificationSettings.context.accountSound.status.played": "Joué",
  "standalone.notificationSettings.context.accountSound.status.disabled": "Son désactivé",
  "standalone.notificationSettings.context.accountSound.status.cooldown": "Ignoré pendant l’intervalle du son d’alerte",
  "standalone.notificationSettings.context.accountSound.status.blocked": "Bloqué par le navigateur",
  "standalone.notificationSettings.context.accountSound.status.error": "Erreur de lecture",
  "nav.monitor": "Moniteur",
  "nav.funding": "$t(zml:zml.metric.funding_rate)",
  "nav.news": "Actualités",
  "nav.tools": "Outils",
  "nav.linkage": "Lien de financement",
  "nav.management": "Admin",
  "notificationRules.targets.web_badge.label": "Badge Web",
  "notificationRules.targets.web_badge.shortLabel": "Insigne",
  "notificationRules.targets.web_badge.caption": "Mise en évidence d'une ligne / badge",
  "notificationRules.targets.web_sound.label": "Son sur le Web",
  "notificationRules.targets.web_sound.shortLabel": "Son",
  "notificationRules.targets.web_sound.caption": "Émettre un signal sonore d'alerte",
  "notificationRules.targets.feishu.label": "Notification Feishu",
  "notificationRules.targets.feishu.shortLabel": "Feishu",
  "notificationRules.targets.feishu.caption": "Notification de groupe",
  "notificationRules.scopes.opportunity": "Cette opportunité",
  "notificationRules.scopes.symbol": "Cet élément",
  "notificationRules.scopes.exchange_pair": "Cette paire de devises",
  "notificationRules.scopes.workspace": "Compte complet",
  "notificationRules.durations.15m": "15 minutes",
  "notificationRules.durations.1h": "1 heure",
  "notificationRules.durations.4h": "4 heures",
  "notificationRules.durations.24h": "24 heures",
  "notificationRules.durations.3d": "3 jours",
  "notificationRules.durations.custom": "Personnalisé",
  "notificationRules.remaining.expired": "Périmé",
  "notificationRules.remaining.minutes": "{{count}} minutes restantes",
  "notificationRules.remaining.hours": "{{count}} heures restantes",
  "notificationRules.remaining.days": "{{count}} jours restants",
  "notificationRules.matrix.aria": "Destinataires de la notification",
  "notificationRules.matrix.busy": "Les règles de notification sont en cours de mise à jour. Veuillez patienter jusqu'à la fin de l'opération en cours.",
  "notificationRules.matrix.unselected": "Non sélectionné",
  "notificationRules.matrix.extending": "Extension",
  "notificationRules.matrix.extend": "Développer",
  "notificationRules.matrix.restoring": "Restauration",
  "notificationRules.matrix.restore": "Restaurer",
  "notificationRules.workspace.title": "Suspendre l'ensemble du compte",
  "notificationRules.workspace.description": "La mise en pause ne concerne que les destinataires de notifications sélectionnés dans ce compte.",
  "notificationRules.workspace.targetLegend": "Destinataires de la notification",
  "notificationRules.workspace.duration": "Durée de la pause",
  "notificationRules.workspace.create": "Créer une pause",
  "notificationRules.workspace.activeTitle": "Règles de pause active",
  "notificationRules.workspace.activeDescription": "La restauration d'une règle réactive immédiatement cette cible de notification.",
  "notificationRules.workspace.emptyTitle": "Aucune règle de pause active",
  "notificationRules.workspace.emptyDescription": "De nouvelles pauses apparaîtront ici.",
  "notificationRules.workspace.restore": "Restaurer",
  "notificationRules.workspace.selectTarget": "Sélectionnez au moins une destination de notification",
  "notificationRules.workspace.created": "Règle de suspension de compte créée",
  "notificationRules.workspace.restored": "{{target}} restauré",
  "notificationRules.errors.workspace_required": "Le compte courant n'a pas pu être validé.",
  "notificationRules.errors.string_required": "{{field}} doit être une chaîne non vide.",
  "notificationRules.errors.invalid_response": "La réponse à la règle de notification n'est pas valide.",
  "notificationRules.errors.workspace_mismatch": "Ces paramètres de notification ne correspondent pas au compte actuel. Actualisez la page et réessayez.",
  "notificationRules.errors.invalid_target": "La cible de la notification n'est pas valide.",
  "notificationRules.errors.invalid_scope": "La portée de la notification n'est pas valide.",
  "notificationRules.errors.invalid_reason": "La raison de la règle de notification doit être une chaîne de caractères ou la valeur null.",
  "notificationRules.errors.invalid_list": "La réponse relative à la liste des règles de notification n'est pas valide.",
  "notificationRules.errors.targets_required": "Au moins une destination de notification valide est requise.",
  "notificationRules.errors.scope_key_required": "Choisissez une portée de notification.",
  "notificationRules.errors.muted_until_invalid": "La date d'expiration de la suspension des notifications n'est pas valide.",
  "notificationRules.errors.load_failed": "Le service n'a renvoyé aucune règle de notification ({{status}} HTTP).",
  "notificationRules.errors.create_failed": "Le service a rejeté l'écriture de la règle de notification ({{status}} HTTP). Veuillez réessayer dans quelques instants.",
  "notificationRules.errors.rule_ids_required": "Sélectionnez au moins une règle de notification.",
  "notificationRules.errors.restore_failed": "Le service a rejeté la restauration de la règle de notification ({{status}} HTTP). Veuillez réessayer dans quelques instants.",
  "notificationRules.errors.restore_response_invalid": "La réponse de restauration n'est pas valide.",
  "notificationRules.errors.unknown": "L'opération relative à la règle de notification a échoué.",
  "marketCatalog.contracts": "contrats",
  "marketCatalog.title": "Instruments de marché",
  "marketCatalog.all": "Tout",
  "marketCatalog.allVenues": "Tous les échanges",
  "marketCatalog.allKinds": "Tous les marchés",
  "marketCatalog.allSettlements": "Toutes les localités",
  "marketCatalog.venue": "Échange",
  "marketCatalog.kind": "Marché",
  "marketCatalog.settlement": "Règlement",
  "marketCatalog.instrument": "Instrument",
  "marketCatalog.bid": "Meilleure offre",
  "marketCatalog.ask": "Mieux vaut demander",
  "marketCatalog.quoteAge": "Citation du jour",
  "marketCatalog.search": "Rechercher des instruments",
  "marketCatalog.searchPlaceholder": "Code de ressource ou code de produit natif…",
  "marketCatalog.loadFailed": "Impossible de charger les instruments",
  "marketCatalog.loading": "Chargement des instruments…",
  "marketCatalog.empty": "Aucun instrument correspondant",
  "marketCatalog.refreshFailed": "Les cotations ne sont temporairement pas disponibles ; les valeurs existantes peuvent être obsolètes.",
  "marketCatalog.count": "{{count}} instruments",
  "marketCatalog.previous": "Précédent",
  "marketCatalog.next": "Suivant",
  "marketCatalog.payoff.linear": "Linéaire",
  "marketCatalog.payoff.inverse": "Inverse",
  "marketCatalog.payoff.quanto": "Quanto",
  "marketCatalog.quoteState.pending": "En attente de devis",
  "marketCatalog.quoteState.empty_book": "Livre vierge",
  "marketCatalog.quoteState.bid_unavailable": "Aucune offre",
  "marketCatalog.quoteState.ask_unavailable": "Pas de question",
  "marketCatalog.quoteState.book_unavailable": "Citation indisponible",
  "toolsPage.title": "Outils",
  "toolsPage.loading": "Chargement de l'outil…",
  "toolsPage.items.markets.label": "Instruments de marché",
  "toolsPage.items.markets.description": "Parcourir les cours en devise locale par bourse, marché et devise de règlement",
  "toolsPage.items.coin.label": "Recherche d'actifs",
  "toolsPage.items.coin.description": "Effectuez une recherche par nom ou par symbole pour analyser les marchés inter-bourses, la répartition des volumes et l'état du service.",
  "fundingPage.view.copyName": "{{name}} copie",
  "fundingPage.views.default": "Par défaut",
  "fundingPage.views.aria": "Vues du taux de financement",
  "fundingPage.views.optionsAria": "Options d'affichage des financements",
  "fundingPage.views.contextMenuAria": "{{name}} options d'affichage",
  "fundingPage.views.all": "Toutes les vues du taux de financement",
  "fundingPage.views.namePlaceholder": "Nom de la vue",
  "fundingPage.views.nameLabel": "Nom de la vue",
  "fundingPage.views.assets": "Actifs",
  "fundingPage.views.renameTitle": "Renommer la vue « Financement »",
  "fundingPage.views.renameDescription": "Modifier le nom tout en conservant la fenêtre, les filtres et l'ordre d'affichage.",
  "fundingPage.views.createNew": "Créer une vue de financement",
  "fundingPage.views.deleteTitle": "Supprimer la vue « Financement »",
  "fundingPage.views.deleteLast": "Conservez au moins une vue de financement",
  "fundingPage.views.deleteDescription": "Supprimer « {{name}} » ? Sa fenêtre, ses plateformes et sa recherche seront retirées. Vous pouvez annuler pendant quelques secondes après la suppression.",
  "fundingPage.views.deleteConfirm": "Supprimer la vue",
  "fundingPage.views.reorder": "Réorganiser l'affichage «{{name}} »",
  "fundingPage.status.applying": "Postuler",
  "fundingPage.status.reconnecting": "Renouer le contact",
  "fundingPage.status.ariaSeparator": "; ",
  "fundingPage.retrySave": "Réessayer l'enregistrement",
  "fundingPage.reload": "Actualiser",
  "fundingPage.errors.settingsLoadFailed": "Les options de financement sont temporairement indisponibles. Actualisez la page et réessayez.",
  "fundingPage.errors.settingsSaveFailed": "Les paramètres de financement n'ont pas pu être enregistrés. La vue actuelle reste inchangée.",
  "fundingPage.errors.queryRejected": "Les résultats actuels concernant le financement n'ont pas pu être chargés. Veuillez réessayer.",
  "fundingPage.errors.queryRejectedRetained": "Les nouveaux filtres n'ont pas pu être appliqués. Les résultats précédents restent visibles.",
  "fundingPage.errors.connectionInterrupted": "La connexion de financement en temps réel a été interrompue et est en cours de rétablissement.",
  "fundingPage.sourceUnavailableTitle": "Données cumulées non disponibles",
  "fundingPage.loadFailed": "Échec du chargement",
  "fundingPage.sourceUnavailableDescription": "La fenêtre cumulée sélectionnée est temporairement indisponible. Veuillez réessayer dans quelques instants.",
  "fundingPage.loadingMatrix": "Chargement de la matrice de financement…",
  "fundingPage.emptyTitle": "Aucune donnée relative au financement",
  "fundingPage.emptyDescription": "Aucun élément n'a encore été généré dans le cadre de cette surveillance.",
  "fundingPage.filteredEmptyTitle": "Aucun élément correspondant",
  "fundingPage.filteredEmptyDescription": "La recherche d'actifs ou le filtre d'échange actuellement sélectionné(e) n'a donné aucun résultat. Effacez-les pour afficher tous les résultats.",
  "fundingPage.detail.title": "{{coin}} détails du financement",
  "fundingPage.detail.allVenues": "Frais de financement sur toutes les bourses",
  "fundingPage.detail.collapse": "Réduire",
  "fundingPage.detail.loadErrorFallback": "Le financement des actifs n'a pas pu être chargé.",
  "fundingPage.detail.loading": "Chargement du financement des actifs…",
  "fundingPage.detail.spotBasis": "Basis (position longue sur le marché au comptant / position courte sur le marché à terme perpétuel)",
  "fundingPage.detail.aggregation": "{{spot}} au comptant · à terme {{perpetual}} perpétuel",
  "fundingPage.detail.bestLong": "Meilleur long",
  "fundingPage.detail.bestShort": "Meilleur court-métrage",
  "fundingPage.detail.venueTableAria": "Détails du financement des actifs par bourse",
  "fundingPage.detail.exchange": "Bourse",
  "fundingPage.detail.liveFold": "En direct ({{fold}})",
  "fundingPage.detail.interval": "Intervalle",
  "fundingPage.detail.settlementTableAria": "Accords récents relatifs au financement des actifs",
  "fundingPage.detail.settlementTime": "Délai de règlement",
  "fundingPage.detail.rate": "$t(zml:zml.metric.funding_rate)",
  "fundingPage.detail.noSettlements": "Aucun enregistrement de règlement",
  "fundingPage.detail.viewPrefix": "Afficher",
  "fundingPage.detail.viewSuffix": "détails",
  "fundingPage.detail.stale": "Périmé",
  "fundingPage.detail.predictedRate": "Taux de financement prévu",
  "fundingPage.detail.nextSettlement": "Prochaine localité",
  "fundingPage.detail.settlingSoon": "À venir prochainement",
  "fundingPage.detail.rateCap": "Plafond absolu de l'intervalle natif",
  "fundingPage.detail.rateRange": "Limites inférieure et supérieure de l'intervalle natif",
  "fundingPage.detail.coverage30d": "Couverture de 30 jours",
  "fundingPage.detail.source": "Source",
  "fundingPage.sourceMode.officialOnly": "Réservé aux agents officiels",
  "fundingPage.sourceMode.mixed": "Vidéo officielle + enregistrement en direct",
  "fundingPage.sourceMode.capturedOnly": "Capture en direct uniquement",
  "fundingPage.sourceMode.empty": "Pas de source",
  "fundingPage.sourceMode.unknown": "Source inconnue",
  "fundingPage.matrix.aria": "Matrice de financement",
  "fundingPage.matrix.coin": "Actif",
  "fundingPage.matrix.unknownAsset": "Actif inconnu",
  "fundingPage.matrix.basis": "Base",
  "fundingPage.matrix.basisLongLabel": "Écart entre le contrat à terme standardisé et le contrat perpétuel",
  "fundingPage.matrix.basisTooltip": "Écart entre le cours au comptant et le cours à terme perpétuel = (cours de référence à terme perpétuel − cours de référence au comptant) ÷ cours de référence au comptant × 100 %. Les deux côtés utilisent les cours moyens du marché ; les cotations obsolètes sont supprimées avant la pondération sur 24 heures, avec une limite médiane de ±3 %. Une valeur positive signifie que le contrat à terme perpétuel se négocie avec une prime.",
  "fundingPage.matrix.ariaSeparator": ", ",
  "fundingPage.matrix.oiLabel": "$t(zml:zml.metric.open_interest_notional)",
  "fundingPage.matrix.volume24hLabel": "$t(zml:zml.metric.quote_volume_24h)",
  "fundingPage.matrix.bestLongAria": "Bourse offrant le meilleur taux de financement pour une position longue (qui reçoit un financement ou en paie le moins)",
  "fundingPage.matrix.bestShortAria": "Bourse offrant le meilleur taux de financement pour une position courte (celle qui reçoit le plus de financement)",
  "fundingPage.matrix.missingSpotReference": "Pas de cours de référence au comptant",
  "fundingPage.matrix.missingPerpetualReference": "Pas de prix de référence permanent",
  "fundingPage.matrix.missingBasis": "Sans fondement",
  "fundingPage.matrix.spotVenueLabel": "Bourses au comptant",
  "fundingPage.matrix.perpetualVenueLabel": "Bourses à terme perpétuel",
  "fundingPage.matrix.missingRepresentative": "Aucun contrat de représentation en cours",
  "fundingPage.matrix.unavailableFunding": "Taux de financement non disponible",
  "fundingPage.matrix.readingGuide": "Les lignes supplémentaires, de haut en bas, sont les statistiques OI / volume activées (USD) ; les taux colorés indiquent la meilleure bourse long / short et l'intensité du fond compare l'ampleur des taux au sein de l'actif.",
  "fundingPage.matrix.reorder": "Réorganiser « {{label}} » à l'aide du clavier",
  "fundingPage.matrix.sort.assetAsc": "De A à Z",
  "fundingPage.matrix.sort.assetDesc": "De Z à A",
  "fundingPage.matrix.sort.spreadDesc": "du plus grand au plus petit écart",
  "fundingPage.matrix.sort.spreadAsc": "de l'écart le plus petit au plus grand",
  "fundingPage.matrix.sort.basisDesc": "du plus grand au plus petit",
  "fundingPage.matrix.sort.basisAsc": "de la plus petite à la plus grande",
  "fundingPage.matrix.sort.positiveDesc": "du plus positif au plus négatif",
  "fundingPage.matrix.sort.positiveAsc": "du plus négatif au plus positif",
  "fundingPage.matrix.sort.rateAsc": "du plus négatif au plus positif",
  "fundingPage.matrix.sort.rateDesc": "du plus positif au plus négatif",
  "fundingPage.matrix.sort.activeAria": "{{label}} est classé par « {{current}} » ; cliquez pour passer à « {{next}} »",
  "fundingPage.matrix.sort.idleAria": "Trier {{label}} {{direction}}",
  "fundingPage.matrix.sort.activeTooltip": "{{label}} : {{current}} · cliquez ici pour accéder à {{next}}",
  "fundingPage.matrix.sort.idleTooltip": "{{label}} : cliquez pour trier {{direction}}",
  "fundingPage.filters.openSettings": "Paramètres de filtrage…",
  "fundingPage.filters.searchAria": "Rechercher des ressources",
  "fundingPage.filters.searchPlaceholder": "Actif",
  "fundingPage.filters.period.group": "Période de financement",
  "fundingPage.filters.period.aria": "Appel à projets : {{value}}",
  "fundingPage.filters.period.trigger": "Fenêtre · {{value}}",
  "fundingPage.filters.period.values.realtime": "En direct",
  "fundingPage.filters.period.values.1d": "1D",
  "fundingPage.filters.period.values.2d": "2D",
  "fundingPage.filters.period.values.3d": "3D",
  "fundingPage.filters.period.values.5d": "5D",
  "fundingPage.filters.period.values.7d": "7D",
  "fundingPage.filters.period.values.14d": "14D",
  "fundingPage.filters.period.values.30d": "30D",
  "fundingPage.filters.foldGroup": "Intervalle de normalisation du financement",
  "fundingPage.filters.fold.native": "Natif",
  "fundingPage.filters.fold.1h": "1H",
  "fundingPage.filters.fold.4h": "4H",
  "fundingPage.filters.fold.8h": "8H",
  "fundingPage.filters.exchanges.trigger": "Bourses",
  "fundingPage.filters.exchanges.legend": "Bourses",
  "fundingPage.filters.exchanges.all": "Tout",
  "fundingPage.filters.exchanges.selected": "{{count}} sélectionné",
  "fundingPage.filters.exchanges.aria": "Filtre des bourses : {{selection}}",
  "fundingPage.filterSettings.description": "Le champ d'application de la surveillance correspond au seuil minimal de visibilité de cette matrice : il détermine quelles lignes de pièces existent ; les filtres d'affichage effectuent ensuite leur sélection parmi celles qui restent.",
  "fundingPage.masterFilter.notSet": "Pas de suivi des financements",
  "fundingPage.masterFilter.trigger": "Portée du suivi",
  "fundingPage.masterFilter.leave.title": "Ignorer les modifications non enregistrées concernant le périmètre de suivi des financements ?",
  "fundingPage.masterFilter.leave.description": "Si vous fermez maintenant, les modifications non enregistrées apportées à la portée de surveillance seront perdues.",
  "fundingPage.masterFilter.leave.confirm": "Ignorer et fermer",
  "fundingPage.masterFilter.leave.cancel": "Continuer la modification",
  "fundingPage.masterFilter.summary": "Portée du suivi des financements : {{summary}}",
  "fundingPage.masterFilter.notReady": "Les paramètres du filtre de financement ne sont pas encore prêts.",
  "fundingPage.masterFilter.title": "Portée du suivi des financements",
  "fundingPage.masterFilter.description": "S'applique à toutes les vues de financement de ce compte et est enregistré avec les paramètres actuels du compte. Un actif n'est conservé que si au moins une bourse respecte tous les seuils configurés.",
  "fundingPage.masterFilter.conditionsAria": "Conditions relatives à la portée du suivi du financement",
  "fundingPage.masterFilter.placeholder": "Non défini",
  "fundingPage.masterFilter.willApply": "Sera appliqué",
  "fundingPage.masterFilter.invalidThreshold": "Les seuils de filtrage doivent être des nombres supérieurs ou égaux à 0. Laissez un champ vide pour désactiver ce seuil.",
  "fundingPage.masterFilter.fields.minVol24hM.label": "Chiffre d'affaires sur 24 heures ≥",
  "fundingPage.masterFilter.fields.minVol24hM.summary": "chiffre d'affaires sur 24 heures",
  "fundingPage.masterFilter.fields.minOiM.label": "$t(zml:zml.metric.open_interest_notional) ≥",
  "fundingPage.masterFilter.fields.minOiM.summary": "$t(zml:zml.metric.open_interest_notional)",
  "fundingPage.masterFilter.loadFailed": "Impossible de charger les paramètres de financement. Veuillez recharger la page et réessayer.",
  "fundingPage.masterFilter.saveFailed": "Les paramètres de financement n'ont pas pu être enregistrés.",
  "fundingPage.masterFilter.saveApply": "Enregistrez et postulez dès maintenant",
  "monitorWorkspace.workspaceErrors.load": "Le compte n'a pas pu être chargé. Veuillez réessayer.",
  "monitorWorkspace.workspaceErrors.activation": "Le contenu du compte n'a pas pu être chargé. Veuillez réessayer.",
  "monitorWorkspace.workspaceErrors.operations.create": "Onglet « Créer »",
  "monitorWorkspace.workspaceErrors.operations.update": "Onglet « Mise à jour »",
  "monitorWorkspace.workspaceErrors.operations.delete": "Onglet « Supprimer »",
  "monitorWorkspace.workspaceErrors.operations.duplicate": "Onglet « Dupliquer »",
  "monitorWorkspace.workspaceErrors.operations.reorder": "Réorganiser les onglets",
  "monitorWorkspace.workspaceErrors.mutationConflict": "{{operation}} L'opération a échoué car les règles de tabulation actuelles ne permettent pas cette modification.",
  "monitorWorkspace.workspaceErrors.mutation": "{{operation}} Échec. Veuillez réessayer.",
  "monitorWorkspace.sound.on": "Son d’alerte activé",
  "monitorWorkspace.sound.off": "Son d’alerte désactivé",
  "monitorWorkspace.gridAria": "Grille de données de surveillance",
  "monitorWorkspace.tableAria": "Tableau des combinaisons surveillées",
  "monitorWorkspace.rowsAria": "Lignes combinées surveillées",
  "monitorWorkspace.favorite": "Ajouté aux favoris",
  "monitorWorkspace.favoriteToggle.add": "Favoris",
  "monitorWorkspace.favoriteToggle.remove": "Supprimer des favoris",
  "monitorWorkspace.favoriteToggle.label": "Favoris",
  "monitorWorkspace.blacklistDialog.title": "Liste noire rapide",
  "monitorWorkspace.blacklistDialog.description": "Ajouter cette combinaison à la liste noire par défaut · {{asset}} · {{route}}",
  "monitorWorkspace.blacklistDialog.selectTarget": "Choisissez une cible à ajouter à la liste noire",
  "monitorWorkspace.blacklistDialog.targetAria": "Cible de la liste noire",
  "monitorWorkspace.blacklistDialog.targets.opportunity": "Cette combinaison",
  "monitorWorkspace.blacklistDialog.targets.longInstrument": "Un duo aux longues jambes",
  "monitorWorkspace.blacklistDialog.targets.shortInstrument": "Paire à jambes courtes",
  "monitorWorkspace.blacklistDialog.targets.baseAsset": "Actif",
  "monitorWorkspace.blacklistDialog.targets.baseAssetSummary": "{{asset}} · masquer toutes les combinaisons contenant cet élément",
  "monitorWorkspace.blacklistDialog.feedback.added": "Ajouté à votre liste noire et masqué de vos vues et alertes",
  "monitorWorkspace.blacklistDialog.feedback.existing": "Cette cible figure déjà dans votre liste noire",
  "monitorWorkspace.blacklistDialog.feedback.failed": "Le serveur n'a pas validé la mise à jour de la liste noire",
  "monitorWorkspace.blacklistDialog.actions.close": "Fermer",
  "monitorWorkspace.blacklistDialog.actions.cancel": "Annuler",
  "monitorWorkspace.blacklistDialog.actions.confirmOpportunity": "Combinaison de listes noires",
  "monitorWorkspace.blacklistDialog.actions.confirm": "Liste noire",
  "monitorWorkspace.route.buy": "Acheter",
  "monitorWorkspace.route.sell": "Vendre",
  "monitorWorkspace.route.long": "Long",
  "monitorWorkspace.route.short": "Court",
  "monitorWorkspace.route.aria": "Combinaison : {{route}}",
  "monitorWorkspace.route.unknown": "Inconnu",
  "monitorWorkspace.route.incomplete": "Informations d'identité indisponibles",
  "monitorWorkspace.route.quotedIn": "Cité dans {{asset}}",
  "monitorWorkspace.assetType.crypto": "Crypto",
  "monitorWorkspace.assetType.equity": "$t(zml:zml.asset_class.equity)",
  "monitorWorkspace.assetType.etf": "ETF",
  "monitorWorkspace.assetType.commodity": "Matière première",
  "monitorWorkspace.assetType.fx": "FX",
  "monitorWorkspace.assetType.index": "Index",
  "monitorWorkspace.assetType.government_security": "Obligation d'État",
  "monitorWorkspace.assetType.real_estate": "Immobilier",
  "monitorWorkspace.assetType.other": "Autres",
  "monitorWorkspace.assetType.unknown": "Non classifié",
  "monitorWorkspace.columns.asset.label": "Actif",
  "monitorWorkspace.columns.asset.title": "Nom et type de l'actif",
  "monitorWorkspace.columns.pair.label": "Paire",
  "monitorWorkspace.columns.pair.title": "Paire de devises",
  "monitorWorkspace.columns.exchange.label": "Bourse / marché",
  "monitorWorkspace.columns.exchange.title": "Bourse / marché",
  "monitorWorkspace.columns.price.label": "Prix",
  "monitorWorkspace.columns.price.title": "Prix actuel",
  "monitorWorkspace.columns.open.label": "$t(zml:zml.metric.bbo_executable_open_spread_pct)",
  "monitorWorkspace.columns.open.title": "$t(zml:zml.metric.bbo_executable_open_spread_pct)",
  "monitorWorkspace.columns.close.label": "$t(zml:zml.metric.bbo_executable_close_spread_pct)",
  "monitorWorkspace.columns.close.title": "$t(zml:zml.metric.bbo_executable_close_spread_pct)",
  "monitorWorkspace.columns.gap.label": "$t(zml:zml.metric.spread_gap_pct)",
  "monitorWorkspace.columns.gap.title": "$t(zml:zml.metric.spread_gap_pct)",
  "monitorWorkspace.columns.funding.label": "$t(zml:zml.metric.net_funding_8h_pct.short)",
  "monitorWorkspace.columns.funding.title": "$t(zml:zml.metric.net_funding_8h_pct)",
  "monitorWorkspace.columns.fundingDetail.label": "Détails du financement",
  "monitorWorkspace.columns.fundingDetail.title": "Détails du financement",
  "monitorWorkspace.columns.fsl.label": "Lien de financement",
  "monitorWorkspace.columns.fsl.title": "Lien de financement : de −100 à +100, mesurant la relation monotone entre le spread et le financement net équivalent sur huit heures. Les valeurs positives évoluent dans le même sens ; les valeurs négatives évoluent dans le sens inverse.",
  "monitorWorkspace.columns.f1d.label": "Financement Δ 1D",
  "monitorWorkspace.columns.f1d.title": "Différence de financement sur 1 jour",
  "monitorWorkspace.columns.f2d.label": "Financement Δ 2D",
  "monitorWorkspace.columns.f2d.title": "Différence de financement sur 2 jours",
  "monitorWorkspace.columns.f3d.label": "Financement Δ 3D",
  "monitorWorkspace.columns.f3d.title": "Différence de financement sur 3 jours",
  "monitorWorkspace.columns.f4d.label": "Financement Δ 4D",
  "monitorWorkspace.columns.f4d.title": "Différence de financement sur 4 jours",
  "monitorWorkspace.columns.f5d.label": "Financement Δ 5D",
  "monitorWorkspace.columns.f5d.title": "Différence de financement sur 5 jours",
  "monitorWorkspace.columns.market-depth.label": "Chiffre d'affaires sur 24 heures",
  "monitorWorkspace.columns.market-depth.title": "chiffre d'affaires sur 24 heures",
  "monitorWorkspace.columns.oi.label": "$t(zml:zml.metric.open_interest_notional.short)",
  "monitorWorkspace.columns.oi.title": "$t(zml:zml.metric.open_interest_notional)",
  "monitorWorkspace.columns.age.label": "Fraîcheur",
  "monitorWorkspace.columns.age.title": "Actualité des données",
  "monitorWorkspace.fundingHeader.intervalFilterAria": "Filtres rapides par intervalle de financement",
  "monitorWorkspace.fundingHeader.addInterval": "Afficher les combinaisons avec un intervalle de financement «{{interval}}»",
  "monitorWorkspace.fundingHeader.removeInterval": "Supprimer le filtre « funding-interval » de la balise `{{interval}}`",
  "monitorWorkspace.age.legsDesynced": "Jambes désynchronisées {{duration}}",
  "monitorWorkspace.age.stale": "{{exchange}} {{duration}} obsolète",
  "monitorWorkspace.age.now": "maintenant",
  "monitorWorkspace.age.secondsAgo": "{{count}}il y a s",
  "monitorWorkspace.age.minutesAgo": "{{count}}il y a m",
  "monitorWorkspace.age.hoursAgo": "{{count}}il y a h",
  "monitorWorkspace.linkage.unavailable": "Indisponible",
  "monitorWorkspace.linkage.sameStrong": "Forte cohésion dans le même sens",
  "monitorWorkspace.linkage.same": "Dans la même direction",
  "monitorWorkspace.linkage.sameWeak": "Faible dans le même sens",
  "monitorWorkspace.linkage.inverseStrong": "Inverse fort",
  "monitorWorkspace.linkage.inverse": "Inverse",
  "monitorWorkspace.linkage.inverseWeak": "Inverse faible",
  "monitorWorkspace.linkage.none": "Aucun lien évident",
  "monitorWorkspace.linkage.cellTitleSuffix": "Interprétation : une corrélation positive forte signifie que les spreads s'élargissent à mesure que le financement augmente, ce qui rend le choix du moment d'entrée et de sortie plus délicat ; une corrélation proche de zéro signifie que le carry du financement est découplé de l'évolution des spreads ; une corrélation négative forte signifie que les spreads se resserrent à mesure que le financement augmente. À titre purement descriptif, ne constitue pas un conseil de trading.",
  "monitorWorkspace.cellTitle.pair": "Paire à grande longueur de jambe {{long}} / paire à petite longueur de jambe {{short}}",
  "monitorWorkspace.cellTitle.price": "Prix de la jambe longue {{long}} / prix de la jambe courte {{short}}",
  "monitorWorkspace.cellTitle.open": "Écart d'entrée {{open}} / écart d'entrée-sortie {{gap}}",
  "monitorWorkspace.cellTitle.openStale": "Écart d'entrée {{open}} / écart d'entrée-sortie {{gap}} · les prix des jambes ne sont pas synchronisés ; la valeur en temps réel est figée",
  "monitorWorkspace.cellTitle.metric": "{{label}} {{value}}",
  "monitorWorkspace.cellTitle.metricStale": "{{label}} {{value}} · les prix des legs ne sont pas synchronisés ; la valeur en temps réel est figée",
  "monitorWorkspace.cellTitle.funding": "{{value}}",
  "monitorWorkspace.cellTitle.fundingStale": "{{value}} · les prix des segments ne sont pas synchronisés ; la valeur en temps réel est figée",
  "monitorWorkspace.cellTitle.fundingDetail": "Financement à long terme {{long}} / financement à court terme {{short}}",
  "monitorWorkspace.cellTitle.volume": "Chiffre d'affaires sur 24 heures (période longue) {{long}} / Chiffre d'affaires sur 24 heures (période courte) {{short}}",
  "monitorWorkspace.cellTitle.oi": "{{firstMarket}} OI {{long}} / {{secondMarket}} OI {{short}} (en USD ; total pour cet instrument sur chaque marché ; paires classées par ordre décroissant de l'OI sur le marché perpétuel)",
  "monitorWorkspace.cellTitle.diagnostic": "{{age}} · Cliquez ici pour consulter les diagnostics",
  "monitorWorkspace.cellTitle.linkage": "Corrélation des financements {{display}}/100 ({{label}}) : une valeur positive indique que l'écart et le financement horaire net ont tendance à évoluer dans le même sens ; une valeur négative indique qu'ils ont tendance à évoluer en sens inverse. {{suffix}}",
  "monitorWorkspace.cellTitle.linkageUnavailable": "Corrélation des financements : non mesurable sur la fenêtre actuelle, aucune valeur n'est donc affichée. {{suffix}}",
  "monitorWorkspace.drawer.complete.title": "Données de marché",
  "monitorWorkspace.drawer.complete.copy": "Copier les valeurs d'origine",
  "monitorWorkspace.drawer.complete.copied": "Valeurs d'origine copiées",
  "monitorWorkspace.drawer.complete.copyFailed": "Échec de la copie",
  "monitorWorkspace.drawer.complete.long": "Jambe longue",
  "monitorWorkspace.drawer.complete.short": "Jambe courte",
  "monitorWorkspace.drawer.complete.price": "Prix",
  "monitorWorkspace.drawer.complete.volume": "Volume sur 24 heures",
  "monitorWorkspace.drawer.complete.oi": "Portefeuille de positions ouvertes",
  "monitorWorkspace.drawer.complete.funding": "Taux de financement",
  "monitorWorkspace.drawer.complete.cap": "Plafond du taux de financement",
  "monitorWorkspace.drawer.complete.period": "Intervalle de règlement",
  "monitorWorkspace.drawer.complete.notApplicable": "Sans objet",
  "monitorWorkspace.drawer.actionsAria": "Actions combinées",
  "monitorWorkspace.drawer.actions.history-curve": "Tableau chronologique",
  "monitorWorkspace.drawer.actions.funding-detail": "Détails du financement",
  "monitorWorkspace.drawer.actions.coin-detail": "Détails de l'actif",
  "monitorWorkspace.drawer.actions.feishu-mute": "Notifications",
  "monitorWorkspace.drawer.actions.send-trade": "Envoyer à ZML Trade",
  "monitorWorkspace.drawer.actions.blacklist": "Liste noire",
  "monitorWorkspace.drawer.actions.favorite": "Favoris",
  "monitorWorkspace.drawer.openHistoryCurve": "Ouvrir le graphique historique de cette combinaison",
  "monitorWorkspace.drawer.openFundingDetail": "Afficher l'historique des financements de cette combinaison",
  "monitorWorkspace.drawer.openCoinDetail": "Afficher les détails de l'actif",
  "monitorWorkspace.drawer.openNotificationSettings": "Ouvrir les paramètres de notification",
  "monitorWorkspace.drawer.sendToTrade": "Envoyer l'aperçu actuel de l'opportunité à ZML Trade",
  "monitorWorkspace.drawer.blacklist": "Ajouter cette combinaison à la liste noire",
  "monitorWorkspace.drawer.asset.marketSummaryAria": "Synthèse du marché des actifs",
  "monitorWorkspace.drawer.asset.rank": "Classement",
  "monitorWorkspace.drawer.asset.marketCap": "$t(zml:zml.metric.market_capitalization)",
  "monitorWorkspace.drawer.asset.change24h": "Variation sur 24 heures",
  "monitorWorkspace.drawer.asset.volume24h": "$t(zml:zml.metric.quote_volume_24h)",
  "monitorWorkspace.drawer.asset.circulation": "Offre en circulation",
  "monitorWorkspace.drawer.coin.title": "Détails de l'actif",
  "monitorWorkspace.drawer.coin.loading": "Chargement des détails de l'élément…",
  "monitorWorkspace.drawer.coin.loadFailed": "Impossible de charger les détails de la ressource",
  "monitorWorkspace.drawer.coin.retry": "Réessayer",
  "monitorWorkspace.drawer.coin.openInToolbox": "Ouvrir dans la boîte à outils",
  "monitorWorkspace.drawer.coin.unavailable": "Détails de l'actif indisponibles",
  "monitorWorkspace.drawer.coin.cachedAt": "Dernière mise à jour : {{age}}",
  "monitorWorkspace.drawer.coin.updatedAt": "Dernière mise à jour : {{age}}",
  "monitorWorkspace.drawer.coin.lookup.refreshing": "Rafraîchissant…",
  "monitorWorkspace.drawer.coin.lookup.refresh": "Actualiser les données relatives aux actifs",
  "monitorWorkspace.drawer.coin.lookup.emptyTitle": "Rechercher un élément pour afficher ses détails",
  "monitorWorkspace.drawer.coin.lookup.emptyDescription": "Saisissez le nom ou le symbole d'un actif pour consulter les cours sur les différentes places boursières, la répartition des volumes et l'état du service.",
  "monitorWorkspace.drawer.coin.cache.unknown": "heure inconnue",
  "monitorWorkspace.drawer.coin.cache.justNow": "il y a un instant",
  "monitorWorkspace.drawer.coin.cache.minutesAgo": "{{count}} il y a quelques minutes",
  "monitorWorkspace.drawer.coin.cache.hoursAgo": "{{count}} il y a une heure",
  "monitorWorkspace.drawer.coin.filters.typeAria": "Filtre de source d'actifs",
  "monitorWorkspace.drawer.coin.filters.typeLabel": "Source",
  "monitorWorkspace.drawer.coin.filters.type.all": "Tout",
  "monitorWorkspace.drawer.coin.filters.type.cex": "Bourses centralisées",
  "monitorWorkspace.drawer.coin.filters.marketAria": "Filtre du marché des actifs",
  "monitorWorkspace.drawer.coin.filters.marketLabel": "Marché",
  "monitorWorkspace.drawer.coin.filters.market.spot": "Spot",
  "monitorWorkspace.drawer.coin.filters.market.perpetual": "Titre perpétuel",
  "monitorWorkspace.drawer.coin.filters.market.futures": "Contrats à terme",
  "monitorWorkspace.drawer.coin.filters.totalPairs": "{{count}} paires",
  "monitorWorkspace.drawer.coin.header.marketCap": "$t(zml:zml.metric.market_capitalization)",
  "monitorWorkspace.drawer.coin.header.volume24h": "$t(zml:zml.metric.quote_volume_24h)",
  "monitorWorkspace.drawer.coin.header.circulation": "En circulation",
  "monitorWorkspace.drawer.coin.header.marketCapRank": "Capitalisation boursière <rank>{{rank}}</rank>",
  "monitorWorkspace.drawer.coin.featureTabs.market": "Données de marché",
  "monitorWorkspace.drawer.coin.links.homepage": "Site web",
  "monitorWorkspace.drawer.coin.links.followers": "{{count}} abonnés",
  "monitorWorkspace.drawer.coin.links.subscribers": "{{count}} abonnés",
  "monitorWorkspace.drawer.coin.links.linksAria": "Liens vers le projet",
  "monitorWorkspace.drawer.coin.links.resourcesAria": "Ressources du projet",
  "monitorWorkspace.drawer.coin.links.resources": "Ressources du projet",
  "monitorWorkspace.drawer.coin.links.expandDescription": "Afficher l'aperçu",
  "monitorWorkspace.drawer.coin.links.collapseDescription": "Masquer l'aperçu",
  "monitorWorkspace.drawer.coin.search.searching": "Recherche en cours…",
  "monitorWorkspace.drawer.coin.search.failed": "La recherche a échoué. Veuillez réessayer.",
  "monitorWorkspace.drawer.coin.search.recent": "Récemment consultés",
  "monitorWorkspace.drawer.coin.search.aria": "Rechercher des ressources",
  "monitorWorkspace.drawer.coin.search.placeholder": "Rechercher des ressources…",
  "monitorWorkspace.drawer.coin.search.empty": "Aucun élément correspondant",
  "monitorWorkspace.drawer.coin.search.resultsAria": "Résultats de la recherche d'actifs",
  "monitorWorkspace.drawer.coin.hover.loading": "Chargement du récapitulatif des actifs…",
  "monitorWorkspace.drawer.coin.hover.unavailable": "Résumé des actifs indisponible",
  "monitorWorkspace.drawer.coin.hover.partial": "Données partielles",
  "monitorWorkspace.drawer.coin.hover.rank": "Classement",
  "monitorWorkspace.drawer.coin.hover.marketCap": "$t(zml:zml.metric.market_capitalization)",
  "monitorWorkspace.drawer.coin.hover.volume24h": "$t(zml:zml.metric.quote_volume_24h)",
  "monitorWorkspace.drawer.coin.hover.circulation": "En circulation",
  "monitorWorkspace.drawer.coin.hover.change24h": "Variation sur 24 heures",
  "monitorWorkspace.drawer.coin.volume.other": "Autres",
  "monitorWorkspace.drawer.coin.volume.title": "Répartition du chiffre d'affaires",
  "monitorWorkspace.drawer.coin.volume.description": "Données agrégées par bourse",
  "monitorWorkspace.drawer.coin.volume.emptySummary": "Aucune donnée relative au chiffre d'affaires et à la répartition n'est disponible.",
  "monitorWorkspace.drawer.coin.volume.empty": "Aucune donnée sur le chiffre d'affaires",
  "monitorWorkspace.drawer.coin.volume.summary": "Le chiffre d'affaires est regroupé en <count>{{count}}</count> entrées ; <name>{{name}}</name> est la plus importante avec <volume>{{volume}}</volume>, soit <percentage>{{percentage}}%</percentage>.",
  "monitorWorkspace.drawer.coin.volume.total": "Agrégé par bourse · Volume total des transactions <total>{{total}}</total>",
  "monitorWorkspace.drawer.coin.volume.aria": "Répartition du volume des transactions par bourse",
  "monitorWorkspace.drawer.coin.table.emptySpot": "Pas de paires au comptant",
  "monitorWorkspace.drawer.coin.table.emptyDerivatives": "Pas de contrats dérivés",
  "monitorWorkspace.drawer.coin.table.spotAria": "Tableau du marché au comptant des actifs",
  "monitorWorkspace.drawer.coin.table.derivativesAria": "Tableau du marché des produits dérivés sur actifs",
  "monitorWorkspace.drawer.coin.table.exchange": "Échange",
  "monitorWorkspace.drawer.coin.table.pair": "Paire",
  "monitorWorkspace.drawer.coin.table.contract": "Contrat",
  "monitorWorkspace.drawer.coin.table.settlement": "{{quote}} · S'installe à{{settlement}}",
  "monitorWorkspace.drawer.coin.table.columns.price": "Prix",
  "monitorWorkspace.drawer.coin.table.columns.volume": "chiffre d'affaires sur 24 heures",
  "monitorWorkspace.drawer.coin.table.columns.spread": "Écart",
  "monitorWorkspace.drawer.coin.table.columns.volumePct": "Part en volume",
  "monitorWorkspace.drawer.coin.table.columns.trust": "Source",
  "monitorWorkspace.drawer.coin.table.columns.updated": "Mise à jour",
  "monitorWorkspace.drawer.coin.table.columns.funding": "$t(zml:zml.metric.funding_rate)",
  "monitorWorkspace.drawer.coin.table.columns.openInterest": "$t(zml:zml.metric.open_interest_notional)",
  "monitorWorkspace.drawer.coin.table.columns.basis": "Base",
  "monitorWorkspace.drawer.coin.table.columns.change": "Variation sur 24 heures",
  "monitorWorkspace.drawer.coin.table.source.official": "Officiel",
  "monitorWorkspace.drawer.coin.table.age.justNow": "il y a un instant",
  "monitorWorkspace.drawer.coin.table.age.minutesAgo": "{{count}} il y a quelques minutes",
  "monitorWorkspace.drawer.coin.table.age.hoursAgo": "{{count}} il y a une heure",
  "monitorWorkspace.drawer.coin.table.age.daysAgo": "{{count}} il y a d",
  "monitorWorkspace.drawer.coin.table.pagination.aria": "Pagination par paires",
  "monitorWorkspace.drawer.coin.table.pagination.empty": "Il n'y a pas de paires.",
  "monitorWorkspace.drawer.coin.table.pagination.firstPage": "Déjà en première page.",
  "monitorWorkspace.drawer.coin.table.pagination.lastPage": "On en est déjà à la dernière page.",
  "monitorWorkspace.drawer.coin.table.pagination.range": "{{start}}–{{end}} / {{total}}",
  "monitorWorkspace.drawer.coin.table.pagination.previousAria": "Page précédente de la paire",
  "monitorWorkspace.drawer.coin.table.pagination.nextAria": "Page suivante de la paire",
  "monitorWorkspace.drawer.coin.settings.aria": "Paramètres de page",
  "monitorWorkspace.drawer.coin.settings.syncErrorAria": "Paramètres de page ; les préférences ne sont pas synchronisées",
  "monitorWorkspace.drawer.coin.settings.title": "Paramètres détaillés des actifs",
  "monitorWorkspace.drawer.coin.settings.description": "Les préférences relatives aux filtres et aux tableaux sont enregistrées sur ce compte.",
  "monitorWorkspace.drawer.coin.settings.defaultMarket": "Marché par défaut",
  "monitorWorkspace.drawer.coin.settings.exchangeType": "Type d'échange",
  "monitorWorkspace.drawer.coin.settings.exchangeTypes.all": "Tout",
  "monitorWorkspace.drawer.coin.settings.exchangeTypes.cex": "Centralisé",
  "monitorWorkspace.drawer.coin.settings.pageSize": "Lignes par page",
  "monitorWorkspace.drawer.coin.settings.tableDensity": "Densité des tables",
  "monitorWorkspace.drawer.coin.settings.density.compact": "Compact",
  "monitorWorkspace.drawer.coin.settings.density.standard": "Standard",
  "monitorWorkspace.drawer.coin.settings.density.relaxed": "Détendu",
  "monitorWorkspace.drawer.coin.settings.visibleColumns": "Colonnes visibles",
  "monitorWorkspace.drawer.coin.settings.hiddenExchanges": "Échanges cachés",
  "monitorWorkspace.drawer.coin.priceChart.title": "Graphique en chandeliers",
  "monitorWorkspace.drawer.coin.priceChart.up": "Haut",
  "monitorWorkspace.drawer.coin.priceChart.down": "Bas",
  "monitorWorkspace.drawer.coin.priceChart.legendAria": "Légende des chandeliers : hausse et baisse",
  "monitorWorkspace.drawer.coin.priceChart.rangeAria": "Plage des chandeliers",
  "monitorWorkspace.drawer.coin.priceChart.ranges.oneDay": "1D",
  "monitorWorkspace.drawer.coin.priceChart.ranges.sevenDays": "7D",
  "monitorWorkspace.drawer.coin.priceChart.ranges.fourteenDays": "14D",
  "monitorWorkspace.drawer.coin.priceChart.ranges.thirtyDays": "30D",
  "monitorWorkspace.drawer.coin.priceChart.asset": "Actif",
  "monitorWorkspace.drawer.coin.priceChart.chartAria": "{{coin}} {{days}}- graphique en chandeliers journalier",
  "monitorWorkspace.drawer.coin.priceChart.loading": "Chargement des données sur les chandeliers…",
  "monitorWorkspace.drawer.coin.priceChart.warming": "Remplissage des données des chandeliers…",
  "monitorWorkspace.drawer.coin.priceChart.loadFailed": "Données sur les chandeliers indisponibles",
  "monitorWorkspace.drawer.coin.priceChart.retry": "Réessayer",
  "monitorWorkspace.drawer.coin.priceChart.empty": "Aucune donnée sur les chandeliers",
  "monitorWorkspace.drawer.coin.priceChart.noCoin": "Aucun actif n'a été sélectionné",
  "monitorWorkspace.drawer.coin.priceChart.noCoinDescription": "Sélectionnez un actif pour afficher les données OHLC.",
  "monitorWorkspace.drawer.coin.priceChart.summary.notLoaded": "Les données des graphiques en chandeliers ne se sont pas encore chargées.",
  "monitorWorkspace.drawer.coin.priceChart.summary.reinitializing": "Réinitialisation du graphique en chandeliers.",
  "monitorWorkspace.drawer.coin.priceChart.summary.initializationFailed": "Le graphique en chandeliers n'a pas pu être initialisé.",
  "monitorWorkspace.drawer.coin.priceChart.summary.noCoin": "Aucun actif n'est sélectionné.",
  "monitorWorkspace.drawer.coin.priceChart.summary.loading": "Chargement des données des chandeliers des {{days}} jours.",
  "monitorWorkspace.drawer.coin.priceChart.summary.warming": "Remplissage rétrospectif des données des chandeliers des journées «{{days}}».",
  "monitorWorkspace.drawer.coin.priceChart.summary.empty": "Il n'existe pas d'historique officiel complet des chandeliers pour l'{{days}}.",
  "monitorWorkspace.drawer.coin.priceChart.summary.requestFailed": "La requête relative aux chandeliers de l'{{days}}-day a échoué.",
  "monitorWorkspace.drawer.coin.priceChart.summary.coverageIncomplete": "L'historique officiel de <days>{{days}}</days> jours couvre <hours>{{coverageHours}}/{{expectedHours}}</hours> heures (<coveragePct>{{coveragePct}}%</coveragePct>) ; il n'est donc pas présenté comme un historique complet.",
  "monitorWorkspace.drawer.coin.priceChart.summary.ready": "<days>{{days}}</days> jours de graphique en chandeliers avec <count>{{count}}</count> chandeliers ; plus haut <high>{{high}}</high>, plus bas <low>{{low}}</low>, dernière clôture <close>{{close}}</close>.",
  "monitorWorkspace.drawer.coin.priceChart.errors.initializationFailed": "Le graphique en chandeliers n'a pas pu être initialisé. Veuillez réessayer.",
  "monitorWorkspace.drawer.coin.priceChart.errors.requestFailed": "Impossible de charger les données des graphiques en chandeliers. Veuillez réessayer dans quelques instants.",
  "monitorWorkspace.drawer.coin.priceChart.dataTable.label": "{{coin}} points de données des chandeliers",
  "monitorWorkspace.drawer.coin.priceChart.dataTable.time": "Heure",
  "monitorWorkspace.drawer.coin.priceChart.dataTable.open": "Ouvrir",
  "monitorWorkspace.drawer.coin.priceChart.dataTable.high": "Élevé",
  "monitorWorkspace.drawer.coin.priceChart.dataTable.low": "Faible",
  "monitorWorkspace.drawer.coin.priceChart.dataTable.close": "Fermer",
  "monitorWorkspace.drawer.coin.modules.unavailableTitle": "Module temporairement indisponible",
  "monitorWorkspace.drawer.coin.modules.retry": "Réessayer",
  "monitorWorkspace.drawer.coin.modules.volumeTitle": "Répartition en volume",
  "monitorWorkspace.drawer.coin.modules.volumeDescription": "Données agrégées par bourse",
  "monitorWorkspace.drawer.coin.modules.volumeLoading": "Chargement du graphique des volumes…",
  "monitorWorkspace.drawer.coin.modules.orderbookLoading": "Chargement des informations sur le marché…",
  "monitorWorkspace.drawer.coin.modules.chartTitle": "Graphique en chandeliers",
  "monitorWorkspace.drawer.coin.modules.chartDescription": "OHLC · USD",
  "monitorWorkspace.drawer.coin.modules.priceLoading": "Chargement du graphique des cours…",
  "monitorWorkspace.drawer.coin.errors.requestFailed": "La demande de détails sur l'actif a échoué. Veuillez réessayer plus tard.",
  "monitorWorkspace.drawer.coin.errors.identityAmbiguous": "Plusieurs éléments similaires ont été trouvés. Choisissez-en un et réessayez.",
  "monitorWorkspace.drawer.coin.errors.identityNotFound": "Aucun élément correspondant n'a été trouvé.",
  "monitorWorkspace.drawer.coin.errors.identityUnresolved": "Les détails relatifs à cet actif ne sont pas encore disponibles pour cette combinaison.",
  "monitorWorkspace.drawer.coin.errors.catalogNotReady": "Les détails de l'actif sont en cours de préparation. Veuillez réessayer dans quelques instants.",
  "monitorWorkspace.drawer.coin.errors.invalidDomain": "Les détails de ce ressource ne sont pas encore pris en charge.",
  "monitorWorkspace.drawer.coin.errors.serviceUnavailable": "Le service de détails sur les actifs est temporairement indisponible.",
  "monitorWorkspace.drawer.coin.errors.unrecognized": "La demande de détails sur l'actif n'a pas pu être traitée.",
  "monitorWorkspace.drawer.coin.errors.dataUnavailable": "Aucune donnée détaillée sur les actifs n'est disponible.",
  "monitorWorkspace.drawer.coin.errors.idNotFound": "Le fichier demandé est introuvable.",
  "monitorWorkspace.drawer.coin.errors.symbolNotFound": "Aucun actif correspondant à ce symbole n'a été trouvé.",
  "monitorWorkspace.drawer.coin.errors.candidateUnavailable": "Des candidats correspondants ont été trouvés, mais leurs informations ne sont temporairement pas disponibles.",
  "monitorWorkspace.drawer.coin.errors.upstreamFailed": "Les données boursières en temps réel sont temporairement indisponibles. Veuillez réessayer plus tard.",
  "monitorWorkspace.drawer.coin.errors.backgroundRefresh": "Les nouvelles données ne sont pas encore disponibles. Une actualisation en arrière-plan est en cours.",
  "monitorWorkspace.drawer.coin.errors.identityDataMissing": "Les informations relatives à cet élément sont actuellement incomplètes.",
  "monitorWorkspace.drawer.coin.errors.partialBackgroundRefresh": "Certaines données proviennent du dernier instantané disponible, tandis que l'actualisation en arrière-plan se poursuit.",
  "monitorWorkspace.drawer.coin.errors.partialUpstreamFailed": "Certaines données en temps réel n'ont pas pu être actualisées ; l'instantané disponible reste visible.",
  "monitorWorkspace.drawer.deferred.unavailableTitle": "Temporairement indisponible",
  "monitorWorkspace.drawer.deferred.retry": "Réessayer",
  "monitorWorkspace.drawer.deferred.moduleError": "Erreur de module",
  "monitorWorkspace.drawer.deferred.loading": "Chargement en cours",
  "monitorWorkspace.drawer.funding.title": "Historique des financements",
  "monitorWorkspace.drawer.funding.loadingShort": "Chargement en cours",
  "monitorWorkspace.drawer.funding.refreshingShort": "Rafraîchissant",
  "monitorWorkspace.drawer.funding.errorShort": "Erreur de chargement",
  "monitorWorkspace.drawer.funding.staleShort": "Instantané obsolète",
  "monitorWorkspace.drawer.funding.emptyShort": "Aucune précision",
  "monitorWorkspace.drawer.funding.loading": "Chargement de l'historique des financements…",
  "monitorWorkspace.drawer.funding.loadFailed": "Impossible de charger l'historique des financements",
  "monitorWorkspace.drawer.funding.retry": "Réessayer",
  "monitorWorkspace.drawer.funding.emptyTitle": "Aucun historique de financement disponible",
  "monitorWorkspace.drawer.funding.emptyDescription": "L'historique des financements n'est temporairement pas disponible pour cette combinaison.",
  "monitorWorkspace.drawer.funding.spot": "Spot",
  "monitorWorkspace.drawer.funding.days": "{{count}}D",
  "monitorWorkspace.drawer.funding.cumulativeNet": "Différence nette de financement cumulée",
  "monitorWorkspace.drawer.funding.longLeg": "Long",
  "monitorWorkspace.drawer.funding.shortLeg": "Court",
  "monitorWorkspace.drawer.funding.netDifference": "Différence nette",
  "monitorWorkspace.drawer.funding.breakdown": "Répartition par combinaison",
  "monitorWorkspace.drawer.funding.breakdownAria": "Répartition par combinaison de sources de financement",
  "monitorWorkspace.drawer.funding.coverage": "Couverture",
  "monitorWorkspace.drawer.funding.latestSettlement": "Dernier règlement",
  "monitorWorkspace.drawer.funding.intervalMismatch": "Les jambes utilisent des intervalles de règlement différents",
  "monitorWorkspace.drawer.funding.settlementDetail": "Détails des règlements · 5 derniers jours",
  "monitorWorkspace.drawer.funding.noSettlementTitle": "Aucune précision concernant le règlement",
  "monitorWorkspace.drawer.funding.noSettlementDescription": "Il n'y a aucun enregistrement de règlement à afficher pour les 5 derniers jours.",
  "monitorWorkspace.drawer.funding.settlementAria": "Détails du règlement relatif à l'historique des financements",
  "monitorWorkspace.drawer.funding.settlementTime": "Délai de règlement",
  "monitorWorkspace.drawer.funding.longRate": "Taux à long terme",
  "monitorWorkspace.drawer.funding.shortRate": "Taux à court terme",
  "monitorWorkspace.drawer.funding.quality.partial": "État des données : couverture partielle ; les 5 derniers jours de l'historique des financements peuvent être incomplets.",
  "monitorWorkspace.drawer.funding.quality.newListing": "Statut des données : historique de moins de 5 jours ; les valeurs cumulées s'appuient sur les enregistrements disponibles. Le premier enregistrement ne détermine pas la date d'inscription.",
  "monitorWorkspace.drawer.funding.quality.stale": "État des données : les mises à jour relatives au règlement sont obsolètes ; comparez-les aux montants de financement en temps réel figurant dans le tableau principal.",
  "monitorWorkspace.drawer.funding.quality.missing": "État des données : aucun enregistrement de règlement exploitable n'était disponible au cours des 5 derniers jours.",
  "monitorWorkspace.drawer.funding.quality.warmingUp": "État des données : l'historique des financements commence à s'étoffer et continuera à s'enrichir.",
  "monitorWorkspace.drawer.diagnostics.title": "Diagnostics combinés",
  "monitorWorkspace.drawer.diagnostics.thresholds.title": "Seuils diagnostiques",
  "monitorWorkspace.drawer.diagnostics.thresholds.description": "Les modifications apportées aux paramètres d'exécution sont enregistrées et prennent effet à partir du prochain lot de calcul.",
  "monitorWorkspace.drawer.diagnostics.thresholds.legDelta": "Delta des jambes · s",
  "monitorWorkspace.drawer.diagnostics.thresholds.legStale": "Temps mort sur une seule jambe · s",
  "monitorWorkspace.drawer.diagnostics.save": "Enregistrer",
  "monitorWorkspace.drawer.diagnostics.refresh": "Actualiser",
  "monitorWorkspace.drawer.diagnostics.retry": "Réessayer",
  "monitorWorkspace.drawer.diagnostics.refreshFailed": "Échec de la mise à jour des diagnostics",
  "monitorWorkspace.drawer.diagnostics.refreshing": "Un diagnostic combiné rafraîchissant…",
  "monitorWorkspace.drawer.diagnostics.loading": "Chargement des diagnostics combinés…",
  "monitorWorkspace.drawer.diagnostics.loadFailed": "Impossible de charger les diagnostics combinés",
  "monitorWorkspace.drawer.diagnostics.empty": "Aucune information détaillée sur le diagnostic n'est disponible",
  "monitorWorkspace.drawer.diagnostics.disabled.saving": "Les seuils de diagnostic sont en cours d'enregistrement. Veuillez patienter.",
  "monitorWorkspace.drawer.diagnostics.disabled.refreshing": "Les tests de diagnostic sont en cours. Veuillez patienter.",
  "monitorWorkspace.drawer.diagnostics.disabled.paramsUnconfirmed": "Les seuils d'exécution ne sont pas encore confirmés. Veuillez d'abord actualiser la page.",
  "monitorWorkspace.drawer.diagnostics.disabled.paramsMissing": "Les seuils d'exécution ne sont pas encore chargés.",
  "monitorWorkspace.drawer.diagnostics.messages.detailLoadFailed": "Impossible de charger les diagnostics de combinaison. Vérifiez l'état du backend et réessayez.",
  "monitorWorkspace.drawer.diagnostics.messages.paramsLoadFailed": "Impossible de charger les seuils d'exécution. Vérifiez l'état du backend et réessayez.",
  "monitorWorkspace.drawer.diagnostics.messages.invalidSeconds": "Saisissez des valeurs valides en secondes.",
  "monitorWorkspace.drawer.diagnostics.messages.outOfRange": "Une valeur seuil se situe en dehors de la plage acceptée par le backend.",
  "monitorWorkspace.drawer.diagnostics.messages.deltaExceedsStale": "Le seuil « leg-delta » ne peut pas dépasser le délai d'attente pour une jambe.",
  "monitorWorkspace.drawer.diagnostics.messages.saved": "Mise à jour à chaud et persistance.",
  "monitorWorkspace.drawer.diagnostics.messages.conflict": "Un autre utilisateur a modifié ces paramètres. La version de référence a été mise à jour et votre brouillon local a été conservé ; vérifiez-le et enregistrez-le à nouveau.",
  "monitorWorkspace.drawer.diagnostics.messages.saveFailed": "Échec de l'enregistrement. Vérifiez l'état du serveur et réessayez.",
  "monitorWorkspace.drawer.diagnostics.snapshot.title": "Aperçu du marché",
  "monitorWorkspace.drawer.diagnostics.snapshot.openClose": "Entrée / sortie",
  "monitorWorkspace.drawer.diagnostics.snapshot.netFunding8h": "Financement net équivalent à 8H",
  "monitorWorkspace.drawer.diagnostics.snapshot.legDelta": "Différentiel de temps par étape",
  "monitorWorkspace.drawer.diagnostics.legs.long": "Jambe longue",
  "monitorWorkspace.drawer.diagnostics.legs.short": "Jambe courte",
  "monitorWorkspace.drawer.diagnostics.legs.diagnostic": "Diagnostic",
  "monitorWorkspace.drawer.diagnostics.legs.price": "Prix",
  "monitorWorkspace.drawer.diagnostics.legs.quoteAge": "Âge de la citation",
  "monitorWorkspace.drawer.diagnostics.legs.streamAge": "Âge du cours d'eau",
  "monitorWorkspace.drawer.diagnostics.streams.title": "Flux associés",
  "monitorWorkspace.drawer.diagnostics.streams.empty": "Aucune information relative au flux",
  "monitorWorkspace.drawer.diagnostics.streams.lastEvent": "Dernier événement {{age}}",
  "monitorWorkspace.drawer.diagnostics.streams.noError": "Aucune erreur",
  "monitorWorkspace.drawer.diagnostics.streams.statusAria": "État d'exécution : {{status}}",
  "monitorWorkspace.drawer.diagnostics.streams.reconnects": "Se reconnecte à {{count}}",
  "monitorWorkspace.drawer.diagnostics.streams.errors": "Erreurs {{count}}",
  "monitorWorkspace.drawer.notifications.title": "Paramètres de notification",
  "monitorWorkspace.tradeSend.sending": "Envoi d'{{opportunityId}}s à ZML Trade",
  "monitorWorkspace.tradeSend.delivering": "{{opportunityId}} attend la confirmation de livraison de ZML Trade",
  "monitorWorkspace.tradeSend.delivered": "{{opportunityId}} a été livré à ZML Trade",
  "monitorWorkspace.tradeSend.rejected": "{{opportunityId}} a été rejetée : {{reason}}",
  "monitorWorkspace.tradeSend.reasons.offline": "ZML Trade n'accepte pas les importations manuelles. Activez l'option « Importation manuelle » dans ZML Trade, puis réessayez.",
  "monitorWorkspace.tradeSend.reasons.backpressure": "ZML Trade a atteint sa limite de traitement sécurisée. Veuillez réessayer dans quelques instants.",
  "monitorWorkspace.tradeSend.reasons.expired": "Cette fiche d'opportunité a expiré. Consultez les dernières données du marché et renvoyez-la.",
  "monitorWorkspace.tradeSend.reasons.instrumentIdentityIncomplete": "L'identité du marché est incomplète ; le système l'a donc rejetée par mesure de sécurité.",
  "monitorWorkspace.tradeSend.reasons.generic": "ZML Trade n'a pas accepté cette importation ({{code}})",
  "monitorWorkspace.tabs.fixed.favoritesAlerts.label": "Favoris",
  "monitorWorkspace.tabs.fixed.favoritesAlerts.title": "Favoris et alertes",
  "monitorWorkspace.tabs.navAria": "Affichages du moniteur",
  "monitorWorkspace.tabs.optionsAria": "Options d'affichage de l'écran",
  "monitorWorkspace.tabs.allViews": "Toutes les vues",
  "monitorWorkspace.tabs.allViewsCount_one": "{{count}} vue",
  "monitorWorkspace.tabs.allViewsCount_other": "{{count}} vues",
  "monitorWorkspace.tabs.overflowMore_one": "{{count}} de plus",
  "monitorWorkspace.tabs.overflowMore_other": "{{count}} de plus",
  "monitorWorkspace.tabs.newTab": "Nouvel onglet « Filtre »",
  "monitorWorkspace.tabs.copyName": "{{name}} copie",
  "monitorWorkspace.tabs.fixedViewAria": "{{label}}{{alerts}}",
  "monitorWorkspace.tabs.alertCountSuffix_one": ", {{count}} alerte",
  "monitorWorkspace.tabs.alertCountSuffix_other": ", {{count}} alertes",
  "monitorWorkspace.tabs.reorder": "Réorganiser l'onglet «{{name}} »",
  "monitorWorkspace.tabs.more": "En savoir plus",
  "monitorWorkspace.tabs.overflowAria": "{{label}} et {{count}} au total",
  "monitorWorkspace.tabs.overflowAriaWithAlerts_one": "{{label}}, {{itemCount}} au total, {{count}} alerte",
  "monitorWorkspace.tabs.overflowAriaWithAlerts_other": "{{label}}, {{itemCount}} au total, {{count}} alertes",
  "monitorWorkspace.tabs.currentView": "Vue actuelle",
  "monitorWorkspace.tabs.itemAlerts_one": "{{count}} alerte",
  "monitorWorkspace.tabs.itemAlerts_other": "{{count}} alertes",
  "monitorWorkspace.tabs.itemAriaSeparator": ", ",
  "monitorWorkspace.tabs.contextMenuAria": "{{name}} menu à onglets",
  "monitorWorkspace.tabs.actions.settings": "Paramètres",
  "monitorWorkspace.tabs.actions.rename": "Renommer",
  "monitorWorkspace.tabs.actions.duplicate": "En double",
  "monitorWorkspace.tabs.actions.delete": "Supprimer",
  "monitorWorkspace.tabs.closeFeedback": "Ignorer le message",
  "monitorWorkspace.tabs.renameDialog.title": "Renommer l'onglet « Filtre »",
  "monitorWorkspace.tabs.renameDialog.description": "Saisissez un nouveau nom pour l'onglet. Ses filtres actuels restent inchangés.",
  "monitorWorkspace.tabs.renameDialog.label": "Nom de l'onglet « Filtre »",
  "monitorWorkspace.tabs.renameDialog.placeholder": "Saisissez un nom d'onglet",
  "monitorWorkspace.tabs.deleteDialog.title": "Supprimer l'onglet « Filtre »",
  "monitorWorkspace.tabs.deleteDialog.description": "Supprimer «{{name}} » ? Ses filtres, ses paramètres d’alerte et la sélection indépendante de la chaîne Feishu seront supprimés.",
  "monitorWorkspace.tabs.deleteDialog.dirtySuffix": " La suppression de l'onglet actuel entraînera également la perte de ses brouillons non enregistrés (filtre de base, alerte, envoi ZML Trade ou modèle intégré).",
  "monitorWorkspace.tabs.deleteDialog.confirm": "Onglet « Supprimer »",
  "monitorWorkspace.tabs.leave.createTitle": "Supprimer les paramètres d'onglet non enregistrés et créer un onglet ?",
  "monitorWorkspace.tabs.leave.createDescription": "Le nouvel onglet s'ouvre immédiatement après sa création. La poursuite de l'opération entraîne la suppression des brouillons non enregistrés (filtre de base, alerte, livraison ZML Trade et modèle intégré) présents dans l'onglet actuel.",
  "monitorWorkspace.tabs.leave.createConfirm": "Supprimer et créer",
  "monitorWorkspace.tabs.leave.creatingDescription": "Création de l'onglet « Combinaison ». Si l'opération à distance échoue, les paramètres actuels non enregistrés sont conservés ; ils ne sont supprimés qu'une fois la création réussie et le changement de vue effectif.",
  "monitorWorkspace.tabs.leave.duplicatingDescription": "Duplication de l'onglet « Combinaison ». Si l'opération à distance échoue, les paramètres actuels non enregistrés sont conservés ; ils ne sont supprimés qu'une fois la duplication réussie et le changement de vue effectif.",
  "monitorWorkspace.tabs.leave.defaultTitle": "Supprimer les paramètres des onglets non enregistrés ?",
  "monitorWorkspace.tabs.leave.defaultDescription": "Cet onglet « Combinaison » contient des modifications non enregistrées concernant le filtre de base, les alertes, les livraisons ZML Trade ou les modèles intégrés. Si vous continuez, ces brouillons seront supprimés.",
  "monitorWorkspace.tabs.leave.defaultConfirm": "Ignorer et continuer",
  "monitorWorkspace.tabs.leave.defaultCancel": "Continuer à modifier",
  "monitorWorkspace.tabs.leave.mutationTitle": "Opération en cours…",
  "monitorWorkspace.tabs.leave.mutationDescription": "Les paramètres non enregistrés sont conservés jusqu'à la fin de l'opération à distance. Ils ne sont supprimés qu'une fois l'opération réussie et après que la vue a effectivement changé.",
  "monitorWorkspace.tabs.leave.mutationConfirm": "En cours…",
  "monitorWorkspace.tabs.leave.mutationCancel": "Veuillez patienter",
  "monitorWorkspace.tabs.leave.savingDescription": "Les paramètres de l'onglet sont en cours d'enregistrement et d'application. Vous ne pouvez pas fermer la fenêtre, changer d'onglet ni quitter l'application tant que cette opération n'est pas terminée.",
  "monitorWorkspace.tabs.leave.savingConfirm": "Enregistrement en cours…",
  "monitorWorkspace.filters.capability.loading": "Synchronisation des marchés disponibles.",
  "monitorWorkspace.filters.capability.stale": "Les marchés disponibles ont changé. Les résultats actuels sont en cours de synchronisation.",
  "monitorWorkspace.filters.capability.error": "Impossible d'actualiser les marchés disponibles. Les résultats actuels correspondent au dernier instantané ; veuillez réessayer plus tard.",
  "monitorWorkspace.filters.capability.retry": "Synchroniser les marchés disponibles",
  "monitorWorkspace.filters.groups.settlement": "Règlement",
  "monitorWorkspace.filters.groups.market": "Marché",
  "monitorWorkspace.filters.groups.openSpread": "Écart de cotation à l'entrée",
  "monitorWorkspace.filters.groups.spreadGap": "Écart entre les entrées et les sorties",
  "monitorWorkspace.filters.groups.realtimeFunding": "Financement en temps réel",
  "monitorWorkspace.filters.groups.accumulatedFunding": "Financement cumulé",
  "monitorWorkspace.filters.groups.liquidity": "Liquidité",
  "monitorWorkspace.filters.groups.venueExclusion": "Bourses exclues",
  "monitorWorkspace.filters.activeCount": "{{label}} · {{count}}",
  "monitorWorkspace.filters.groupAria": "{{group}} filtre : {{state}}",
  "monitorWorkspace.filters.notEnabled": "non activé",
  "monitorWorkspace.filters.baseAsset": "Actif sous-jacent",
  "monitorWorkspace.filters.baseAssetHint": "Séparez les éléments de base par des espaces ; un espace à la fin indique une correspondance exacte.",
  "monitorWorkspace.filters.baseAssetAria": "Filtre d'actifs sous-jacents. {{hint}}",
  "monitorWorkspace.filters.baseAssetHelpAria": "Aide sur le filtre d'actifs sous-jacents : {{hint}}",
  "monitorWorkspace.filters.conditionRow.add": "Ajouter une condition de filtrage",
  "monitorWorkspace.filters.conditionRow.clear": "Effacer",
  "monitorWorkspace.filters.conditionRow.remove": "Supprimer la condition : {{label}}",
  "monitorWorkspace.filters.conditionRow.operatorMenu": "Opérateur pour « {{label}} »",
  "monitorWorkspace.filters.conditionRow.valueCount": "{{count}} {{unit}}",
  "monitorWorkspace.filters.conditionRow.operators.gte": "≥",
  "monitorWorkspace.filters.conditionRow.operators.lte": "≤",
  "monitorWorkspace.filters.conditionRow.operators.absGte": "abs ≥",
  "monitorWorkspace.filters.conditionRow.operators.anyOf": "est l'un des suivants :",
  "monitorWorkspace.filters.conditionRow.operators.notIn": "n'est pas",
  "monitorWorkspace.filters.conditionRow.operators.requires": "nécessite",
  "monitorWorkspace.filters.conditionRow.operators.is": "est",
  "monitorWorkspace.filters.conditionRow.units.settlement": "devises de règlement",
  "monitorWorkspace.filters.conditionRow.units.interval": "intervalles",
  "monitorWorkspace.filters.conditionRow.units.venue": "bourses",
  "monitorWorkspace.filters.conditionRow.values.bothLegsEqual": "les deux branches sont égales",
  "monitorWorkspace.filters.conditionRow.empty.title": "Aucune combinaison ne correspond aux critères de filtrage actuels",
  "monitorWorkspace.filters.conditionRow.empty.hidden": "{{count}} masqués par des filtres",
  "monitorWorkspace.filters.summary.settlementMatch": "Actifs de règlement correspondants",
  "monitorWorkspace.filters.summary.noCombination": "Aucune structure d'opportunité n'a été sélectionnée",
  "monitorWorkspace.filters.summary.combinationCount": "{{count}} structures d'opportunités",
  "monitorWorkspace.filters.summary.entryGte": "Participation ≥ {{value}}%",
  "monitorWorkspace.filters.summary.entryAbsGte": "Entrée |·| ≥ {{value}}%",
  "monitorWorkspace.filters.summary.gapGte": "Taux d'entrée-sortie ≥ {{value}}%",
  "monitorWorkspace.filters.summary.gapLte": "Entrée-sortie ≤ {{value}}%",
  "monitorWorkspace.filters.summary.volumeGte": "Chiffre d'affaires sur 24 heures ≥ {{value}}M",
  "monitorWorkspace.filters.summary.intervalMatch": "Intervalles de correspondance",
  "monitorWorkspace.filters.pool.all": "Tout, de manière dynamique",
  "monitorWorkspace.filters.pool.allExcept": "Tout ce qui est dynamique · à l'exception de {{count}}",
  "monitorWorkspace.filters.pool.only": "Seule l'{{count}} est sélectionnée",
  "monitorWorkspace.filters.pool.none": "Aucun élément sélectionné",
  "monitorWorkspace.filters.panel.openSettings": "Paramètres de filtrage…",
  "monitorWorkspace.filters.panel.inherited": "Aucune condition supplémentaire · hérite de l'onglet « Combinaison »",
  "monitorWorkspace.filters.panel.unrestricted": "Aucune restriction",
  "monitorWorkspace.filters.panel.clearGroup": "Effacer le groupe",
  "monitorWorkspace.filters.panel.deferred.loading": "Ouverture des commandes du filtre…",
  "monitorWorkspace.filters.panel.deferred.unavailableTitle": "Les commandes de filtrage sont temporairement indisponibles",
  "monitorWorkspace.filters.panel.settlement.inheritedMustMatch": "L'onglet « Combinaison » exige déjà que l'une ou l'autre des composantes corresponde à « {{values}} » et que les deux composantes utilisent le même actif de règlement ; ces actifs constituent donc le plafond actuel des capacités.",
  "monitorWorkspace.filters.panel.settlement.viewMustMatch": "L'onglet « Combinaison » exige déjà que l'un des deux éléments corresponde à « {{values}} ». Cette vue exige également que les deux éléments correspondent ; les ressources de cet onglet constituent donc le plafond actuel des capacités.",
  "monitorWorkspace.filters.panel.settlement.anotherLeg": "L'onglet « Combinaison » exige déjà que l'une ou l'autre des branches corresponde à {{values}}. Cette vue peut toutefois sélectionner des actifs disponibles sur l'autre branche ; les deux conditions « l'une ou l'autre des branches » doivent être remplies.",
  "monitorWorkspace.filters.panel.settlement.match": "Actifs de règlement correspondants",
  "monitorWorkspace.filters.panel.settlement.matchInherited": "Activé par l'onglet « Combinaison » et hérité ici",
  "monitorWorkspace.filters.panel.settlement.matchDescription": "Ne conserver que les combinaisons dont les composantes longues et courtes utilisent le même actif de règlement",
  "monitorWorkspace.filters.panel.settlement.selectionAria": "Sélection des actifs de règlement",
  "monitorWorkspace.filters.panel.settlement.hint": "Les actifs sélectionnés peuvent correspondre à l'une ou l'autre des branches. L'état de l'actif et l'option « Actifs de règlement correspondants » doivent tous deux correspondre.",
  "monitorWorkspace.filters.panel.market.combinationType": "Structure combinée",
  "monitorWorkspace.filters.panel.market.spot": "Marchés au comptant",
  "monitorWorkspace.filters.panel.market.perpetual": "Marchés perpétuels",
  "monitorWorkspace.filters.panel.market.unavailableBoth": "Les structures combinées actuelles ne comportent ni composante de marché au comptant ni composante de marché perpétuel.",
  "monitorWorkspace.filters.panel.market.unavailableSpot": "Les structures combinées actuelles ne comportent pas de volet « marché au comptant ».",
  "monitorWorkspace.filters.panel.market.unavailablePerpetual": "Les structures combinées actuelles ne comportent pas de composante de marché à durée indéterminée.",
  "monitorWorkspace.filters.panel.market.hint": "Ces marchés s'appliquent conjointement avec les conditions de l'onglet. Un marché d'échange englobe l'ensemble du marché de ce groupe ; deux paires ou plus sont limitées au pool sélectionné et restent dans les limites de l'onglet.",
  "monitorWorkspace.filters.panel.venueExclusion.unavailable": "La structure du marché est restreinte à une sélection explicite ; la visibilité des bourses est donc déterminée par les conditions du marché",
  "monitorWorkspace.filters.panel.venueExclusion.hint": "Les bourses cochées n’apparaissent sur aucune des deux colonnes de cette vue. Cela s’applique uniquement à cette vue : les définitions des onglets restent inchangées, et les déclencheurs d’alertes et de notifications push ne sont pas affectés. Pour masquer une bourse partout, y compris dans les alertes, modifiez plutôt la portée de la surveillance.",
  "monitorWorkspace.filters.panel.spread.openSigned": "Écart d'entrée positif ≥",
  "monitorWorkspace.filters.panel.spread.openAbsolute": "Écart de cours d'entrée absolu ≥",
  "monitorWorkspace.filters.panel.spread.gapMinimum": "Minimum d'entrée-sortie ≥",
  "monitorWorkspace.filters.panel.spread.gapMaximum": "Maximum d'entrées et de sorties ≤",
  "monitorWorkspace.filters.panel.spread.minimumTooHigh": "Le minimum ne peut pas dépasser le maximum",
  "monitorWorkspace.filters.panel.spread.maximumTooLow": "Le maximum ne peut pas être inférieur au minimum",
  "monitorWorkspace.filters.panel.realtimeFunding.eightHourSigned": "Financement net équivalent à 8 heures ≥",
  "monitorWorkspace.filters.panel.realtimeFunding.eightHourAbsolute": "Financement absolu équivalent à 8 heures ≥",
  "monitorWorkspace.filters.panel.realtimeFunding.interval": "Période de financement",
  "monitorWorkspace.filters.panel.realtimeFunding.inheritedMustMatch": "L'onglet « Combinaison » exige déjà que l'une des deux jambes corresponde à l'{{values}}e et que les deux jambes utilisent le même intervalle ; ces intervalles constituent donc le plafond actuel des capacités.",
  "monitorWorkspace.filters.panel.realtimeFunding.viewMustMatch": "L'onglet « Combinaison » exige déjà qu'un des deux côtés corresponde à {{values}}. Cette vue exige également que les deux côtés correspondent ; les intervalles de l'onglet correspondent donc au plafond actuel des capacités.",
  "monitorWorkspace.filters.panel.realtimeFunding.singleLeg": "L'onglet « Combinaison » exige déjà que l'une ou l'autre des tranches corresponde à {{values}}. Les structures de combinaison effectives excluent les tranches « perpétuelles » et « perpétuelles » ; par conséquent, les deux conditions d'intervalle ne peuvent correspondre qu'à la même tranche « perpétuelle », et les intervalles de l'onglet correspondent au plafond actuel des capacités.",
  "monitorWorkspace.filters.panel.realtimeFunding.anotherLeg": "L'onglet « Combinaison » exige déjà que l'une des deux composantes corresponde à {{values}}. Cette vue peut toutefois sélectionner un intervalle sur l'autre composante perpétuelle ; les deux conditions doivent être remplies.",
  "monitorWorkspace.filters.panel.realtimeFunding.match": "Intervalles de financement de contrepartie",
  "monitorWorkspace.filters.panel.realtimeFunding.matchInherited": "Activé par l'onglet « Combinaison » et hérité ici",
  "monitorWorkspace.filters.panel.realtimeFunding.zeroResultWarning": "Les structures de combinaison effectives excluent les contrats « perpetual » et « perpetual ». La correspondance des intervalles nécessite des intervalles de financement sur les deux jambes ; cette condition ne renverra donc aucun résultat.",
  "monitorWorkspace.filters.panel.realtimeFunding.hint": "Toutes les conditions de financement doivent être respectées. Une fois qu'un seuil est activé, les combinaisons ne répondant pas à ce critère de financement ne sont pas acceptées.",
  "monitorWorkspace.filters.panel.accumulatedFunding.signedMinimum": "Minimum positif",
  "monitorWorkspace.filters.panel.accumulatedFunding.absoluteMinimum": "Minimum absolu",
  "monitorWorkspace.filters.panel.accumulatedFunding.signedAria": "{{day}}D : minimum positif du financement cumulé",
  "monitorWorkspace.filters.panel.accumulatedFunding.absoluteAria": "{{day}}D : minimum absolu du financement cumulé",
  "monitorWorkspace.filters.panel.accumulatedFunding.hint": "Chaque jour saisi et chaque seuil positif/absolu doivent correspondre. Les combinaisons ne comportant pas cet indicateur de financement cumulé ne sont pas validées.",
  "monitorWorkspace.filters.panel.liquidity.oi": "$t(zml:zml.metric.open_interest_notional) ≥",
  "monitorWorkspace.filters.panel.liquidity.volume": "Renouvellement sur 24 heures au niveau du bas de la jambe ≥",
  "monitorWorkspace.filters.panel.liquidity.hint": "Pour les combinaisons au comptant/à terme, la valeur de l'intérêt ouvert porte sur la composante à terme ; les paires à terme utilisent la composante la plus faible. Le volume de transactions utilise la composante la plus faible des deux. Une fois un seuil activé, les combinaisons ne remplissant pas l'un des critères requis ne sont pas acceptées.",
  "monitorWorkspace.filters.panel.numeric.nonNegative": "Entrez un nombre supérieur ou égal à 0",
  "monitorWorkspace.filters.panel.numeric.invalid": "Saisissez un nombre valide",
  "monitorWorkspace.filters.panel.option.title": "{{label}}: {{description}}{{suffix}}",
  "monitorWorkspace.filters.panel.option.unavailable": "Indisponible",
  "monitorWorkspace.filters.panel.option.unavailableDescription": "Indisponible dans le catalogue d'exécution actuel",
  "monitorWorkspace.filters.panel.option.notApplicable": "Sans objet",
  "monitorWorkspace.filters.panel.option.notApplicableDescription": "Ne correspond pas aux structures de combinaison actuelles",
  "monitorWorkspace.filters.panel.option.outsideParent": "En dehors de la portée de l'onglet",
  "monitorWorkspace.filters.panel.option.outsideParentDescription": "En dehors du champ d'application du filtre de base de l'onglet actuel",
  "monitorWorkspace.filters.panel.option.removableSuffix": "; peut être supprimé",
  "monitorWorkspace.filters.panel.pool.disabled": "La structure combinée actuelle ne fait pas appel à ce volet de marché",
  "monitorWorkspace.filters.panel.pool.selectAll": "Tout sélectionner",
  "monitorWorkspace.filters.panel.pool.clear": "Effacer",
  "monitorWorkspace.filters.panel.pool.effectiveVenueCount": "{{count}} marchés des changes efficaces",
  "monitorWorkspace.filters.panel.pool.retainedInactive": "Conservé ; actuellement inactif",
  "monitorWorkspace.filters.panel.pool.retained": "Conservé",
  "monitorWorkspace.filters.panel.pool.parentRestricted": "Non inclus dans la portée parente. Les sélections existantes peuvent être supprimées et rétablies automatiquement lorsque la portée parente revient.",
  "monitorWorkspace.filters.panel.pool.runtimeUnavailable": "Les données de marché en temps réel sont temporairement indisponibles.",
  "monitorWorkspace.filters.panel.pool.invalidated": "Invalidé",
  "monitorWorkspace.filters.panel.pool.settlementUnavailable": "{{currency}} n'est pas sélectionnable pour le moment.",
  "monitorWorkspace.filters.panel.pool.disabledReasons.exchange": "Cette fonctionnalité est désactivée",
  "monitorWorkspace.filters.panel.pool.disabledReasons.market": "Ce marché sur la bourse est désactivé",
  "monitorWorkspace.filters.panel.pool.disabledReasons.settlement": "Cet élément de règlement est désactivé",
  "monitorWorkspace.filters.panel.pool.disabledReasons.marketType": "Ce type de marché n'est pas pris en charge",
  "monitorWorkspace.filters.panel.pool.disabledReasons.unknown": "Désactivé en amont ; aucune raison enregistrée",
  "monitorWorkspace.filters.panel.pool.settlementAria": "{{exchange}} actifs de règlement",
  "monitorWorkspace.filters.panel.pool.settlementOptionAria": "{{exchange}} {{currency}} actif de règlement",
  "monitorWorkspace.settingsSheet.sectionsAria": "Sections des paramètres de l'onglet « Combinaison »",
  "monitorWorkspace.settingsSheet.sections.filter": "Filtre de base",
  "monitorWorkspace.settingsSheet.sections.alerts": "Alertes",
  "monitorWorkspace.settingsSheet.sections.templates": "Modèles de conditions",
  "monitorWorkspace.settingsSheet.sections.trade": "Livraison par ZML Trade",
  "monitorWorkspace.settingsSheet.hedgeTypes.title": "Structures d'opportunités",
  "monitorWorkspace.settingsSheet.hedgeTypes.description": "Seules certaines structures d'opportunités peuvent être intégrées à ce canal. Cela restreint les résultats affichés dans l'onglet et n'élargit jamais son filtre de base.",
  "monitorWorkspace.settingsSheet.hedgeTypes.emptyWarning": "Sélectionnez au moins une structure de couverture ; sinon cette étiquette n’a rien à faire correspondre.",
  "monitorWorkspace.settingsSheet.hedgeTypes.outsideBaseFilter": "Non inclus dans le filtre de base",
  "monitorWorkspace.settingsSheet.hedgeTypes.outsideBaseFilterWarning": "Une structure d'opportunités enregistrée n'est pas incluse dans le filtre de base et ne s'appliquera pas. Supprimez-la avant d'enregistrer.",
  "monitorWorkspace.settingsSheet.hedgeTypes.templateSkippedWarning": "Les structures d'opportunité du modèle ne correspondant pas au filtre de base ont été ignorées ({{count}}) ; enregistrez explicitement le brouillon actuel pour l'appliquer.",
  "monitorWorkspace.settingsSheet.trade.loading": "Chargement des paramètres de livraison de ZML Trade…",
  "monitorWorkspace.settingsSheet.trade.unavailable": "Les paramètres de livraison de ZML Trade sont temporairement indisponibles. Veuillez réessayer plus tard.",
  "monitorWorkspace.settingsSheet.trade.manageConnection": "Gérer la connexion ZML Trade",
  "monitorWorkspace.settingsSheet.trade.delivery.title": "Envoyer à ZML Trade",
  "monitorWorkspace.settingsSheet.trade.delivery.description": "Une correspondance ne fait que proposer une opportunité. ZML Trade gère les opérations et les risques.",
  "monitorWorkspace.settingsSheet.trade.delivery.help": "Une correspondance ne transmet que des informations sur les opportunités. ZML Trade gère les comptes, les paramètres et les contrôles de risque. Les instruments présentant des anomalies actives de calibrage des unités sont exclus des signaux automatiques, mais restent disponibles pour un examen manuel.",
  "monitorWorkspace.settingsSheet.trade.delivery.enabled": "Activer la livraison par ZML Trade pour cet onglet",
  "monitorWorkspace.settingsSheet.trade.delivery.enabledHint": "Une connexion active est requise. Les signaux hors ligne ne sont pas reproduits.",
  "monitorWorkspace.settingsSheet.trade.delivery.enableBlockedHint": "La connexion n'est pas disponible. Veuillez vous reconnecter avant d'activer cette fonction ; les signaux hors ligne ne sont pas rejoués.",
  "monitorWorkspace.settingsSheet.trade.delivery.disableAvailableHint": "La connexion n'est pas disponible. Vous pouvez tout de même désactiver cette règle ; les signaux hors ligne ne sont pas rejoués.",
  "monitorWorkspace.settingsSheet.trade.delivery.duration": "Durée totale du match",
  "monitorWorkspace.settingsSheet.trade.delivery.durationHint": "Un nouveau signal ne se forme qu’une fois que toutes les conditions sont restées satisfaites pendant toute cette durée.",
  "monitorWorkspace.settingsSheet.trade.delivery.seconds": "sec",
  "monitorWorkspace.settingsSheet.trade.conditions.title": "Conditions de livraison",
  "monitorWorkspace.settingsSheet.trade.conditions.description": "Configurez les conditions de livraison séparément. Toutes les conditions ajoutées doivent correspondre.",
  "monitorWorkspace.settingsSheet.trade.conditions.empty": "Ajoutez au moins une condition. Un ensemble vide ne correspond jamais.",
  "monitorWorkspace.settingsSheet.trade.conditions.emptyWarning": "Aucune condition de transmission n'étant configurée, aucun signal ne sera envoyé.",
  "monitorWorkspace.settingsSheet.trade.application.applied": "Appliqué",
  "monitorWorkspace.settingsSheet.trade.application.pending": "Postuler",
  "monitorWorkspace.settingsSheet.trade.application.failed": "Échec de l'application",
  "monitorWorkspace.settingsSheet.trade.application.hint": "« Appliqué » signifie que les paramètres de livraison enregistrés sont actifs.",
  "monitorWorkspace.settingsSheet.trade.errors.load": "Impossible de charger les paramètres ZML Trade de cet onglet.",
  "monitorWorkspace.settingsSheet.trade.errors.save": "Impossible d'enregistrer les paramètres ZML Trade de cet onglet.",
  "monitorWorkspace.settingsSheet.trade.footer.saving": "Enregistrement des paramètres de ZML Trade",
  "monitorWorkspace.settingsSheet.trade.footer.conflict": "Changement de version du serveur",
  "monitorWorkspace.settingsSheet.trade.footer.dirty": "Les paramètres du ZML Trade ne sont pas enregistrés",
  "monitorWorkspace.settingsSheet.trade.footer.saved": "Paramètres du ZML Trade enregistrés",
  "monitorWorkspace.settingsSheet.trade.footer.save": "Enregistrer et appliquer",
  "monitorWorkspace.settingsSheet.trade.leave.title": "Souhaitez-vous supprimer les paramètres ZML Trade non enregistrés ?",
  "monitorWorkspace.settingsSheet.trade.leave.description": "La fermeture de cet onglet entraîne la perte des conditions de livraison non enregistrées et de l'état du commutateur.",
  "monitorWorkspace.settingsSheet.trade.leave.confirm": "Ignorer et fermer",
  "monitorWorkspace.settingsSheet.trade.leave.cancel": "Continuer à modifier",
  "monitorWorkspace.settingsSheet.footer.templateDirty": "Modèles non enregistrés",
  "monitorWorkspace.settingsSheet.footer.discard": "Ignorer les modifications",
  "monitorWorkspace.settingsSheet.footer.saving": "Enregistrement en cours…",
  "monitorWorkspace.settingsSheet.footer.alertSavingReason": "Les paramètres d'alerte sont en cours d'enregistrement et d'application. Veuillez patienter.",
  "monitorWorkspace.settingsSheet.footer.noAlertChanges": "Il n'y a aucune modification d'alerte non enregistrée.",
  "monitorWorkspace.settingsSheet.footer.saveAndApply": "Enregistrer et appliquer",
  "monitorWorkspace.settingsSheet.dialogs.overwrite.title": "Souhaitez-vous remplacer les paramètres d'alerte du serveur ?",
  "monitorWorkspace.settingsSheet.dialogs.overwrite.description": "Les paramètres d'alerte ont été modifiés sur une autre page. Si vous continuez, ces modifications seront remplacées par celles de ce brouillon.",
  "monitorWorkspace.settingsSheet.dialogs.overwrite.confirm": "Remplacer et appliquer",
  "monitorWorkspace.settingsSheet.dialogs.overwrite.cancel": "Retour à la comparaison",
  "monitorWorkspace.settingsSheet.status.loading.label": "Chargement des paramètres d'alerte",
  "monitorWorkspace.settingsSheet.status.loading.short": "Chargement en cours",
  "monitorWorkspace.settingsSheet.status.saving.label": "Enregistrement des paramètres d'alerte",
  "monitorWorkspace.settingsSheet.status.saving.short": "Enregistrement",
  "monitorWorkspace.settingsSheet.status.conflict.label": "Les paramètres d'alerte ont été modifiés sur une autre page",
  "monitorWorkspace.settingsSheet.status.conflict.short": "Conflit",
  "monitorWorkspace.settingsSheet.status.error.label": "L'enregistrement ou l'actualisation des paramètres d'alerte a échoué",
  "monitorWorkspace.settingsSheet.status.error.short": "Échec de l'enregistrement",
  "monitorWorkspace.settingsSheet.status.dirty.label": "Les paramètres d'alerte comportent des modifications non enregistrées",
  "monitorWorkspace.settingsSheet.status.dirty.short": "Non enregistré",
  "monitorWorkspace.settingsSheet.status.applying.label": "Configuration des alertes",
  "monitorWorkspace.settingsSheet.status.applying.short": "Postuler",
  "monitorWorkspace.settingsSheet.status.applyFailed.label": "Échec de l'application de configuration des alertes",
  "monitorWorkspace.settingsSheet.status.applyFailed.short": "Échec de l'application",
  "monitorWorkspace.settingsSheet.status.applied.label": "Paramètres d'alerte appliqués",
  "monitorWorkspace.settingsSheet.status.applied.short": "Appliqué",
  "monitorWorkspace.settingsSheet.status.synced.label": "Les paramètres d'alerte ont été synchronisés et appliqués",
  "monitorWorkspace.settingsSheet.status.synced.short": "Synchronisé",
  "monitorWorkspace.settingsSheet.filter.invalidDraft": "Le projet de filtre de base contient une valeur non valide. Corrigez-la avant d'enregistrer.",
  "monitorWorkspace.settingsSheet.filter.saveFailed": "L'enregistrement du filtre de base a échoué. Vérifiez la connexion et réessayez.",
  "monitorWorkspace.settingsSheet.filter.footer.save": "Enregistrer le filtre de base",
  "monitorWorkspace.settingsSheet.filter.footer.savingReason": "Le filtre de base est en cours d'enregistrement. Veuillez patienter.",
  "monitorWorkspace.settingsSheet.filter.footer.noChanges": "Il n'y a aucune modification non enregistrée du filtre de base.",
  "monitorWorkspace.settingsSheet.filter.status.saving": "Enregistrement du filtre de base",
  "monitorWorkspace.settingsSheet.filter.status.savingShort": "Enregistrement",
  "monitorWorkspace.settingsSheet.filter.status.conflict": "Le filtre de base a été modifié sur une autre page",
  "monitorWorkspace.settingsSheet.filter.status.conflictShort": "Conflit",
  "monitorWorkspace.settingsSheet.filter.status.error": "Échec de l'enregistrement du filtre de base",
  "monitorWorkspace.settingsSheet.filter.status.errorShort": "Échec de l'enregistrement",
  "monitorWorkspace.settingsSheet.filter.status.dirty": "Le filtre de base contient des modifications non enregistrées",
  "monitorWorkspace.settingsSheet.filter.status.dirtyShort": "Non enregistré",
  "monitorWorkspace.settingsSheet.filter.status.saved": "Filtre de base enregistré",
  "monitorWorkspace.settingsSheet.filter.status.savedShort": "Enregistré",
  "monitorWorkspace.settingsSheet.filter.overwrite.title": "Remplacer le filtre de base du serveur ?",
  "monitorWorkspace.settingsSheet.filter.overwrite.description": "Le filtre de base a été modifié sur une autre page. La poursuite de la fusion ne prend en compte que les champs modifiés dans cette ébauche pour les intégrer à la dernière version.",
  "monitorWorkspace.settingsSheet.filter.overwrite.confirm": "Remplacer et enregistrer",
  "monitorWorkspace.settingsSheet.filter.overwrite.cancel": "Continuez à comparer",
  "monitorWorkspace.settingsSheet.filter.settlementCurrencies": "Actif de cotation / de règlement pour l'une ou l'autre des jambes",
  "monitorWorkspace.settingsSheet.filter.settlementCurrenciesAria": "Sélection d'actifs de règlement pour l'une ou l'autre des parties via l'onglet « Combinaison »",
  "monitorWorkspace.settingsSheet.filter.unrestrictedDynamic": "Sans restriction (tout est géré dynamiquement)",
  "monitorWorkspace.settingsSheet.filter.unavailable": "Indisponible pour le moment",
  "monitorWorkspace.settingsSheet.filter.settlementHint": "Au moins un volet doit correspondre à un actif sélectionné. Le pool de marché détermine les bourses et les actifs de règlement que chaque volet concerné peut utiliser. L'option « sans restriction » inclut de manière dynamique les actifs à terme.",
  "monitorWorkspace.settingsSheet.filter.monitorType": "Structure des opportunités",
  "monitorWorkspace.settingsSheet.filter.monitorStructure.spot_swap": "Au comptant et à terme indéfini",
  "monitorWorkspace.settingsSheet.filter.monitorStructure.swap_swap": "Perpétuel et perpétuel",
  "monitorWorkspace.settingsSheet.filter.perpetualMarkets": "Marchés perpétuels",
  "monitorWorkspace.settingsSheet.filter.spotMarkets": "Marchés au comptant",
  "monitorWorkspace.settingsSheet.filter.noPerpetualLeg": "La structure combinée actuelle ne comporte pas de composante perpétuelle.",
  "monitorWorkspace.settingsSheet.filter.noSpotLeg": "La structure combinée actuelle ne comporte pas de composante au comptant.",
  "monitorWorkspace.settingsSheet.filter.marketPairingHint": "Les groupes de marchés de premier niveau sont associés automatiquement. Lorsqu'un marché boursier est sélectionné, chaque actif de règlement sélectionné au sein de ce groupe est associé à l'ensemble du marché ; lorsqu'il y en a deux ou plus, toutes les associations valides restent limitées au groupe sélectionné. La sélection dynamique inclut automatiquement les marchés à terme.",
  "monitorWorkspace.settingsSheet.filter.constraintsAndIntervals": "Correspondance des règlements / intervalle de financement",
  "monitorWorkspace.settingsSheet.filter.settlementMustMatch": "Exiger des actifs de règlement correspondants",
  "monitorWorkspace.settingsSheet.filter.intervalMustMatch": "Exiger des intervalles de financement correspondants",
  "monitorWorkspace.settingsSheet.filter.intervalLabel": "Intervalles :",
  "monitorWorkspace.settingsSheet.filter.zeroResultWarning": "L'option « Perpétuel contre perpétuel » n'est pas sélectionnée. Les intervalles correspondants nécessitent des intervalles de financement sur les deux jambes ; cet onglet affichera donc zéro résultat.",
  "monitorWorkspace.settingsSheet.filter.numericConditions": "Conditions numériques",
  "monitorWorkspace.settingsSheet.filter.numericHint": "$t(zml:zml.metric.open_interest_notional) vérifie la composante « perpétuelle » pour les combinaisons au comptant/perpétuelles et la composante « perpétuelle » la plus petite pour les paires de contrats perpétuels. $t(zml:zml.metric.quote_volume_24h) utilise la composante la plus petite. Lorsqu’un seuil est activé, un indicateur participant manquant n’est pas validé et n’est jamais considéré comme égal à zéro.",
  "monitorWorkspace.settingsSheet.conditions.title": "Conditions de correspondance",
  "monitorWorkspace.settingsSheet.conditions.description": "Une correspondance n'est établie que si toutes les conditions ajoutées sont remplies. Les métriques qui n'ont pas été ajoutées ne sont pas prises en compte.",
  "monitorWorkspace.settingsSheet.conditions.empty": "Aucune condition de correspondance n'a été ajoutée. Les alertes ne se déclenchent jamais sans condition.",
  "monitorWorkspace.settingsSheet.conditions.noConditionWarning": "Aucune condition de correspondance pour l’instant, cette étiquette n’alertera donc pas. Ajouter une condition active les alertes.",
  "monitorWorkspace.settingsSheet.conditions.groups.spread": "Écart",
  "monitorWorkspace.settingsSheet.conditions.groups.funding": "$t(zml:zml.metric.funding_rate)",
  "monitorWorkspace.settingsSheet.conditions.groups.liquidity": "Liquidité",
  "monitorWorkspace.settingsSheet.conditions.fields.openSpreadGte": "Écart d'entrée ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.openSpreadAbsGte": "Écart de cours d'entrée absolu ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.closeSpreadLte": "Écart de sortie ≤",
  "monitorWorkspace.settingsSheet.conditions.fields.spreadGapGte": "Écart entre les entrées et les sorties ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.spreadGapLte": "Écart entre les entrées et les sorties ≤",
  "monitorWorkspace.settingsSheet.conditions.fields.netFunding8hGte": "Financement net équivalent à 8 heures ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.netFunding8hAbsGte": "Financement net absolu équivalent à 8H ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.fundingSpreadGte": "Lien de financement ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.fundingDiff1dGte": "Différence de financement 1D ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.fundingDiff2dGte": "Différence de financement en 2D ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.fundingDiff3dGte": "Différence de financement 3D ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.fundingDiff4dGte": "Différence de financement 4D ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.fundingDiff5dGte": "Différence de financement 5D ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.oiGteM": "$t(zml:zml.metric.open_interest_notional) ≥",
  "monitorWorkspace.settingsSheet.conditions.fields.volume24hGteM": "Renouvellement sur 24 heures au niveau du bas de la jambe ≥",
  "monitorWorkspace.settingsSheet.conditions.validation.unfilled": "Saisissez une valeur pour «{{label}} »",
  "monitorWorkspace.settingsSheet.conditions.validation.invalid": "«{{label}} » : un numéro valide est requis.",
  "monitorWorkspace.settingsSheet.conditions.validation.negative": "«{{label}} » ne peut pas être négatif",
  "monitorWorkspace.settingsSheet.conditions.editor.remove": "Supprimer la condition : {{label}}",
  "monitorWorkspace.settingsSheet.conditions.editor.placeholder": "Saisissez une valeur",
  "monitorWorkspace.settingsSheet.conditions.editor.selectionSummary": "Sélectionnez les conditions (sélectionnez « {{selected}}» / «{{total}} »)",
  "monitorWorkspace.settingsSheet.alerts.unavailable": "Les paramètres d'alerte de cet onglet « Combinaison » ne se sont pas chargés et ne peuvent pas encore être modifiés.",
  "monitorWorkspace.settingsSheet.alerts.application.applied": "Appliqué",
  "monitorWorkspace.settingsSheet.alerts.application.pending": "En attente de candidature",
  "monitorWorkspace.settingsSheet.alerts.application.failed": "Échec de l'application",
  "monitorWorkspace.settingsSheet.alerts.application.failureHint": "Les paramètres ont été enregistrés, mais n'ont pas été appliqués. L'état se met à jour automatiquement ; vous pouvez modifier les paramètres et les enregistrer à nouveau.",
  "monitorWorkspace.settingsSheet.alerts.application.refresh": "Actualiser l'état de la demande",
  "monitorWorkspace.settingsSheet.alerts.application.retrySync": "Réessayer la synchronisation",
  "monitorWorkspace.settingsSheet.alerts.methods.title": "Modes de notification",
  "monitorWorkspace.settingsSheet.alerts.methods.description": "Les paramètres d'alerte ne prennent effet qu'après avoir cliqué sur « Enregistrer et appliquer ». Le filtre de base doit également être enregistré explicitement sur sa propre page.",
  "monitorWorkspace.settingsSheet.alerts.methods.feishu": "Alerte Feishu",
  "monitorWorkspace.settingsSheet.alerts.methods.feishuHint": "Envoyer uniquement vers la chaîne sélectionnée séparément dans cet onglet « Combinaison ».",
  "monitorWorkspace.settingsSheet.alerts.channel.title": "Chaîne Feishu",
  "monitorWorkspace.settingsSheet.alerts.channel.description": "Les chaînes sont associées au compte, tandis que chaque onglet « Combinaison » sélectionne sa propre destination.",
  "monitorWorkspace.settingsSheet.alerts.channel.label": "Chaîne Feishu pour cet onglet",
  "monitorWorkspace.settingsSheet.alerts.channel.required": "Choisissez une chaîne avant d'activer les alertes Feishu",
  "monitorWorkspace.settingsSheet.alerts.channel.unavailable": "La chaîne précédente a été supprimée ou n'appartient plus à ce compte. Choisissez une autre chaîne.",
  "monitorWorkspace.settingsSheet.alerts.channel.disabledHint": "Lorsque vous désactivez Feishu, la chaîne présélectionnée est conservée pour la prochaine fois où vous l'activerez.",
  "monitorWorkspace.settingsSheet.alerts.channel.loading": "Chargement des chaînes…",
  "monitorWorkspace.settingsSheet.alerts.channel.placeholder": "Choisissez une chaîne Feishu",
  "monitorWorkspace.settingsSheet.alerts.channel.none": "Aucune chaîne sélectionnée",
  "monitorWorkspace.settingsSheet.alerts.channel.testing": "Test…",
  "monitorWorkspace.settingsSheet.alerts.channel.test": "Canal de test de courant",
  "monitorWorkspace.settingsSheet.alerts.channel.manage": "Gérer les chaînes Feishu",
  "monitorWorkspace.settingsSheet.alerts.channel.reload": "Actualiser les chaînes",
  "monitorWorkspace.settingsSheet.alerts.channel.testFailed": "Échec de la livraison du test",
  "monitorWorkspace.settingsSheet.alerts.channel.testSucceeded": "Message test envoyé à «{{name}} »",
  "monitorWorkspace.settingsSheet.alerts.channel.loadFailed": "La liste des chaînes Feishu est temporairement indisponible. Votre sélection actuelle est conservée et ne sera pas effacée automatiquement.",
  "monitorWorkspace.settingsSheet.alerts.delivery.title": "Fréquence des livraisons",
  "monitorWorkspace.settingsSheet.alerts.delivery.description": "Envoyer une fois que le match a duré la durée définie. La fréquence correspond à l'intervalle de répétition le plus court.",
  "monitorWorkspace.settingsSheet.alerts.delivery.duration": "Durée du match ≥",
  "monitorWorkspace.settingsSheet.alerts.delivery.frequency": "Fréquence des notifications",
  "monitorWorkspace.settingsSheet.alerts.delivery.seconds": "secondes",
  "monitorWorkspace.settingsSheet.alerts.conflict.description": "Les paramètres d'alerte du serveur ont été modifiés. Chargez la version du serveur ou confirmez à nouveau dans le pied de page pour la remplacer par cette ébauche.",
  "monitorWorkspace.settingsSheet.alerts.conflict.loadServer": "Charger la version du serveur",
  "monitorWorkspace.settingsSheet.alerts.messages.notLoaded": "Les paramètres d'alerte ne se sont pas chargés",
  "monitorWorkspace.settingsSheet.alerts.messages.channelRequired": "Sélectionnez la chaîne Feishu de cet onglet avant d'activer les alertes Feishu",
  "monitorWorkspace.settingsSheet.alerts.messages.hedgeTypeRequired": "Sélectionnez au moins une structure d'opportunité avant d'activer les alertes",
  "monitorWorkspace.settingsSheet.alerts.messages.durationInvalid": "La durée du match doit être un nombre entier non négatif exprimé en secondes.",
  "monitorWorkspace.settingsSheet.alerts.messages.intervalInvalid": "L’intervalle de répétition doit être un nombre entier de secondes, au moins 5.",
  "monitorWorkspace.settingsSheet.alerts.messages.invalidValue": "Les paramètres d'alerte contiennent une valeur non valide",
  "monitorWorkspace.settingsSheet.alerts.messages.savedApplied": "Les paramètres d'alerte ont été enregistrés et appliqués.",
  "monitorWorkspace.settingsSheet.alerts.messages.savedApplyFailed": "Les paramètres d'alerte ont été enregistrés, mais l'application en arrière-plan a échoué.",
  "monitorWorkspace.settingsSheet.alerts.messages.savedPending": "Les paramètres d'alerte ont été enregistrés et sont en attente d'application en arrière-plan.",
  "monitorWorkspace.settingsSheet.alerts.messages.saveFailed": "L'enregistrement des paramètres d'alerte a échoué",
  "monitorWorkspace.settingsSheet.alerts.messages.refreshFailed": "L'actualisation des paramètres d'alerte a échoué",
  "monitorWorkspace.settingsSheet.alerts.messages.discarded": "Les modifications apportées aux alertes qui n'ont pas été enregistrées ont été ignorées.",
  "monitorWorkspace.settingsSheet.alerts.messages.loadedLatest": "Les derniers paramètres d'alerte du serveur ont été chargés.",
  "monitorWorkspace.settingsSheet.templates.title": "Modèles de conditions",
  "monitorWorkspace.settingsSheet.templates.alertTitle": "Modèles de conditions d'alerte",
  "monitorWorkspace.settingsSheet.templates.tradeTitle": "Modèles de conditions de livraison",
  "monitorWorkspace.settingsSheet.templates.description": "Les modèles permettent d'enregistrer les structures, les conditions et la durée. Leur application les copie dans le brouillon, qui doit être enregistré séparément.",
  "monitorWorkspace.settingsSheet.templates.help": "Les modèles enregistrent uniquement les structures d'opportunité, les conditions supplémentaires et la durée de la correspondance. Les opérations de création, de modification et de suppression nécessitent une validation explicite. L'application des copies s'effectue dans le brouillon du canal actuel sans enregistrement ni conservation d'un lien.",
  "monitorWorkspace.settingsSheet.templates.capacity": "Jusqu'à {{count}} modèles",
  "monitorWorkspace.settingsSheet.templates.create": "Nouveau modèle",
  "monitorWorkspace.settingsSheet.templates.discard": "Ignorer les modifications apportées au modèle",
  "monitorWorkspace.settingsSheet.templates.saving": "Enregistrement des modèles…",
  "monitorWorkspace.settingsSheet.templates.save": "Enregistrer les modèles",
  "monitorWorkspace.settingsSheet.templates.conflict": "Les modèles ont été modifiés sur une autre page. Si vous enregistrez maintenant, ces modifications seront remplacées par celles de ce brouillon ; vous pouvez également annuler et recharger la page.",
  "monitorWorkspace.settingsSheet.templates.loading": "Chargement des modèles…",
  "monitorWorkspace.settingsSheet.templates.unavailableTitle": "Les modèles de conditions ne sont temporairement pas disponibles",
  "monitorWorkspace.settingsSheet.templates.loadFailed": "Les modèles n'ont pas pu être chargés",
  "monitorWorkspace.settingsSheet.templates.saveFailed": "Les modèles n'ont pas pu être enregistrés",
  "monitorWorkspace.settingsSheet.templates.openLibrary": "Ouvrir la bibliothèque de modèles",
  "monitorWorkspace.settingsSheet.templates.closeLibrary": "Réduire la bibliothèque de modèles",
  "monitorWorkspace.settingsSheet.templates.listAria": "Liste des modèles de conditions",
  "monitorWorkspace.settingsSheet.templates.detailHint": "Modifiez ce modèle, puis enregistrez explicitement les modèles pour que les modifications soient prises en compte.",
  "monitorWorkspace.settingsSheet.templates.preview.title": "Aperçu du modèle",
  "monitorWorkspace.settingsSheet.templates.preview.directions": "Structures d'opportunités",
  "monitorWorkspace.settingsSheet.templates.preview.conditions": "Conditions supplémentaires",
  "monitorWorkspace.settingsSheet.templates.preview.duration": "Durée totale du match",
  "monitorWorkspace.settingsSheet.templates.preview.none": "Aucun élément sélectionné",
  "monitorWorkspace.settingsSheet.templates.preview.defaultDuration": "Utiliser la valeur par défaut du canal",
  "monitorWorkspace.settingsSheet.templates.preview.durationSeconds": "{{count}} secondes",
  "monitorWorkspace.settingsSheet.templates.empty": "Il n'y a pas encore de modèles de conditions. Créez-en un, sélectionnez les conditions courantes, puis enregistrez-le pour les intégrer ultérieurement aux paramètres d'alerte.",
  "monitorWorkspace.settingsSheet.templates.defaultName": "Modèle « {{index}} »",
  "monitorWorkspace.settingsSheet.templates.copyName": "{{name}} copie",
  "monitorWorkspace.settingsSheet.templates.copyAria": "Modèle à copier : {{name}}",
  "monitorWorkspace.settingsSheet.templates.collapse": "Réduire le modèle",
  "monitorWorkspace.settingsSheet.templates.expand": "Développer le modèle",
  "monitorWorkspace.settingsSheet.templates.conditionCount": "{{count}} conditions",
  "monitorWorkspace.settingsSheet.templates.conditionCountTitle": "{{name}} (Conditions d'utilisation de {{count}})",
  "monitorWorkspace.settingsSheet.templates.name": "Nom du modèle",
  "monitorWorkspace.settingsSheet.templates.hedgeTypes": "Structures d'opportunités",
  "monitorWorkspace.settingsSheet.templates.duration": "Durée totale du match",
  "monitorWorkspace.settingsSheet.templates.durationHint": "Laissez ce champ vide pour utiliser la durée par défaut de la chaîne.",
  "monitorWorkspace.settingsSheet.templates.duplicateName": "Un modèle portant ce nom existe déjà",
  "monitorWorkspace.settingsSheet.templates.emptyConditions": "Ce modèle ne comporte aucune condition et n'ajoutera rien lorsqu'il sera appliqué.",
  "monitorWorkspace.settingsSheet.templates.delete.title": "Supprimer le modèle «{{name}} » ?",
  "monitorWorkspace.settingsSheet.templates.delete.description": "La suppression prend effet après l'enregistrement et n'affecte aucun onglet de combinaison configuré.",
  "monitorWorkspace.settingsSheet.templates.delete.confirm": "Supprimer le modèle",
  "monitorWorkspace.settingsSheet.templates.delete.aria": "Supprimer le modèle : {{name}}",
  "monitorWorkspace.settingsSheet.templates.apply.title": "Appliquer un modèle enregistré",
  "monitorWorkspace.settingsSheet.templates.apply.empty": "Il n'y a pas encore de modèles de conditions",
  "monitorWorkspace.settingsSheet.templates.apply.manage": "Gérer les modèles",
  "monitorWorkspace.settingsSheet.templates.apply.added": "{{count}} ajouté",
  "monitorWorkspace.settingsSheet.templates.apply.filled": "{{count}} rempli",
  "monitorWorkspace.settingsSheet.templates.apply.kept": "{{count}} les valeurs existantes sont conservées",
  "monitorWorkspace.settingsSheet.templates.apply.separator": ", ",
  "monitorWorkspace.settingsSheet.templates.apply.result": "Fusion de «{{name}} » : {{details}}",
  "monitorWorkspace.settingsSheet.templates.apply.copiedToDraft": "J'ai copié «{{name}} » dans le brouillon actuel. Enregistrez pour l'appliquer.",
  "monitorWorkspace.settingsSheet.summary.sections.mode": "Type",
  "monitorWorkspace.settingsSheet.summary.sections.settlement": "Règlement sur l'une ou l'autre des jambes",
  "monitorWorkspace.settingsSheet.summary.sections.market": "Marché",
  "monitorWorkspace.settingsSheet.summary.sections.constraints": "Contraintes",
  "monitorWorkspace.settingsSheet.summary.sections.status": "Statut",
  "monitorWorkspace.settingsSheet.summary.noTypes": "Aucun résultat sélectionné (zéro résultat)",
  "monitorWorkspace.settingsSheet.summary.settlementMustMatch": "Actifs de règlement correspondants",
  "monitorWorkspace.settingsSheet.summary.intervalMustMatch": "Intervalles de financement de contrepartie",
  "monitorWorkspace.settingsSheet.summary.intervals": "Fréquence des versements {{values}}",
  "monitorWorkspace.settingsSheet.summary.applying": "Postuler",
  "monitorWorkspace.settingsSheet.summary.applyFailed": "Échec de l'application",
  "monitorWorkspace.settingsSheet.summary.applied": "Appliqué",
  "monitorWorkspace.settingsSheet.summary.lastApplied": "Dernière confirmation de l'application",
  "monitorWorkspace.settingsSheet.summary.applyFailureDetail": "Les derniers paramètres confirmés ont été appliqués ; la configuration active n'a pas pu être validée, les alertes sont donc suspendues",
  "monitorWorkspace.settingsSheet.summary.feishuOn": "Feishu {{channel}}",
  "monitorWorkspace.settingsSheet.summary.feishuOff": "Feishu désactivé",
  "monitorWorkspace.settingsSheet.summary.channelUnavailable": "chaîne indisponible",
  "monitorWorkspace.settingsSheet.summary.duration": "Durée {{count}}s",
  "monitorWorkspace.settingsSheet.summary.frequency": "Fréquence {{count}}s",
  "monitorWorkspace.settingsSheet.summary.noFilters": "Aucune condition de filtrage",
  "monitorWorkspace.settingsSheet.summary.all": "Tout",
  "monitorWorkspace.settingsSheet.summary.moreValues": "{{values}} +{{count}}",
  "monitorWorkspace.settingsSheet.summary.noneSelected": "Aucun élément sélectionné",
  "monitorWorkspace.settingsSheet.summary.dynamicExcept": "Tout est géré de manière dynamique, sauf {{values}}",
  "monitorWorkspace.settingsSheet.summary.dynamicAll": "Tout de manière dynamique",
  "monitorWorkspace.settingsSheet.summary.exceptValue": "sauf {{value}}",
  "monitorWorkspace.settingsSheet.summary.wholeVenue": "{{exchange}} (l'ensemble de la bourse)",
  "monitorWorkspace.settingsSheet.summary.itemCount": "{{count}} articles",
  "monitorWorkspace.tagAdmission.fields.spotVolume24hGteM.label": "Chiffre d'affaires sur 24 heures ≥",
  "monitorWorkspace.tagAdmission.fields.spotVolume24hGteM.summary": "Chiffre d'affaires au comptant sur 24 heures",
  "monitorWorkspace.tagAdmission.fields.swapVolume24hGteM.label": "Rotation continue 24 heures sur 24 ≥",
  "monitorWorkspace.tagAdmission.fields.swapVolume24hGteM.summary": "Un renouvellement permanent, 24 heures sur 24",
  "monitorWorkspace.tagAdmission.fields.swapOiGteM.label": "Valeur de l'encours des positions ouvertes à perpétuité ≥",
  "monitorWorkspace.tagAdmission.fields.swapOiGteM.summary": "Valeur de l'encours des positions à terme perpétuel",
  "monitorWorkspace.tagAdmission.comboKinds.spot_swap": "Au comptant × à terme",
  "monitorWorkspace.tagAdmission.comboKinds.swap_swap": "Perpétuel × perpétuel",
  "monitorWorkspace.status.connection.open": "Connecté",
  "monitorWorkspace.status.connection.connecting": "Connexion",
  "monitorWorkspace.status.connection.closed": "Déconnecté",
  "monitorWorkspace.status.connection.unauthorized": "Votre session a expiré",
  "monitorWorkspace.status.connection.browserOffline": "Navigateur hors ligne",
  "monitorWorkspace.status.connection.unknown": "Inconnu",
  "monitorWorkspace.status.connection.reconnecting": "Reconnexion en cours",
  "monitorWorkspace.status.connection.error": "Erreur de connexion",
  "monitorWorkspace.status.connection.idle": "En attente de connexion",
  "monitorWorkspace.status.connection.summary": "Connexion en temps réel {{statusLabel}} · Aller-retour {{latency}} · Réception {{rate}}",
  "monitorWorkspace.status.liveRealtimeIssue": "Des problèmes liés aux cotations ont entraîné la suspension des mises à jour en temps réel pour les combinaisons {{count}}",
  "monitorWorkspace.status.liveVenueIssue": "; données indisponibles pour {{count}} bourses",
  "monitorWorkspace.status.liveMarketDataIssue": "; certaines données de marché sont concernées",
  "monitorWorkspace.status.venuesAffected": "{{count}} bourses concernées",
  "monitorWorkspace.status.marketDataAffected": "Certaines données sont concernées",
  "monitorWorkspace.status.soundLoading": "Chargement des paramètres de notification en cours",
  "monitorWorkspace.status.soundOff": "Désactiver les signaux sonores d'alerte",
  "monitorWorkspace.status.soundOn": "Activer les signaux sonores d'alerte",
  "monitorWorkspace.status.details.connection": "Connexion de l'écran",
  "monitorWorkspace.status.details.latency": "Latence",
  "monitorWorkspace.status.details.lastUpdate": "Dernière mise à jour",
  "monitorWorkspace.status.details.combinations": "Combinaisons",
  "monitorWorkspace.status.details.pairCount": "{{count}} paires",
  "monitorWorkspace.status.details.exchanges": "Échanges",
  "monitorWorkspace.status.details.ready": "{{ready}}/ Disponible sur{{total}}",
  "monitorWorkspace.status.details.availabilityUnknown": "Vérification",
  "monitorWorkspace.status.details.marketDataAffected": "Certaines données de marché sont concernées",
  "monitorWorkspace.status.details.realtimeIssue": "Protection en temps réel",
  "monitorWorkspace.status.details.realtimeIssueDescription": "Les mises à jour en temps réel sont suspendues pour les combinaisons de type «{{count}} » car les cotations sont obsolètes ou les deux composantes ne sont pas synchronisées. Elles reprennent automatiquement dès que des cotations valides sont disponibles pour les deux composantes.",
  "monitorWorkspace.workbench.openingFundingHistory": "Historique des financements d'ouverture…",
  "monitorWorkspace.workbench.openingHistoryCurve": "Affichage du graphique historique…",
  "monitorWorkspace.workbench.openingAssetDetails": "Affichage des détails de l'actif…",
  "monitorWorkspace.workbench.openingDiagnostics": "Lancement du diagnostic des combinaisons…",
  "monitorWorkspace.workbench.openingNotifications": "Ouverture des paramètres de notification…",
  "monitorWorkspace.workbench.settlementLoadFailed": "Les données relatives au règlement n'ont pas pu être chargées. Vérifiez le serveur et réessayez.",
  "monitorWorkspace.workbench.settlementRefreshFailed": "La mise à jour des actifs de règlement a échoué. Le dernier résultat réussi reste affiché.",
  "monitorWorkspace.workbench.fundingDetailLoadFailed": "Les détails de l'historique des financements n'ont pas pu être chargés.",
  "monitorWorkspace.workbench.assetDetailLoadFailed": "Impossible de charger les détails de la ressource. Vérifiez le serveur et réessayez.",
  "monitorWorkspace.workbench.settingsSyncFailed": "La synchronisation des paramètres du compte a échoué. Veuillez réessayer dans quelques instants.",
  "monitorWorkspace.workbench.disconnected": "Connexion perdue",
  "monitorWorkspace.workbench.reconnecting": ", en essayant de rétablir la connexion...",
  "monitorWorkspace.workbench.leave.fixedTitle": "Supprimer les paramètres d'onglet non enregistrés et changer de vue ?",
  "monitorWorkspace.workbench.leave.fixedDescription": "Cet onglet « Combinaison » contient des modifications non enregistrées concernant le filtre de base, les alertes, la livraison par ZML Trade ou les modèles intégrés. Si vous continuez, ces brouillons seront supprimés avant que vous ne passiez à la vue « corrigée ».",
  "monitorWorkspace.workbench.leave.tabTitle": "Supprimer les paramètres des onglets non enregistrés et changer d'onglet ?",
  "monitorWorkspace.workbench.leave.tabDescription": "Cet onglet combiné contient des modifications non enregistrées concernant le filtre de base, les alertes, la distribution ZML Trade ou les modèles intégrés. Si vous continuez, ces brouillons seront supprimés avant que vous ne passiez à l'onglet de destination.",
  "monitorWorkspace.workbench.leave.switchConfirm": "Jeter et changer",
  "monitorWorkspace.workbench.leave.closeTitle": "Supprimer les paramètres des onglets non enregistrés ?",
  "monitorWorkspace.workbench.leave.closeDescription": "Les brouillons non enregistrés (filtre de base, alerte, livraison ZML Trade ou modèle intégré) sont conservés. La fermeture entraîne leur suppression.",
  "monitorWorkspace.workbench.leave.closeConfirm": "Ignorer et fermer",
  "monitorWorkspace.workbench.alerts": "Alertes {{count}}",
  "monitorWorkspace.workbench.applying": "Postuler",
  "monitorWorkspace.workbench.loadFailed": "Impossible de charger la vue en direct",
  "monitorWorkspace.workbench.rejected": "La demande n'a pas pu être traitée. Veuillez réessayer dans quelques instants.",
  "monitorWorkspace.workbench.waitingForStream": "En attente du rétablissement de la diffusion en direct...",
  "monitorWorkspace.workbench.loading": "Chargement de la vue en direct…",
  "monitorWorkspace.workbench.switchFailed": "Le changement de vue n'a pas abouti ; la vue précédente reste visible.",
  "monitorWorkspace.workbench.noFavorites": "Aucun favori ni aucune alerte",
  "monitorWorkspace.workbench.noFavoritesHint": "Double-cliquez sur la colonne « Paire » pour ajouter un favori. Les combinaisons qui déclenchent des alertes s'affichent également ici.",
  "monitorWorkspace.workbench.noTabHits": "Aucune offre ne correspond à cet onglet",
  "monitorWorkspace.workbench.noTabHitsHint": "Aucun résultat ne correspond aux filtres actuels. Modifiez les filtres de cet onglet pour actualiser automatiquement l'affichage.",
  "shell.sidebar.customize": "Personnaliser la barre latérale",
  "shell.sidebar.favorites": "Favoris",
  "shell.sidebar.customizeDescription": "Ajustez la visibilité, l’ordre et les favoris de la navigation.",
  "shell.sidebar.showDestination": "Afficher {{label}}",
  "shell.sidebar.favoriteDestination": "Ajouter {{label}} aux favoris",
  "shell.sidebar.favoriteAction": "Favori",
  "shell.sidebar.moveUp": "Déplacer {{label}} vers le haut",
  "shell.sidebar.moveDown": "Déplacer {{label}} vers le bas",
  "shell.sidebar.unreadMarker": "Marqueur de non-lus",
  "shell.sidebar.unreadMarkerCount": "Nombre",
  "shell.sidebar.unreadMarkerDot": "Point",
  "shell.sidebar.unreadMarkerNone": "Masqué",
  "shell.sidebar.restoreDefaults": "Rétablir les valeurs par défaut",
  "shell.navigationAria": "Navigation principale",
  "shell.unreadNewsCount": "{{count}} articles non lus",
  "shell.unreadAnnouncementsCount": "{{count}} annonces non lues",
  "shell.openUnreadAnnouncements": "Annonces non lues, {{count}} au total",
  "shell.theme.toggle": "Changer de thème",
  "shell.theme.system": "Système de suivi",
  "shell.theme.light": "Lumière",
  "shell.theme.dark": "Sombre",
  "shell.accountMenu.aria": "Menu « Compte »",
  "shell.accountMenu.triggerAria": "{{username}} menu du compte",
  "shell.accountMenu.settingsSection": "Sections « Paramètres »",
  "shell.accountMenu.unavailable": "Temporairement indisponible",
  "shell.leaveDraft.formTitle": "Supprimer les modifications non enregistrées du formulaire ?",
  "shell.leaveDraft.formDescription": "Le formulaire actuel contient des modifications non enregistrées. Si vous continuez, celles-ci seront perdues. Pour les conserver, annulez l'opération et enregistrez d'abord le formulaire.",
  "shell.leaveDraft.formPendingDescription": "Une opération est en cours. Veuillez attendre qu'elle soit terminée avant d'annuler vos modifications ou de quitter cette page.",
  "shell.leaveDraft.navigationTitle": "Voulez-vous supprimer les paramètres non enregistrés de cet onglet et quitter cette page ?",
  "shell.leaveDraft.navigationDescription": "Cet onglet combiné contient des modifications non enregistrées concernant le filtre de base, les alertes, la livraison par ZML Trade ou les modèles intégrés. Si vous continuez, ces brouillons seront supprimés avant l'ouverture de la destination.",
  "shell.leaveDraft.navigationConfirm": "Jeter et partir",
  "shell.leaveDraft.navigationCombinedTitle": "Voulez-vous ignorer les paramètres de portée de surveillance et d'onglets non enregistrés et quitter cette page ?",
  "shell.leaveDraft.navigationCombinedDescription": "Des modifications non enregistrées ont été apportées à la fois à la portée de surveillance au niveau du compte et à cet onglet « Combinaison ». La portée de surveillance s’applique à toutes les vues et alertes ; les paramètres de cet onglet ne s’appliquent qu’à cet onglet. Si vous continuez, les deux brouillons seront supprimés avant l’ouverture de la destination.",
  "shell.leaveDraft.signOutTitle": "Souhaitez-vous supprimer les paramètres des onglets non enregistrés et vous déconnecter ?",
  "shell.leaveDraft.signOutDescription": "Cet onglet « Combinaison » contient des modifications non enregistrées concernant le filtre de base, les alertes, la distribution ZML Trade ou les modèles intégrés. Si vous vous déconnectez, ces brouillons seront perdus.",
  "shell.leaveDraft.signOutConfirm": "Supprimer et se déconnecter",
  "account.menu": "Menu « Compte »",
  "account.settings": "Paramètres",
  "account.signOut": "Se déconnecter",
  "account.settingsTitle": "Paramètres",
  "account.appearanceTitle": "Aspect",
  "account.timeZoneInvalidTime": "Cette heure n'est pas valide, est manquante ou apparaît plusieurs fois dans le fuseau horaire sélectionné. Veuillez choisir une autre heure.",
  "account.themeLabel": "Thème",
  "account.languageLabel": "Langue",
  "account.languageDescription": "À ne copier que le contenu de l'interface. Les chiffres, les dates et les formats commerciaux restent inchangés.",
  "account.groups.personal": "Personnel",
  "account.groups.workspace": "Espace de travail",
  "account.sections.general": "Profil",
  "account.sections.security": "Connexion et sécurité",
  "account.sections.notifications": "Notifications",
  "account.sections.blacklist": "Ma liste noire",
  "account.sections.subscription": "Mon abonnement",
  "account.sections.trade": "ZML Trade",
  "account.blacklist.kinds.all": "Tout",
  "account.blacklist.kinds.baseAsset": "Actif",
  "account.blacklist.kinds.instrument": "Instrument",
  "account.blacklist.kinds.opportunity": "Combinaison",
  "account.blacklist.fallback.instrument": "Détails de l'instrument indisponibles",
  "account.blacklist.fallback.baseAsset": "Détails de l'actif indisponibles",
  "account.blacklist.fallback.opportunity": "Détails de la combinaison indisponibles",
  "account.blacklist.fallback.detailsUnavailable": "Informations non disponibles",
  "account.blacklist.reasons.saved": "C'est grâce à toi que j'ai été sauvé",
  "account.blacklist.reasons.comboAction": "Ajouté à la suite d'une action combinée",
  "account.blacklist.reasons.settingsAction": "Ajouté depuis les paramètres du compte",
  "account.blacklist.add.title": "Ajouter à la liste noire",
  "account.blacklist.add.description": "Recherchez des cibles à masquer depuis ce compte. Cela n'affecte que vos vues et vos alertes, en aucun cas celles des autres utilisateurs.",
  "account.blacklist.add.collapse": "Réduire",
  "account.blacklist.add.expand": "Ajouter",
  "account.blacklist.add.kindLabel": "Type de liste noire",
  "account.blacklist.searchMeta.baseAsset.placeholder": "Nom de l'actif, par exemple BTC",
  "account.blacklist.searchMeta.baseAsset.ariaLabel": "Rechercher des ressources ; ajoutez un espace à la fin pour obtenir une correspondance exacte",
  "account.blacklist.searchMeta.instrument.placeholder": "Bourse / symbole boursier",
  "account.blacklist.searchMeta.instrument.ariaLabel": "Rechercher des instruments",
  "account.blacklist.searchMeta.opportunity.placeholder": "Actif / échange / combinaison",
  "account.blacklist.searchMeta.opportunity.ariaLabel": "Combinaisons de recherche",
  "account.blacklist.disabled.searching": "La recherche est en cours. Veuillez patienter jusqu'à ce qu'elle soit terminée.",
  "account.blacklist.disabled.enterSearch": "Commencez par saisir un terme de recherche.",
  "account.blacklist.disabled.adding": "Des cibles sont en cours d'ajout. Veuillez patienter jusqu'à la fin de l'opération.",
  "account.blacklist.disabled.selectResult": "Sélectionnez d'abord au moins un résultat de recherche.",
  "account.blacklist.actions.search": "Rechercher",
  "account.blacklist.actions.searching": "Recherche en cours…",
  "account.blacklist.actions.selectAll": "Tout sélectionner",
  "account.blacklist.actions.clearAll": "Tout effacer",
  "account.blacklist.actions.processing": "Traitement en cours…",
  "account.blacklist.actions.addSelected": "Liste noire sélectionnée",
  "account.blacklist.actions.clearFilters": "Effacer les filtres",
  "account.blacklist.actions.clearSelection": "Effacer la sélection",
  "account.blacklist.actions.removeSelected": "Supprimer la sélection",
  "account.blacklist.actions.remove": "Supprimer",
  "account.blacklist.errors.load": "La liste noire n'a pas pu être lue ; cette liste ne constitue donc pas un état vide vérifié.",
  "account.blacklist.errors.search": "La recherche a échoué avant que le serveur ne renvoie les résultats.",
  "account.blacklist.errors.stale": "La liste noire n'a pas pu être actualisée ; le dernier résultat réussi reste visible.",
  "account.blacklist.states.listUnavailable": "Liste noire indisponible",
  "account.blacklist.states.loading": "Chargement de votre liste noire…",
  "account.blacklist.states.noMatches": "Aucune entrée correspondante dans la liste noire",
  "account.blacklist.states.noMatchesDescription": "Essayez un autre terme ou une autre saisie.",
  "account.blacklist.states.empty": "Aucune entrée dans la liste noire",
  "account.blacklist.states.emptyDescription": "Effectuez une recherche ci-dessus pour en ajouter un, ou utilisez l'action rapide « Liste noire » dans le menu déroulant d'une combinaison de moniteurs.",
  "account.blacklist.states.searchEmpty": "Aucun résultat trouvé",
  "account.blacklist.states.searchEmptyDescription": "Aucun résultat n'a été trouvé pour «{{query}} ».",
  "account.blacklist.columns.select": "Sélectionner",
  "account.blacklist.columns.target": "Cible",
  "account.blacklist.columns.type": "Type",
  "account.blacklist.columns.reason": "Raison",
  "account.blacklist.columns.time": "Heure",
  "account.blacklist.columns.actions": "Actions",
  "account.blacklist.listAria": "Ma liste noire",
  "account.blacklist.selectAllCurrent": "Sélectionnez la liste actuelle",
  "account.blacklist.selectTarget": "Sélectionnez « {{target}} »",
  "account.blacklist.removeTarget": "Retirer {{target}} de la liste noire",
  "account.blacklist.baseAssetCounts": "{{instruments}} instruments · paires de {{pairs}}",
  "account.blacklist.searchResults": "{{count}} résultats de recherche · «{{query}} »",
  "account.blacklist.selectedCount": "{{count}} sélectionné",
  "account.blacklist.itemCount": "{{count}} articles",
  "account.blacklist.list.title": "Ma liste noire",
  "account.blacklist.list.description": "Ces cibles sont exclues de vos tableaux de surveillance et de vos alertes. Si vous en supprimez une, elle redevient visible.",
  "account.blacklist.list.filterLabel": "Filtrer par type",
  "account.blacklist.list.searchAria": "Rechercher dans ma liste noire",
  "account.blacklist.list.searchPlaceholder": "Actif / marché / instrument / combinaison / motif",
  "account.blacklist.feedback.partialAdded": "{{added}} a été ajouté ; {{rejected}} n'a pas pu être ajouté. Vérifiez votre sélection.",
  "account.blacklist.feedback.rejected": "{{rejected}} Impossible d'ajouter l'élément. Vérifiez votre sélection.",
  "account.blacklist.feedback.alreadyOne": "Cette cible figure déjà dans votre liste noire.",
  "account.blacklist.feedback.alreadyMany": "Toutes les cibles de «{{count}} » figurent déjà dans votre liste noire.",
  "account.blacklist.feedback.addedWithExisting": "Ajout de {{added}} ; {{existing}} figurait déjà dans la liste.",
  "account.blacklist.feedback.added": "{{count}} a été ajouté à votre liste noire.",
  "account.blacklist.feedback.addFailed": "Le serveur n'a pas validé la mise à jour de la liste noire.",
  "account.blacklist.feedback.removed": "Suppression de {{count}}.",
  "account.blacklist.feedback.batchRemoveFailed": "La suppression par lots a échoué. La liste reste dans son dernier état validé par le backend.",
  "account.blacklist.feedback.removeSuccess": "Supprimé. La cible réapparaîtra dans vos vues.",
  "account.blacklist.feedback.removeFailed": "La suppression a échoué. La liste reste dans son dernier état validé par le backend.",
  "account.blacklist.dialog.batchTitle": "Supprimer les entrées sélectionnées de la liste noire",
  "account.blacklist.dialog.batchDescription": "Souhaitez-vous supprimer les entrées sélectionnées dans « {{count}} » ? Elles réapparaîtront alors dans vos tableaux de suivi et vos alertes.",
  "account.blacklist.dialog.batchConfirm": "Supprimer « {{count}} »",
  "account.blacklist.dialog.removeTitle": "Supprimer une entrée de la liste noire",
  "account.blacklist.dialog.removeDescription": "Supprimer «{{target}} » ? Il réapparaîtra alors dans vos tables de surveillance et vos alertes.",
  "account.notificationSettings.states.loading": "Chargement des paramètres de notification de ce compte…",
  "account.notificationSettings.states.logLoading": "Chargement de l'historique des notifications…",
  "account.notificationSettings.states.logReadError": "Impossible de charger l'historique des notifications.",
  "account.notificationSettings.states.readError": "Impossible de charger les paramètres de notification",
  "account.notificationSettings.states.unavailable": "Les paramètres de notification n'ont pas été chargés",
  "account.notificationSettings.states.noSnapshot": "Aucun aperçu des paramètres de notification n'est disponible pour ce compte.",
  "account.notificationSettings.states.actionError": "L'opération n'a pas pu être effectuée. Veuillez réessayer dans quelques instants.",
  "account.notificationSettings.channels.title": "Méridiens Feishu",
  "account.notificationSettings.channels.description": "Gérer les canaux du bot Feishu disponibles sur les interfaces produit de ce compte.",
  "account.notificationSettings.channels.add": "Ajouter une chaîne",
  "account.notificationSettings.channels.signed": "Signature activée",
  "account.notificationSettings.channels.unsigned": "Pas de signature",
  "account.notificationSettings.channels.test": "Test",
  "account.notificationSettings.channels.testing": "Test…",
  "account.notificationSettings.channels.edit": "Modifier la chaîne",
  "account.notificationSettings.channels.actionsAria": "Actions en faveur de l'{{channel}}",
  "account.notificationSettings.channels.moreActionsAria": "Plus d'actions pour « {{channel}} »",
  "account.notificationSettings.channels.empty.title": "Aucun canal Feishu",
  "account.notificationSettings.channels.empty.description": "Ajoutez une chaîne pour qu'elle soit prise en compte dans les règles de notification de ce compte.",
  "account.notificationSettings.channels.usage.tabsAndNews": "Utilisé par les onglets «{{count}}» et «Centre d'actualités»",
  "account.notificationSettings.channels.usage.tabs": "Utilisé par les onglets «{{count}}»",
  "account.notificationSettings.channels.usage.news": "Utilisé par le Centre d'actualités",
  "account.notificationSettings.channels.usage.unused": "Non utilisé pour le moment",
  "account.notificationSettings.channels.usage.tabDetails": "Onglets combinés : {{tabs}}",
  "account.notificationSettings.channels.usage.newsCenter": "Centre d'actualités",
  "account.notificationSettings.channels.usage.noReferences": "Aucun onglet de combinaison ni aucun paramètre du Centre d'actualités ne fait référence à cette chaîne.",
  "account.notificationSettings.channels.feedback.testSent": "Un message test a été envoyé via «{{channel}} ».",
  "account.notificationSettings.channels.feedback.saved": "La chaîne Feishu a été enregistrée.",
  "account.notificationSettings.channels.feedback.deleted": "«{{channel}} » a été supprimé.",
  "account.notificationSettings.channels.errors.testFailed": "Le message de test n'a pas pu être envoyé.",
  "account.notificationSettings.channels.errors.deleteFailed": "La chaîne n'a pas pu être supprimée. Veuillez réessayer dans quelques instants.",
  "account.notificationSettings.channels.errors.saveFailed": "L'enregistrement de la chaîne a échoué. Vérifiez les informations et réessayez.",
  "account.notificationSettings.channels.delete.action": "Supprimer la chaîne",
  "account.notificationSettings.channels.delete.title": "Supprimer la chaîne Feishu",
  "account.notificationSettings.channels.delete.inUseTitle": "La chaîne Feishu est toujours en service",
  "account.notificationSettings.channels.delete.description": "Souhaitez-vous supprimer «{{channel}} » de ce compte ? Le serveur va d'abord vérifier à nouveau les références actuelles et l'historique des livraisons.",
  "account.notificationSettings.channels.delete.inUseDescription": "Ce compte fait toujours référence à «{{channel}} ». Supprimez ces références avant de le supprimer.",
  "account.notificationSettings.channels.delete.acknowledge": "D'accord",
  "account.notificationSettings.channels.delete.deleting": "Suppression en cours…",
  "account.notificationSettings.channels.delete.confirm": "Supprimer la chaîne",
  "account.notificationSettings.channels.delete.back": "Retour",
  "account.notificationSettings.channels.dialog.createTitle": "Ajouter la chaîne Feishu",
  "account.notificationSettings.channels.dialog.editTitle": "Modifier la chaîne Feishu",
  "account.notificationSettings.channels.dialog.description": "Le serveur ne renvoie jamais le webhook ni le secret de signature. Laissez l'un ou l'autre de ces champs vides lors de la modification pour conserver sa valeur actuelle.",
  "account.notificationSettings.channels.dialog.name": "Nom de la chaîne",
  "account.notificationSettings.channels.dialog.webhook": "URL du webhook",
  "account.notificationSettings.channels.dialog.webhookKeep": "URL du webhook (laisser vide pour conserver l'URL actuelle)",
  "account.notificationSettings.channels.dialog.showWebhook": "Afficher l'URL du webhook",
  "account.notificationSettings.channels.dialog.hideWebhook": "Masquer l'URL du webhook",
  "account.notificationSettings.channels.dialog.secretKeep": "Secret de signature (laisser vide pour le conserver)",
  "account.notificationSettings.channels.dialog.secretOptional": "Secret de signature (facultatif)",
  "account.notificationSettings.channels.dialog.showSecret": "Afficher le secret de signature",
  "account.notificationSettings.channels.dialog.hideSecret": "Masquer le secret de signature",
  "account.notificationSettings.channels.dialog.clearSecret": "Supprimer le secret de signature actuel",
  "account.notificationSettings.sound.title": "Son d’alerte",
  "account.notificationSettings.sound.description": "Son, volume et intervalle du son d’alerte pour ce compte. La cloche de la barre de l’espace de travail décide si ce navigateur le joue.",
  "account.notificationSettings.sound.fileLabel": "Son",
  "account.notificationSettings.sound.files.default": "Alerte par défaut",
  "account.notificationSettings.sound.files.urgent": "Alerte urgente",
  "account.notificationSettings.sound.files.gentle": "Un léger tintement",
  "account.notificationSettings.sound.volumeLabel": "Volume",
  "account.notificationSettings.sound.currentVolume": "Actuellement {{value}}%",
  "account.notificationSettings.sound.volumeAria": "Volume du son sur le Web",
  "account.notificationSettings.sound.cooldownLabel": "Intervalle du son d’alerte",
  "account.notificationSettings.sound.seconds": "{{value}} sec",
  "account.notificationSettings.sound.preview": "Aperçu",
  "account.trade.title": "Connexion ZML Trade",
  "account.trade.readStale": "Les informations de connexion sont peut-être obsolètes. Le dernier résultat reste affiché ; les opérations reprennent une fois la lecture effectuée avec succès.",
  "account.trade.targetChanged": "L'instance associée a été modifiée. Fermez cette boîte de dialogue et validez l'instance actuelle.",
  "account.trade.description": "Chaque compte est associé à un seul Trade. Le code de l'appareil est généré localement par le Trade.",
  "account.trade.status.loading": "Chargement en cours",
  "account.trade.status.error": "Erreur de connexion",
  "account.trade.status.unpaired": "Non apparié",
  "account.trade.status.awaiting_local_confirm": "En attente de la confirmation de ZML Trade",
  "account.trade.status.active": "Connecté",
  "account.trade.status.paused": "En pause",
  "account.trade.instance": "Instance ZML Trade",
  "account.trade.lastSeen": "Dernière connexion",
  "account.trade.deviceCode": "Code de l'appareil",
  "account.trade.deviceCodeHint": "Générez-le sur la page « Signaux » de ZML Trade, puis saisissez-le ici.",
  "account.trade.claiming": "Accords…",
  "account.trade.claim": "Connecter ZML Trade",
  "account.trade.awaitingConfirm": "ZML Monitor a réclamé le code de l'appareil. Retournez au ZML Trade local pour finaliser la confirmation.",
  "account.trade.refresh": "Actualiser l'état de la connexion",
  "account.trade.pause": "Mettre la diffusion en pause",
  "account.trade.resume": "Reprise des livraisons",
  "account.trade.revoke": "Désappairer",
  "account.trade.authority": "ZML Monitor envoie uniquement des informations sur les opportunités correspondantes. Il n'accède jamais aux comptes de trading et ne détermine jamais les paramètres, le niveau de risque ni la décision d'effectuer ou non une transaction.",
  "account.trade.errors.load": "Impossible de charger la connexion ZML Trade",
  "account.trade.errors.mutation": "L'action de connexion à ZML Trade a échoué",
  "account.trade.revokeDialog.title": "Désappairer ZML Trade ?",
  "account.trade.revokeDialog.description": "La transmission des nouveaux signaux s'arrête immédiatement et les signaux hors ligne ne sont pas rejoués. Un nouveau code d'appareil est nécessaire pour se reconnecter.",
  "account.trade.revokeDialog.confirm": "Désappairer",
  "account.trade.revokeDialog.cancel": "Annuler",
  "account.avatar.title": "Avatar du compte",
  "account.avatar.controlsAria": "Paramètres de l'avatar du compte",
  "account.avatar.fallbackInitial": "A",
  "account.avatar.replace": "Remplacer l'avatar",
  "account.avatar.upload": "Télécharger un avatar",
  "account.avatar.moreActions": "Plus d'actions pour les avatars",
  "account.avatar.actionsAria": "Actions de l'avatar",
  "account.avatar.edit": "Modifier l'avatar",
  "account.avatar.clear": "Supprimer l'avatar",
  "account.avatar.clearing": "Suppression en cours…",
  "account.avatar.help": "Prend en charge les formats PNG, JPEG, WebP et GIF. Après avoir sélectionné une image, zoomez et faites glisser le cadre de recadrage circulaire, puis enregistrez-la pour tous les appareils.",
  "account.avatar.saved": "Enregistré",
  "account.avatar.errors.tooLarge": "L'avatar est trop volumineux. La taille maximale est de 2 Mio.",
  "account.avatar.errors.invalidType": "L'avatar doit être une image au format PNG, JPEG, WebP ou GIF.",
  "account.avatar.errors.sourceSize": "La taille de l'image source doit être comprise entre 1 octet et 12 Mio.",
  "account.avatar.errors.missingCurrent": "Ce compte ne dispose pas encore d'un avatar à modifier.",
  "account.avatar.errors.croppedTooLarge": "L'avatar recadré dépasse 2 Mio. Utilisez un recadrage plus petit ou une autre image.",
  "account.avatar.errors.validationFailed": "L'avatar recadré n'a pas passé la validation d'image. Vérifiez le recadrage et réessayez.",
  "account.avatar.errors.clearFailed": "L'avatar n'a pas pu être supprimé. Veuillez réessayer.",
  "account.avatar.crop.title": "Modifier l'avatar",
  "account.avatar.crop.description": "Faites glisser l'image pour la positionner, utilisez le curseur pour zoomer et veillez à ce que la partie souhaitée reste à l'intérieur du cadre circulaire.",
  "account.avatar.crop.invalidDimensions": "Les dimensions de l'image n'ont pas pu être lues.",
  "account.avatar.crop.loadFailed": "L'image n'a pas pu être chargée. Choisissez une autre image et réessayez.",
  "account.avatar.crop.loading": "Chargement de l'image…",
  "account.avatar.crop.zoom": "Zoom",
  "account.avatar.crop.canvasUnavailable": "Ce navigateur ne permet pas de créer la zone de recadrage de l'avatar.",
  "account.avatar.crop.webpUnavailable": "Ce navigateur ne permet pas d'exporter un avatar au format WebP.",
  "account.avatar.crop.confirm": "Utiliser un avatar",
  "account.password.title": "Modifier le mot de passe",
  "account.password.description": "Si la modification est effectuée avec succès, ce compte sera déconnecté sur tous les appareils.",
  "account.password.strength.weak": "Faible",
  "account.password.strength.fair": "Juste",
  "account.password.strength.strong": "Fort",
  "account.password.strength.veryStrong": "Très solide",
  "account.password.disabled.submitting": "La modification de votre mot de passe est en cours de traitement. Veuillez patienter jusqu'à la fin de l'opération.",
  "account.password.disabled.currentRequired": "Saisissez votre mot de passe actuel.",
  "account.password.disabled.tooShort": "Le nouveau mot de passe doit comporter au moins{{count}}s de caractères.",
  "account.password.disabled.tooLong": "Le nouveau mot de passe ne doit pas dépasser{{count}}s de caractères.",
  "account.password.disabled.confirmationRequired": "Entrez à nouveau le nouveau mot de passe.",
  "account.password.disabled.mismatch": "Les nouveaux mots de passe ne correspondent pas.",
  "account.password.errors.currentRequired": "Saisissez votre mot de passe actuel.",
  "account.password.errors.tooShort": "Le nouveau mot de passe doit comporter au moins{{count}}s de caractères.",
  "account.password.errors.tooLong": "Le nouveau mot de passe ne doit pas dépasser{{count}}s de caractères.",
  "account.password.errors.mismatch": "Les nouveaux mots de passe ne correspondent pas.",
  "account.password.errors.currentIncorrect": "Le mot de passe saisi est incorrect.",
  "account.password.errors.rateLimited": "Trop de tentatives. Veuillez réessayer plus tard.",
  "account.password.errors.failed": "Le mot de passe n'a pas pu être modifié. Veuillez réessayer plus tard.",
  "account.password.updated": "Mot de passe mis à jour",
  "account.password.redirecting": "Redirigé vers la page de connexion…",
  "account.password.currentLabel": "Mot de passe actuel",
  "account.password.newLabel": "Nouveau mot de passe",
  "account.password.confirmLabel": "Confirmer le nouveau mot de passe",
  "account.password.minimumHint": "Au moins {{count}} caractères",
  "account.password.strengthHint": "Au moins {{count}} personnages · Force : {{strength}}",
  "account.password.strengthMeterLabel": "Niveau de sécurité du mot de passe",
  "account.password.mismatch": "Les mots de passe ne correspondent pas",
  "account.password.logoutWarning": "La modification de votre mot de passe entraîne la déconnexion de tous les appareils connectés.",
  "account.password.submitting": "Envoyer",
  "account.password.confirm": "Modifier le mot de passe",
  "account.signIn.title": "Méthodes de connexion",
  "account.signIn.accountIdLabel": "Identifiant du compte",
  "account.signIn.accountIdHint": "Votre identifiant de connexion permanent. Contactez un administrateur si vous devez le modifier.",
  "account.signIn.googleLinked": "Lien vers Google",
  "account.signIn.googleNotLinked": "Lien vers Google non disponible",
  "account.signIn.googleChecking": "Vérification de l'état de connexion à Google…",
  "account.signIn.googleDisabled": "La connexion via Google est désactivée",
  "account.signIn.googleDisabledHint": "La connexion via Google n'est pas activée sur ce site.",
  "account.signIn.googleUnavailable": "La connexion via Google est temporairement indisponible.",
  "account.signIn.retryGoogleStatus": "Réessayer",
  "account.signIn.linkedEmailUnavailable": "Compte associé ; l'adresse e-mail est temporairement indisponible.",
  "account.signIn.linkHint": "Une fois l'association effectuée, vous pouvez vous connecter sans avoir à saisir de mot de passe.",
  "account.signIn.link": "Lien Google",
  "account.signIn.unlink": "Supprimer le lien",
  "account.signIn.linkedNotice": "Google est désormais intégré. Vous pouvez désormais l'utiliser pour vous connecter directement.",
  "account.signIn.unlinkedNotice": "La connexion à Google a été interrompue. La prochaine fois, utilisez votre identifiant et votre mot de passe.",
  "account.signIn.resultUnreadable": "Le lien Google n'a pas pu être lu.",
  "account.signIn.linkDialogTitle": "Lien Google",
  "account.signIn.linkDialogDescription": "Une fois associé, ce compte Google vous permettra d'accéder directement à votre compte courant. Vérifiez d'abord votre mot de passe actuel afin d'éviter qu'un pirate ne profite d'une session compromise pour ajouter un nouveau moyen de connexion.",
  "account.signIn.verifyAndContinue": "Vérifier et continuer",
  "account.signIn.unlinkDialogTitle": "Désassocier Google",
  "account.signIn.unlinkDialogDescription": "Une fois le lien supprimé, seuls votre identifiant et votre mot de passe fonctionneront. Veillez à bien retenir votre mot de passe ; sinon, un administrateur devra le réinitialiser.",
  "account.signIn.currentPassword": "Mot de passe actuel",
  "account.devices.title": "Appareils connectés",
  "account.devices.loading": "Chargement des appareils connectés…",
  "account.devices.unavailable": "Appareils connectés indisponibles",
  "account.devices.browserFallback": "Navigateur",
  "account.devices.allowance": "Les onglets multiples ouverts dans le même navigateur sont considérés comme un seul appareil. Ce compte peut être connecté simultanément sur un maximum de {{count}} appareils.",
  "account.devices.targetScope": "Compte géré : {{target}}.",
  "account.devices.evictionHint": "Lorsqu'un appareil atteint la limite autorisée, toute nouvelle connexion entraîne la déconnexion de l'appareil connecté depuis le plus longtemps.",
  "account.devices.empty": "Aucun appareil connecté",
  "account.devices.emptyHint": "La prochaine connexion s'affichera ici.",
  "account.devices.current": "Appareil actuel",
  "account.devices.lastSeen": "Dernière consultation : {{value}}",
  "account.devices.currentTitle": "Appareil actuel",
  "account.devices.othersTitle": "Autres appareils",
  "account.devices.othersEmpty": "Aucun autre appareil connecté",
  "account.devices.othersEmptyHint": "Il s'agit du seul appareil actuellement connecté.",
  "account.devices.revokeAll": "Déconnecter tous les appareils",
  "account.devices.revokeAllDialog.title": "Déconnecter tous les appareils",
  "account.devices.revokeAllDialog.description": "Toutes les sessions associées à ce compte sont immédiatement interrompues, y compris celle de cet appareil. Vous serez redirigé vers la page de connexion et vous devrez vous reconnecter sur tous vos appareils.",
  "account.devices.revokeAllDialog.confirm": "Se déconnecter de tous les comptes",
  "account.devices.revoke": "Se déconnecter",
  "account.devices.errors.load": "Les appareils connectés n'ont pas pu être chargés",
  "account.devices.errors.revoke": "La déconnexion de l'appareil n'a pas pu être effectuée",
  "account.devices.errors.revokeAll": "Il n'a pas été possible de retirer ces appareils",
  "account.devices.dialog.title": "Déconnecter cet appareil",
  "account.devices.dialog.description": "Vous souhaitez vous déconnecter de «{{device}} » ? L'appareil doit se reconnecter pour continuer.",
  "account.devices.dialog.confirm": "Se déconnecter",
  "account.devices.dialog.target": "Compte concerné : {{target}}",
  "account.loginEvents.title": "Activité de connexion",
  "account.loginEvents.browserFallback": "Autre navigateur",
  "account.loginEvents.localDevice": "Publié sur ce serveur",
  "account.loginEvents.localSource": "Serveur local",
  "account.loginEvents.methods.unknown": "Connexion historique",
  "account.loginEvents.methods.local": "Connexion locale",
  "account.loginEvents.methods.password": "Mot de passe",
  "account.loginEvents.methods.google": "Google",
  "account.loginEvents.filters.aria": "Filtrer l'activité de connexion",
  "account.loginEvents.filters.statusAria": "Filtrer par résultat de connexion",
  "account.loginEvents.filters.ipAria": "Rechercher l'adresse IP de connexion",
  "account.loginEvents.filters.ipPlaceholder": "Recherche d'adresse IP",
  "account.loginEvents.filters.all": "Tout",
  "account.loginEvents.filters.success": "Succès",
  "account.loginEvents.filters.failed": "Échec",
  "account.loginEvents.columns.time": "Heure",
  "account.loginEvents.columns.result": "Résultat",
  "account.loginEvents.columns.source": "Source",
  "account.loginEvents.columns.device": "Appareil",
  "account.loginEvents.state.refreshing": "Mise à jour des résultats…",
  "account.loginEvents.state.loading": "Chargement de l'historique de connexion…",
  "account.loginEvents.state.unavailable": "Fonctionnalité de connexion indisponible",
  "account.loginEvents.state.staleTitle": "Résultats non mis à jour",
  "account.loginEvents.state.empty": "Aucune activité de connexion",
  "account.loginEvents.state.emptyHint": "La prochaine connexion sera enregistrée ici.",
  "account.loginEvents.state.filteredEmpty": "Aucune activité de connexion correspondante",
  "account.loginEvents.state.filteredEmptyHint": "Aucun événement d'inscription ne correspond aux filtres actuels. Effacez-les pour tout afficher.",
  "account.loginEvents.pagination.aria": "Pagination des activités de connexion",
  "account.loginEvents.pagination.total": "{{count}} événements",
  "account.loginEvents.pagination.previous": "Page des connexions précédentes",
  "account.loginEvents.pagination.next": "Page suivante : activités de connexion",
  "account.loginEvents.pagination.pending": "L'activité de connexion est en cours de mise à jour.",
  "account.loginEvents.pagination.first": "Il s'agit de la première page d'activités de connexion.",
  "account.loginEvents.pagination.last": "Il s'agit de la dernière page d'activité de connexion.",
  "account.loginEvents.errors.load": "Impossible de charger l'historique des connexions.",
  "subscription.title": "Mon abonnement",
  "subscription.description": "C'est votre abonnement qui détermine les fonctionnalités auxquelles vous avez accès.",
  "subscription.inactive": "Inactif",
  "subscription.lifetime": "Accès à vie",
  "subscription.lifetimeHint": "L'accès à vie n'expire jamais et ne nécessite aucun renouvellement.",
  "subscription.subscribed": "Abonné",
  "subscription.expiredOn": "Offre expirée le {{date}}",
  "subscription.validUntil": "Abonné · valable jusqu'au {{date}}",
  "subscription.notSubscribed": "Pas encore abonné",
  "subscription.perMonth": "<price>{{price}} USDT</price> / mois",
  "subscription.subscribe": "S'abonner pour un mois",
  "subscription.renew": "Renouveler pour un mois",
  "subscription.creating": "Mettre de l'ordre…",
  "subscription.salesPaused": "Les commandes sont actuellement fermées",
  "subscription.readStale": "Les informations relatives à l'abonnement peuvent être obsolètes. Le dernier résultat reste visible ; la commande reprend une fois la lecture effectuée avec succès.",
  "subscription.tierUnavailable": "L'offre sélectionnée n'est plus disponible. Choisissez une autre offre.",
  "subscription.pendingOrder": "En attente de paiement",
  "subscription.payInstruction": "Envoyez exactement <amount>{{amount}} USDT</amount> (TRC20) à l'adresse ci-dessous",
  "subscription.suffixHint": "Les centimes indiqués dans le montant permettent d'identifier cette commande. Veuillez envoyer le montant exact : l'accès s'ouvrira automatiquement dès réception du paiement.",
  "subscription.paymentAmount": "Montant dû",
  "subscription.copyAmount": "Copier le montant",
  "subscription.amountCopied": "Montant copié",
  "subscription.receivingAddress": "Adresse de réception",
  "subscription.copyAddress": "Copier l'adresse",
  "subscription.addressCopied": "Adresse copiée",
  "subscription.paymentNetwork": "Réseau de transfert : TRON (TRC20)",
  "subscription.amountCopiedFeedback": "Le montant exact a été noté. Veuillez envoyer exactement ce montant.",
  "subscription.addressCopiedFeedback": "L'adresse de destination a été copiée. Vérifiez à nouveau la connexion réseau et l'adresse avant d'envoyer le message.",
  "subscription.copyFailed": "La copie a échoué. Vérifiez les autorisations d'accès au presse-papiers de votre navigateur, puis réessayez.",
  "subscription.orderExpiresAt": "Commande valable jusqu'au {{time}}. Passé ce délai, le montant sera débloqué et vous devrez passer une nouvelle commande.",
  "subscription.ordersTitle": "Commandes",
  "subscription.ordersDescription": "Vos commandes et paiements précédents.",
  "subscription.noOrders": "Aucune commande pour l'instant",
  "subscription.months": "{{count}} mois",
  "subscription.deviceAllowance": "<price>{{price}} USDT</price>/mois · <devices>{{devices}}</devices> appareil(s)",
  "subscription.status.pending": "En attente de paiement",
  "subscription.status.paid": "Rémunéré",
  "subscription.status.expired": "Périmé",
  "subscription.status.cancelled": "Annulé",
  "subscription.errors.loadFailed": "Les informations relatives à l'abonnement n'ont pas pu être chargées.",
  "subscription.errors.orderFailed": "La commande n'a pas pu être créée. Veuillez réessayer dans quelques instants.",
  "subscription.perYear": "<price>{{price}} USDT</price> / an",
  "subscription.billingTerm": "Durée de facturation",
  "subscription.termMonthly": "Mensuel",
  "subscription.termYearly": "Annuelle",
  "subscription.yearlySaving": "Payez pour un an et économisez {{percent}} %.",
  "notice.lapsed": "Votre abonnement a expiré. Renouvelez-le pour retrouver l'accès à l'intégralité des données de surveillance.",
  "notice.expiringSoon": "Votre abonnement expire dans {{days}} jours. Renouvelez-le à l'avance pour éviter toute interruption.",
  "notice.renewNow": "Renouveler",
  "notice.later": "Plus tard",
  "announcements.officialDocument": "Communiqué officiel",
  "announcements.documentStates.loading": "Chargement du contenu",
  "announcements.documentStates.ready": "Contenu prêt",
  "announcements.documentStates.retrying": "Nouvelle tentative de chargement du contenu",
  "announcements.documentStates.unavailable": "Contenu indisponible",
  "announcements.localizationStates.original": "Original officiel",
  "announcements.localizationStates.loading": "Traduction",
  "announcements.localizationStates.ready": "Prêt à être traduit",
  "announcements.localizationStates.retrying": "Nouvelle tentative de traduction",
  "announcements.localizationStates.unavailable": "Traduction indisponible",
  "announcements.delisting.simpleDescription": "Retraits de cotation à venir annoncés par les bourses.",
  "announcements.delisting.verifiedSummaryTitle": "Détails relatifs au retrait de la cote",
  "announcements.delisting.disabledTitle": "Les alertes de retrait de cotation ne sont pas disponibles",
  "announcements.delisting.disabledDescription": "La suppression des données est actuellement désactivée. Le fil d'actualités reste disponible.",
  "announcements.delisting.emptyTitle": "Aucune radiation prévue",
  "announcements.delisting.emptyDescription": "Il n'y a actuellement aucune radiation prévue.",
  "announcements.delisting.filteredEmptyTitle": "Aucune radiation correspondante",
  "announcements.delisting.filteredEmptyDescription": "La recherche ou les filtres actuels n'ont donné aucun résultat. Effacez-les pour afficher tous les résultats.",
  "announcements.delisting.delistingTime": "Date de retrait de la cotation",
  "announcements.delisting.instrument": "Paire / actif",
  "announcements.delisting.product": "Produit",
  "announcements.delisting.countdownColumn": "Compte à rebours",
  "announcements.delisting.listAria": "Alertes de retrait de cotation",
  "announcements.delisting.openAlert": "Communiqué concernant la radiation de la cote : {{instrument}}",
  "announcements.allCategories": "Tout",
  "announcements.categories.listing": "Annonces",
  "announcements.categories.delisting": "Retraits de cotation",
  "announcements.categories.maintenance": "Maintenance",
  "announcements.categories.migration": "Migration / changement de nom",
  "announcements.categories.trading": "Modifications apportées aux opérations boursières",
  "announcements.categories.promotion": "Distributions gratuites / campagnes",
  "announcements.categories.funding": "$t(zml:zml.metric.funding_rate)",
  "announcements.categories.other": "Autres",
  "announcements.overview.delistingsTitle": "Retraits de cotation en cours",
  "announcements.overview.delistingsEmptyTitle": "Aucune radiation en cours",
  "announcements.overview.delistingsEmptyDescription": "Aucune alerte de retrait de cotation active.",
  "announcements.overview.todayTitle": "Aujourd'hui",
  "announcements.overview.todayEmptyTitle": "Rien à regarder aujourd'hui",
  "announcements.overview.todayEmptyDescription": "C'est ici que sont publiées les informations relatives aux cotations, aux radiations, à la maintenance, aux migrations, aux changements concernant les opérations de bourse et aux avis de financement.",
  "announcements.overview.todayMore": "Voir toutes les annonces",
  "announcements.overview.readerEmptyTitle": "Sélectionnez une annonce",
  "announcements.overview.readerEmptyDescription": "Ouvrez un élément de la liste pour le lire.",
  "announcements.page.title": "Centre d'actualités",
  "announcements.page.loading": "Chargement des annonces...",
  "announcements.page.refresh": "Actualiser",
  "announcements.page.refreshing": "Rafraîchissant",
  "announcements.page.destination": "Rubrique « Actualités »",
  "announcements.page.overview": "Présentation générale",
  "announcements.page.announcements": "Annonces",
  "announcements.page.delistings": "Retraits de cotation",
  "announcements.page.affectedOnly": "Cela affecte mes enchaînements",
  "announcements.page.announcementFeed": "Annonces",
  "announcements.page.delistingAlerts": "Retraits de cotation",
  "announcements.page.searchDelistingAria": "Rechercher les annonces de retrait de cotation",
  "announcements.page.searchAria": "Rechercher des annonces",
  "announcements.page.searchDelistingPlaceholder": "Rechercher des ressources ou des annonces...",
  "announcements.page.searchPlaceholder": "Rechercher les annonces...",
  "announcements.page.categoryFilter": "Catégories d'annonces",
  "announcements.page.exchangeFilter": "Remplacer le filtre",
  "announcements.page.filters": "Filtre",
  "announcements.page.filtersNone": "Toutes les annonces",
  "announcements.page.filtersAria": "Filtres Exchange : {{summary}}",
  "announcements.page.exchangeCount": "{{count}} échanges",
  "announcements.page.loadFailedTitle": "Les annonces n'ont pas pu être chargées",
  "announcements.page.emptyTitle": "Aucune annonce",
  "announcements.page.emptyDescription": "Les sources officielles n'ont pour l'instant fait aucune annonce.",
  "announcements.page.filteredEmptyTitle": "Aucune annonce correspondante",
  "announcements.page.filteredEmptyDescription": "La recherche ou les filtres actuels n'ont donné aucun résultat. Effacez-les pour afficher tous les résultats.",
  "announcements.page.exchange": "Échange",
  "announcements.page.time": "Heure",
  "announcements.page.category": "Catégorie",
  "announcements.page.titleColumn": "Annonce",
  "announcements.inbox.showNew": "Afficher les nouvelles annonces",
  "announcements.inbox.today": "Aujourd'hui",
  "announcements.inbox.yesterday": "Hier",
  "announcements.inbox.unreadOnly": "Uniquement les messages non lus",
  "announcements.inbox.sourceStateUnavailable": "Le statut de source officielle n'est pas disponible",
  "announcements.inbox.sourceStateUnavailableDescription": "Le dernier instantané de facette réussi est conservé (données à la date du {{time}}) ; les résultats ne sont jamais effacés ni supprimés sans avertissement.",
  "announcements.inbox.staleTitle": "Affichage du dernier instantané réussi",
  "announcements.inbox.staleForbiddenTitle": "L'accès aux actualités a été révoqué",
  "announcements.inbox.staleForbiddenDescription": "Le dernier instantané enregistré avant la révocation de l'accès reste visible. Il ne sera pas mis à jour, et une nouvelle tentative ne permettra pas de le restaurer.",
  "announcements.inbox.forbiddenTitle": "Vous n'avez pas accès aux actualités",
  "announcements.inbox.forbiddenDescription": "Ce compte ne peut pas consulter les actualités. Réessayer ne changera rien : demandez l'accès à un administrateur.",
  "announcements.inbox.loadError": "Les annonces sont temporairement indisponibles. Veuillez réessayer.",
  "announcements.inbox.loadMoreFailed": "Il n'a pas été possible de charger d'autres annonces. Les annonces déjà chargées restent disponibles.",
  "announcements.inbox.resultCount": "Affichage des actualités concernant « {{count}} »",
  "announcements.inbox.snapshotAt": "Aperçu : {{time}}",
  "announcements.inbox.noSnapshot": "Il n'existe pas encore de bilan officiel",
  "announcements.inbox.sourceNotEffective": "Ne fonctionne pas",
  "announcements.inbox.affectedOpportunities": "Paires concernées",
  "announcements.inbox.affectedOpportunityCount": "{{count}} paires concernées",
  "announcements.inbox.openAnnouncement": "Ouvrir l’annonce : {{title}}",
  "announcements.inbox.listAria": "Résultats du centre d'actualités",
  "announcements.monitorRisk.bothLegs": "Les deux parties",
  "announcements.monitorRisk.longLeg": "Côté long",
  "announcements.monitorRisk.shortLeg": "Côté court",
  "announcements.monitorRisk.delistingBadge": "{{leg}} radiation · {{time}}",
  "announcements.monitorRisk.title": "{{venue}} · {{product}} · retrait définitif de la cotation {{time}} ; {{count}} retraits de cotation associés",
  "announcements.monitorRisk.titleWithInstrument": "{{venue}} · {{instrument}} · {{product}} · retrait définitif {{time}} ; {{count}} retraits liés",
  "announcements.notifications.open": "Paramètres d'alerte",
  "announcements.notifications.title": "Alertes de retrait de cotation",
  "announcements.notifications.description": "Les modifications sont enregistrées automatiquement. Les alertes concernent les retraits officiels de la liste, avec indication précise de la paire, du produit et de l'heure exacte.",
  "announcements.notifications.loading": "Chargement des alertes de radiation de ce compte…",
  "announcements.notifications.loadFailedTitle": "Les paramètres d'alerte de retrait de la cotation ne sont pas disponibles",
  "announcements.notifications.loadFailedMessage": "Les paramètres d'alerte de radiation n'ont pas été chargés pour ce compte.",
  "announcements.notifications.saveFailed": "Impossible d'enregistrer les paramètres d'alerte. Veuillez réessayer.",
  "announcements.notifications.inAppToast": "Alertes de retrait de l'application",
  "announcements.notifications.duration": "Durée d'affichage",
  "announcements.notifications.seconds": "sec",
  "announcements.notifications.maxVisible": "Visible d'emblée",
  "announcements.notifications.position": "Position de la notification",
  "announcements.notifications.positions.topRight": "En haut à droite",
  "announcements.notifications.positions.topLeft": "En haut à gauche",
  "announcements.notifications.positions.bottomRight": "En bas à droite",
  "announcements.notifications.positions.bottomLeft": "En bas à gauche",
  "announcements.notifications.feishuTitle": "Alertes concernant le retrait de la cote de Feishu",
  "announcements.notifications.feishuChannel": "Chaîne de retrait de Feishu",
  "announcements.notifications.currentChannel": "Chaîne actuelle : {{channel}}",
  "announcements.notifications.selectChannelHint": "Sélectionnez une chaîne avant d'activer les alertes de retrait de Feishu.",
  "announcements.notifications.channelUpdated": "Mise à jour de la chaîne d'alerte relative aux retraits de cotation",
  "announcements.notifications.feishuDisabled": "Alertes de retrait de cotation de Feishu désactivées",
  "announcements.notifications.noChannelSelected": "Aucun canal d'alerte de radiation n'a été sélectionné",
  "announcements.notifications.openChannelSettings": "Ouvrir un compte - Paramètres de la chaîne Feishu",
  "announcements.notifications.channelRequired": "Commencez par sélectionner un canal de désinscription Feishu pour ce compte.",
  "announcements.notifications.verifiedOnly": "Seules les suppressions officielles de la liste pour lesquelles la paire, le produit et l'heure exacte de clôture sont indiqués sont transmises.",
  "announcements.notifications.quietHours": "Heures de silence",
  "announcements.notifications.quietTimeZone": "Les heures calmes suivent l'heure actuelle de votre appareil. Hors ligne, le dernier réglage confirmé s'applique.",
  "announcements.notifications.start": "Démarrer",
  "announcements.notifications.end": "Fin",
  "announcements.notifications.history.title": "Alertes récentes",
  "announcements.notifications.history.emptyTitle": "Aucune alerte pour l'instant",
  "announcements.notifications.history.emptyDescription": "Les alertes de retrait de cotation correspondantes s'afficheront ici une fois l'alerte créée.",
  "announcements.notifications.history.deletedChannel": "Chaîne supprimée",
  "announcements.notifications.history.combination": "Alerte de combinaison",
  "announcements.notifications.history.tab": "Onglet « Opportunités » {{tab}}",
  "announcements.notifications.history.deletedTab": "Onglet supprimé",
  "announcements.notifications.history.toast": "Alerte dans l'application",
  "announcements.notifications.history.feishu": "Alerte Feishu",
  "announcements.notifications.history.notification": "Alerte",
  "announcements.notifications.history.status.sent": "Envoyé",
  "announcements.notifications.history.status.pending": "En attente",
  "announcements.notifications.history.status.failed": "Échec",
  "announcements.notifications.history.status.unknown": "Statut inconnu",
  "announcements.retry": "Réessayer",
  "announcements.loading": "Chargement des annonces non lues…",
  "announcements.unreadLabel": "Annonces non lues",
  "announcements.markAllRead": "Marquer tout comme lu",
  "announcements.reader.readingMode": "Mode lecture",
  "announcements.reader.compareView": "Comparer",
  "announcements.reader.contentUpdated": "Une version mise à jour est disponible. Votre position de lecture actuelle est conservée.",
  "announcements.reader.applyUpdate": "Afficher la version mise à jour",
  "announcements.reader.table": "Tableau",
  "announcements.reader.sourceDetails": "Détails de la source",
  "announcements.reader.sourceLanguage": "Langue originale",
  "announcements.reader.machineTranslation": "Traduction automatique",
  "announcements.reader.jumpTranslation": "Traduction",
  "announcements.reader.jumpOriginal": "Original",
  "announcements.reader.moreActions": "Autres options de lecture",
  "announcements.reader.copyLink": "Copier le lien de la source",
  "announcements.reader.copyOriginal": "Copier le texte original",
  "announcements.reader.copyTranslation": "Copier la traduction",
  "announcements.reader.copied": "Copié",
  "announcements.reader.copyFailed": "Échec de la copie. Vérifiez les autorisations du presse-papiers et réessayez.",
  "announcements.reader.bodyRegion": "Contenu de l'annonce",
  "announcements.reader.publishedTime": "Heure de publication",
  "announcements.reader.readSyncPending": "L'annonce est ouverte. L'état « Lu » sera synchronisé dès que la connexion sera rétablie.",
  "announcements.reader.verifyOnOfficialSite": "Utilisez le lien d'origine pour vérifier l'annonce sur le site web de la bourse.",
  "announcements.reader.officialContent": "Texte original de la plateforme",
  "announcements.reader.summary": "Résumé de l’annonce",
  "announcements.reader.noReadableContent": "Aucun contenu officiel lisible n'est actuellement disponible.",
  "announcements.reader.forbidden": "Vous n'êtes pas autorisé(e) à consulter cette annonce.",
  "announcements.reader.detailUnavailable": "Les détails de cette annonce ne sont temporairement pas disponibles.",
  "announcements.reader.focusAnchor": "Détails de l’annonce",
  "announcements.reader.loadingDescription": "Chargement de l’annonce en vue de sa lecture.",
  "announcements.reader.loadingRegion": "État de chargement de l’annonce",
  "announcements.reader.unavailableTitle": "Annonce indisponible",
  "announcements.reader.opening": "Chargement de l’annonce…",
  "announcements.reader.unavailableFooter": "Contenu de l’annonce indisponible",
  "announcements.reader.preparingFooter": "Chargement du contenu de l'annonce",
  "announcements.reader.fullContentFailed": "L'annonce complète n'a pas pu être actualisée. Le contenu disponible reste visible.",
  "announcements.reader.relatedOpportunities": "Opportunités de trading associées",
  "announcements.reader.openingSpread": "$t(zml:zml.metric.bbo_executable_open_spread_pct)",
  "announcements.reader.openOriginal": "Voir l’original sur le site de la plateforme",
  "announcements.toast.summary": "{{venue}} · {{instrument}} · {{product}} · {{time}}{{impact}}",
  "announcements.toast.impactSuffix": " · {{count}} concerné",
  "announcements.toast.region": "Alertes de retrait de cotation",
  "announcements.toast.closeAria": "Ignorer l'alerte de radiation : {{title}}",
  "announcements.toast.batchTitle": "Alerte de retrait de la cote : {{title}}",
  "announcements.toast.batchSeparator": "; ",
  "google.errors.cancelled": "L'autorisation Google a été annulée.",
  "google.errors.emailTaken": "Cette adresse e-mail est déjà associée à un compte. Connectez-vous avec votre mot de passe, puis associez votre compte Google dans Paramètres → Général → Méthodes de connexion.",
  "google.errors.registrationClosed": "L'inscription en libre-service n'est plus disponible. Veuillez contacter un administrateur pour obtenir un compte.",
  "google.errors.stateMismatch": "Échec de la vérification de l'autorisation. Relancez la procédure de connexion à Google.",
  "google.errors.temporarilyBusy": "Le service de connexion Google est actuellement saturé. Veuillez réessayer dans quelques instants.",
  "google.errors.sessionUnavailable": "Impossible de créer une session de connexion. Veuillez réessayer dans quelques instants.",
  "google.errors.accountUnavailable": "Ce compte est désactivé. Veuillez contacter un administrateur.",
  "google.errors.authorizationFailed": "L'autorisation Google n'a pas pu être effectuée. Veuillez réessayer dans quelques instants.",
  "google.errors.callbackIncomplete": "La connexion à Google n'a pas abouti. Veuillez réessayer.",
  "google.errors.handoffUsed": "Cette autorisation Google a déjà été utilisée. Recommencez.",
  "google.errors.handoffExpired": "L'autorisation Google a expiré. Veuillez recommencer.",
  "google.errors.signupContextExpired": "L'autorisation d'inscription à Google a expiré. Recommencez.",
  "google.errors.signupContextUnavailable": "Impossible de charger les informations d'inscription à Google. Veuillez réessayer dans quelques instants.",
  "google.errors.signupContextIncomplete": "Les informations d'inscription à Google sont incomplètes. Recommencez.",
  "google.errors.resultMismatch": "Ce résultat de connexion à Google ne correspond pas à la page actuelle. Recommencez.",
  "google.errors.linkResultMismatch": "Ce résultat de recherche Google ne correspond pas au compte actuel. Veuillez réessayer.",
  "google.errors.currentPasswordIncorrect": "Le mot de passe saisi est incorrect.",
  "google.errors.networkBlocked": "La connexion n'est pas autorisée depuis ce réseau. Veuillez contacter un administrateur.",
  "google.errors.deviceUnavailable": "Ce dispositif de connexion n'a pas pu être identifié.",
  "google.errors.notConfigured": "La connexion via Google n'est pas configurée pour ce site.",
  "google.errors.originNotConfigured": "Ce site ne dispose pas d'un client OAuth Google opérationnel.",
  "google.errors.linkStartFailed": "Impossible de lancer la recherche sur Google. Veuillez réessayer dans quelques instants.",
  "google.errors.ticketInvalid": "L'autorisation Google a expiré. Veuillez vous reconnecter.",
  "google.errors.linkFailed": "Échec de l'association. Ce compte Google est peut-être déjà associé à un autre service.",
  "google.errors.unlinkFailed": "Il n'a pas été possible de dissocier Google. Veuillez réessayer dans quelques instants.",
  "google.errors.signupBusy": "Le service d'inscription est actuellement saturé. Veuillez réessayer dans quelques instants.",
  "google.errors.signupUnavailable": "L'inscription est temporairement indisponible. Veuillez réessayer dans quelques instants.",
  "google.errors.signupIncomplete": "Votre compte a été créé. Retournez à la page de connexion.",
  "google.errors.signupFailed": "L'inscription a échoué. Veuillez réessayer dans quelques instants.",
  "google.errors.usernameTaken": "Ce nom d'utilisateur est déjà pris.",
  "google.errors.usernameReserved": "Ce nom d'utilisateur est déjà pris. Choisissez-en un autre.",
  "google.errors.usernameTooShort": "Le nom d'utilisateur doit comporter au moins 3 caractères.",
  "google.errors.usernameTooLong": "Le nom d'utilisateur ne doit pas dépasser 32 caractères.",
  "google.errors.usernameCharset": "N'utilisez que des lettres minuscules, des chiffres et des traits de soulignement, et ne commencez pas par un trait de soulignement.",
  "google.errors.googleAlreadyLinked": "Ce compte Google est déjà associé à un autre service.",
  "google.errors.passwordTooShort": "Le mot de passe doit comporter au moins 8 caractères.",
  "google.errors.passwordTooLong": "Le mot de passe ne doit pas dépasser 256 caractères.",
  "google.errors.passwordInvalid": "Le mot de passe ne respecte pas les critères requis.",
  "google.errors.statusUnavailable": "La connexion via Google est temporairement indisponible. Veuillez réessayer dans quelques instants.",
  "google.errors.requestFailed": "La demande n'a pas pu être traitée. Veuillez réessayer dans quelques instants.",
  "google.errors.unsupportedLocale": "Cette langue n’est pas prise en charge. Veuillez choisir une autre langue.",
  "login.documentTitle": "Se connecter · ZML Monitor",
  "login.ariaLabel": "Se connecter",
  "login.subtitle": "",
  "login.loadingAriaLabel": "Chargement de la connexion",
  "login.loadingPage": "Chargement de la connexion…",
  "login.identifierLabel": "Compte ou adresse e-mail",
  "login.passwordLabel": "Mot de passe",
  "login.passwordPlaceholder": "Entrez votre mot de passe",
  "login.showPassword": "Afficher le mot de passe",
  "login.hidePassword": "Masquer le mot de passe",
  "login.submit": "Se connecter",
  "login.submitting": "Connexion en cours…",
  "login.errorEmptyIdentifier": "Veuillez saisir votre identifiant ou votre adresse e-mail",
  "login.errorEmptyPassword": "Veuillez saisir votre mot de passe",
  "login.errorGeneric": "Échec de la connexion. Veuillez réessayer dans quelques instants.",
  "login.errors.invalidCredentials": "Le compte ou le mot de passe est incorrect.",
  "login.errors.ipBlocked": "La connexion n'est pas autorisée depuis ce réseau. Veuillez contacter un administrateur.",
  "login.errors.tooManyAttempts": "Trop de tentatives. Veuillez patienter et réessayer.",
  "login.errors.busy": "Le serveur de connexion est surchargé. Veuillez réessayer dans quelques instants.",
  "login.errors.unavailable": "La connexion est temporairement indisponible. Veuillez réessayer dans quelques instants.",
  "login.logout.passwordChanged": "Votre mot de passe a été modifié. Veuillez vous reconnecter.",
  "login.logout.invalidated": "Cette session a été déconnectée sur un autre appareil.",
  "login.logout.deviceEvicted": "Cet appareil a été déconnecté car le compte a atteint sa limite d'appareils connectés. Reconnectez-vous ou gérez les autres sessions dans la rubrique « Appareils connectés ».",
  "login.logout.accountDisabled": "Ce compte est désactivé. Veuillez contacter un administrateur.",
  "login.logout.invalidAuth": "Les identifiants de connexion ne sont pas valides. Veuillez vous reconnecter.",
  "login.logout.expired": "Votre session a expiré. Veuillez vous reconnecter.",
  "login.logout.network": "La connexion a été interrompue. Veuillez vous reconnecter.",
  "login.logout.unknown": "Votre session a expiré. Veuillez vous reconnecter.",
  "login.signedOutDevices": "Cette connexion a automatiquement déconnecté {{count}} d'autres appareils afin de respecter la limite d'appareils autorisés. Vérifiez les sessions dans Paramètres → Appareils connectés.",
  "login.locked": "Verrouillé",
  "login.lockedAria": "L'accès est bloqué. Veuillez patienter et réessayer.",
  "login.retryAfter": "Réessayez sur {{countdown}}",
  "login.failureCount": "{{count}}/{{max}} échecs consécutifs, {{remaining}} tentatives restantes",
  "login.lockedFailureCount": "{{count}}/{{max}} échecs consécutifs à ce jour",
  "login.submitDisabledLoading": "Connexion en cours, veuillez patienter.",
  "login.submitDisabledLocked": "L'accès est bloqué. Attendez la fin du compte à rebours.",
  "login.google.divider": "ou",
  "login.google.continue": "Continuer avec Google",
  "login.google.checking": "Connexion à Google…",
  "login.google.completing": "Connexion à Google en cours…",
  "login.google.unavailable": "La connexion via Google est temporairement indisponible.",
  "login.google.retry": "Réessayer",
  "login.google.signupHint": "Les nouveaux utilisateurs choisissent un nom d'utilisateur et un mot de passe après vérification. Les utilisateurs existants se connectent d'abord avec leur mot de passe, puis associent leur compte Google dans les paramètres.",
  "register.documentTitle": "Créer un compte · ZML Monitor",
  "register.ariaLabel": "Créer un compte",
  "register.subtitle": "Terminer la création de votre compte ZML Monitor",
  "register.receiving": "Attente de l'autorisation de Google…",
  "register.backToLogin": "Retour à la page de connexion",
  "register.handoffExpired": "L'autorisation Google a expiré. Veuillez recommencer.",
  "register.startFromLogin": "Commencez par la page de connexion et sélectionnez « Continuer avec Google ».",
  "register.retryContext": "Réessayer : informations d'inscription",
  "register.retryingContext": "Nouvelle tentative de saisie des informations d'inscription…",
  "register.googleVerified": "Adresse e-mail Google vérifiée",
  "register.existingAccountHint": "Vous avez déjà un compte ? Ne créez pas un autre compte. Connectez-vous d'abord, puis associez votre compte Google dans « Paramètres » → « Général » → « Méthodes de connexion ».",
  "register.bindExistingAccount": "Se connecter à un compte existant",
  "register.usernameLabel": "Nom d'utilisateur",
  "register.usernamePlaceholder": "3 à 32 lettres minuscules, chiffres ou traits de soulignement",
  "register.usernameHint": "Votre nom d'utilisateur ne peut plus être modifié une fois votre inscription effectuée. Contactez un administrateur si vous devez le modifier.",
  "register.usernameRequired": "Entrez un nom d'utilisateur",
  "register.usernameLowercase": "Utilisez uniquement des lettres minuscules",
  "register.usernameLeadingUnderscore": "Ne peut pas commencer par un trait de soulignement",
  "register.usernameInvalid": "Utilisez entre 3 et 32 lettres minuscules, chiffres ou traits de soulignement",
  "register.passwordLabel": "Mot de passe",
  "register.passwordRequired": "Entrez un mot de passe",
  "register.passwordPlaceholder": "Au moins {{min}} caractères",
  "register.passwordHint": "Utilisez le mot de passe « {{min}} » –{{max}}. Vous pouvez également utiliser ce mot de passe pour vous connecter normalement.",
  "register.confirmPasswordLabel": "Confirmer le mot de passe",
  "register.confirmPasswordRequired": "Entrez à nouveau le mot de passe",
  "register.passwordMismatch": "Les mots de passe ne correspondent pas",
  "register.createAccount": "Créer un compte",
  "register.creating": "Création du compte…",
  "register.failed": "L'inscription a échoué. Veuillez réessayer plus tard.",
  "fundingHistoryAdmin.limitations.gateUsdc.label": "L'historique public de Gate USDC est limité",
  "fundingHistoryAdmin.limitations.gateUsdc.description": "L'historique public de Gate USDC nécessite une authentification supplémentaire. Les contrats non couverts ne sont pas affichés comme pris en charge.",
  "fundingHistoryAdmin.quality.healthy": "En bonne santé",
  "fundingHistoryAdmin.quality.partial": "Couverture partielle",
  "fundingHistoryAdmin.quality.newListing": "Bref historique",
  "fundingHistoryAdmin.quality.stale": "Périmé",
  "fundingHistoryAdmin.quality.warmingUp": "Échauffement",
  "fundingHistoryAdmin.quality.missing": "Disparu(e)",
  "fundingHistoryAdmin.availability.active": "Actif",
  "fundingHistoryAdmin.availability.officialUnavailable": "Source officielle indisponible",
  "fundingHistoryAdmin.availability.paused": "En pause",
  "fundingHistoryAdmin.availability.retired": "À la retraite",
  "fundingHistoryAdmin.availability.unsupported": "Non pris en charge",
  "fundingHistoryAdmin.phase.idle": "Au ralenti",
  "fundingHistoryAdmin.phase.warmup": "Échauffement",
  "fundingHistoryAdmin.phase.running": "Course à pied",
  "fundingHistoryAdmin.phase.paused": "En pause",
  "fundingHistoryAdmin.phase.degraded": "Dégradé",
  "fundingHistoryAdmin.phase.error": "Erreur",
  "fundingHistoryAdmin.phase.unknown": "Inconnu",
  "fundingHistoryAdmin.syncStatus.idle": "Au ralenti",
  "fundingHistoryAdmin.syncStatus.pending": "En attente",
  "fundingHistoryAdmin.syncStatus.running": "Synchronisation",
  "fundingHistoryAdmin.syncStatus.ready": "Prêt",
  "fundingHistoryAdmin.syncStatus.degraded": "Dégradé",
  "fundingHistoryAdmin.syncStatus.paused": "En pause",
  "fundingHistoryAdmin.syncStatus.unknown": "Inconnu",
  "fundingHistoryAdmin.activityLevel.info": "Infos",
  "fundingHistoryAdmin.activityLevel.warn": "Avertissement",
  "fundingHistoryAdmin.activityLevel.error": "Erreur",
  "fundingHistoryAdmin.activityLevel.unknown": "Non classifié",
  "fundingHistoryAdmin.freshness.fresh": "Convergé",
  "fundingHistoryAdmin.freshness.stale": "Périmé",
  "fundingHistoryAdmin.freshness.unknown": "Inconnu",
  "fundingHistoryAdmin.reason.startupSidecarSeed": "Résumé de la start-up (phase d'amorçage)",
  "fundingHistoryAdmin.reason.startupCachedProjection": "Projection mise en cache au démarrage",
  "fundingHistoryAdmin.reason.startupPrioritySeed": "Financement d'amorçage prioritaire pour les start-ups",
  "fundingHistoryAdmin.reason.startupWarmup": "Échauffement de démarrage",
  "fundingHistoryAdmin.reason.startupProjectionRefresh": "Mise à jour des prévisions de démarrage",
  "fundingHistoryAdmin.reason.startupFollowupRepair": "Réparation après le démarrage",
  "fundingHistoryAdmin.reason.scheduledRefresh": "Actualisation programmée du cache",
  "fundingHistoryAdmin.reason.scheduledRepair": "Réparation programmée d'une fissure",
  "fundingHistoryAdmin.reason.settlementOfficialRefresh": "Mise à jour officielle après le règlement",
  "fundingHistoryAdmin.reason.captureWindowStarted": "La fenêtre de saisie des règlements s'est ouverte",
  "fundingHistoryAdmin.reason.captureWaitingConfirmation": "En attente de la confirmation du règlement",
  "fundingHistoryAdmin.reason.capturedSettlementConfirmed": "Enregistrement de la transaction en temps réel confirmé",
  "fundingHistoryAdmin.reason.captureTimeout": "Dépassement du délai de capture du règlement",
  "fundingHistoryAdmin.reason.sidecarPublish": "Résumé : publication",
  "fundingHistoryAdmin.reason.sidecarNoop": "Résumé inchangé",
  "fundingHistoryAdmin.reason.manualWarmup": "Échauffement complet manuel",
  "fundingHistoryAdmin.reason.manualRepair": "Réparation manuelle d'une fente",
  "fundingHistoryAdmin.reason.manualRefreshActive": "Recalculer et publier les jours 1 à 5",
  "fundingHistoryAdmin.reason.manualResetCounters": "Réinitialisation manuelle du compteur",
  "fundingHistoryAdmin.reason.pause": "Pause manuelle",
  "fundingHistoryAdmin.reason.resume": "Reprise manuelle",
  "fundingHistoryAdmin.reason.officialCircuitOpened": "Protection officielle contre le dépassement des limites de l'API",
  "fundingHistoryAdmin.reason.officialCircuitRecovered": "Rétablissement officiel de la limite de requêtes de l'API",
  "fundingHistoryAdmin.reason.startupUniverseWaitFailed": "Échec de la stabilisation de l'univers de démarrage",
  "fundingHistoryAdmin.reason.startupPrioritySeedFailed": "Échec de l'amorçage prioritaire au démarrage",
  "fundingHistoryAdmin.reason.startupWarmupFailed": "Échec de la préparation au démarrage",
  "fundingHistoryAdmin.reason.startupProjectionRefreshFailed": "Échec de l'actualisation des prévisions de démarrage",
  "fundingHistoryAdmin.reason.startupCachedProjectionFailed": "Échec de la projection mise en cache au démarrage",
  "fundingHistoryAdmin.reason.startupFollowupRepairFailed": "Échec de la réparation après le démarrage",
  "fundingHistoryAdmin.reason.scheduledRefreshFailed": "Échec de l'actualisation planifiée du cache",
  "fundingHistoryAdmin.reason.scheduledRepairFailed": "Échec de la réparation programmée de l'écart",
  "fundingHistoryAdmin.reason.settlementRefreshFailed": "Échec de la mise à jour officielle après le règlement",
  "fundingHistoryAdmin.reason.startupWarmupVenue": "Préchauffage au démarrage · {{venue}}",
  "fundingHistoryAdmin.reason.prioritySeedVenue": "Graine prioritaire de démarrage · {{venue}}",
  "fundingHistoryAdmin.reason.manualRefreshVenue": "Actualisation de la bourse · {{venue}}",
  "fundingHistoryAdmin.reason.universeReady": "{{reason}} · univers stabilisé",
  "fundingHistoryAdmin.reason.universeTimeout": "{{reason}} · Dépassement du délai d'attente de l'univers",
  "fundingHistoryAdmin.reason.noop": "{{reason}} · inchangé",
  "fundingHistoryAdmin.reason.failed": "{{reason}} a échoué",
  "fundingHistoryAdmin.message.officialRefreshed": "Mise à jour de l'historique officiel : contrats « {{completed}}» / «{{total}} », articles « {{rows}} » rédigés",
  "fundingHistoryAdmin.message.universeStable": "L'univers perpétuel s'est stabilisé à un nombre de contractions de l'{{count}}",
  "fundingHistoryAdmin.message.universeProceeding": "L'univers perpétuel ne s'est pas stabilisé avant la phase de réchauffement ; poursuite des contractions d’{{count}}",
  "fundingHistoryAdmin.message.settlementCaptured": "Règlement du taux de financement enregistré : {{value}}",
  "fundingHistoryAdmin.message.captureWindowEntered": "Accès à la fenêtre de saisie des règlements à l'adresse {{value}}",
  "fundingHistoryAdmin.message.waitingConfirmation": "En attente de confirmation du règlement après l'{{value}}",
  "fundingHistoryAdmin.message.settlementConfirmed": "La saisie des résultats en direct a été confirmée sur {{value}}",
  "fundingHistoryAdmin.message.captureWindowsExpired": "{{count}} Les délais de capture des opérations de règlement ont expiré avant la confirmation",
  "fundingHistoryAdmin.message.noRefreshCandidates": "Aucun candidat à l'histoire officielle n'a besoin d'être remis à niveau",
  "fundingHistoryAdmin.message.projectionsRefreshed": "Mise à jour des projections mises en cache d'{{count}}",
  "fundingHistoryAdmin.message.sidecarUnchanged": "{{reason}} : aucun shard concerné ; cache de résumé inchangé",
  "fundingHistoryAdmin.message.sidecarChanged": "{{reason}} : {{changed}} contrats modifiés, {{removed}} supprimés, {{shards}} shards et {{rows}} lignes affectées, validation effectuée en {{duration}} ms{{overrun}}",
  "fundingHistoryAdmin.message.overrun": ", dépassement de budget",
  "fundingHistoryAdmin.actions.warmup.title": "Échauffement complet",
  "fundingHistoryAdmin.actions.warmup.description": "Après toute réparation majeure ou tout redémarrage, complétez les données historiques officielles des cinq derniers jours pour chaque contrat à durée indéterminée.",
  "fundingHistoryAdmin.actions.warmup.success": "La phase de préchauffage complète a commencé. Le système va reconstituer les données des cinq derniers jours, bourse par bourse.",
  "fundingHistoryAdmin.actions.repair.title": "Combler les lacunes",
  "fundingHistoryAdmin.actions.repair.description": "Ne régulariser que les contrats de queue inachevés.",
  "fundingHistoryAdmin.actions.repair.success": "La correction des écarts a commencé uniquement pour les contrats « tail » inachevés.",
  "fundingHistoryAdmin.actions.refreshActive.title": "Recalculer et publier les jours 1 à 5",
  "fundingHistoryAdmin.actions.refreshActive.description": "Lancer une synchronisation immédiate de l'historique pour tous les contrats à durée indéterminée et publier les dernières colonnes correspondant aux jours 1 à 5 dans la table principale.",
  "fundingHistoryAdmin.actions.refreshActive.success": "Le recalcul complet et la publication des données des jours 1 à 5 ont commencé ; le tableau principal utilisera le dernier cache publié.",
  "fundingHistoryAdmin.actions.pause.title": "Pause",
  "fundingHistoryAdmin.actions.pause.description": "Suspendre les tâches d'historique de financement en arrière-plan sans affecter le résultat du tableau principal actuellement publié.",
  "fundingHistoryAdmin.actions.pause.success": "Les tâches d'arrière-plan relatives à l'historique des financements ont été suspendues.",
  "fundingHistoryAdmin.actions.resume.title": "CV",
  "fundingHistoryAdmin.actions.resume.description": "Reprendre les tâches en arrière-plan en utilisant la configuration actuelle de synchronisation et de publication.",
  "fundingHistoryAdmin.actions.resume.success": "Reprise des tâches en arrière-plan concernant l'historique des financements.",
  "fundingHistoryAdmin.actions.resetCounters.title": "Réinitialiser les compteurs",
  "fundingHistoryAdmin.actions.resetCounters.description": "Effacer les compteurs d'exécution et les statistiques d'activité sans supprimer l'historique de règlement ni les résultats mis en cache dans la table principale.",
  "fundingHistoryAdmin.actions.resetCounters.success": "Les compteurs d'exécution et les statistiques d'activité ont été effacés.",
  "fundingHistoryAdmin.feedback.actionExecuted": "Action effectuée : {{action}}",
  "fundingHistoryAdmin.relative.secondsAfter": "en{{count}}s de secondes",
  "fundingHistoryAdmin.relative.secondsBefore": "{{count}} il y a quelques secondes",
  "fundingHistoryAdmin.relative.minutesAfter": "{{count}}e de minute",
  "fundingHistoryAdmin.relative.minutesBefore": "{{count}} il y a quelques minutes",
  "fundingHistoryAdmin.relative.hoursAfter": "dans « {{count}} » heures",
  "fundingHistoryAdmin.relative.hoursBefore": "{{count}} il y a quelques heures",
  "fundingHistoryAdmin.coverage.full": "Couverture complète",
  "fundingHistoryAdmin.coverage.medium": "Couverture moyenne",
  "fundingHistoryAdmin.coverage.low": "Faible couverture",
  "fundingHistoryAdmin.coverage.none": "Pas de couverture",
  "fundingHistoryAdmin.duration.milliseconds": "{{count}} ms",
  "fundingHistoryAdmin.duration.seconds": "{{count}}s",
  "fundingHistoryAdmin.duration.minutes": "{{count}} min",
  "fundingHistoryAdmin.page.readFailed": "Impossible de lire la console d'historique des financements. Vérifiez le backend et réessayez.",
  "fundingHistoryAdmin.page.metadataReadFailed": "Impossible de lire les métadonnées de financement en temps réel. Vérifiez le serveur et réessayez.",
  "fundingHistoryAdmin.page.completed": "Terminé",
  "fundingHistoryAdmin.page.started": "Lancé",
  "fundingHistoryAdmin.page.configSaved": "Les paramètres de l'historique des financements ont été enregistrés.",
  "fundingHistoryAdmin.page.configSavedTitle": "Configuration enregistrée",
  "fundingHistoryAdmin.page.snapshotRefreshFailed": "L'état en temps réel de l'historique des financements n'a pas pu être actualisé ; le dernier instantané réussi est conservé.",
  "fundingHistoryAdmin.page.saveFailed": "Échec de l'enregistrement.",
  "fundingHistoryAdmin.page.actionSubmitted": "Action soumise",
  "fundingHistoryAdmin.page.actionFailed": "L'action a échoué.",
  "fundingHistoryAdmin.page.loading": "Chargement de la console d'historique des financements…",
  "fundingHistoryAdmin.page.readFailedTitle": "Impossible de lire la console d'historique des financements",
  "fundingHistoryAdmin.page.unavailableTitle": "Historique des financements indisponible",
  "fundingHistoryAdmin.page.unavailableDescription": "Il n'y a pas encore de données à afficher.",
  "fundingHistoryAdmin.page.sidecarImpact": "{{shards}} fragments / {{rows}} lignes",
  "fundingHistoryAdmin.page.waitingFirstPublish": "En attente de la publication du premier résumé",
  "fundingHistoryAdmin.page.sidecarImpactHint": "{{changed}} Modifications apportées aux contrats, suppression de « {{removed}} », validées sur {{duration}} ms{{overrun}}",
  "fundingHistoryAdmin.page.lastCommittedCache": "La table principale utilise toujours le cache de synthèse à basse fréquence ayant fait l'objet de la dernière validation.",
  "fundingHistoryAdmin.page.waitingPublish": "En attente de la publication du résumé",
  "fundingHistoryAdmin.page.noRecentNoop": "Aucune publication récente inchangée",
  "fundingHistoryAdmin.page.archived": "Archivé",
  "fundingHistoryAdmin.page.initializing": "Initialisation",
  "fundingHistoryAdmin.page.metrics.coverage5d": "Couverture de 5 jours",
  "fundingHistoryAdmin.page.metrics.projectionPending": "La projection initiale n'a pas été générée.",
  "fundingHistoryAdmin.page.metrics.coverageDescription": "Couverture globale du cache sur cinq jours",
  "fundingHistoryAdmin.page.metrics.availableContracts": "Contrats avec des montants",
  "fundingHistoryAdmin.page.metrics.waitingUniverse": "En attente de l'univers contractuel et des projections mises en cache",
  "fundingHistoryAdmin.page.metrics.availableDescription": "Le tableau principal contient les valeurs pour les jours 1 à 5",
  "fundingHistoryAdmin.page.metrics.tailRepair": "Contrats incomplets",
  "fundingHistoryAdmin.page.metrics.gapPending": "L'évaluation des lacunes n'a pas encore commencé",
  "fundingHistoryAdmin.page.metrics.issueVenues": "{{count}} bourses ont des contrats nécessitant une réparation",
  "fundingHistoryAdmin.page.metrics.noTailGaps": "Pas d'écarts au niveau de la queue",
  "fundingHistoryAdmin.page.metrics.lastPublish": "Dernière publication",
  "fundingHistoryAdmin.page.runtime.backgroundTask": "Tâche en arrière-plan",
  "fundingHistoryAdmin.page.runtime.waitingSchedule": "En attente de la prochaine exécution programmée",
  "fundingHistoryAdmin.page.runtime.lastSummaryPublish": "Publication du dernier résumé",
  "fundingHistoryAdmin.page.runtime.publishScope": "Portée de la publication",
  "fundingHistoryAdmin.page.runtime.lastNoop": "Dernière publication inchangée",
  "fundingHistoryAdmin.page.config.enabled": "Activé",
  "fundingHistoryAdmin.page.config.startupWarmup": "Échauffement de démarrage",
  "fundingHistoryAdmin.page.config.retentionDays": "Durée de conservation des données",
  "fundingHistoryAdmin.page.config.numberError": "Saisissez un nombre entier non négatif valide qui respecte la valeur minimale de ce paramètre.",
  "fundingHistoryAdmin.page.config.discard": "Ignorer les modifications",
  "fundingHistoryAdmin.page.config.unchanged": "Les paramètres actuels ne comportent aucune modification non enregistrée.",
  "fundingHistoryAdmin.page.config.retentionHint": "Conserver au moins cinq jours afin que les projections pour les jours 1 à 5 disposent de données complètes.",
  "fundingHistoryAdmin.page.config.historyDays": "Rétrospective officielle des données (prognose fixée à 5 jours)",
  "fundingHistoryAdmin.page.config.historyDaysHint": "Ne prend en compte que la plage officielle de données de remplissage ; l'accumulation, la couverture et la qualité pour les jours 1 à 5 reposent toujours sur une définition fixe de cinq jours.",
  "fundingHistoryAdmin.page.config.refreshInterval": "Intervalle de rafraîchissement complet (en secondes)",
  "fundingHistoryAdmin.page.config.sweepInterval": "Intervalle de balayage (en secondes)",
  "fundingHistoryAdmin.page.config.settlementDelay": "Délai de stabilisation (en secondes)",
  "fundingHistoryAdmin.page.config.globalConcurrency": "Concurrence globale",
  "fundingHistoryAdmin.page.config.perVenueConcurrency": "Concurrence par bourse",
  "fundingHistoryAdmin.page.config.requestTimeout": "Délai d'expiration de la requête (en secondes)",
  "fundingHistoryAdmin.page.config.retryLimit": "Nombre de tentatives",
  "fundingHistoryAdmin.page.config.captureWindowBefore": "Durée de la phase de capture préalable à la sédimentation (en secondes)",
  "fundingHistoryAdmin.page.config.capturePostGuard": "Temps de garde après la mise en place (en secondes)",
  "fundingHistoryAdmin.page.config.captureConfirm": "Fenêtre de confirmation (en secondes)",
  "fundingHistoryAdmin.page.config.captureDeadline": "Délai final (en secondes)",
  "fundingHistoryAdmin.page.config.minPostSamples": "Nombre minimal d'échantillons à prélever après la mise en place",
  "fundingHistoryAdmin.page.source.title": "Source : Fiche d'alerte Feishu",
  "fundingHistoryAdmin.page.source.focusedOpportunity": "Opportunité ciblée :",
  "fundingHistoryAdmin.page.source.viewHistory": "Consulter l'historique des financements de cette opportunité",
  "fundingHistoryAdmin.page.enabledStatus": "Activé",
  "fundingHistoryAdmin.page.pausedStatus": "En pause",
  "fundingHistoryAdmin.page.lastRefresh": "Dernière mise à jour",
  "fundingHistoryAdmin.page.nextScheduled": "Prochain rendez-vous prévu",
  "fundingHistoryAdmin.page.backgroundTaskPrefix": "Tâche en arrière-plan :",
  "fundingHistoryAdmin.page.startedAt": "a commencé à",
  "fundingHistoryAdmin.page.initialProjection": "La projection initiale est en cours d'élaboration tandis que l'univers perpétuel se stabilise.",
  "fundingHistoryAdmin.page.noBackgroundTask": "Aucune synchronisation en arrière-plan n'est en cours ; la table principale continue d'utiliser le dernier cache publié.",
  "fundingHistoryAdmin.page.overview.coverageTitle": "Progrès globaux en matière de couverture",
  "fundingHistoryAdmin.page.overview.coverageMeta": "{{available}}/ Les contrats «{{total}} » contiennent des valeurs de cache pour les jours 1 à 5",
  "fundingHistoryAdmin.page.capture.title": "Statistiques de capture",
  "fundingHistoryAdmin.page.capture.activeWindows": "Fenêtres d'observation actives",
  "fundingHistoryAdmin.page.capture.officialSettlements": "Enregistrements officiels de règlement des frais de financement enregistrés",
  "fundingHistoryAdmin.page.capture.liveSettlements": "Colonies capturées vivantes",
  "fundingHistoryAdmin.page.capture.fallbackFinalized": "Finalisations de secours",
  "fundingHistoryAdmin.page.capture.rejectedFirstTick": "Premières coches rejetées",
  "fundingHistoryAdmin.page.capture.invalidTransitions": "Transitions non valides rejetées",
  "fundingHistoryAdmin.page.capture.timeouts": "Délais d'expiration de la capture",
  "fundingHistoryAdmin.page.tail.title": "Il reste encore des fissures à réparer au niveau de la queue",
  "fundingHistoryAdmin.page.tail.withVenues": "{{count}} contrats n'ont pas atteint une couverture complète sur cinq jours ; ils sont concentrés sur {{venues}}.",
  "fundingHistoryAdmin.page.tail.waiting": "{{count}} contrats n'ont pas encore atteint une couverture complète sur cinq jours et sont en attente de la prochaine mise à jour ou du prochain rafraîchissement de la bourse.",
  "fundingHistoryAdmin.page.metadata.title": "Fréquence et plafonds de financement",
  "fundingHistoryAdmin.page.metadata.description": "Convergence de l'intervalle et du plafond SSOT utilisés de manière cohérente par le tableau principal, les filtres et la saisie des règlements.",
  "fundingHistoryAdmin.page.metadata.converged60s": "Convergence en moins de 60 secondes",
  "fundingHistoryAdmin.page.metadata.activePerpetuals": "{{fresh}}/{{total}} contrats à durée indéterminée actifs",
  "fundingHistoryAdmin.page.metadata.unknownCap": "Capuchon inconnu",
  "fundingHistoryAdmin.page.metadata.unknownCapDescription": "Considéré comme inconnu lorsqu'aucun champ officiel n'existe",
  "fundingHistoryAdmin.page.metadata.stale": "Périmé",
  "fundingHistoryAdmin.page.metadata.staleDescription": "Au-delà du seuil de fraîcheur faisant autorité",
  "fundingHistoryAdmin.page.metadata.lastRefresh": "Dernière mise à jour",
  "fundingHistoryAdmin.page.metadata.next": "Suivant",
  "fundingHistoryAdmin.page.metadata.venueStatus": "Convergence des bourses",
  "fundingHistoryAdmin.page.metadata.allFresh": "Tout est frais",
  "fundingHistoryAdmin.page.metadata.staleCount": "{{count}} passe",
  "fundingHistoryAdmin.page.metadata.emptyVenuesTitle": "Aucune donnée de convergence des bourses",
  "fundingHistoryAdmin.page.metadata.emptyVenuesDescription": "Le résumé des métadonnées est prêt, mais aucune information sur les bourses n’est disponible.",
  "fundingHistoryAdmin.page.metadata.tableAria": "Convergence de l'échange de métadonnées de l'historique de financement",
  "fundingHistoryAdmin.page.metadata.lastRefreshError": "Dernière erreur d'actualisation",
  "fundingHistoryAdmin.page.table.venue": "Bourse",
  "fundingHistoryAdmin.page.table.active": "Actif",
  "fundingHistoryAdmin.page.table.converged": "Convergé",
  "fundingHistoryAdmin.page.table.stale": "Périmé",
  "fundingHistoryAdmin.page.table.unknownCap": "Capuchon inconnu",
  "fundingHistoryAdmin.page.table.duration": "Durée",
  "fundingHistoryAdmin.page.table.activeTarget": "Actif / cible",
  "fundingHistoryAdmin.page.table.qualitySummary": "En bon état / nouveau / périmé / manquant / archivé",
  "fundingHistoryAdmin.page.table.lastCompleted": "Dernière fois effectuée",
  "fundingHistoryAdmin.page.table.actions": "Actions",
  "fundingHistoryAdmin.page.mismatch.title": "Exemples récents de discordances",
  "fundingHistoryAdmin.page.mismatch.emptyTitle": "Aucun échantillon non apparié",
  "fundingHistoryAdmin.page.mismatch.emptyDescription": "Les valeurs du système et les valeurs officielles concordent pour les derniers échantillons.",
  "fundingHistoryAdmin.page.mismatch.interval": "Intervalle",
  "fundingHistoryAdmin.page.mismatch.cap": "Casquette",
  "fundingHistoryAdmin.page.mismatch.official": "Officiel",
  "fundingHistoryAdmin.page.mismatch.system": "Système",
  "fundingHistoryAdmin.page.mismatch.verifiedAt": "Vérifié le",
  "fundingHistoryAdmin.page.venues.title": "Statut de la bourse",
  "fundingHistoryAdmin.page.venues.description": "Vérifier l'état d'avancement du recouvrement, la couverture, les contrats incomplets et la date de finalisation la plus récente par bourse.",
  "fundingHistoryAdmin.page.venues.emptyTitle": "Aucune donnée de couverture des bourses",
  "fundingHistoryAdmin.page.venues.emptyDescription": "Le récapitulatif de l'historique des paiements de financement est prêt, mais aucun statut boursier n'est disponible.",
  "fundingHistoryAdmin.page.venues.tableAria": "Statut et couverture des bourses dans l'historique de financement",
  "fundingHistoryAdmin.page.venues.coverageAria": "Couverture de la « Day{{day}} » : {{ratio}}, {{quality}}",
  "fundingHistoryAdmin.page.actions.busy": "Une autre opération liée à l'historique des financements est en cours. Veuillez patienter jusqu'à ce qu'elle soit terminée.",
  "fundingHistoryAdmin.page.actions.syncBusy": "La synchronisation de l'historique des financements est en cours. Veuillez patienter jusqu'à la fin de la synchronisation en cours.",
  "fundingHistoryAdmin.page.actions.venueRefreshStarted": "Actualisation de la bourse lancée pour {{venue}}.",
  "fundingHistoryAdmin.page.actions.refreshingVenue": "Rafraîchissant…",
  "fundingHistoryAdmin.page.actions.refreshVenue": "Actualiser la bourse",
  "fundingHistoryAdmin.page.actions.title": "Actions courantes",
  "fundingHistoryAdmin.page.actions.description": "Chaque bouton correspond directement à une action en arrière-plan ; la progression et le dernier résultat de publication s'affichent ici.",
  "fundingHistoryAdmin.page.actions.currentlyRunning": "En cours de diffusion",
  "fundingHistoryAdmin.page.actions.latestResult": "Dernier résultat",
  "fundingHistoryAdmin.page.actions.currentStatus": "Situation actuelle",
  "fundingHistoryAdmin.page.actions.lastCompleted": "Dernière mise à jour : {{action}}",
  "fundingHistoryAdmin.page.actions.noManualRun": "Aucune exécution manuelle n'a été enregistrée ; le système continue de fonctionner selon la planification configurée.",
  "fundingHistoryAdmin.page.actions.running": "Course à pied",
  "fundingHistoryAdmin.page.actions.runningEllipsis": "Je cours…",
  "fundingHistoryAdmin.page.actions.venueProgress": "Progression de l'échange {{completed}}/{{total}}",
  "fundingHistoryAdmin.page.actions.contractProgress": "Suivi de l'avancement du contrat : {{completed}}/{{total}}",
  "fundingHistoryAdmin.page.actions.lastPublish": "Dernière publication",
  "fundingHistoryAdmin.page.actions.lastImpact": "Dernier impact",
  "fundingHistoryAdmin.page.actions.noopPublish": "Cette publication n'a pas été modifiée.",
  "fundingHistoryAdmin.page.actions.latestSummary": "Dernier résumé des résultats",
  "fundingHistoryAdmin.page.gaps.title": "Lacunes en matière de priorités",
  "fundingHistoryAdmin.page.gaps.sampleCount": "{{loaded}}/ Exemples de «{{total}} »",
  "fundingHistoryAdmin.page.gaps.emptyTitle": "Aucune lacune significative en matière de couverture",
  "fundingHistoryAdmin.page.gaps.emptyDescription": "Les échantillons chargés ne présentent aucune lacune de couverture nécessitant un traitement prioritaire.",
  "fundingHistoryAdmin.page.gaps.coverage5d": "Couverture de 5 jours",
  "fundingHistoryAdmin.page.gaps.hiddenCount": "{{count}} Les autres intervalles ne sont pas développés dans cet échantillon.",
  "fundingHistoryAdmin.page.gaps.distribution": "Répartition des écarts",
  "fundingHistoryAdmin.page.gaps.lowestCoverage": "Couverture minimale",
  "fundingHistoryAdmin.page.heatmap.title": "Guide sur les cartes thermiques",
  "fundingHistoryAdmin.page.heatmap.weak": "Faible",
  "fundingHistoryAdmin.page.heatmap.strong": "Élevé",
  "fundingHistoryAdmin.page.heatmap.aria": "Niveaux de couvrance : de « aucune » à « faible », en passant par « moyenne » et « totale »",
  "fundingHistoryAdmin.page.heatmap.description": "Les colonnes D1 à D5 indiquent directement la couverture de chaque bourse sur des périodes allant d’un à cinq jours.",
  "fundingHistoryAdmin.page.limitationsPrefix": "Limites de l'API publique :",
  "fundingHistoryAdmin.page.controls.title": "Paramètres et actions",
  "fundingHistoryAdmin.page.controls.configTitle": "Configuration",
  "fundingHistoryAdmin.page.controls.advanced": "Paramètres avancés",
  "fundingHistoryAdmin.page.controls.itemCount": "{{count}} articles",
  "fundingHistoryAdmin.page.controls.savingReason": "Les paramètres de l'historique des financements sont en cours d'enregistrement.",
  "fundingHistoryAdmin.page.controls.save": "Enregistrer les paramètres",
  "fundingHistoryAdmin.page.activity.title": "Activité",
  "fundingHistoryAdmin.page.activity.emptyTitle": "Aucune activité",
  "fundingHistoryAdmin.page.activity.emptyDescription": "Les mises à jour concernant l'historique des financements s'afficheront ici.",
  "fundingHistoryAdmin.page.activity.aria": "Historique des financements",
  "fundingHistoryAdmin.page.activity.venue": "Bourse :",
  "fundingHistoryAdmin.page.activity.contract": "Contrat :",
  "fundingHistoryAdmin.page.frame.title": "Historique des financements",
  "fundingHistoryAdmin.page.frame.description": "Gérer l'historique des collectes de fonds, des opérations et de la couverture.",
  "fundingHistoryAdmin.page.frame.overviewTitle": "Présentation générale",
  "fundingHistoryAdmin.page.frame.overviewDescription": "Passer en revue l'historique des opérations de financement, la couverture des données et les derniers résultats.",
  "fundingHistoryAdmin.page.frame.runtimeTitle": "Durée d'exécution de la collecte",
  "historyCurve.intervals.1m": "1 minute",
  "historyCurve.intervals.5m": "5 minutes",
  "historyCurve.intervals.15m": "15 minutes",
  "historyCurve.intervals.30m": "30 minutes",
  "historyCurve.intervals.1h": "1 heure",
  "historyCurve.intervals.4h": "4 heures",
  "historyCurve.intervals.1d": "1 jour",
  "historyCurve.intervalsShort.1m": "1 m",
  "historyCurve.intervalsShort.5m": "5 m",
  "historyCurve.intervalsShort.15m": "15 m",
  "historyCurve.intervalsShort.30m": "30 m",
  "historyCurve.intervalsShort.1h": "1 h",
  "historyCurve.intervalsShort.4h": "4 h",
  "historyCurve.intervalsShort.1d": "1d",
  "historyCurve.ranges.1h": "Au cours de la dernière heure",
  "historyCurve.ranges.6h": "Au cours des 6 dernières heures",
  "historyCurve.ranges.24h": "Au cours des dernières 24 heures",
  "historyCurve.ranges.7d": "Au cours des 7 derniers jours",
  "historyCurve.ranges.14d": "Au cours des 14 derniers jours",
  "historyCurve.ranges.30d": "Au cours des 30 derniers jours",
  "historyCurve.fundingMetric": "Financement net équivalent à 8H",
  "historyCurve.fundingMetricShort": "$t(zml:zml.metric.net_funding_8h_pct.short)",
  "historyCurve.window.daysHours": "{{days}}d {{hours}}h",
  "historyCurve.window.days": "{{count}}d",
  "historyCurve.window.hoursMinutes": "{{hours}}h {{minutes}}m",
  "historyCurve.window.hours": "{{count}}h",
  "historyCurve.window.minutes": "{{count}}m",
  "historyCurve.window.seconds": "{{count}}s",
  "historyCurve.search.failed": "Il n'a pas été possible d'effectuer une recherche parmi les combinaisons de l'historique.",
  "historyCurve.search.noUpdatedAt": "Aucune mise à jour récente",
  "historyCurve.search.searching": "Recherche de combinaisons dans l'historique…",
  "historyCurve.search.matchCount": "{{count}} combinaisons possibles",
  "historyCurve.search.matchCountTruncated": "Affichage des premières combinaisons correspondantes sur {{count}}",
  "historyCurve.search.hint": "Recherche par actif, bourse ou contrat.",
  "historyCurve.search.loadingSelection": "Chargement de la combinaison sélectionnée…",
  "historyCurve.search.aria": "Combinaisons de l'historique de recherche",
  "historyCurve.search.placeholder": "Actif, bourse ou contrat",
  "historyCurve.search.disabledLoading": "Une recherche est déjà en cours.",
  "historyCurve.search.disabledEmpty": "Commencez par saisir un mot-clé.",
  "historyCurve.search.searchingAria": "Combinaisons de l'historique de recherche",
  "historyCurve.search.submitAria": "Combinaisons de l'historique de recherche",
  "historyCurve.search.sortLabel": "Trier",
  "historyCurve.search.sortAria": "Ordre de tri de l'historique",
  "historyCurve.search.empty": "Aucun historique enregistré ne correspond à «{{keyword}} ».",
  "historyCurve.search.resultsAria": "Résultats de la recherche dans l'historique",
  "historyCurve.search.latest": "Dernières actualités d'{{time}}",
  "historyCurve.search.points": "{{count}} points",
  "historyCurve.search.sort.balanced": "Meilleure correspondance",
  "historyCurve.search.sort.recent": "Les plus récents",
  "historyCurve.search.sort.history": "L'histoire la plus longue",
  "historyCurve.controls.intervalAria": "Niveau de détail de l'historique",
  "historyCurve.controls.intervalLabel": "Intervalle",
  "historyCurve.controls.rangeAria": "Période couverte par l'historique",
  "historyCurve.controls.rangeLabel": "Gamme",
  "historyCurve.errors.pointLimit": "{{interval}} Cela renverrait {{count}} points, ce qui dépasse la limite actuelle de la requête. Choisissez une plage plus courte ou un intervalle plus large.",
  "historyCurve.errors.batchLimit": "Cette plage nécessite plus de{{count}}s requêtes. Choisissez une plage plus courte ou un intervalle plus large.",
  "historyCurve.errors.capabilitiesInvalid": "Les paramètres du graphique historique sont temporairement indisponibles. Actualisez la page et réessayez.",
  "historyCurve.errors.overviewFailed": "Impossible de charger les données d'historique.",
  "historyCurve.errors.timeseriesFailed": "Les éléments de l'historique n'ont pas pu être chargés.",
  "historyCurve.recording.unknown": "Inconnu",
  "historyCurve.recording.active": "Enregistrement",
  "historyCurve.recording.stopped": "L'enregistrement s'est arrêté",
  "historyCurve.actions.refreshDisabled": "Sélectionnez une combinaison avant d'actualiser la page.",
  "historyCurve.actions.auto": "Auto",
  "historyCurve.actions.refreshAria": "Actualiser l'historique",
  "historyCurve.actions.retrying": "Nouvelle tentative…",
  "historyCurve.actions.retryOverview": "Présentation de la fonction de nouvelle tentative",
  "historyCurve.alerts.recordingStoppedTitle": "Les nouveaux événements historiques ne sont pas consignés",
  "historyCurve.alerts.recordingStoppedDescription": "L'historique enregistré reste disponible, mais aucun nouveau point ni aucun agrégat à intervalle plus large n'est enregistré.",
  "historyCurve.alerts.overviewFailedTitle": "Les données historiques ne sont pas disponibles",
  "historyCurve.alerts.refreshFailedTitle": "Échec de l'actualisation de l'historique",
  "historyCurve.alerts.rangeOutsideTitle": "Une partie de cette plage se situe en dehors de l'historique enregistré",
  "historyCurve.alerts.rangeOutsideDescription": "Couverture disponible : {{coverage}}. Le graphique ne montre que la partie commune.",
  "historyCurve.states.loading": "Chargement de la courbe historique…",
  "historyCurve.states.loadFailed": "Courbe historique indisponible",
  "historyCurve.states.selectCombination": "Sélectionnez une combinaison",
  "historyCurve.states.noCombination": "Aucune combinaison d'historique n'a été sélectionnée",
  "historyCurve.states.selectCombinationDescription": "Recherchez un actif ou un contrat pour consulter son écart enregistré et l'historique de son financement.",
  "historyCurve.states.noCombinationDescription": "Sélectionnez une combinaison sur l'écran avant d'ouvrir sa courbe historique.",
  "historyCurve.states.empty": "Aucun point d'historique n'apparaît dans cette vue",
  "historyCurve.states.rangeMissesCoverage": "Cette plage ne recoupe pas l'historique enregistré. Couverture disponible : {{coverage}}.",
  "historyCurve.states.intervalNotReady": "{{interval}} Les résumés ne sont pas encore disponibles pour cette combinaison. Essayez un intervalle plus précis.",
  "historyCurve.states.emptyDescription": "Aucun point enregistré ne correspond à la combinaison, à l'intervalle et à la plage sélectionnés.",
  "historyCurve.details.more": "Détails de la courbe",
  "historyCurve.details.targetTitle": "Combinaison",
  "historyCurve.details.baseAsset": "Actif sous-jacent",
  "historyCurve.details.combination": "Itinéraire",
  "historyCurve.details.firstBucket": "Premier seau enregistré",
  "historyCurve.details.lastBucket": "Dernier panier enregistré",
  "historyCurve.details.requestedRange": "Plage demandée",
  "historyCurve.details.actualRange": "Gamme de rendu",
  "historyCurve.details.pointLimit": "Limite du nombre de requêtes",
  "historyCurve.details.openRange": "Plage d’ouverture visible",
  "historyCurve.details.recordingStatus": "État de l'enregistrement",
  "historyCurve.details.dataModel": "Modèle de données",
  "historyCurve.details.dataModelValue": "1 million de segments de source avec des agrégations dérivées à intervalle plus large",
  "historyCurve.admin.title": "Graphiques historiques",
  "historyCurve.admin.description": "Vérifiez les courbes enregistrées et l'état de fonctionnement, gérez la durée de conservation et prévisualisez les opérations de maintenance avant de modifier les données.",
  "historyCurve.admin.intervalCatalog.loading": "Chargement des intervalles de l'historique du système…",
  "historyCurve.admin.intervalCatalog.empty": "Le système n'a renvoyé aucun intervalle d'historique exploitable.",
  "historyCurve.admin.intervalCatalog.invalid": "La configuration de l'intervalle d'historique du système n'est pas valide.",
  "historyCurve.admin.intervalCatalog.loadFailed": "Impossible de charger les intervalles d'historique du système.",
  "historyCurve.admin.intervalCatalog.loadFailedWithStatus": "Impossible de charger les intervalles d'historique du système ({{status}} HTTP).",
  "historyCurve.admin.viewerLoading": "Chargement de l'espace de travail « Historique »…",
  "historyCurve.admin.viewerErrorTitle": "L'espace de travail « Historique » n'est pas disponible",
  "historyCurve.admin.configLoading": "Chargement de la configuration de l'historique…",
  "historyCurve.admin.configLoadFailed": "Configuration de l'historique indisponible",
  "historyCurve.admin.common.yes": "Oui",
  "historyCurve.admin.common.no": "Non",
  "historyCurve.admin.status.recording": "Enregistrement",
  "historyCurve.admin.status.recordingStopped": "L'enregistrement s'est arrêté",
  "historyCurve.admin.status.recoveringRollups": "Réparation des rollups",
  "historyCurve.admin.status.degraded": "Dégradé",
  "historyCurve.admin.status.unavailable": "Indisponible",
  "historyCurve.admin.status.unknown": "Inconnu",
  "historyCurve.admin.status.notLoaded": "L'historique n'a pas encore été chargé.",
  "historyCurve.admin.status.readable": "Lisible",
  "historyCurve.admin.status.notReadable": "Illisible",
  "historyCurve.admin.status.storeUnknown": "État de l'historique inconnu",
  "historyCurve.admin.status.storeOnline": "Boutique en ligne d'articles historiques",
  "historyCurve.admin.status.storeUnavailable": "L'historique n'est pas disponible",
  "historyCurve.admin.status.repairing": "Réparation",
  "historyCurve.admin.status.idle": "Au ralenti",
  "historyCurve.admin.status.enabled": "Activé",
  "historyCurve.admin.status.disabled": "Personnes en situation de handicap",
  "historyCurve.admin.reason.recordingStopped": "L'historique récent est interrompu ; les données enregistrées restent accessibles.",
  "historyCurve.admin.reason.startupRollupRepair": "Les intervalles plus longs sont reconstitués à partir des données à la minute après le démarrage.",
  "historyCurve.admin.reason.clickhouseUnavailable": "L'historique n'est actuellement pas disponible.",
  "historyCurve.admin.reason.spread1mMissing": "La source de la 1re minute est manquante ; il n'est donc pas possible de tracer une courbe chronologique complète.",
  "historyCurve.admin.reason.spread5mMissing": "Le rollup de 5 minutes est en cours de préchauffage ou présente un écart.",
  "historyCurve.admin.reason.spread15mMissing": "Le graphique cumulatif sur 15 minutes est en phase de réchauffement ou présente un vide.",
  "historyCurve.admin.reason.spread30mMissing": "Le graphique cumulatif sur 30 minutes est en phase de réchauffement ou présente un vide.",
  "historyCurve.admin.reason.spread1hMissing": "Le graphique en barre d'une heure est en phase de consolidation ou présente un vide.",
  "historyCurve.admin.reason.spread1dMissing": "Le rollup sur 1 jour est en phase d'accélération ou présente un écart.",
  "historyCurve.admin.reason.recording": "De nouveaux événements historiques sont enregistrés en permanence.",
  "historyCurve.admin.reason.degraded": "Le pipeline d'historique présente des dysfonctionnements. Vérifiez l'état des dernières écritures et des derniers regroupements.",
  "historyCurve.admin.reason.unavailable": "Les courbes historiques ne sont actuellement pas consultables.",
  "historyCurve.admin.reason.unknown": "Le pipeline d'historique a signalé un statut non reconnu. Vérifiez que les versions du frontend et du backend correspondent.",
  "historyCurve.admin.errors.loadConfig": "Impossible de charger la configuration de l'historique.",
  "historyCurve.admin.errors.toggleRecording": "Il n'a pas été possible de modifier l'état d'enregistrement.",
  "historyCurve.admin.errors.saveConfig": "Impossible d'enregistrer la configuration de l'historique.",
  "historyCurve.admin.errors.invalidConfig": "Utilisez des durées de conservation exprimées en nombres entiers comprises entre {{minRetention}} et {{maxRetention}}, ainsi qu’une limite de requête exprimée en nombres entiers comprise entre {{minPoints}} et {{maxPoints}}.",
  "historyCurve.admin.errors.previewMaintenance": "L'aperçu de maintenance n'a pas pu être généré.",
  "historyCurve.admin.errors.maintenance": "L'opération de gestion de l'historique a échoué.",
  "historyCurve.admin.errors.selectInterval": "Sélectionnez au moins un intervalle à nettoyer.",
  "historyCurve.admin.errors.ambiguousTime": "Cette heure n'est pas valide, est manquante ou apparaît plusieurs fois dans le fuseau horaire sélectionné. Veuillez choisir une autre heure.",
  "historyCurve.admin.errors.previewCleanup": "L'aperçu du nettoyage n'a pas pu être généré.",
  "historyCurve.admin.errors.cleanup": "L'opération de nettoyage de l'historique a échoué.",
  "historyCurve.admin.feedback.recordingUpdatedTitle": "Mise à jour de l'état de l'enregistrement",
  "historyCurve.admin.feedback.recordingEnabled": "L'enregistrement de l'historique est activé et les nouvelles écritures ainsi que les regroupements ont repris.",
  "historyCurve.admin.feedback.recordingDisabled": "L'enregistrement de l'historique est désactivé. Les nouvelles écritures et les regroupements sont interrompus, mais l'historique enregistré reste consultable.",
  "historyCurve.admin.feedback.recordingFailedTitle": "Échec de la mise à jour de l'état d'enregistrement",
  "historyCurve.admin.feedback.recordingConflict": "Un autre utilisateur a mis à jour la configuration. La référence faisant autorité a été actualisée ; vérifiez la sélection actuelle et enregistrez à nouveau.",
  "historyCurve.admin.feedback.configSavedTitle": "Configuration synchronisée",
  "historyCurve.admin.feedback.configSaved": "La configuration de l'historique est enregistrée et active.",
  "historyCurve.admin.feedback.configFailedTitle": "Échec de l'enregistrement de la configuration",
  "historyCurve.admin.feedback.configConflict": "Un autre utilisateur a mis à jour la configuration. La version de référence a été actualisée et votre version locale provisoire a été conservée ; vérifiez-la et enregistrez-la à nouveau.",
  "historyCurve.admin.feedback.previewFailedTitle": "Échec de l'aperçu",
  "historyCurve.admin.feedback.maintenanceDoneTitle": "Maintenance terminée",
  "historyCurve.admin.feedback.maintenanceDone": "L'opération de maintenance s'est déroulée avec succès.",
  "historyCurve.admin.feedback.maintenanceFailedTitle": "Échec de la maintenance",
  "historyCurve.admin.feedback.cleanupPreviewTitle": "Aperçu mis à jour",
  "historyCurve.admin.feedback.cleanupPreviewUpdated": "L'aperçu de la suppression de l'historique est à jour.",
  "historyCurve.admin.feedback.cleanupPreviewFailedTitle": "Échec de l'aperçu du nettoyage",
  "historyCurve.admin.feedback.cleanupDoneTitle": "Nettoyage de la gamme terminé",
  "historyCurve.admin.feedback.cleanupDone": "Le nettoyage de l'historique est terminé ; environ {{count}} lignes ont été supprimées.",
  "historyCurve.admin.feedback.cleanupFailedTitle": "Échec du nettoyage de la plage",
  "historyCurve.admin.alerts.refreshFailed": "Échec de l'actualisation de l'historique",
  "historyCurve.admin.alerts.prefsFailed": "Les préférences relatives aux courbes n'ont pas pu être enregistrées",
  "historyCurve.admin.metrics.metadata": "Métadonnées",
  "historyCurve.admin.disabledReasons.updatingRecording": "L'état de l'enregistrement est en cours de mise à jour. L'édition reprendra une fois cette opération terminée.",
  "historyCurve.admin.disabledReasons.saving": "Les paramètres de l'historique sont en cours d'enregistrement. La modification reprendra une fois cette opération terminée.",
  "historyCurve.admin.disabledReasons.refreshing": "Les paramètres de l'historique sont en cours de mise à jour. L'édition reprendra une fois cette opération terminée.",
  "historyCurve.admin.disabledReasons.maintenanceRunning": "Une opération de maintenance de l'historique est en cours. La modification reprendra une fois celle-ci terminée.",
  "historyCurve.admin.disabledReasons.unsaved": "Enregistrez ou réinitialisez d'abord les paramètres d'historique non enregistrés.",
  "historyCurve.admin.disabledReasons.toggleNotLoaded": "Les paramètres d'historique n'ont pas été chargés ; il n'est donc pas encore possible de modifier l'enregistrement.",
  "historyCurve.admin.disabledReasons.noChanges": "Il n'y a pas de modifications non enregistrées.",
  "historyCurve.admin.disabledReasons.nothingToReset": "Il n'y a aucune modification non enregistrée à réinitialiser.",
  "historyCurve.admin.disabledReasons.savingMaintenance": "Les paramètres d'historique sont en cours d'enregistrement ; la maintenance rend le service temporairement indisponible.",
  "historyCurve.admin.disabledReasons.refreshingMaintenance": "Les paramètres d'historique sont en cours d'actualisation ; le service est temporairement indisponible.",
  "historyCurve.admin.disabledReasons.maintenanceBusy": "Une opération de maintenance est déjà en cours.",
  "historyCurve.admin.disabledReasons.searchBusy": "Une recherche de cibles de nettoyage est déjà en cours.",
  "historyCurve.admin.disabledReasons.previewFirst": "Prévisualisez l'impact du nettoyage avant de l'exécuter.",
  "historyCurve.admin.configStatus.updating": "Mise à jour",
  "historyCurve.admin.configStatus.saving": "Enregistrement",
  "historyCurve.admin.configStatus.refreshing": "Rafraîchissant",
  "historyCurve.admin.configStatus.failed": "Échec",
  "historyCurve.admin.configStatus.unsaved": "Non enregistré",
  "historyCurve.admin.configStatus.synced": "Synchronisé",
  "historyCurve.admin.dataStatus.title": "Intégrité des données",
  "historyCurve.admin.dataStatus.description": "Consultez l'historique des enregistrements, vérifiez la disponibilité, la couverture et la dernière écriture.",
  "historyCurve.admin.dataStatus.runtime": "Durée d'exécution",
  "historyCurve.admin.dataStatus.currentRecording": "Enregistrement",
  "historyCurve.admin.dataStatus.currentReadable": "Accès en lecture",
  "historyCurve.admin.dataStatus.startupRepair": "Réparation au démarrage",
  "historyCurve.admin.dataStatus.coverage": "Couverture",
  "historyCurve.admin.dataStatus.queryLimit": "Limite du nombre de requêtes",
  "historyCurve.admin.dataStatus.storage": "Stockage",
  "historyCurve.admin.dataStatus.totalRows": "Nombre total de lignes",
  "historyCurve.admin.dataStatus.totalSpace": "Taille totale",
  "historyCurve.admin.dataStatus.active1mBuckets": "Seaux de 1 m actifs",
  "historyCurve.admin.dataStatus.latestWrite": "Dernière publication",
  "historyCurve.admin.dataStatus.latestMinuteFlush": "Chasse d'eau de dernière minute",
  "historyCurve.admin.dataStatus.latestRollup": "Dernière mise à jour cumulative",
  "historyCurve.admin.dataStatus.intervalCoverage": "Couverture par intervalles",
  "historyCurve.admin.config.title": "Configuration",
  "historyCurve.admin.config.persisted": "Enregistré : {{status}}",
  "historyCurve.admin.config.noteDescription": "L'arrêt de l'enregistrement ne supprime ni ne masque l'historique enregistré. Il empêche uniquement les nouvelles écritures et la saisie des données agrégées à intervalle plus long.",
  "historyCurve.admin.config.updating": "Mise à jour en cours…",
  "historyCurve.admin.config.stopRecording": "Mettre fin à une nouvelle histoire",
  "historyCurve.admin.config.resumeRecording": "Reprendre l'enregistrement de l'historique",
  "historyCurve.admin.config.days": "jours",
  "historyCurve.admin.config.points": "points",
  "historyCurve.admin.config.reset": "Réinitialiser",
  "historyCurve.admin.config.refreshing": "Rafraîchissant…",
  "historyCurve.admin.config.refresh": "Actualiser",
  "historyCurve.admin.config.fields.retention": "{{interval}} rétention",
  "historyCurve.admin.config.fields.retentionHint": "Combien de temps faut-il conserver les courbes d'{{interval}} ?",
  "historyCurve.admin.config.fields.queryLimit": "Nombre maximal de points par requête",
  "historyCurve.admin.config.fields.queryLimitHint": "Limite le nombre de points d'historique qu'une vue peut charger.",
  "historyCurve.admin.maintenance.title": "Nettoyage et reconstruction",
  "historyCurve.admin.maintenance.rebuild": "Temps de recharge : 5 m / 15 m / 30 m / 1 h / 4 h / 1 j",
  "historyCurve.admin.maintenance.clearAll": "Effacer tout l'historique enregistré",
  "historyCurve.admin.maintenance.description": "Prévisualisez et lancez un nettoyage complet de la base de données, des reconstructions de cumuls sur plusieurs intervalles ou un nettoyage ciblé par combinaison, plage de dates et intervalle.",
  "historyCurve.admin.maintenance.previewRows": "Lignes concernées dans l'aperçu",
  "historyCurve.admin.maintenance.previewSpace": "Espace publié en avant-première",
  "historyCurve.admin.maintenance.sourceRows": "1 million de lignes de données source",
  "historyCurve.admin.cleanup.title": "Nettoyage ciblé",
  "historyCurve.admin.cleanup.description": "Prévisualisez la combinaison, la période et l'intervalle sélectionnés avant de supprimer tout historique enregistré.",
  "historyCurve.admin.cleanup.searchAria": "Combinaisons de recherche avec historique enregistré",
  "historyCurve.admin.cleanup.searchPlaceholder": "Mot-clé « actif » ou « contrat »",
  "historyCurve.admin.cleanup.searching": "Recherche en cours…",
  "historyCurve.admin.cleanup.search": "Rechercher des cibles de nettoyage",
  "historyCurve.admin.cleanup.results": "{{count}}s cibles de nettoyage ont été détectées.",
  "historyCurve.admin.cleanup.resultsTruncated": "Cibles correspondantes trouvées ; affichage des premiers résultats de «{{count}}».",
  "historyCurve.admin.cleanup.noResults": "Aucune combinaison figurant dans l'historique ne correspond à «{{keyword}} ».",
  "historyCurve.admin.cleanup.searchHint": "Pour nettoyer une combinaison, recherchez-la et sélectionnez-la. Cochez la case « Toutes les combinaisons » pour effectuer un nettoyage global.",
  "historyCurve.admin.cleanup.target": "Combinaison cible",
  "historyCurve.admin.cleanup.targetAria": "Combinaison d'objectifs de nettoyage",
  "historyCurve.admin.cleanup.allCombinations": "Toutes les combinaisons",
  "historyCurve.admin.cleanup.targetPlaceholder": "Effectuez une recherche, puis sélectionnez éventuellement une combinaison",
  "historyCurve.admin.cleanup.startTime": "Heure de début",
  "historyCurve.admin.cleanup.startTimeAria": "Heure de début du nettoyage",
  "historyCurve.admin.cleanup.endTime": "Heure de fin",
  "historyCurve.admin.cleanup.endTimeAria": "Heure de fin du nettoyage",
  "historyCurve.admin.cleanup.intervals": "Fréquence de nettoyage",
  "historyCurve.admin.cleanup.noStartLimit": "Pas de limite d'heure de début",
  "historyCurve.admin.cleanup.noEndLimit": "Pas de limite de temps",
  "historyCurve.admin.cleanup.preview": "Aperçu de l'impact du nettoyage",
  "historyCurve.admin.cleanup.execute": "Lancer un nettoyage ciblé",
  "historyCurve.admin.cleanup.estimatedRows": "Nombre estimé de lignes supprimées",
  "historyCurve.admin.cleanup.estimatedSpace": "Espace libéré estimé",
  "historyCurve.admin.cleanup.rebuildMetadata": "Reconstruire les métadonnées",
  "historyCurve.admin.cleanup.rebuildRollups": "Reconstruire des intervalles plus longs",
  "historyCurve.admin.cleanup.previewTableAria": "Aperçu du nettoyage de l'historique",
  "historyCurve.admin.cleanup.interval": "Intervalle",
  "historyCurve.admin.confirm.clearTitle": "Effacer tout l'historique enregistré ?",
  "historyCurve.admin.confirm.cleanupTitle": "Lancer un nettoyage ciblé ?",
  "historyCurve.admin.confirm.rebuildTitle": "Reconstruire les synthèses historiques ?",
  "historyCurve.admin.confirm.clearDescription": "Cette opération supprime définitivement les métadonnées de combinaison et toutes les tables d'intervalle. L'historique enregistré ne peut pas être récupéré.",
  "historyCurve.admin.confirm.cleanupDescription": "Cette opération supprime définitivement la combinaison, la plage et les intervalles sélectionnés. L'inclusion d'un intervalle de 1 m entraîne automatiquement la reconstruction des métadonnées et des intervalles supérieurs.",
  "historyCurve.admin.confirm.rebuildDescription": "Cette opération génère à nouveau tous les agrégats à intervalle plus large sans supprimer les métadonnées ni les données de référence à 1 minute.",
  "historyCurve.admin.confirm.scopeTitle": "Portée du nettoyage",
  "historyCurve.admin.confirm.timeRange": "Période",
  "historyCurve.admin.confirm.noneSelected": "Aucun élément sélectionné",
  "historyCurve.admin.confirm.affectedRows": "Nombre estimé de lignes concernées",
  "historyCurve.admin.confirm.previewDeleteRows": "Lignes supprimées dans l'aperçu",
  "historyCurve.admin.confirm.rebuildableRows": "Lignes actuellement reconstructibles",
  "historyCurve.admin.confirm.estimatedSpace": "Espace libéré estimé",
  "historyCurve.admin.confirm.previewSpace": "Espace publié en avant-première",
  "historyCurve.admin.confirm.sourceRows": "1 million de lignes faisant autorité",
  "historyCurve.admin.confirm.clear": "Effacer l'historique",
  "historyCurve.admin.confirm.execute": "Lancer le nettoyage",
  "historyCurve.admin.confirm.rebuild": "Reconstruire les rollups",
  "historyCurve.chart.title": "Courbe historique",
  "historyCurve.chart.description": "Ouvrir la double page · {{funding}} · Fermer la double page",
  "historyCurve.chart.summaryEmpty": "Aucun élément de l'historique n'est actuellement affiché.",
  "historyCurve.chart.summary": "<count>{{count}}</count> points de <start>{{start}}</start> à <end>{{end}}</end>. Dernières données : ouverture <open>{{open}}</open>, {{fundingLabel}} <funding>{{funding}}</funding>, clôture <close>{{close}}</close>.",
  "historyCurve.chart.toolbarAria": "Commandes de la fenêtre « Courbe historique »",
  "historyCurve.chart.switching": "Changement de chaîne…",
  "historyCurve.chart.refreshing": "Rafraîchissant…",
  "historyCurve.chart.legendAria": "Légende de la courbe historique et dernières valeurs",
  "historyCurve.chart.open": "$t(zml:zml.metric.bbo_executable_open_spread_pct)",
  "historyCurve.chart.close": "$t(zml:zml.metric.bbo_executable_close_spread_pct)",
  "historyCurve.chart.chartAria": "Évolution historique et graphique linéaire des financements",
  "historyCurve.chart.renderFailedTitle": "Impossible de tracer la courbe historique",
  "historyCurve.chart.renderFailed": "Le graphique est temporairement indisponible.",
  "historyCurve.chart.dataTable.label": "Données historiques des courbes",
  "historyCurve.chart.dataTable.time": "Heure",
  "historyCurve.chart.dataTable.openSpread": "Position ouverte",
  "historyCurve.chart.dataTable.closeSpread": "Écart réduit",
  "historyCurve.chart.dataTable.longFunding": "Taux de financement de la position longue",
  "historyCurve.chart.dataTable.longCap": "Plafond du taux de financement de la position longue",
  "historyCurve.chart.dataTable.longInterval": "Intervalle de financement de la position longue",
  "historyCurve.chart.dataTable.shortFunding": "Taux de financement de la position courte",
  "historyCurve.chart.dataTable.shortCap": "Plafond du taux de financement de la position courte",
  "historyCurve.chart.dataTable.shortInterval": "Intervalle de financement de la position courte",
  "historyCurve.chart.peak.highestOpen": "Écart d'ouverture le plus élevé",
  "historyCurve.chart.peak.lowestClose": "Écart de clôture le plus bas",
  "historyCurve.chart.zoom.unavailable": "Charger les données historiques avant de zoomer sur le graphique.",
  "historyCurve.chart.zoom.resetUnavailable": "Charger les données historiques avant de réinitialiser la fenêtre du graphique.",
  "historyCurve.chart.zoom.in": "Agrandir la courbe historique",
  "historyCurve.chart.zoom.out": "Réduire l'échelle de la courbe historique",
  "historyCurve.chart.zoom.reset": "Réinitialiser la fenêtre de la courbe historique",
  "historyCurve.chart.tooltip.long": "Long",
  "historyCurve.chart.tooltip.short": "Court",
  "historyCurve.chart.tooltip.cap": "Casquette",
  "historyCurve.chart.tooltip.interval": "Intervalle",
  "management.documentTitle": "Admin · ZML Monitor",
  "management.state.unavailable": "Temporairement indisponible",
  "management.state.unavailableMessage": "Le module «{{title}} » n'a pas pu être chargé ni affiché. Veuillez réessayer.",
  "management.state.retry": "Réessayer",
  "management.state.loading": "Chargement de «{{title}} »…",
  "management.state.loadingModule": "Chargement du module d'administration…",
  "management.state.permissionTitle": "Accès administrateur indisponible",
  "management.state.permissionMessage": "Ce compte ne dispose pas d'accès au centre de gestion. Revenez à « Monitor » pour continuer à utiliser les fonctionnalités autorisées.",
  "management.nav.ariaLabel": "Navigation administrateur",
  "management.nav.fallback": "Admin",
  "management.nav.groups.users": "Gestion des utilisateurs",
  "management.nav.groups.billing": "Commerce et facturation",
  "management.nav.groups.settings": "Paramètres principaux",
  "management.nav.groups.system": "Fonctionnement du système",
  "management.nav.groups.metrics": "Lien de financement",
  "management.nav.groups.coin": "Services liés aux actifs",
  "management.nav.groups.news": "Services d'information",
  "management.nav.groups.security": "Sécurité",
  "management.nav.items.pricing": "Tarifs et paiements",
  "management.nav.items.orders": "Commandes et reçus",
  "management.nav.items.signin": "Méthodes de connexion",
  "management.nav.items.audit": "Journal d'audit",
  "management.nav.items.pairs": "Paires de devises",
  "management.nav.items.exchanges": "Échanges",
  "management.nav.items.fundingHistory": "Historique des financements",
  "management.nav.items.historyCurves": "Graphiques historiques",
  "management.nav.items.credentials": "Identifiants API",
  "management.nav.items.overview": "Présentation du système",
  "management.nav.items.egress": "Sortie du réseau",
  "management.nav.items.ingest": "Collecte des données de marché",
  "management.nav.items.compute": "Calcul en temps réel",
  "management.nav.items.publish": "Publication des requêtes",
  "management.nav.items.linkage": "Lien de financement",
  "management.nav.items.catalog": "Catalogue des ressources",
  "management.nav.items.datasource": "Source de données CMC",
  "management.nav.items.collection": "Collection",
  "management.nav.items.sourceHealth": "Source santé",
  "management.nav.items.translation": "Traduction",
  "management.nav.items.announcementPolicy": "Alertes de retrait de cotation",
  "management.nav.items.history": "Historique des connexions",
  "management.nav.items.ip": "Contrôles IP",
  "management.nav.items.session": "Politique relative aux sessions",
  "management.policyApplication.status.applied": "Appliqué",
  "management.policyApplication.status.pending": "En attente",
  "management.policyApplication.status.failed": "Échec",
  "management.policyApplication.effect.immediate": "À compter de ce jour",
  "management.policyApplication.effect.next-session": "À compter de la prochaine session",
  "management.policyApplication.effect.controlled-reconnect": "En vigueur après la remise en service contrôlée",
  "management.policyApplication.effect.restart-required": "En vigueur après le redémarrage",
  "management.policyApplication.revisions": "{{persisted}} en persistance ·{{applied}} en exécution",
  "management.policyApplication.restartRequired": "Redémarrage nécessaire",
  "management.security.description": "Gérer les contrôles relatifs à la connexion à l'échelle du système, aux sessions, à l'accès au réseau et aux audits de sécurité.",
  "management.security.descriptions.signin": "Configurer les méthodes de connexion à l'échelle du système, l'inscription en libre-service et l'authentification Google OAuth.",
  "management.security.descriptions.session": "Définissez la durée de vie de la session et la politique de blocage en cas d’échec de connexion pour chaque compte.",
  "management.security.descriptions.ip": "Gérer les règles d'autorisation et de refus d'adresses IP à l'échelle du système pour la connexion, les API et les connexions en temps réel.",
  "management.security.descriptions.history": "Consultez les résultats de connexion, les adresses IP d'origine, le contexte des appareils et les motifs d'échec pour l'ensemble des comptes.",
  "management.security.descriptions.audit": "Suivre les modifications apportées par l'administrateur aux comptes, aux activités commerciales et aux politiques de sécurité du système.",
  "management.audit.loading": "Chargement des événements d'audit de l'administrateur…",
  "management.audit.loadFailed": "Impossible de charger les événements d'audit de l'administrateur.",
  "management.audit.unavailable": "Audit administrateur indisponible",
  "management.audit.empty": "Aucun événement d'audit",
  "management.audit.emptyHint": "Les modifications apportées par l'administrateur aux comptes, au commerce et aux politiques de sécurité du système apparaissent ici.",
  "management.audit.stale": "{{error}} (affichant le dernier résultat chargé avec succès)",
  "management.audit.moreChanges": "…{{count}} d'autres modifications",
  "management.audit.notePrefix": "Remarque : {{note}}",
  "management.audit.pagination.aria": "Pagination des rapports d'audit de l'administrateur",
  "management.audit.pagination.status": "Page {{page}}/{{pageCount}} · {{start}}–{{end}}/{{total}}",
  "management.audit.pagination.emptyPage": "Cette page ne contient plus d'enregistrements. Retour à la dernière page valide ; vous pouvez également utiliser la pagination ci-dessous pour revenir en arrière.",
  "management.audit.table.aria": "Audit des administrateurs",
  "management.audit.table.time": "Heure",
  "management.audit.table.action": "Action",
  "management.audit.table.target": "Cible",
  "management.audit.table.changes": "Modifications",
  "management.audit.table.actor": "Acteur",
  "management.audit.actions.userCreate": "Créer un compte",
  "management.audit.actions.userUpdate": "Mettre à jour le compte",
  "management.audit.actions.userDelete": "Supprimer le compte",
  "management.audit.actions.userResetPassword": "Réinitialiser le mot de passe du compte",
  "management.audit.actions.userDeviceRevoke": "Révocation d'un appareil associé à un compte",
  "management.audit.actions.userSessionsInvalidateAll": "Annuler les sessions des comptes",
  "management.audit.actions.accountGoogleLink": "Associer un compte Google",
  "management.audit.actions.accountGoogleUnlink": "Désassocier un compte Google",
  "management.audit.actions.billingConfig": "Mise à jour des tarifs",
  "management.audit.actions.billingReceiving": "Réception des mises à jour",
  "management.audit.actions.billingSettle": "Règlement manuel",
  "management.audit.actions.sessionPolicyUpdate": "Mise à jour de la politique relative aux sessions",
  "management.audit.actions.ipPolicyUpdate": "Mettre à jour la politique relative aux adresses IP",
  "management.audit.actions.ipRuleCreate": "Créer une règle IP",
  "management.audit.actions.ipRuleDelete": "Supprimer une règle d'adresse IP",
  "management.audit.actions.sessionsInvalidateAll": "Annuler toutes les sessions système",
  "management.audit.actions.registrationPolicy": "Mise à jour de la politique d'inscription",
  "management.audit.actions.googleConfigUpdate": "Mettre à jour la connexion Google",
  "management.audit.fields.username": "Identifiant du compte",
  "management.audit.fields.email": "E-mail",
  "management.audit.fields.role": "Fonction",
  "management.audit.fields.status": "État du compte",
  "management.audit.fields.plan": "Plan commercial",
  "management.audit.fields.planExpiresAt": "Expiration du contrat",
  "management.audit.fields.locale": "Langue de l'interface",
  "management.audit.fields.tierId": "Niveau d'abonnement",
  "management.audit.fields.createdAt": "Créé le",
  "management.audit.fields.registrationSource": "Source d'inscription",
  "management.audit.fields.googleLinkedAt": "Lien vers Google à l'adresse",
  "management.audit.fields.googleLinked": "État du lien Google",
  "management.audit.fields.sessionRevision": "Révision de la session",
  "management.audit.fields.activeDevices": "Dispositifs actifs",
  "management.audit.fields.affectedAccounts": "Comptes concernés",
  "management.audit.fields.deviceId": "Identifiant de l'appareil",
  "management.audit.fields.tokenTtlDays": "Durée de validité de la connexion (jours)",
  "management.audit.fields.maxFailedAttempts": "Nombre maximal d'échecs consécutifs",
  "management.audit.fields.lockoutDurationMinutes": "Délai de verrouillage après plusieurs tentatives de connexion (en minutes)",
  "management.audit.fields.ipWhitelistEnabled": "Liste blanche d'adresses IP",
  "management.audit.fields.ipBlacklistEnabled": "Liste noire d'adresses IP",
  "management.audit.fields.ipRuleKind": "Type de règle IP",
  "management.audit.fields.ipPattern": "IP / CIDR",
  "management.audit.fields.note": "Remarque",
  "management.audit.fields.config": "Configuration de Google",
  "management.audit.fields.clientSecretRotated": "Le secret client a été renouvelé",
  "management.audit.fields.enabled": "État activé",
  "management.audit.fields.clientId": "Identifiant client",
  "management.audit.fields.redirectUri": "URI de redirection",
  "management.audit.fields.hasClientSecret": "Clé secrète du client enregistrée",
  "management.audit.fields.usable": "Configuration utilisable",
  "management.audit.fields.openRegistration": "Inscription en libre-service",
  "management.audit.fields.monthlyPriceUsdt": "Prix mensuel (USDT)",
  "management.audit.fields.orderTtlMinutes": "Durée de vie de la commande (minutes)",
  "management.audit.fields.salesEnabled": "Début des ventes",
  "management.audit.fields.enforceEntitlement": "Exécution des droits",
  "management.audit.fields.maxDevices": "Nombre maximal d'appareils",
  "management.audit.fields.tiers": "Niveaux d'abonnement",
  "management.audit.fields.trc20Address": "Adresse de réception TRC20",
  "management.audit.fields.usdtContract": "Adresse du contrat USDT",
  "management.audit.fields.pollIntervalSecs": "Intervalle de vérification des reçus (en secondes)",
  "management.audit.fields.userId": "UUID du compte",
  "management.audit.fields.months": "Mois d'abonnement",
  "management.audit.fields.baseAmountUsdt": "Montant de base (USDT)",
  "management.audit.fields.amountUsdt": "Montant versé (USDT)",
  "management.audit.fields.amountMicro": "Montant exact (micro USDT)",
  "management.audit.fields.amountSuffix": "Suffixe d'identification de la commande",
  "management.audit.fields.receivingAddress": "Adresse de réception",
  "management.audit.fields.expiresAt": "Expiration le",
  "management.audit.fields.settledAt": "Installé à",
  "management.audit.values.admin": "Administrateur",
  "management.audit.values.member": "Membre",
  "management.audit.values.active": "Actif",
  "management.audit.values.accountDisabled": "Personnes en situation de handicap",
  "management.audit.values.free": "Gratuit",
  "management.audit.values.paid": "Abonnement",
  "management.audit.values.orderPaid": "Rémunéré",
  "management.audit.values.lifetime": "Accès à vie",
  "management.audit.values.allow": "Autoriser",
  "management.audit.values.deny": "Refuser",
  "management.audit.values.google": "Inscription en libre-service à Google",
  "management.audit.values.adminCreated": "Créé par l'administrateur",
  "management.audit.values.bootstrap": "Compte Bootstrap",
  "management.audit.values.pending": "En attente",
  "management.audit.values.expired": "Périmé",
  "management.audit.values.cancelled": "Annulé",
  "management.audit.values.zhCN": "Chinois",
  "management.audit.values.en": "Anglais",
  "management.audit.values.enabled": "Activé",
  "management.audit.values.notEnabled": "Non activé",
  "management.audit.values.linked": "Lié",
  "management.audit.values.unlinked": "Pas de lien",
  "management.audit.values.itemCount": "{{count}} articles",
  "management.audit.notes.accountDeleted": "Le compte et les données qui y étaient associées ont été supprimés",
  "management.audit.notes.passwordReset": "Un administrateur a réinitialisé le mot de passe du compte",
  "management.audit.notes.sessionsInvalidated": "Un administrateur a invalidé toutes les sessions de compte",
  "management.audit.notes.deviceRevoked": "Un administrateur a révoqué la session de cet appareil",
  "management.audit.notes.registrationPolicy": "Google est le seul point d'accès permettant de s'inscrire en libre-service",
  "management.audit.notes.secretExcluded": "Le texte en clair confidentiel est délibérément exclu du rapport d'audit",
  "management.audit.notes.passwordReauthenticated": "Le mot de passe actuel a été validé avant cette action.",
  "management.audit.notes.appliesImmediately": "S'applique immédiatement à tous les comptes, sans redémarrage",
  "management.audit.notes.globalAccessRule": "Règle d'accès au réseau à l'échelle du système",
  "management.audit.notes.apiKeyExcluded": "Le texte en clair de la clé API est délibérément exclu du journal d'audit",
  "management.audit.notes.manualReconciliation": "Rapprochement manuel par l'administrateur",
  "management.session.loading": "Chargement de la politique de session…",
  "management.session.loadFailedTitle": "Politique de session indisponible",
  "management.session.toolbarAria": "Projet de politique relative aux sessions",
  "management.session.save": "Politique de sauvegarde",
  "management.session.reset": "Réinitialiser",
  "management.session.units.days": "jours",
  "management.session.units.times": "tentatives",
  "management.session.units.minutes": "minutes",
  "management.session.ttl.title": "Durée de validité de la connexion",
  "management.session.ttl.description": "Détermine le nombre de jours pendant lesquels chaque compte peut rester connecté à compter de la création de la session. La valeur par défaut est de 7 jours.",
  "management.session.ttl.daysLabel": "Valable pour",
  "management.session.ttl.inputAria": "Durée de validité de la connexion en jours",
  "management.session.ttl.rangeLabel": "Durée : « {{min}}» – «{{max}} » jours",
  "management.session.ttl.sliderAria": "Régler la durée de validité de la connexion",
  "management.session.ttl.realtimeHint": "S'applique aux sessions existantes et aux nouvelles sessions dès l'enregistrement. Les durées d'expiration existantes ne seront pas prolongées.",
  "management.session.devices.title": "Périphériques fonctionnant simultanément",
  "management.session.devices.allowanceLabel": "Limite du nombre d'appareils pouvant être utilisés simultanément",
  "management.session.devices.allowanceHint": "Définie par le forfait du compte, et non par la politique de sécurité — chaque niveau dispose de son propre quota, ce chiffre n'est donc pas indiqué ici.",
  "management.session.devices.allowanceAction": "Tarification ouverte",
  "management.session.protection.title": "Protection contre les attaques par force brute",
  "management.session.protection.maxFailures": "Nombre maximal d'échecs consécutifs",
  "management.session.protection.maxFailuresAria": "Nombre maximal d'échecs consécutifs de connexion",
  "management.session.protection.lockout": "Durée du lock-out",
  "management.session.protection.lockoutAria": "Durée du verrouillage en minutes",
  "management.session.protection.loginEventRetention": "Conservation des données d'activité de connexion",
  "management.session.protection.loginEventRetentionHint": "Jusqu'à quand peut-on consulter l'historique des connexions ? Les lignes périmées sont supprimées par lots.",
  "management.session.protection.loginEventRetentionAria": "Durée de conservation des données d'activité de connexion (en jours)",
  "management.session.protection.inMemoryNotice": "Le nombre d'échecs est conservé en mémoire pour chaque source et remis à zéro au redémarrage du processus ; les succès et les échecs de connexion, quant à eux, restent enregistrés dans l'historique des connexions.",
  "management.session.invalidate.action": "Annuler toutes les sessions utilisateur",
  "management.session.invalidate.globalTitle": "Réponse de session globale",
  "management.session.invalidate.globalHint": "À utiliser en cas de divulgation d'identifiants ou d'incident de sécurité majeur. Gérez les opérations courantes liées aux comptes depuis la section « Gestion des utilisateurs ».",
  "management.session.invalidate.title": "Invalider toutes les sessions du système",
  "management.session.invalidate.description": "Cette action annule immédiatement la session de chaque compte, y compris celle de cet administrateur. Tout le monde doit se reconnecter.",
  "management.session.invalidate.scopeWarning": "Portée : tous les comptes, tous les appareils et la session d'administrateur en cours. Cette action est irréversible.",
  "management.session.invalidate.confirmationLabel": "Saisissez {{phrase}} pour confirmer",
  "management.session.invalidate.success": "Sessions révoquées pour les comptes {{affectedAccounts}} et les appareils {{affectedDevices}}. Retour à la page de connexion.",
  "management.session.invalidate.pending": "Je me déconnecte…",
  "management.session.invalidate.confirm": "Confirmer la déconnexion générale",
  "management.session.status.saving": "Enregistrement",
  "management.session.status.unsaved": "Non enregistré",
  "management.session.status.synced": "Synchronisé",
  "management.session.busy.invalidating": "Tous les appareils sont en cours de déconnexion. Veuillez patienter jusqu'à la fin de l'opération.",
  "management.session.busy.saving": "La politique de session est en cours d'enregistrement. Veuillez patienter jusqu'à la fin de l'opération.",
  "management.session.busy.noChanges": "La politique de session ne comporte aucune modification à enregistrer.",
  "management.session.busy.nothingToReset": "La session ne comporte aucune modification non enregistrée.",
  "management.session.feedback.conflict": "Un autre administrateur a mis à jour cette politique. La valeur actuelle a été rechargée ; veuillez la vérifier avant de l'enregistrer à nouveau.",
  "management.session.errors.load": "Impossible de charger la politique de session.",
  "management.session.errors.missing": "La politique de session est manquante.",
  "management.session.errors.save": "La politique de session n'a pas pu être enregistrée.",
  "management.session.errors.invalidate": "Il n'a pas été possible de retirer ces appareils.",
  "management.session.errors.invalidDraft": "Corrigez les valeurs non valides de la politique de session avant d'enregistrer.",
  "management.session.errors.tokenTtlDays": "La durée de validité de la connexion doit être un nombre entier compris entre {{min}} et {{max}}.",
  "management.session.errors.maxFailedAttempts": "Le nombre maximal d'échecs consécutifs doit être un nombre entier compris entre {{min}} et {{max}}.",
  "management.session.errors.lockoutDurationMinutes": "La durée du verrouillage doit être un nombre entier compris entre {{min}} et {{max}} minutes.",
  "management.session.errors.loginEventRetentionDays": "La durée de conservation des activités de connexion doit être un nombre entier compris entre {{min}} et {{max}} jours.",
  "management.billing.descriptions.pricing": "Configurez les tarifs des abonnements, les modalités de commande et l'adresse de réception des USDT. Les clés privées ne sont jamais transmises au serveur.",
  "management.billing.descriptions.orders": "Suivre les commandes et les reçus enregistrés sur la blockchain, et effectuer le rapprochement des paiements non appariés.",
  "management.users.description": "Gérer les comptes, les accès par abonnement et la sécurité de la connexion.",
  "management.users.searchAria": "Rechercher des comptes",
  "management.users.searchPlaceholder": "Identifiant de compte ou adresse e-mail",
  "management.users.results": "{{total}} comptes correspondants",
  "management.users.create": "Créer un compte",
  "management.users.pagination.aria": "Pagination de la liste des comptes",
  "management.users.pagination.status": "Page {{page}}/{{pageCount}} · {{start}}–{{end}}/{{total}}",
  "management.users.feedback.updated": "{{username}} de compte mise à jour",
  "management.users.feedback.updatedFields": "Compte {{username}} mis à jour : {{fields}}",
  "management.users.feedback.passwordReset": "Mot de passe de {{username}} réinitialisé",
  "management.users.feedback.created": "Compte créé : {{username}}",
  "management.users.feedback.deleted": "Compte supprimé {{username}}",
  "management.users.errors.listLoad": "Impossible de charger la liste des comptes.",
  "management.users.errors.delete": "Le compte n'a pas pu être supprimé.",
  "management.users.errors.save": "Les modifications n'ont pas pu être enregistrées.",
  "management.users.state.unavailable": "Liste des comptes indisponible",
  "management.users.state.loading": "Chargement des comptes…",
  "management.users.state.empty": "Aucun compte correspondant",
  "management.users.state.emptyHint": "Essayez une autre recherche.",
  "management.users.state.stale": "{{error}} (affichant le dernier résultat chargé avec succès)",
  "management.users.table.aria": "Liste des comptes",
  "management.users.table.account": "Compte",
  "management.users.table.email": "E-mail",
  "management.users.table.role": "Fonction",
  "management.users.table.plan": "Plan",
  "management.users.table.expiry": "Date d'expiration",
  "management.users.table.status": "Statut",
  "management.users.table.createdAt": "Créé",
  "management.users.table.actions": "Actions",
  "management.users.roles.admin": "Admin",
  "management.users.roles.member": "Membre",
  "management.users.plans.free": "Gratuit",
  "management.users.plans.paid": "Abonnement",
  "management.users.plans.lifetime": "Accès à vie",
  "management.users.status.active": "Actif",
  "management.users.status.disabled": "Personnes en situation de handicap",
  "management.users.expiry.lifetime": "Valable indéfiniment",
  "management.users.expiry.free": "Pas encore abonné",
  "management.users.expiry.missing": "Pas de date d'expiration",
  "management.users.expiry.remaining": "{{date}} (Il reste {{count}})",
  "management.users.expiry.expired": "{{date}} ({{count}}, expiré il y a X jours)",
  "management.users.expiry.expiredPlan": "Périmé",
  "management.users.actions.more": "Autres actions",
  "management.users.actions.delete": "Supprimer",
  "management.users.detail.loading": "Chargement des informations du compte…",
  "management.users.detail.unavailable": "Informations sur le compte indisponibles",
  "management.users.detail.loadFailed": "Impossible de charger les informations relatives au compte.",
  "management.users.detail.stale": "{{error}} (affichant les dernières informations de compte chargées avec succès)",
  "management.users.detail.edit": "Modifier",
  "management.users.detail.locationAria": "Emplacement du compte",
  "management.users.detail.propertiesAria": "Propriétés du compte",
  "management.users.detail.openAccount": "Ouvrir le compte",
  "management.users.detail.sectionsAria": "Rubriques relatives aux détails du compte",
  "management.users.detail.sections.account": "Compte",
  "management.users.detail.sections.entitlements": "Droits",
  "management.users.detail.sections.security": "Sécurité",
  "management.users.detail.sections.activity": "Activité",
  "management.users.detail.sections.audit": "Audit administratif",
  "management.users.detail.account.title": "Profil du compte",
  "management.users.detail.account.source": "Source d'inscription",
  "management.users.detail.sources.admin": "Créé par un administrateur",
  "management.users.detail.sources.google": "Inscription en libre-service à Google",
  "management.users.detail.sources.bootstrap": "Compte Bootstrap",
  "management.users.detail.entitlements.title": "Droits associés au compte",
  "management.users.detail.entitlements.effective": "Droit actuel",
  "management.users.detail.entitlements.entitled": "Accès actif",
  "management.users.detail.entitlements.notEntitled": "Sans titre",
  "management.users.detail.entitlements.tier": "Identifiant du niveau d'abonnement",
  "management.users.detail.security.passwordTitle": "Mot de passe et méthodes de connexion",
  "management.users.detail.security.passwordDescription": "Définissez un nouveau mot de passe pour ce compte.",
  "management.users.detail.security.selfPasswordDescription": "Accédez à la rubrique « Connexion et sécurité » pour vérifier et modifier votre mot de passe actuel.",
  "management.users.detail.security.resetPassword": "Réinitialiser le mot de passe",
  "management.users.detail.security.openPersonalSecurity": "Connexion personnelle et sécurité",
  "management.users.detail.security.devicesTitle": "Appareils connectés et sessions",
  "management.users.detail.security.devicesDescription": "Vérifier et révoquer les appareils associés au compte concerné, ou invalider toutes les sessions de ce compte.",
  "management.users.detail.security.invalidateAll": "Annuler toutes les sessions",
  "management.users.detail.security.invalidateTitle": "Invalider toutes les sessions du compte cible",
  "management.users.detail.security.invalidateDescription": "Cette opération ne concerne que le compte indiqué ci-dessous. Une fois l'opération terminée, le titulaire de ce compte devra se reconnecter sur tous ses appareils.",
  "management.users.detail.security.targetUsername": "Identifiant du compte : {{username}}",
  "management.users.detail.security.impactScope": "Impact : tous les appareils et toutes les sessions actuellement associés à ce compte ; les autres comptes ne sont pas concernés.",
  "management.users.detail.security.invalidateConfirm": "Annuler toutes les sessions",
  "management.users.detail.security.invalidateSuccess": "Toutes les sessions associées au compte concerné ont été invalidées.",
  "management.users.detail.security.invalidateSuccessWithCount": "Toutes les sessions associées au compte concerné ont été invalidées (le serveur a signalé la présence d'appareils «{{count}}»).",
  "management.users.detail.security.invalidateFailed": "Les sessions du compte cible n'ont pas pu être annulées.",
  "management.users.detail.activity.title": "Activité de connexion",
  "management.users.detail.activity.description": "Affiche les événements de connexion réussis et échoués pour {{username}} uniquement.",
  "management.users.detail.audit.title": "Audit de l'administrateur du compte cible",
  "management.users.detail.audit.description": "Affiche uniquement les modifications apportées par l'administrateur et les actions de sécurité concernant {{username}}.",
  "management.users.detail.audit.emptyHint": "Aucun événement d'audit administrateur ne concerne encore ce compte.",
  "management.users.editor.createTitle": "Créer un compte",
  "management.users.editor.editTitle": "Gérer le compte · {{username}}",
  "management.users.editor.createDescription": "Le compte peut se connecter immédiatement. Son forfait et sa date d'expiration déterminent les droits d'accès.",
  "management.users.editor.editDescription": "Les modifications prennent effet immédiatement pour toutes les sessions actives associées à ce compte.",
  "management.users.editor.usernameLabel": "Identifiant du compte",
  "management.users.editor.usernameHint": "Le fait de renommer le compte n'entraîne pas la déconnexion et n'a aucune incidence sur l'historique des commandes.",
  "management.users.editor.usernamePlaceholder": "Lettres minuscules, chiffres ou traits de soulignement",
  "management.users.editor.emailLabel": "E-mail",
  "management.users.editor.emailPlaceholder": "Ne rien indiquer si vous n'avez pas d'adresse e-mail",
  "management.users.editor.initialPassword": "Mot de passe initial",
  "management.users.editor.resetPassword": "Réinitialiser le mot de passe",
  "management.users.editor.confirmInitialPassword": "Confirmez le mot de passe initial",
  "management.users.editor.confirmResetPassword": "Confirmer la réinitialisation du mot de passe",
  "management.users.editor.passwordMinimum": "Au moins {{count}} caractères",
  "management.users.editor.passwordKeep": "Ne rien indiquer pour conserver le mot de passe",
  "management.users.editor.initialPasswordAgain": "Entrez à nouveau le mot de passe initial",
  "management.users.editor.resetPasswordAgain": "Entrez à nouveau le nouveau mot de passe",
  "management.users.editor.passwordMismatch": "Les mots de passe ne correspondent pas",
  "management.users.editor.selfPasswordHint": "Pour votre propre compte, ouvrez le menu Avatar → Paramètres → Connexion et sécurité, puis vérifiez d'abord votre mot de passe actuel.",
  "management.users.editor.accessTitle": "Autorisations et accès",
  "management.users.editor.roleLabel": "Fonction",
  "management.users.editor.statusLabel": "État du compte",
  "management.users.editor.statusSelfDisabled": "Vous ne pouvez pas désactiver le compte administrateur qui effectue actuellement cette action.",
  "management.users.editor.statusDisabledImpact": "La désactivation bloque immédiatement l'accès mais conserve les sessions. Les sessions valides peuvent être rétablies lors de la réactivation ; invalidez toutes les sessions pour une déconnexion complète.",
  "management.users.editor.statusEnabledImpact": "Les sessions valides et non révoquées peuvent reprendre lorsqu'elles sont réactivées. Vérifiez que les appareils sont toujours considérés comme fiables.",
  "management.users.editor.saveAndDisable": "Enregistrer et désactiver le compte",
  "management.users.editor.planLabel": "Plan",
  "management.users.editor.expiryLabel": "Date d'expiration",
  "management.users.editor.validation.expiryRequired": "Un abonnement doit comporter une date d'expiration.",
  "management.users.editor.validation.usernameRequired": "L'identifiant du compte est obligatoire.",
  "management.users.editor.validation.passwordTooShort": "Utilisez au moins {{count}} caractères.",
  "management.users.editor.validation.passwordTooLong": "N'utilisez pas plus d'{{count}}.",
  "management.users.editor.validation.passwordMismatch": "Les mots de passe ne correspondent pas.",
  "management.users.editor.validation.splitChanges": "Enregistrez séparément les modifications apportées au profil et la réinitialisation du mot de passe.",
  "management.users.editor.validation.noChanges": "Il n'y a aucune modification à enregistrer.",
  "management.users.deleteDialog.title": "Supprimer le compte",
  "management.users.deleteDialog.description": "Cette opération supprime définitivement le compte et ne peut pas être annulée.",
  "management.users.deleteDialog.deletedData": "Ont également été supprimés : les onglets, les favoris, la liste noire, les paramètres de notification et les appareils connectés à ce compte.",
  "management.users.deleteDialog.retainedData": "Les ordres de paiement et les registres d'audit restent disponibles à des fins de rapprochement, de remboursement et d'enquête.",
  "management.users.deleteDialog.confirmLabel": "Saisissez l'identifiant de compte «{{username}} » pour confirmer",
  "management.users.deleteDialog.deleting": "Suppression en cours…",
  "management.users.deleteDialog.permanentDelete": "Supprimer définitivement",
  "management.signIn.loading": "Chargement de la configuration de connexion…",
  "management.signIn.loadFailed": "Impossible de charger la configuration. Veuillez réessayer.",
  "management.signIn.retryLoad": "Actualiser",
  "management.signIn.saveFailed": "Les modifications n'ont pas pu être enregistrées. Veuillez réessayer.",
  "management.signIn.revisionConflict": "Un autre administrateur a mis à jour cette configuration. La valeur actuelle a été rechargée ; veuillez la vérifier avant d'enregistrer à nouveau.",
  "management.signIn.registrationUpdateFailed": "La politique d'inscription n'a pas pu être mise à jour. Veuillez réessayer.",
  "management.signIn.registrationTitle": "Inscription en libre-service",
  "management.signIn.registrationDescription": "Google est le seul moyen d'inscription accessible au public. Une fois la vérification effectuée par Google, les nouveaux utilisateurs choisissent eux-mêmes leur identifiant et leur mot de passe.",
  "management.signIn.registrationOpen": "Inscription ouverte",
  "management.signIn.registrationClosed": "Fermé",
  "management.signIn.registrationHint": "Les nouveaux comptes bénéficient d'emblée de la formule gratuite. Les comptes existants associés à Google ne sont pas concernés par ce changement.",
  "management.signIn.registrationAria": "Autoriser l'inscription en libre-service",
  "management.signIn.registrationOpenedFeedback": "L'inscription en libre-service est ouverte. Les nouveaux utilisateurs de Google choisissent un identifiant et un mot de passe avant la création de leur compte gratuit.",
  "management.signIn.registrationClosedFeedback": "L'inscription en libre-service n'est plus disponible. Les comptes existants associés à Google peuvent toujours se connecter.",
  "management.signIn.googleTitle": "Connexion via Google",
  "management.signIn.googleDescription": "La seule procédure d'inscription en libre-service. Créez un client OAuth dans Google Cloud avant de l'activer.",
  "management.signIn.enabled": "Activé",
  "management.signIn.disabled": "Personnes en situation de handicap",
  "management.signIn.enabledHint": "La page de connexion affiche « Continuer avec Google ».",
  "management.signIn.disabledHint": "Ajoutez tous les identifiants et activez le commutateur avant qu'il ne soit disponible.",
  "management.signIn.originMismatchHint": "Cette instance nécessite son propre client OAuth et sa propre URI de redirection : {{redirectUri}}",
  "management.signIn.enableAria": "Activer la connexion via Google",
  "management.signIn.savedUsable": "Enregistré. La page de connexion affiche désormais « Continuer avec Google ».",
  "management.signIn.savedIncomplete": "Enregistré. L'entrée s'affiche une fois que toutes les informations d'identification sont renseignées et que la connexion Google est activée.",
  "management.signIn.secretStoredHint": "Enregistré et en écriture seule pour des raisons de sécurité. Laissez ce champ vide pour conserver le mot de passe actuel.",
  "management.signIn.secretMissingHint": "Non défini.",
  "management.signIn.clientIdLabel": "Identifiant client",
  "management.signIn.clientIdPlaceholder": "xxxxxxxx.apps.googleusercontent.com",
  "management.signIn.clientSecretLabel": "Clé secrète du client",
  "management.signIn.secretKeepPlaceholder": "Ne rien indiquer pour ne rien modifier",
  "management.signIn.secretPastePlaceholder": "Coller la clé secrète du client",
  "management.signIn.showSecret": "Afficher le secret client",
  "management.signIn.hideSecret": "Masquer le secret client",
  "management.signIn.redirectUriLabel": "URI de redirection",
  "management.signIn.redirectUriHint": "Cette valeur doit correspondre exactement à celle enregistrée dans Google Cloud, sinon Google rejettera la demande.",
  "management.signIn.save": "Enregistrer",
  "management.signIn.checking": "Vérification en cours…",
  "management.signIn.checkClient": "Vérifier le client",
  "management.signIn.reload": "Actualiser",
  "management.signIn.unsaved": "Non enregistré",
  "management.signIn.discard": "Ignorer les modifications",
  "management.signIn.validation.clientIdRequired": "Saisissez l'identifiant client.",
  "management.signIn.validation.clientIdInvalid": "L'identifiant client doit se terminer par .apps.googleusercontent.com et ne contenir aucun espace.",
  "management.signIn.validation.clientSecretRequired": "Saisissez la clé secrète du client.",
  "management.signIn.validation.clientSecretInvalid": "La clé secrète du client ne doit pas contenir d'espaces ni dépasser 256 caractères.",
  "management.signIn.validation.redirectUriRequired": "Saisissez l'URI de redirection.",
  "management.signIn.validation.redirectUriCurrentOrigin": "Utilisez l'URI de redirection de ce site : {{redirectUri}}",
  "management.signIn.disabledReasons.registrationSaving": "La politique d'inscription est en cours de mise à jour. Veuillez patienter jusqu'à ce que celle-ci soit terminée.",
  "management.signIn.disabledReasons.configSaving": "La configuration Google est en cours d'enregistrement. Veuillez patienter jusqu'à la fin de l'opération.",
  "management.signIn.disabledReasons.registrationNeedsGoogle": "Enregistrez l'ensemble des identifiants et activez la connexion via Google avant de lancer la procédure d'inscription en libre-service.",
  "management.signIn.disabledReasons.saveBeforeToggle": "Enregistrez les modifications apportées aux champs avant de modifier le statut de connexion Google.",
  "management.signIn.disabledReasons.closeRegistrationFirst": "Fermer l'inscription en libre-service avant de désactiver son seul point d'accès public.",
  "management.signIn.disabledReasons.completeConfigFirst": "Enregistrez d'abord l'ensemble des identifiants OAuth pour ce site.",
  "management.signIn.disabledReasons.noChanges": "Il n'y a aucune modification à enregistrer.",
  "management.signIn.disabledReasons.nothingToDiscard": "Il n'y a aucune modification de configuration de connexion non enregistrée.",
  "management.signIn.disabledReasons.dirtyReload": "Enregistrez ou supprimez la configuration de connexion non enregistrée avant de recharger la page.",
  "management.signIn.disabledReasons.checking": "Le client Google est en cours de vérification. Veuillez patienter jusqu'à la fin de l'opération.",
  "management.signIn.disabledReasons.saveBeforeCheck": "Enregistrez les modifications en cours avant de vérifier le client enregistré.",
  "management.signIn.check.requestFailed": "La vérification du client n'a pas pu être effectuée. Veuillez réessayer dans quelques instants.",
  "management.signIn.check.incomplete": "L'identifiant client, la clé secrète client et l'URI de redirection sont tous obligatoires.",
  "management.signIn.check.invalidConfig": "La configuration OAuth n'est pas valide. Vérifiez les champs et réessayez.",
  "management.signIn.check.clientError": "Le serveur n'a pas pu lancer la vérification. Veuillez réessayer dans quelques instants.",
  "management.signIn.check.unreachable": "Le serveur ne parvient pas à se connecter à Google. Vérifiez la connectivité sortante.",
  "management.signIn.check.ok": "Google reconnaît ce client. Effectuez une connexion Google valide pour confirmer votre consentement et la réception du rappel.",
  "management.signIn.check.invalidClient": "L'identifiant client ou la clé secrète client est incorrect(e). Vérifiez ces deux éléments dans Google Cloud.",
  "management.signIn.check.redirectMismatch": "L'URI de redirection ne correspond pas à celle de Google Cloud. Les valeurs doivent être identiques.",
  "management.signIn.check.originMismatch": "L'URI de redirection doit appartenir à ce site. Les environnements de développement et de production doivent disposer de clients OAuth distincts.",
  "management.signIn.check.unexpected": "Google a renvoyé une réponse inattendue ({{code}}). Veuillez réessayer dans quelques instants.",
  "management.signIn.cloudTitle": "Configuration de Google Cloud",
  "management.signIn.cloudDescription": "Collez la clé secrète du client uniquement dans le champ en lecture seule ci-dessus. Le serveur ne la renvoie jamais sur cette page.",
  "management.signIn.cloudSteps.project": "Ouvrez le projet Google Cloud ZML Monitor existant ; ne le créez que lors de la première configuration. Les environnements de développement et de production partagent le même projet, mais pas le même client OAuth.",
  "management.signIn.cloudSteps.audience": "API et services ouverts → Écran de consentement OAuth : sélectionnez « Externe », puis ajoutez le nom de l'application et l'adresse e-mail d'assistance.",
  "management.signIn.cloudSteps.scopes": "Ne demandez que l'OpenID et l'adresse e-mail. N'ajoutez pas de profil ni aucune autre autorisation.",
  "management.signIn.cloudSteps.production": "Dans la section « Audience », modifiez le statut de publication en « En production ». La phase de test est réservée aux utilisateurs testeurs répertoriés.",
  "management.signIn.cloudSteps.client": "Dans le cadre de ce même projet, créez une application Web cliente distincte pour ce site ; utilisez ZML Monitor Test pour le développement et ZML Monitor Production pour la production.",
  "management.signIn.cloudSteps.redirect": "Définissez l'URI de redirection autorisée comme suit :",
  "management.signIn.cloudSteps.verify": "Enregistrez, vérifiez le client, puis effectuez une véritable autorisation Google, un rappel et une connexion. Une vérification réussie du client ne constitue pas un test de bout en bout.",
  "demo.intro": "Vous consultez actuellement la démo en direct : cours en temps réel du BTC, de l'ETH et du SOL sur toutes les places de marché. Vous pouvez explorer toutes les fonctionnalités, et aucune de vos modifications n’est enregistrée.",
  "demo.readOnly": "La version de démonstration n'enregistre pas les modifications. Créez un compte pour conserver vos propres filtres, vues et alertes pour chaque actif.",
  "demo.createAccount": "Créer un compte",
  "demo.dismiss": "Compris",
  "demo.pausedTitle": "La démo est ouverte dans un autre onglet",
  "demo.pausedDescription": "La démo en direct ne s'exécute que dans une seule fenêtre à la fois. Cliquez ici pour l'afficher dans cet onglet.",
  "demo.continueHere": "Continuer ici",
  "monitorWorkspace.tabPanel.toggle": "Panneau de l’onglet",
  "monitorWorkspace.tabPanel.close": "Fermer le panneau",
  "monitorWorkspace.tabPanel.resize": "Redimensionner le panneau",
  "monitorWorkspace.tabPanel.sections.overview": "Aperçu",
  "monitorWorkspace.tabPanel.deferred.loading": "Ouverture des sections d’édition…",
  "monitorWorkspace.tabPanel.deferred.unavailableTitle": "Les sections d’édition sont temporairement indisponibles",
  "monitorWorkspace.tabPanel.trade.enabled": "Activé",
  "monitorWorkspace.tabPanel.trade.disabled": "Désactivé",
  "monitorWorkspace.settingsSheet.footer.noChanges": "Aucune modification non enregistrée.",
  "monitorWorkspace.tabs.defaultName": "Nouvel onglet",
  "monitorWorkspace.tabs.createFromCurrent": "Enregistrer la vue actuelle comme nouvel onglet",
  "monitorWorkspace.tabs.createBlank": "Nouvel onglet vide",
  "monitorWorkspace.tabs.deleteLastReason": "Conservez au moins un onglet de combinaison",
  "monitorWorkspace.tabs.deletedFeedback": "« {{name}} » supprimé",
  "monitorWorkspace.tabs.undo": "Annuler",
  "monitorWorkspace.tabs.duplicatedFeedback": "Copié. Sur la copie, Feishu et l’envoi vers ZML Trade sont désactivés ; ses conditions de correspondance sont actives, l’alerte web s’applique donc immédiatement.",
  "monitorWorkspace.tabs.openSettings": "Ouvrir les réglages",
  "monitorWorkspace.tabs.renameField": "Renommer {{name}}",
  "monitorWorkspace.tabs.nameIssue.taken": "Un onglet de combinaison porte déjà ce nom",
  "monitorWorkspace.tabs.nameIssue.tooLong": "Les noms font au plus 80 caractères",
  "monitorWorkspace.tabs.nameIssue.empty": "Saisissez un nom",
  "monitorWorkspace.workspaceErrors.nameConflict": "Un onglet de combinaison porte déjà ce nom. Choisissez-en un autre.",
  "fundingPage.viewPanel.toggle": "Panneau de la vue",
  "fundingPage.viewPanel.close": "Fermer le panneau",
  "fundingPage.viewPanel.resize": "Redimensionner le panneau",
  "fundingPage.viewPanel.sectionsAria": "Sections du panneau de la vue de financement",
  "fundingPage.viewPanel.sections.overview": "Aperçu",
  "fundingPage.viewPanel.sections.scope": "Périmètre de surveillance",
  "fundingPage.views.defaultName": "Nouvelle vue",
  "fundingPage.views.createFromCurrent": "Enregistrer la vue actuelle comme nouvelle vue",
  "fundingPage.views.createBlank": "Nouvelle vue vide",
  "fundingPage.views.deletedFeedback": "« {{name}} » supprimé",
  "fundingPage.views.undo": "Annuler",
  "fundingPage.views.duplicatedFeedback": "Dupliqué en « {{name}} »",
  "fundingPage.views.renameField": "Renommer {{name}}",
  "fundingPage.views.nameIssue.taken": "Une vue porte déjà ce nom",
  "fundingPage.views.nameIssue.tooLong": "Les noms font au plus 80 caractères",
  "fundingPage.views.nameIssue.empty": "Saisissez un nom",
  "monitorWorkspace.settingsSheet.summary.conditionCount_one": "{{count}} condition",
  "monitorWorkspace.settingsSheet.summary.conditionCount_other": "{{count}} conditions",
  "monitorWorkspace.settingsSheet.summary.noConditions": "Aucune condition",
  "standalone.notificationSettings.context.accountSound.status.otherTab": "Joué par un autre onglet",
  "monitorWorkspace.settingsSheet.summary.feishuIdle": "Feishu activé mais sans condition, rien n’est envoyé",
  "account.notificationSettings.sound.intervalHint": "5 à 60 secondes, nombres entiers",
  "account.notificationSettings.sound.intervalRange": "Saisissez un nombre entier entre 5 et 60 secondes",
  "account.notificationSettings.deliveryHealth.title": "Canal Feishu encombré",
  "account.notificationSettings.deliveryHealth.description": "Depuis ce démarrage : {{skipped}} notifications répétées ont cédé au budget du canal et {{rejected}} ont été rejetées par la limitation de débit Feishu. Les premières notifications ne cèdent jamais ; réduisez l’intervalle seulement si le canal a de la marge.",
  "billingManagement.orders.months_many": "{{count}} mois",
  "monitorWorkspace.settingsSheet.summary.conditionCount_many": "{{count}} conditions",
  "monitorWorkspace.tabs.alertCountSuffix_many": ", {{count}} alertes",
  "monitorWorkspace.tabs.allViewsCount_many": "{{count}} vues",
  "monitorWorkspace.tabs.itemAlerts_many": "{{count}} alertes",
  "monitorWorkspace.tabs.overflowAriaWithAlerts_many": "{{label}}, {{itemCount}} au total, {{count}} alertes",
  "monitorWorkspace.tabs.overflowMore_many": "{{count}} de plus"
}
