{
  "settings": {
    "language": "Langue",
    "theme": "Thème",
    "light": "Clair",
    "dark": "Sombre",
    "system": "Système"
  },
  "header": {
    "documents": "Documents",
    "knowledgeGraph": "Graphe de connaissances",
    "retrieval": "Récupération",
    "api": "API",
    "projectRepository": "Référentiel du projet",
    "logout": "Déconnexion",
    "frontendNeedsRebuild": "Le frontend nécessite une reconstruction",
    "themeToggle": {
      "switchToLight": "Passer au thème clair",
      "switchToDark": "Passer au thème sombre"
    }
  },
  "login": {
    "description": "Veuillez entrer votre compte et mot de passe pour vous connecter au système",
    "username": "Nom d'utilisateur",
    "usernamePlaceholder": "Veuillez saisir un nom d'utilisateur",
    "password": "Mot de passe",
    "passwordPlaceholder": "Veuillez saisir un mot de passe",
    "loginButton": "Connexion",
    "loggingIn": "Connexion en cours...",
    "successMessage": "Connexion réussie",
    "errorEmptyFields": "Veuillez saisir votre nom d'utilisateur et mot de passe",
    "errorInvalidCredentials": "Échec de la connexion, veuillez vérifier le nom d'utilisateur et le mot de passe",
    "authDisabled": "L'authentification est désactivée. Utilisation du mode sans connexion.",
    "guestMode": "Mode sans connexion"
  },
  "common": {
    "cancel": "Annuler",
    "save": "Sauvegarder",
    "saving": "Sauvegarde en cours...",
    "saveFailed": "Échec de la sauvegarde"
  },
  "documentPanel": {
    "clearDocuments": {
      "button": "Effacer",
      "tooltip": "Effacer les documents",
      "title": "Effacer les documents",
      "description": "Cette action supprimera tous les documents du système",
      "warning": "ATTENTION : Cette action supprimera définitivement tous les documents et ne peut pas être annulée !",
      "confirm": "Voulez-vous vraiment effacer tous les documents ?",
      "confirmPrompt": "Tapez 'yes' pour confirmer cette action",
      "confirmPlaceholder": "Tapez yes pour confirmer",
      "clearCache": "Effacer le cache LLM",
      "confirmButton": "OUI",
      "clearing": "Effacement en cours...",
      "timeout": "L'opération d'effacement a expiré, veuillez réessayer",
      "success": "Documents effacés avec succès",
      "cacheCleared": "Cache effacé avec succès",
      "cacheClearFailed": "Échec de l'effacement du cache :\n{{error}}",
      "failed": "Échec de l'effacement des documents :\n{{message}}",
      "error": "Échec de l'effacement des documents :\n{{error}}"
    },
    "deleteDocuments": {
      "button": "Supprimer",
      "tooltip": "Supprimer les documents sélectionnés",
      "title": "Supprimer les documents",
      "description": "Cette action supprimera définitivement les documents sélectionnés du système",
      "warning": "ATTENTION : Cette action supprimera définitivement les documents sélectionnés et ne peut pas être annulée !",
      "confirm": "Voulez-vous vraiment supprimer {{count}} document(s) sélectionné(s) ?",
      "confirmPrompt": "Tapez 'yes' pour confirmer cette action",
      "confirmPlaceholder": "Tapez yes pour confirmer",
      "confirmButton": "OUI",
      "deleteFileOption": "Supprimer également les fichiers téléchargés",
      "deleteFileTooltip": "Cochez cette option pour supprimer également les fichiers téléchargés correspondants sur le serveur",
      "deleteLLMCacheOption": "Supprimer également le cache LLM d'extraction",
      "success": "Pipeline de suppression de documents démarré avec succès",
      "failed": "Échec de la suppression des documents :\n{{message}}",
      "error": "Échec de la suppression des documents :\n{{error}}",
      "busy": "Le pipeline est occupé, veuillez réessayer plus tard",
      "notAllowed": "Aucune autorisation pour effectuer cette opération"
    },
    "selectDocuments": {
      "selectCurrentPage": "Sélectionner la page actuelle ({{count}})",
      "deselectAll": "Tout désélectionner ({{count}})"
    },
    "uploadDocuments": {
      "button": "Télécharger",
      "tooltip": "Télécharger des documents",
      "title": "Télécharger des documents",
      "description": "Glissez-déposez vos documents ici ou cliquez pour parcourir.",
      "single": {
        "uploading": "Téléchargement de {{name}} : {{percent}}%",
        "success": "Succès du téléchargement :\n{{name}} téléchargé avec succès",
        "failed": "Échec du téléchargement :\n{{name}}\n{{message}}",
        "error": "Échec du téléchargement :\n{{name}}\n{{error}}"
      },
      "batch": {
        "uploading": "Téléchargement des fichiers...",
        "success": "Fichiers téléchargés avec succès",
        "error": "Certains fichiers n'ont pas pu être téléchargés"
      },
      "generalError": "Échec du téléchargement\n{{error}}",
      "fileTypes": "Types pris en charge : TXT, MD, TEXTPACK, MDX, DOCX, PDF, PPTX, XLSX, RTF, ODT, EPUB, HTML, HTM, TEX, JSON, XML, YAML, YML, CSV, LOG, CONF, INI, PROPERTIES, SQL, BAT, SH, C, H, CPP, HPP, PY, JAVA, JS, TS, SWIFT, GO, RB, PHP, CSS, SCSS, LESS",
      "fileUploader": {
        "singleFileLimit": "Impossible de télécharger plus d'un fichier à la fois",
        "maxFilesLimit": "Impossible de télécharger plus de {{count}} fichiers",
        "fileRejected": "Le fichier {{name}} a été rejeté",
        "unsupportedType": "Type de fichier non pris en charge",
        "fileTooLarge": "Fichier trop volumineux, taille maximale {{maxSize}}",
        "dropHere": "Déposez les fichiers ici",
        "dragAndDrop": "Glissez et déposez les fichiers ici, ou cliquez pour sélectionner",
        "removeFile": "Supprimer le fichier",
        "uploadDescription": "Vous pouvez télécharger {{isMultiple ? 'plusieurs' : count}} fichiers (jusqu'à {{maxSize}} chacun)",
        "duplicateFile": "Le nom du fichier existe déjà dans le cache du serveur"
      }
    },
    "documentManager": {
      "title": "Gestion des documents",
      "scanButton": "Scanner/Retraiter",
      "scanTooltip": "Scanner et traiter les documents dans le dossier d'entrée, et retraiter également tous les documents échoués",
      "refreshTooltip": "Réinitialiser la liste des documents",
      "pipelineStatusButton": "Pipeline",
      "pipelineStatusTooltip": "Voir l'état du pipeline de traitement des documents",
      "uploadedTitle": "Documents téléchargés",
      "uploadedDescription": "Liste des documents téléchargés et leurs statuts.",
      "emptyTitle": "Aucun document",
      "emptyDescription": "Il n'y a pas encore de documents téléchargés.",
      "columns": {
        "id": "ID",
        "fileName": "Nom du fichier",
        "summary": "Résumé",
        "status": "Statut",
        "length": "Longueur",
        "chunks": "Fragments",
        "created": "Créé",
        "updated": "Mis à jour",
        "metadata": "Métadonnées",
        "select": "Sélectionner"
      },
      "filters": {
        "all": "Tous",
        "completed": "Terminé",
        "parse": "Extraction",
        "analyze": "Analyse",
        "process": "Traitement",
        "failed": "Échec"
      },
      "status": {
        "all": "Tous",
        "completed": "Terminé",
        "preprocessed": "Prétraité",
        "parsing": "Analyse syntaxique",
        "analyzing": "Analyse en cours",
        "processing": "En traitement",
        "pending": "En attente",
        "failed": "Échoué"
      },
      "errors": {
        "loadFailed": "Échec du chargement des documents\n{{error}}",
        "scanFailed": "Échec de la numérisation des documents\n{{error}}",
        "scanProgressFailed": "Échec de l'obtention de la progression de la numérisation\n{{error}}"
      },
      "fileNameLabel": "Nom du fichier",
      "showButton": "Afficher",
      "hideButton": "Masquer",
      "showFileNameTooltip": "Afficher le nom du fichier",
      "hideFileNameTooltip": "Masquer le nom du fichier",
      "details": {
        "title": "Détails du statut",
        "openTooltip": "Afficher les détails du statut",
        "content": "Détails",
        "copyButton": "Copier",
        "copyTooltip": "Copier les détails du statut",
        "copySuccess": "Détails du statut copiés",
        "copyFailed": "Échec de la copie des détails du statut"
      }
    },
    "pipelineStatus": {
      "title": "État du Pipeline",
      "busy": "Pipeline Occupé",
      "requestPending": "Demande en Attente",
      "cancellationRequested": "Annulation Demandée",
      "jobName": "Nom du Travail",
      "startTime": "Heure de Début",
      "progress": "Progrès",
      "unit": "Lot",
      "pipelineMessages": "Messages de Pipeline",
      "cancelButton": "Annuler",
      "cancelTooltip": "Annuler le traitement du pipeline",
      "cancelConfirmTitle": "Confirmer l'Annulation du Pipeline",
      "cancelConfirmDescription": "Cette action interrompra le traitement du pipeline en cours. Êtes-vous sûr de vouloir continuer ?",
      "cancelConfirmButton": "Confirmer l'Annulation",
      "cancelInProgress": "Annulation en cours...",
      "pipelineNotRunning": "Le pipeline n'est pas en cours d'exécution",
      "cancelSuccess": "Annulation du pipeline demandée",
      "cancelFailed": "Échec de l'annulation du pipeline\n{{error}}",
      "cancelNotBusy": "Le pipeline n'est pas en cours d'exécution, pas besoin d'annuler",
      "errors": {
        "fetchFailed": "Échec de la récupération de l'état du pipeline\n{{error}}"
      }
    }
  },
  "graphPanel": {
    "dataIsTruncated": "Les données du graphe sont tronquées au nombre maximum de nœuds",
    "fetchRetriesExhausted": "Échec du chargement des données du graphe. Utilisez l'actualisation pour réessayer.",
    "graphBuildFailed": "Échec du rendu des données du graphe. Utilisez l'actualisation pour réessayer.",
    "statusDialog": {
      "title": "Paramètres du Serveur LightRAG",
      "description": "Afficher l'état actuel du système et les informations de connexion"
    },
    "legend": "Légende",
    "nodeTypes": {
      "person": "Personne",
      "category": "Catégorie",
      "geo": "Géographique",
      "location": "Emplacement",
      "organization": "Organisation",
      "event": "Événement",
      "equipment": "Équipement",
      "weapon": "Arme",
      "animal": "Animal",
      "unknown": "Inconnu",
      "object": "Objet",
      "group": "Groupe",
      "technology": "Technologie",
      "product": "Produit",
      "document": "Document",
      "content": "Contenu",
      "data": "Données",
      "artifact": "Artefact",
      "concept": "Concept",
      "naturalobject": "Objet naturel",
      "method": "Méthode",
      "creature": "Créature",
      "plant": "Plante",
      "disease": "Maladie",
      "drug": "Médicament",
      "food": "Nourriture",
      "table": "Tableau",
      "drawing": "Dessin",
      "equation": "Équation",
      "other": "Autre"
    },
    "sideBar": {
      "settings": {
        "settings": "Paramètres",
        "healthCheck": "Vérification de l'état",
        "showPropertyPanel": "Afficher le panneau des propriétés",
        "showSearchBar": "Afficher la barre de recherche",
        "showNodeLabel": "Afficher l'étiquette du nœud",
        "nodeDraggable": "Nœud déplaçable",
        "showEdgeLabel": "Afficher l'étiquette de l'arête",
        "hideUnselectedEdges": "Masquer les arêtes non sélectionnées",
        "edgeEvents": "Événements des arêtes",
        "edgeEventsDisabledHint": "Désactivé pour les graphes de plus de {{count}} arêtes",
        "maxQueryDepth": "Profondeur maximale de la requête",
        "maxNodes": "Nombre maximum de nœuds",
        "resetToDefault": "Réinitialiser par défaut",
        "edgeSizeRange": "Plage de taille des arêtes",
        "depth": "D",
        "node": "Nœud",
        "edge": "Arête",
        "degree": "Degré",
        "apiKey": "Clé API",
        "enterYourAPIkey": "Entrez votre clé API",
        "save": "Sauvegarder",
        "refreshLayout": "Actualiser la mise en page"
      },
      "zoomControl": {
        "zoomIn": "Zoom avant",
        "zoomOut": "Zoom arrière",
        "resetZoom": "Réinitialiser le zoom",
        "rotateCamera": "Rotation horaire",
        "rotateCameraCounterClockwise": "Rotation antihoraire"
      },
      "layoutsControl": {
        "startAnimation": "Démarrer l'animation de mise en page",
        "stopAnimation": "Arrêter l'animation de mise en page",
        "layoutGraph": "Mettre en page le graphe",
        "layouts": {
          "Circular": "Circulaire",
          "Circlepack": "Paquet circulaire",
          "Random": "Aléatoire",
          "Noverlaps": "Sans chevauchement",
          "Force Directed": "Dirigé par la force",
          "Force Atlas": "Atlas de force"
        }
      },
      "fullScreenControl": {
        "fullScreen": "Plein écran",
        "windowed": "Fenêtré"
      },
      "legendControl": {
        "toggleLegend": "Basculer la légende"
      }
    },
    "statusIndicator": {
      "connected": "Connecté",
      "disconnected": "Déconnecté"
    },
    "statusCard": {
      "unavailable": "Informations sur l'état indisponibles",
      "serverInfo": "Informations du serveur",
      "inputDirectory": "Répertoire d'entrée",
      "parser": "Analyseur",
      "mineru": "MinerU",
      "docling": "Docling",
      "otherSettings": "Autres paramètres",
      "llmConfig": "Configuration du modèle",
      "llmBinding": "Liaison du modèle de langage",
      "llmBindingHost": "Point de terminaison LLM",
      "llmModel": "Modèle de langage",
      "embeddingConfig": "Configuration d'incorporation",
      "embeddingBinding": "Liaison d'incorporation",
      "embeddingBindingHost": "Point de terminaison d'incorporation",
      "embeddingModel": "Modèle d'incorporation",
      "storageConfig": "Configuration de stockage",
      "kvStorage": "Stockage clé-valeur",
      "docStatusStorage": "Stockage de l'état des documents",
      "graphStorage": "Stockage du graphe",
      "vectorStorage": "Stockage vectoriel",
      "workspace": "Espace de travail",
      "rerankerConfig": "Configuration du reclassement",
      "rerankerBindingHost": "Point de terminaison de reclassement",
      "rerankerModel": "Modèle de reclassement",
      "lockStatus": "État des verrous"
    },
    "propertiesView": {
      "editProperty": "Modifier {{property}}",
      "editLockedByPipeline": "Le pipeline est occupé ; modification désactivée",
      "editPropertyDescription": "Modifiez la valeur de la propriété dans la zone de texte ci-dessous.",
      "errors": {
        "duplicateName": "Le nom du nœud existe déjà",
        "updateFailed": "Échec de la mise à jour du nœud",
        "tryAgainLater": "Veuillez réessayer plus tard",
        "updateSuccessButMergeFailed": "Propriétés mises à jour, mais la fusion a échoué : {{error}}",
        "mergeFailed": "Échec de la fusion : {{error}}"
      },
      "success": {
        "entityUpdated": "Nœud mis à jour avec succès",
        "relationUpdated": "Relation mise à jour avec succès",
        "entityMerged": "Fusion des nœuds réussie"
      },
      "mergeOptionLabel": "Fusionner automatiquement en cas de nom dupliqué",
      "mergeOptionDescription": "Si activé, renommer vers un nom existant fusionnera automatiquement ce nœud avec celui-ci au lieu d'échouer.",
      "mergeDialog": {
        "title": "Nœud fusionné",
        "description": "\"{{source}}\" a été fusionné dans \"{{target}}\".",
        "refreshHint": "Actualisez le graphe pour charger la structure la plus récente.",
        "keepCurrentStart": "Actualiser en conservant le nœud de départ actuel",
        "useMergedStart": "Actualiser en utilisant le nœud fusionné",
        "refreshing": "Actualisation du graphe..."
      },
      "node": {
        "title": "Nœud",
        "id": "ID",
        "labels": "Étiquettes",
        "degree": "Degré",
        "properties": "Propriétés",
        "relationships": "Relations(dans le sous-graphe)",
        "expandNode": "Développer le nœud",
        "pruneNode": "Masquer le nœud",
        "deleteAllNodesError": "Refus de supprimer tous les nœuds du graphe",
        "nodesRemoved": "{{count}} nœuds supprimés, y compris les nœuds orphelins",
        "noNewNodes": "Aucun nœud développable trouvé",
        "propertyNames": {
          "description": "Description",
          "entity_id": "Nom",
          "entity_type": "Type",
          "source_id": "C-ID",
          "Neighbour": "Voisin",
          "file_path": "File",
          "keywords": "Keys",
          "weight": "Poids"
        }
      },
      "edge": {
        "title": "Relation",
        "id": "ID",
        "type": "Type",
        "source": "Source",
        "target": "Cible",
        "properties": "Propriétés"
      }
    },
    "search": {
      "placeholder": "Rechercher des nœuds dans la page...",
      "message": "Et {{count}} autres"
    },
    "graphLabels": {
      "selectTooltip": "Obtenir le sous-graphe d'un nœud (étiquette)",
      "noLabels": "Aucun nœud correspondant trouvé",
      "label": "Rechercher le nom du nœud",
      "placeholder": "Rechercher le nom du nœud...",
      "andOthers": "Et {{count}} autres",
      "refreshGlobalTooltip": "Actualiser les données du graphe global et réinitialiser l'historique de recherche",
      "refreshCurrentLabelTooltip": "Actualiser les données du graphe de la page actuelle",
      "refreshingTooltip": "Actualisation des données en cours..."
    },
    "emptyGraph": "Vide (Essayez de recharger)"
  },
  "retrievePanel": {
    "chatMessage": {
      "copyTooltip": "Copier dans le presse-papiers",
      "copyError": "Échec de la copie du texte dans le presse-papiers",
      "copyEmpty": "Aucun contenu à copier",
      "copySuccess": "Contenu copié dans le presse-papiers",
      "copySuccessLegacy": "Contenu copié (méthode héritée)",
      "copySuccessManual": "Contenu copié (méthode manuelle)",
      "copyFailed": "Échec de la copie du contenu",
      "copyManualInstruction": "Veuillez sélectionner et copier le texte manuellement",
      "thinking": "Réflexion en cours...",
      "thinkingTime": "Temps de réflexion {{time}}s",
      "thinkingInProgress": "Réflexion en cours..."
    },
    "retrieval": {
      "startPrompt": "Démarrez une récupération en tapant votre requête ci-dessous",
      "clear": "Effacer",
      "send": "Envoyer",
      "stop": "Arrêter",
      "userTerminated": "Interrompu par l'utilisateur — la réponse peut être incomplète",
      "placeholder": "Tapez votre requête (Préfixe de requête : /<Query Mode>)",
      "error": "Erreur : Échec de l'obtention de la réponse",
      "queryModeError": "Seuls les modes de requête suivants sont pris en charge : {{modes}}",
      "queryModePrefixInvalid": "Préfixe de mode de requête invalide. Utilisez : /<mode> [espace] votre requête"
    },
    "querySettings": {
      "parametersTitle": "Paramètres",
      "parametersDescription": "Configurez vos paramètres de requête",
      "queryMode": "Mode de requête",
      "queryModeTooltip": "Sélectionnez la stratégie de récupération :\n• Naïf : Récupération vectorielle traditionnelle par blocs de texte\n• Local : Axé sur la récupération d'entités\n• Global : Axé sur la récupération de relations\n• Hybride : Local+Global\n• Mixte : Local+Global+Naïf\n• Bypass : Ignorer la récupération, envoyer l'historique de conversation et la question actuelle au LLM",
      "queryModeWarning": "Peut réduire la qualité de récupération",
      "queryModeOptions": {
        "naive": "Naïf",
        "local": "Local",
        "global": "Global",
        "hybrid": "Hybride",
        "mix": "Mixte",
        "bypass": "Bypass"
      },
      "responseFormat": "Format de réponse",
      "responseFormatTooltip": "Définit le format de la réponse. Exemples :\n• Plusieurs paragraphes\n• Paragraphe unique\n• Points à puces",
      "responseFormatOptions": {
        "multipleParagraphs": "Plusieurs paragraphes",
        "singleParagraph": "Paragraphe unique",
        "bulletPoints": "Points à puces"
      },
      "topK": "KG Top K",
      "topKTooltip": "Nombre d'entités et de relations à récupérer. Applicable pour les modes non-naïfs.",
      "topKPlaceholder": "Entrez la valeur top_k",
      "chunkTopK": "Top K des Chunks",
      "chunkTopKTooltip": "Nombre de morceaux de texte à récupérer, applicable à tous les modes.",
      "chunkTopKPlaceholder": "Entrez la valeur chunk_top_k",
      "maxEntityTokens": "Limite de jetons d'entité",
      "maxEntityTokensTooltip": "Nombre maximum de jetons alloués au contexte d'entité dans le système de contrôle de jetons unifié",
      "maxRelationTokens": "Limite de jetons de relation",
      "maxRelationTokensTooltip": "Nombre maximum de jetons alloués au contexte de relation dans le système de contrôle de jetons unifié",
      "maxTotalTokens": "Limite totale de jetons",
      "maxTotalTokensTooltip": "Budget total maximum de jetons pour l'ensemble du contexte de requête (entités + relations + blocs + prompt système)",
      "historyTurns": "Tours d'historique",
      "historyTurnsTooltip": "Nombre de tours complets de conversation (paires utilisateur-assistant) à prendre en compte dans le contexte de la réponse",
      "historyTurnsPlaceholder": "Nombre de tours d'historique",
      "onlyNeedContext": "Besoin uniquement du contexte",
      "onlyNeedContextTooltip": "Si vrai, ne renvoie que le contexte récupéré sans générer de réponse",
      "onlyNeedPrompt": "Besoin uniquement de l'invite",
      "onlyNeedPromptTooltip": "Si vrai, ne renvoie que l'invite générée sans produire de réponse",
      "streamResponse": "Réponse en flux",
      "streamResponseTooltip": "Si vrai, active la sortie en flux pour des réponses en temps réel",
      "userPrompt": "Invite de sortie supplémentaire",
      "userPromptTooltip": "Fournir des exigences de réponse supplémentaires au LLM (sans rapport avec le contenu de la requête, uniquement pour le traitement de sortie).",
      "userPromptPlaceholder": "Entrez une invite personnalisée (facultatif)",
      "enableRerank": "Activer le Reclassement",
      "enableRerankTooltip": "Active le reclassement pour les fragments de texte récupérés. Si True mais qu'aucun modèle de reclassement n'est configuré, un avertissement sera émis. True par défaut."
    }
  },
  "apiSite": {
    "loading": "Chargement de la documentation de l'API..."
  },
  "apiKeyAlert": {
    "title": "Clé API requise",
    "description": "Veuillez entrer votre clé API pour accéder au service",
    "placeholder": "Entrez votre clé API",
    "save": "Sauvegarder"
  },
  "pagination": {
    "showing": "Affichage de {{start}} à {{end}} sur {{total}} entrées",
    "page": "Page",
    "pageSize": "Taille de la page",
    "firstPage": "Première page",
    "prevPage": "Page précédente",
    "nextPage": "Page suivante",
    "lastPage": "Dernière page"
  }
}
