{
  "errors": {
    "VALIDATION_ERROR": "Erreur de validation",
    "INVALID_CREDENTIALS": "Email ou mot de passe incorrect",
    "NOT_AUTHENTICATED": "Vous devez être connecté",
    "NOT_FOUND": "Ressource introuvable",
    "TECH_STEP_NOT_FOUND": "Cette technique n'existe pas",
    "RETRAIN_ALREADY_RUNNING": "Un ré-entraînement est déjà en cours",
    "INTERNAL_ERROR": "Une erreur est survenue, réessayez plus tard"
  },
  "admin": {
    "common": {
      "comingSoon": "Section à venir.",
      "loading": "Chargement…",
      "loadError": "Impossible de charger les données, réessayez plus tard."
    },
    "login": {
      "title": "Administration",
      "emailLabel": "Email",
      "passwordLabel": "Mot de passe",
      "submit": "Se connecter",
      "submitting": "Connexion…"
    },
    "nav": {
      "dashboard": "Tableau de bord",
      "monitoring": "Monitoring",
      "corrections": "Corrections"
    },
    "layout": {
      "logout": "Se déconnecter"
    },
    "dashboard": {
      "title": "Tableau de bord",
      "lead": "Métriques d'utilisation de l'application.",
      "windowTotal": "{{n}} sur 30 j",
      "recipesBySource": "Recettes importées par source",
      "noImports": "Aucune recette importée.",
      "events": "Évènements enregistrés (30 j)",
      "kpi": {
        "users": "Utilisateurs",
        "households": "Foyers",
        "activeHouseholds": "Foyers actifs",
        "recipes": "Recettes",
        "recipesImported": "Recettes importées",
        "plannings": "Plannings",
        "planningItems": "Créneaux planifiés",
        "favorites": "Favoris",
        "corrections": "Corrections",
        "correctionsUnconsumed": "Corrections à traiter",
        "trainingSuggestions": "Suggestions d'entraînement",
        "admins": "Administrateurs"
      },
      "series": {
        "signups": "Inscriptions",
        "recipesCreated": "Recettes créées",
        "planningItemsAdded": "Ajouts au planning",
        "correctionsSubmitted": "Corrections soumises",
        "trainingSuggestions": "Suggestions générées"
      }
    },
    "monitoring": {
      "title": "Monitoring",
      "lead": "Santé des microservices et de la base de données.",
      "lastChecked": "Dernière vérification à {{time}}",
      "latency": "Latence",
      "detail": "Détail",
      "lastRun": "Dernier job",
      "never": "jamais",
      "jobFailed": "échec",
      "status": {
        "up": "OK",
        "degraded": "Dégradé",
        "down": "Hors service",
        "unknown": "Inconnu"
      },
      "service": {
        "postgres": "Base de données",
        "api": "API",
        "intent-service": "Service NLP (spaCy)",
        "tech-step-llm-worker": "Worker LLM"
      }
    },
    "corrections": {
      "title": "Corrections",
      "lead": "Tri des corrections utilisateur pour le ré-entraînement NLP.",
      "caveat": "Le gate F1 + backfill n'a de sens qu'APRÈS avoir édité training_data.py à la main et redémarré le service NLP (il ne s'entraîne qu'au démarrage). Cet écran ne peut faire ni l'un ni l'autre.",
      "noSuggestions": "Aucune suggestion pour ces filtres.",
      "synonyms": "Synonymes proposés (un par ligne)",
      "utterances": "Phrases proposées (une par ligne)",
      "save": "Enregistrer",
      "apply": "Appliquer",
      "reject": "Rejeter",
      "tab": {
        "suggestions": "Suggestions",
        "corrections": "Corrections brutes"
      },
      "filter": {
        "status": "Statut",
        "source": "Source",
        "consumed": "Consommée",
        "hasCorrected": "Technique corrigée",
        "any": "Toutes",
        "yes": "Oui",
        "no": "Non"
      },
      "snippet": {
        "title": "Snippet training_data.py",
        "help": "Agrège les synonymes/phrases des suggestions « applied » d'une technique, au format à coller dans training_data.py.",
        "keyPlaceholder": "clé de technique (ex. simmer)",
        "generate": "Générer"
      },
      "retrain": {
        "title": "Gate F1 + backfill",
        "help": "Lance l'évaluation de régression F1 puis, si elle passe, recalcule les techniques de toutes les étapes.",
        "run": "Lancer",
        "running": "En cours…",
        "passed": "OK — {{changed}}/{{total}} étape(s) recalculée(s)",
        "failed": "Échec du gate — aucun backfill"
      },
      "col": {
        "clause": "Clause",
        "change": "Changement",
        "created": "Créée",
        "consumed": "Consommée"
      }
    }
  }
}
