{
  "LOADING": "Chargement...",
  "MENU": {
    "OVERVIEW": "Aperçu",
    "QUEUES": "FILES",
    "SEARCH_INPUT_PLACEHOLDER": "Filtrer les files",
    "PAUSED": "En pause",
    "EXPAND_ALL": "Développer tous les groupes",
    "COLLAPSE_ALL": "Réduire tous les groupes",
    "EXPAND_SIDEBAR": "Développer la barre latérale",
    "COLLAPSE_SIDEBAR": "Réduire la barre latérale",
    "METRICS_HISTORY": "Historique des métriques",
    "SCHEDULERS": "Planificateurs"
  },
  "DASHBOARD": {
    "JOBS_COUNT_one": "{{count}} Tâche",
    "JOBS_COUNT_many": "{{count}} Tâches",
    "JOBS_COUNT_other": "{{count}} Tâches",
    "JOBS_COUNT": "{{count}} Tâches",
    "EMPTY_STATE": "Aucune file à afficher.",
    "EMPTY_STATE_FILTERED": "Aucune file n'a de tâches {{status}}.",
    "SORTING": {
      "TITLE": "Trier par",
      "FAILED": "Tâches échouées",
      "DELAYED": "Tâches retardées",
      "WAITING": "Tâches en attente",
      "ACTIVE": "Tâches actives",
      "COMPLETED": "Tâches terminées",
      "ALPHABETICAL": "Alphabétique (A-Z)"
    },
    "VIEW": {
      "TITLE": "Vue",
      "FLAT": "Plat",
      "GROUPED": "Groupé"
    }
  },
  "JOB": {
    "DELAY_CHANGED": "*Délai modifié; le nouveau temps d'exécution est actuellement inconnu",
    "NOT_FOUND": "Tâche non trouvée",
    "STATUS": "Statut : {{status}}",
    "ADDED_AT": "Ajouté à",
    "WILL_RUN_AT": "S'exécutera à",
    "DELAYED_FOR": "retardé de",
    "PROCESS_STARTED_AT": "Processus démarré à",
    "PROCESSED_BY": "par {{processedBy}}",
    "FAILED_AT": "Échoué à",
    "FINISHED_AT": "Terminé à",
    "ATTEMPTS": "tentative #{{attempts}}",
    "REPEAT": "répéter {{count}} fois",
    "REPEAT_WITH_LIMIT": "$t(JOB.REPEAT) / {{limit}}",
    "DURATION": {
      "SECS": "{{duration}} secondes",
      "MILLI_SECS": "{{duration}} millisecondes"
    },
    "SHOW_DATA_BTN": "Afficher les données",
    "SHOW_PROGRESS_BTN": "Afficher la progression",
    "SHOW_OPTIONS_BTN": "Afficher les options",
    "SHOW_ERRORS_BTN": "Afficher les erreurs",
    "NA": "N/A",
    "NO_PROGRESS": "Aucune donnée de progression disponible",
    "NO_ERRORS": "Aucune erreur enregistrée",
    "NO_LOGS": "Aucun journal disponible",
    "LOGS": {
      "FILTER_PLACEHOLDER": "Filtres"
    },
    "ACTIONS": {
      "PROMOTE": "Promouvoir",
      "CLEAN": "Supprimer",
      "RETRY": "Réessayer",
      "UPDATE_DATA": "Mettre à jour les données",
      "DUPLICATE": "Dupliquer",
      "CONFIRM": {
        "PROMOTE": "Êtes-vous sûr de vouloir promouvoir ce poste ?",
        "RETRY": "Êtes-vous sûr de vouloir réessayer ce poste ?",
        "CLEAN": "Êtes-vous sûr de vouloir nettoyer ce poste ?",
        "REMOVE_JOB_SCHEDULER_TITLE": "Supprimer toute la planification ?",
        "REMOVE_JOB_SCHEDULER": "Cette tâche est la prochaine exécution du planificateur \"{{schedulerId}}\" et ne peut pas être supprimée seule. Supprimer le planificateur arrête la planification et supprime cette tâche."
      }
    },
    "TABS": {
      "DEFAULT": "Par défaut",
      "DATA": "Données",
      "PROGRESS": "Progression",
      "OPTIONS": "Options",
      "LOGS": "Journaux",
      "ERROR": "Erreur",
      "TIMELINE": "Chronologie"
    }
  },
  "QUEUE": {
    "NOT_FOUND": "File non trouvée",
    "EMPTY_STATE": "Aucune tâche {{status}} dans cette file.",
    "ACTIONS": {
      "MODAL_TITLE": "",
      "RETRY_ALL": "Tout réessayer",
      "RETRY_ALL_FAILED": "Réessayer les {{count}} tâches échouées",
      "RETRY_FAILED_IN_ALL_QUEUES": "Réessayer {{count}} tâches échouées de toutes les files",
      "RETRY_FAILED_IN_GROUP": "Réessayer {{count}} tâches échouées du groupe",
      "PROMOTE_ALL": "Tout promouvoir",
      "CLEAN_ALL": "Tout nettoyer",
      "RESUME": "Reprendre",
      "PAUSE": "Pause",
      "RESUME_ALL": "Reprendre tout",
      "PAUSE_ALL": "Mettre tout en pause",
      "EMPTY": "Vider",
      "OBLITERATE": "Oblitérer",
      "ADD_JOB": "Ajouter une tâche",
      "SET_CONCURRENCY": "Définir la concurrence",
      "CONFIRM": {
        "RETRY_ALL": "Êtes-vous sûr de vouloir réessayer toutes les tâches {{status}} ?",
        "RETRY_FAILED_QUEUES": "Êtes-vous sûr de vouloir réessayer {{jobs}} tâches échouées réparties sur {{count}} files ?",
        "CLEAN_ALL": "Êtes-vous sûr de vouloir supprimer toutes les tâches {{status}} ?",
        "PROMOTE_ALL": "Êtes-vous sûr de vouloir promouvoir toutes les tâches retardées ?",
        "PAUSE_QUEUE": "Êtes-vous sûr de vouloir mettre en pause le traitement de la file ?",
        "EMPTY_QUEUE": "Êtes-vous sûr de vouloir vider la file ?",
        "OBLITERATE_QUEUE": "Êtes-vous sûr de vouloir oblitérer cette file?\n\nCela supprimera complètement la file et toutes ses clés Redis.\nLa file doit d'abord être mise en pause.",
        "RESUME_QUEUE": "Êtes-vous sûr de vouloir reprendre le traitement de la file ?",
        "PAUSE_ALL": "Êtes-vous sûr de vouloir mettre toutes les files d'attente en pause ?",
        "RESUME_ALL": "Êtes-vous sûr de vouloir reprendre toutes les files d'attente ?",
        "PAUSE_GROUP": "Êtes-vous sûr de vouloir mettre en pause les {{count}} files de ce groupe ?",
        "RESUME_GROUP": "Êtes-vous sûr de vouloir reprendre les {{count}} files de ce groupe ?"
      },
      "TOAST": {
        "RETRY_PENDING": "Nouvelle tentative de toutes les tâches {{status}}...",
        "RETRY_DONE": "Toutes les tâches {{status}} ont été renvoyées dans la file",
        "RETRY_SKIPPED": "{{count}} ids ignorés, sans données de tâche associées. Ces données sont généralement perdues à cause d'une politique d'éviction Redis autre que noeviction.",
        "RETRY_QUEUES_PENDING": "Nouvelle tentative de {{jobs}} tâches échouées dans {{count}} files...",
        "RETRY_QUEUES_DONE": "{{jobs}} tâches échouées de {{count}} files ont été renvoyées dans leurs files"
      },
      "PAUSE_GROUP": "Mettre en pause toutes les files du groupe",
      "RESUME_GROUP": "Reprendre toutes les files du groupe",
      "GROUP_ACTIONS": "Actions de groupe"
    },
    "STATUS": {
      "LATEST": "Dernières",
      "ACTIVE": "Actives",
      "WAITING": "En attente",
      "WAITING-CHILDREN": "En attente des enfants",
      "PRIORITIZED": "Priorisées",
      "COMPLETED": "Terminées",
      "FAILED": "Échouées",
      "DELAYED": "Retardées",
      "PAUSED": "En pause"
    },
    "INFO": {
      "TITLE": "Informations sur la file",
      "OVERVIEW": "Aperçu",
      "NAME": "Nom",
      "DISPLAY_NAME": "Nom affiché",
      "TYPE": "Type",
      "STATE": "État",
      "RUNNING": "En cours",
      "PAUSED": "En pause",
      "READ_ONLY": "Lecture seule",
      "RETRIES": "Nouvelles tentatives autorisées",
      "GLOBAL_CONCURRENCY": "Concurrence globale",
      "WORKERS": "Workers",
      "DELIMITER": "Délimiteur de groupe",
      "TOTAL_JOBS": "Total des tâches",
      "DEFAULTS": "Options de tâche par défaut",
      "DESCRIPTION": "Description",
      "NOT_SET": "Non défini",
      "YES": "Oui",
      "NO": "Non"
    },
    "SCHEDULERS_LINK": "Planificateurs ({{count}})",
    "WORKERS": {
      "TITLE": "Workers connectés",
      "NONE": "Aucun worker",
      "NONE_TOOLTIP": "Rien ne consomme cette file",
      "CONNECTED": "connecté {{since}}",
      "EMPTY": "Rien ne consomme cette file.",
      "EMPTY_HINT": "Vérifiez qu'un processus worker tourne et pointe vers le même Redis.",
      "EMPTY_PAUSED": "Cette file est en pause, aucun worker n'est attendu."
    }
  },
  "METRICS": {
    "TITLE": "Débit (jobs / min)",
    "COMPLETED": "Terminés",
    "FAILED": "Échoués",
    "COMPLETED_PER_MIN": "Terminés / min",
    "FAILED_PER_MIN": "Échoués / min",
    "PEAK_PER_MIN": "Pic / min",
    "WINDOW_COMPLETED": "Terminés ({{minutes}} dernières min)",
    "NOW": "Maintenant",
    "MINUTES_AGO": "il y a {{minutes}} min",
    "PER_MIN_UNIT": "/min",
    "SHOW": "Afficher les métriques",
    "HIDE": "Masquer les métriques",
    "EMPTY": "Aucune métrique collectée pour l'instant. Activez les métriques sur votre worker (ex. metrics: { maxDataPoints: MetricsTime.ONE_WEEK }) pour afficher le débit.",
    "RANGE_60M": "60 min",
    "RANGE_7D": "7 j",
    "RANGE_30D": "30 j",
    "RANGE_90D": "90 j",
    "HISTORY_EMPTY": "Aucun historique enregistré pour cette période.",
    "DAILY_COMPLETED": "Total terminés",
    "DAILY_FAILED": "Total échoués",
    "PARTIAL_PERIOD": "Cette période est encore en cours.",
    "TAB_THROUGHPUT": "Débit",
    "TAB_LATENCY": "Latence",
    "P95_RUN_TIME": "Exécution p95",
    "P95_WAIT_TIME": "Attente p95",
    "NOT_AVAILABLE": "n/d"
  },
  "LATENCY": {
    "TITLE": "Latence des jobs",
    "GROUP_RUN": "Exécution",
    "GROUP_WAIT": "Attente",
    "RUN_P50": "Exécution p50",
    "RUN_P95": "Exécution p95",
    "RUN_P99": "Exécution p99",
    "WAIT_P50": "Attente p50",
    "WAIT_P95": "Attente p95",
    "WAIT_P99": "Attente p99",
    "QUEUE_AGE": "Job le plus ancien en attente",
    "P50": "p50",
    "P95": "p95",
    "P99": "p99",
    "LOG_SCALE_NOTE": "échelle logarithmique",
    "LOW_CONFIDENCE": "Fiabilité faible : {{count}} échantillons",
    "LOW_CONFIDENCE_one": "Fiabilité faible : {{count}} échantillon",
    "LOW_CONFIDENCE_many": "Fiabilité faible : {{count}} échantillons",
    "LOW_CONFIDENCE_other": "Fiabilité faible : {{count}} échantillons",
    "EMPTY_NO_DATA": "Aucune donnée de latence enregistrée pour cette période.",
    "EMPTY_NO_COMPLETIONS": "Cette file n'a terminé aucun job sur cette période.",
    "HOURLY_GRANULARITY_ONLY": "L'historique de latence est enregistré avec une granularité horaire, il n'y a donc rien à afficher pour les 60 dernières minutes. Passez à 7 j, 30 j ou 90 j pour le voir."
  },
  "CONFIRM": {
    "DEFAULT_TITLE": "Êtes-vous sûr ?",
    "CONFIRM_BTN": "Confirmer",
    "CANCEL_BTN": "Annuler"
  },
  "MODAL": {
    "CLOSE_BTN": "Fermer"
  },
  "REDIS": {
    "TITLE": "Détails de Redis",
    "TITLE_POSTGRES": "Détails de PostgreSQL",
    "PORT": "Port",
    "MEMORY_USAGE": "Utilisation de la mémoire",
    "PEEK_MEMORY": "Utilisation maximale de la mémoire",
    "FRAGMENTATION_RATIO": "Taux de fragmentation",
    "CONNECTED_CLIENTS": "Clients connectés",
    "BLOCKED_CLIENTS": "Clients bloqués",
    "VERSION": "Version",
    "MODE": "Mode",
    "OS": "OS",
    "UP_TIME": "Temps de fonctionnement",
    "ERROR": {
      "MEMORY_USAGE": "Impossible de récupérer les statistiques de la mémoire"
    }
  },
  "SETTINGS": {
    "TITLE": "Paramètres",
    "LANGUAGE": "Langue",
    "POLLING_INTERVAL": "Intervalle de sondage",
    "POLLING_OPTIONS": {
      "OFF": "Désactivé",
      "SECS": "{{count}} secondes",
      "MINS": "{{count}} minutes",
      "MINS_one": "{{count}} minute",
      "MINS_many": "{{count}} minutes",
      "MINS_other": "{{count}} minutes"
    },
    "DEFAULT_JOB_TAB": "Onglet de tâche par défaut",
    "JOBS_PER_PAGE": "Tâches par page (1-50)",
    "CONFIRM_QUEUE_ACTIONS": "Confirmer les actions de file",
    "CONFIRM_JOB_ACTIONS": "Confirmer les actions de tâche",
    "USE_COLLAPSIBLE_JSON": "Utiliser le JSON pliable",
    "COLLAPSE_JOB": "Réduire la tâche",
    "COLLAPSE_JOB_DATA": "Réduire les données de la tâche",
    "COLLAPSE_JOB_PROGRESS": "Réduire la progression de la tâche",
    "COLLAPSE_JOB_OPTIONS": "Réduire les options de la tâche",
    "COLLAPSE_JOB_ERROR": "Réduire l'erreur de la tâche",
    "DEFAULT_COLLAPSE_DEPTH": "Profondeur de réduction JSON par défaut (0-10)",
    "SORT_QUEUES": "Trier les files (A-Z, groupes en premier)",
    "DARK_MODE": "Mode sombre",
    "SECTIONS": {
      "GENERAL": "Général",
      "QUEUES": "Files",
      "JOBS": "Tâches"
    },
    "GROUP_QUEUES": "Grouper les files par catégorie",
    "GROUP_QUEUES_HELP": "Divisez la vue d'ensemble en sections pliables à partir du délimiteur dans les noms de files, le même regroupement que celui utilisé par la barre latérale."
  },
  "CONCURRENCY": {
    "TITLE": "Concurrence globale",
    "DESCRIPTION": "Nombre maximum de tâches traitées en parallèle sur tous les workers. Définir à 0 pour supprimer la limite.",
    "CONCURRENCY": "Concurrence",
    "SAVE": "Enregistrer"
  },
  "ADD_JOB": {
    "TITLE": "Ajouter une tâche",
    "TITLE_duplicate": "Dupliquer une tâche",
    "QUEUE_NAME": "Nom de la file",
    "JOB_NAME": "Nom de la tâche",
    "JOB_DATA": "Données de la tâche",
    "JOB_OPTIONS": "Options de la tâche",
    "ADD": "Ajouter",
    "DUPLICATE": "Dupliquer"
  },
  "UPDATE_JOB_DATA": {
    "TITLE": "Mettre à jour les données de tâche",
    "UPDATE": "Mettre à jour",
    "JOB_DATA": "Données de tâche"
  },
  "CLIPBOARD": {
    "COPY_FAILED": "Échec de la copie dans le presse-papiers. Votre navigateur peut ne pas prendre en charge cette fonctionnalité ou la page n'est pas servie via HTTPS."
  },
  "ERRORS": {
    "INTERNAL_SERVER_ERROR": "Erreur interne du serveur",
    "INVALID_BEFORE_DATE": "Valeur before invalide : format YYYY-MM-DD attendu",
    "INVALID_CONCURRENCY": "Valeur de concurrence invalide",
    "INVALID_DATE_RANGE": "Plage from/to invalide",
    "INVALID_GRANULARITY": "Granularité invalide : {{granularity}}",
    "INVALID_QUEUE": "File invalide",
    "INVALID_SCHEDULER_END_DATE": "La date de fin doit être dans le futur",
    "INVALID_SCHEDULER_INTERVAL": "L'intervalle doit être un nombre positif de millisecondes",
    "INVALID_SCHEDULER_LIMIT": "Les exécutions maximales doivent être un entier positif",
    "INVALID_SCHEDULER_PATTERN": "La planification a été refusée, vérifiez le motif cron",
    "INVALID_SCHEDULER_SCHEDULE": "Indiquez un motif cron ou un intervalle, pas les deux",
    "JOB_BELONGS_TO_JOB_SCHEDULER": "La tâche appartient à un planificateur",
    "JOB_BELONGS_TO_JOB_SCHEDULER_DETAILS": "La tâche {{jobId}} est la prochaine exécution du planificateur \"{{jobSchedulerId}}\" et ne peut pas être supprimée seule. Supprimez le planificateur pour arrêter la planification.",
    "JOB_IS_ACTIVE": "La tâche est en cours d'exécution",
    "JOB_IS_ACTIVE_DETAILS": "La tâche {{jobId}} est traitée par un worker et ne peut pas être supprimée avant la fin de son exécution.",
    "JOB_NOT_FOUND": "Tâche non trouvée",
    "JOB_NOT_RETRIABLE": "La tâche est à l'état \"{{state}}\" et ne peut pas être relancée",
    "JOB_SCHEDULER_EDIT_NOT_SUPPORTED": "Ce type de file ne permet pas de modifier une planification",
    "JOB_SCHEDULER_NOT_FOUND": "Planificateur non trouvé",
    "QUEUE_NOT_FOUND": "File non trouvée",
    "QUEUE_NOT_PAUSED": "La file doit être en pause avant d'être oblitérée",
    "QUEUE_READ_ONLY": "Méthode non autorisée sur une file en lecture seule",
    "REDIS_STATS_UNAVAILABLE": "Les détails Redis ne sont pas disponibles pour le backend de cette file",
    "STATUS_NOT_RETRIABLE": "\"{{status}}\" n'est pas un état relançable",
    "WORKERS_DISABLED": "Le rapport des workers est désactivé",
    "INVALID_METRIC": "Métrique invalide"
  },
  "METRICS_HISTORY": {
    "TITLE": "Historique des métriques",
    "EMPTY": "Aucun historique enregistré pour le moment.",
    "TOTAL_COMPLETED": "Total terminés",
    "TOTAL_FAILED": "Total échoués",
    "RANGE_7D": "7 j",
    "RANGE_30D": "30 j",
    "RANGE_90D": "90 j",
    "BY_QUEUE": "Par file",
    "ACTIONS": "Actions de l'historique des métriques",
    "QUEUE": "File",
    "COMPLETED": "Terminés",
    "FAILED": "Échoués",
    "RUNS": "Exécutions",
    "P95_RUNTIME": "Exécution p95",
    "P95_RUN_TIME": "Exécution p95",
    "P95_WAIT_TIME": "Attente p95",
    "NOT_AVAILABLE": "n/d",
    "BAR_LABEL": "{{completed}} terminés, {{failed}} échoués",
    "FAILURE_RATE": "{{rate}} des exécutions ont échoué",
    "STORAGE": {
      "TITLE": "Stockage",
      "EMPTY": "Rien de stocké pour le moment.",
      "TOTAL": "Total",
      "MINUTE_TIER": "Détail minute",
      "HOUR_TIER": "Horaire",
      "DAY_TIER": "Totaux journaliers",
      "RANGE": "Enregistré",
      "SIZE": "Taille",
      "MINUTES": "Minutes",
      "TIER_NOTE": "Le détail minute est de loin le plus gros niveau. Les graphiques lisent les totaux journaliers, donc une rétention minute plus courte réduit le stockage sans changer ce que vous voyez ici.",
      "TRIM_BTN": "Conserver uniquement les {{range}} derniers",
      "CLEAR_BTN": "Effacer tout l'historique",
      "CONFIRM_TITLE": "Supprimer l'historique des métriques enregistré ?",
      "CONFIRM_TRIM": "Tout ce qui a été enregistré avant {{date}} sera supprimé, en conservant les {{range}} derniers. Cette action est irréversible et les jours supprimés n'apparaîtront plus dans aucun graphique.",
      "CONFIRM_CLEAR": "La totalité des {{size}} de l'historique enregistré sera supprimée pour chaque file. Cette action est irréversible. L'enregistrement continue, donc les nouvelles données recommencent à s'accumuler à partir de la prochaine capture."
    }
  },
  "SCHEDULERS": {
    "TITLE": "Planificateurs",
    "EMPTY": "Aucun planificateur enregistré.",
    "FILTER_BY_QUEUE": "Filtrer par file",
    "ALL_QUEUES": "Toutes les files",
    "TEMPLATE": "Modèle de tâche",
    "EVERY": "toutes les {{interval}}",
    "OF_LIMIT": "sur {{limit}}",
    "COLUMNS": {
      "SCHEDULER": "Planificateur",
      "QUEUE": "File",
      "SCHEDULE": "Planification",
      "NEXT_RUN": "Prochaine exécution",
      "LAST_RUN": "Dernière exécution",
      "RUNS": "Exécutions"
    },
    "INTERVAL": {
      "MILLISECONDS": "{{count}}ms",
      "SECONDS": "{{count}}s",
      "MINUTES": "{{count}}m",
      "HOURS": "{{count}}h",
      "DAYS": "{{count}}d"
    },
    "ACTIONS": {
      "EDIT": "Modifier la planification",
      "REMOVE": "Supprimer le planificateur"
    },
    "CONFIRM": {
      "REMOVE": "Voulez-vous vraiment supprimer le planificateur « {{id}} » ? Ses prochaines exécutions sont arrêtées jusqu'à ce que l'application l'enregistre de nouveau."
    },
    "TOAST": {
      "REMOVE_PENDING": "Suppression du planificateur {{id}}",
      "REMOVE_DONE": "Planificateur {{id}} supprimé",
      "UPDATE_PENDING": "Mise à jour du planificateur {{id}}",
      "UPDATE_DONE": "Planificateur {{id}} mis à jour"
    },
    "EDIT": {
      "TITLE": "Modifier le planificateur {{id}}",
      "DESCRIPTION": "Seule la planification change. La tâche créée conserve son nom, ses données et ses options.",
      "OVERWRITE_NOTE": "L'application peut enregistrer de nouveau ce planificateur à son redémarrage, ce qui écrase la planification définie ici.",
      "SAVE": "Enregistrer",
      "KIND": "Type de planification",
      "KIND_PATTERN": "Motif cron",
      "KIND_EVERY": "Intervalle",
      "PATTERN": "Motif cron",
      "TZ": "Fuseau horaire",
      "EVERY": "Intervalle (ms)",
      "LIMIT": "Exécutions maximales",
      "END_DATE": "Date de fin"
    }
  }
}
