| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 | const translation = {  common: {    editing: 'Édition',    autoSaved: 'Sauvegardé automatiquement',    unpublished: 'Non publié',    published: 'Publié',    publish: 'Publier',    update: 'Mettre à jour',    run: 'Exécuter',    running: 'En cours d\'exécution',    inRunMode: 'En mode exécution',    inPreview: 'En aperçu',    inPreviewMode: 'En mode aperçu',    preview: 'Aperçu',    viewRunHistory: 'Voir l\'historique des exécutions',    runHistory: 'Historique des exécutions',    goBackToEdit: 'Retour à l\'éditeur',    conversationLog: 'Journal de conversation',    features: 'Fonctionnalités',    debugAndPreview: 'Déboguer et prévisualiser',    restart: 'Redémarrer',    currentDraft: 'Brouillon actuel',    currentDraftUnpublished: 'Brouillon actuel non publié',    latestPublished: 'Dernière publication',    publishedAt: 'Publié le',    restore: 'Restaurer',    runApp: 'Exécuter l\'application',    batchRunApp: 'Exécuter l\'application en lot',    accessAPIReference: 'Accéder à la référence API',    embedIntoSite: 'Intégrer au site',    addTitle: 'Ajouter un titre...',    addDescription: 'Ajouter une description...',    noVar: 'Pas de variable',    searchVar: 'Rechercher une variable',    variableNamePlaceholder: 'Nom de la variable',    setVarValuePlaceholder: 'Définir la valeur de la variable',    needConnecttip: 'Cette étape n\'est connectée à rien',    maxTreeDepth: 'Limite maximale de {{depth}} nœuds par branche',    needEndNode: 'Le bloc de fin doit être ajouté',    needAnswerNode: 'Le bloc de réponse doit être ajouté',    workflowProcess: 'Processus de flux de travail',    notRunning: 'Pas encore en cours d\'exécution',    previewPlaceholder: 'Entrez le contenu dans la boîte ci-dessous pour commencer à déboguer le Chatbot',    effectVarConfirm: {      title: 'Supprimer la variable',      content: 'La variable est utilisée dans d\'autres nœuds. Voulez-vous toujours la supprimer?',    },    insertVarTip: 'Appuyez sur la touche \'/\' pour insérer rapidement',    processData: 'Traiter les données',    input: 'Entrée',    output: 'Sortie',    jinjaEditorPlaceholder: 'Tapez \'/\' ou \'{\' pour insérer une variable',    viewOnly: 'Affichage seulement',    showRunHistory: 'Afficher l\'historique des exécutions',    enableJinja: 'Activer le support des templates Jinja',    learnMore: 'En savoir plus',    copy: 'Copier',    duplicate: 'Dupliquer',    addBlock: 'Ajouter un bloc',    pasteHere: 'Coller ici',    pointerMode: 'Mode pointeur',    handMode: 'Mode main',    model: 'Modèle',    workflowAsTool: 'Flux de travail en tant qu\'outil',    configureRequired: 'Configuration requise',    configure: 'Configurer',    manageInTools: 'Gérer dans les outils',    workflowAsToolTip: 'Reconfiguration de l\'outil requise après la mise à jour du flux de travail.',    viewDetailInTracingPanel: 'Voir les détails',  },  errorMsg: {    fieldRequired: '{{field}} est requis',    authRequired: 'Autorisation requise',    invalidJson: '{{field}} est un JSON invalide',    fields: {      variable: 'Nom de la variable',      variableValue: 'Valeur de la variable',      code: 'Code',      model: 'Modèle',      rerankModel: 'Modèle de rerank',    },    invalidVariable: 'Variable invalide',  },  singleRun: {    testRun: 'Exécution de test',    startRun: 'Démarrer l\'exécution',    running: 'En cours d\'exécution',    testRunIteration: 'Itération de l\'exécution de test',    back: 'Retour',    iteration: 'Itération',  },  tabs: {    'searchBlock': 'Rechercher un bloc',    'blocks': 'Blocs',    'tools': 'Outils',    'allTool': 'Tous',    'builtInTool': 'Intégré',    'customTool': 'Personnalisé',    'workflowTool': 'Flux de travail',    'question-understand': 'Compréhension des questions',    'logic': 'Logique',    'transform': 'Transformer',    'utilities': 'Utilitaires',    'noResult': 'Aucun résultat trouvé',  },  blocks: {    'start': 'Début',    'end': 'Fin',    'answer': 'Réponse',    'llm': 'LLM',    'knowledge-retrieval': 'Récupération de connaissances',    'question-classifier': 'Classificateur de questions',    'if-else': 'SI/SINON',    'code': 'Code',    'template-transform': 'Modèle',    'http-request': 'Requête HTTP',    'variable-assigner': 'Assigneur de variables',    'variable-aggregator': 'Agrégateur de variables',    'iteration-start': 'Début d\'itération',    'iteration': 'Itération',    'parameter-extractor': 'Extracteur de paramètres',  },  blocksAbout: {    'start': 'Définir les paramètres initiaux pour lancer un flux de travail',    'end': 'Définir la fin et le type de résultat d\'un flux de travail',    'answer': 'Définir le contenu de la réponse d\'une conversation',    'llm': 'Inviter de grands modèles de langage pour répondre aux questions ou traiter le langage naturel',    'knowledge-retrieval': 'Permet de consulter le contenu textuel lié aux questions des utilisateurs à partir de la base de connaissances',    'question-classifier': 'Définir les conditions de classification des questions des utilisateurs, LLM peut définir comment la conversation progresse en fonction de la description de la classification',    'if-else': 'Permet de diviser le flux de travail en deux branches basées sur des conditions if/else',    'code': 'Exécuter un morceau de code Python ou NodeJS pour implémenter une logique personnalisée',    'template-transform': 'Convertir les données en chaîne en utilisant la syntaxe du template Jinja',    'http-request': 'Permettre l\'envoi de requêtes serveur via le protocole HTTP',    'variable-assigner': 'Agrégation de variables de plusieurs branches en une seule variable pour la configuration unifiée des nœuds en aval.',    'variable-aggregator': 'Agrégation de variables de plusieurs branches en une seule variable pour la configuration unifiée des nœuds en aval.',    'iteration': 'Effectuer plusieurs étapes sur un objet de liste jusqu\'à ce que tous les résultats soient produits.',    'parameter-extractor': 'Utiliser LLM pour extraire des paramètres structurés du langage naturel pour les invocations d\'outils ou les requêtes HTTP.',  },  operator: {    zoomIn: 'Zoomer',    zoomOut: 'Dézoomer',    zoomTo50: 'Zoomer à 50%',    zoomTo100: 'Zoomer à 100%',    zoomToFit: 'Zoomer pour ajuster',  },  panel: {    userInputField: 'Champ de saisie de l\'utilisateur',    changeBlock: 'Changer de bloc',    helpLink: 'Lien d\'aide',    about: 'À propos',    createdBy: 'Créé par',    nextStep: 'Étape suivante',    addNextStep: 'Ajouter le prochain bloc dans ce flux de travail',    selectNextStep: 'Sélectionner le prochain bloc',    runThisStep: 'Exécuter cette étape',    checklist: 'Liste de contrôle',    checklistTip: 'Assurez-vous que tous les problèmes sont résolus avant de publier',    checklistResolved: 'Tous les problèmes ont été résolus',    organizeBlocks: 'Organiser les blocs',    change: 'Modifier',  },  nodes: {    common: {      outputVars: 'Variables de sortie',      insertVarTip: 'Insérer une variable',      memory: {        memory: 'Mémoire',        memoryTip: 'Paramètres de mémoire de conversation',        windowSize: 'Taille de la fenêtre',        conversationRoleName: 'Nom du rôle de conversation',        user: 'Préfixe utilisateur',        assistant: 'Préfixe assistant',      },      memories: {        title: 'Mémoires',        tip: 'Mémoire de conversation',        builtIn: 'Intégré',      },    },    start: {      required: 'requis',      inputField: 'Champ de saisie',      builtInVar: 'Variables intégrées',      outputVars: {        query: 'Saisie utilisateur',        memories: {          des: 'Historique de conversation',          type: 'type de message',          content: 'contenu du message',        },        files: 'Liste de fichiers',      },      noVarTip: 'Définir les entrées qui peuvent être utilisées dans le flux de travail',    },    end: {      outputs: 'Sorties',      output: {        type: 'type de sortie',        variable: 'variable de sortie',      },      type: {        'none': 'Aucun',        'plain-text': 'Texte brut',        'structured': 'Structuré',      },    },    answer: {      answer: 'Réponse',      outputVars: 'Variables de sortie',    },    llm: {      model: 'modèle',      variables: 'variables',      context: 'contexte',      contextTooltip: 'Vous pouvez importer des connaissances en tant que contexte',      notSetContextInPromptTip: 'Pour activer la fonctionnalité de contexte, remplissez la variable de contexte dans le PROMPT.',      prompt: 'invite',      roleDescription: {        system: 'Donner des instructions de haut niveau pour la conversation',        user: 'Fournir des instructions, des questions ou toute entrée textuelle au modèle',        assistant: 'Les réponses du modèle basées sur les messages des utilisateurs',      },      addMessage: 'Ajouter un message',      vision: 'vision',      files: 'Fichiers',      resolution: {        name: 'Résolution',        high: 'Haute',        low: 'Basse',      },      outputVars: {        output: 'Contenu généré',        usage: 'Informations sur l\'utilisation du modèle',      },      singleRun: {        variable: 'Variable',      },      sysQueryInUser: 'sys.query dans le message utilisateur est requis',    },    knowledgeRetrieval: {      queryVariable: 'Variable de requête',      knowledge: 'Connaissances',      outputVars: {        output: 'Données segmentées récupérées',        content: 'Contenu segmenté',        title: 'Titre segmenté',        icon: 'Icône segmentée',        url: 'URL segmentée',        metadata: 'Autres métadonnées',      },    },    http: {      inputVars: 'Variables de saisie',      api: 'API',      apiPlaceholder: 'Entrez l\'URL, tapez ‘/’ pour insérer une variable',      notStartWithHttp: 'L\'API doit commencer par http:// ou https://',      key: 'Clé',      value: 'Valeur',      bulkEdit: 'Édition en masse',      keyValueEdit: 'Édition clé-valeur',      headers: 'En-têtes',      params: 'Paramètres',      body: 'Corps',      outputVars: {        body: 'Contenu de la réponse',        statusCode: 'Code de statut de la réponse',        headers: 'Liste des en-têtes de réponse JSON',        files: 'Liste des fichiers',      },      authorization: {        'authorization': 'Autorisation',        'authorizationType': 'Type d\'autorisation',        'no-auth': 'Aucune',        'api-key': 'Clé API',        'auth-type': 'Type d\'authentification',        'basic': 'De base',        'bearer': 'Bearer',        'custom': 'Personnalisé',        'api-key-title': 'Clé API',        'header': 'En-tête',      },      insertVarPlaceholder: 'tapez \'/\' pour insérer une variable',      timeout: {        title: 'Délai d\'expiration',        connectLabel: 'Délai de connexion',        connectPlaceholder: 'Entrez le délai de connexion en secondes',        readLabel: 'Délai de lecture',        readPlaceholder: 'Entrez le délai de lecture en secondes',        writeLabel: 'Délai d\'écriture',        writePlaceholder: 'Entrez le délai d\'écriture en secondes',      },    },    code: {      inputVars: 'Variables de saisie',      outputVars: 'Variables de sortie',      advancedDependencies: 'Dépendances avancées',      advancedDependenciesTip: 'Ajoutez quelques dépendances préchargées qui prennent plus de temps à consommer ou ne sont pas par défaut ici',      searchDependencies: 'Rechercher des dépendances',    },    templateTransform: {      inputVars: 'Variables de saisie',      code: 'Code',      codeSupportTip: 'Prend en charge uniquement Jinja2',      outputVars: {        output: 'Contenu transformé',      },    },    ifElse: {      if: 'Si',      else: 'Sinon',      elseDescription: 'Utilisé pour définir la logique à exécuter lorsque la condition if n\'est pas remplie.',      and: 'et',      or: 'ou',      operator: 'Opérateur',      notSetVariable: 'Veuillez d\'abord définir la variable',      comparisonOperator: {        'contains': 'contient',        'not contains': 'ne contient pas',        'start with': 'commence par',        'end with': 'se termine par',        'is': 'est',        'is not': 'n\'est pas',        'empty': 'est vide',        'not empty': 'n\'est pas vide',        'null': 'est nul',        'not null': 'n\'est pas nul',      },      enterValue: 'Entrez la valeur',      addCondition: 'Ajouter une condition',      conditionNotSetup: 'Condition NON configurée',    },    variableAssigner: {      title: 'Attribuer des variables',      outputType: 'Type de sortie',      varNotSet: 'Variable non définie',      noVarTip: 'Ajoutez les variables à attribuer',      type: {        string: 'Chaîne',        number: 'Nombre',        object: 'Objet',        array: 'Tableau',      },      aggregationGroup: 'Groupe d\'agrégation',      aggregationGroupTip: 'L\'activation de cette fonctionnalité permet à l\'agrégateur de variables d\'agréger plusieurs ensembles de variables.',      addGroup: 'Ajouter un groupe',      outputVars: {        varDescribe: 'Sortie {{groupName}}',      },      setAssignVariable: 'Définir la variable à attribuer',    },    tool: {      toAuthorize: 'Autoriser',      inputVars: 'Variables de saisie',      outputVars: {        text: 'contenu généré par l\'outil',        files: {          title: 'fichiers générés par l\'outil',          type: 'Type de support. Actuellement ne prend en charge que l\'image',          transfer_method: 'Méthode de transfert. La valeur est remote_url ou local_file',          url: 'URL de l\'image',          upload_file_id: 'ID du fichier téléchargé',        },      },    },    questionClassifiers: {      model: 'modèle',      inputVars: 'Variables de saisie',      outputVars: {        className: 'Nom de la classe',      },      class: 'Classe',      classNamePlaceholder: 'Écrivez le nom de votre classe',      advancedSetting: 'Paramètre avancé',      topicName: 'Nom du sujet',      topicPlaceholder: 'Écrivez le nom de votre sujet',      addClass: 'Ajouter une classe',      instruction: 'Instruction',      instructionTip: 'Entrez des instructions supplémentaires pour aider le classificateur de questions à mieux comprendre comment catégoriser les questions.',      instructionPlaceholder: 'Écrivez votre instruction',    },    parameterExtractor: {      inputVar: 'Variable de saisie',      extractParameters: 'Extraire des paramètres',      importFromTool: 'Importer des outils',      addExtractParameter: 'Ajouter un paramètre d\'extraction',      addExtractParameterContent: {        name: 'Nom',        namePlaceholder: 'Nom du paramètre d\'extraction',        type: 'Type',        typePlaceholder: 'Type de paramètre d\'extraction',        description: 'Description',        descriptionPlaceholder: 'Description du paramètre d\'extraction',        required: 'Requis',        requiredContent: 'Requis est utilisé uniquement comme référence pour l\'inférence du modèle, et non pour la validation obligatoire de la sortiedu paramètre.',      },      extractParametersNotSet: 'Paramètres d\'extraction non configurés',      instruction: 'Instruction',      instructionTip: 'Entrez des instructions supplémentaires pour aider l\'extracteur de paramètres à comprendre comment extraire les paramètres.',      advancedSetting: 'Paramètre avancé',      reasoningMode: 'Mode de raisonnement',      reasoningModeTip: 'Vous pouvez choisir le mode de raisonnement approprié en fonction de la capacité du modèle à répondre aux instructions pour les appels de fonction ou les invites.',      isSuccess: 'Est réussi. En cas de succès, la valeur est 1, en cas d\'échec, la valeur est 0.',      errorReason: 'Raison de l\'erreur',    },    iteration: {      deleteTitle: 'Supprimer le nœud d\'itération?',      deleteDesc: 'La suppression du nœud d\'itération supprimera tous les nœuds enfants',      input: 'Entrée',      output: 'Variables de sortie',      iteration_one: '{{count}} Itération',      iteration_other: '{{count}} Itérations',      currentIteration: 'Itération actuelle',    },  },  tracing: {    stopBy: 'Arrêté par {{user}}',  },}export default translation
 |