Initial commit

This commit is contained in:
2025-10-14 14:17:21 +08:00
commit ac715a8b88
35011 changed files with 3834178 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
const translation = {
title: 'Annotations',
name: 'Réponse à l\'Annotation',
editBy: 'Réponse éditée par {{author}}',
noData: {
title: 'Aucune annotation',
description: 'Vous pouvez modifier les annotations en déboguant l\'application, ou importer des annotations en masse ici pour une réponse de haute qualité.',
},
table: {
header: {
question: 'question',
answer: 'réponse',
createdAt: 'créé à',
hits: 'clics',
actions: 'actions',
addAnnotation: 'Ajouter une Annotation',
bulkImport: 'Importation en Vrac',
bulkExport: 'Exportation en Vrac',
clearAll: 'Effacer toutes les annotations',
},
},
editModal: {
title: 'Modifier la réponse à l\'annotation',
queryName: 'Requête de l\'utilisateur',
answerName: 'Bot conteur',
yourAnswer: 'Votre réponse',
answerPlaceholder: 'Tapez votre réponse ici',
yourQuery: 'Votre requête',
queryPlaceholder: 'Tapez votre requête ici',
removeThisCache: 'Supprimez cette Annotation',
createdAt: 'Créé à',
},
addModal: {
title: 'Ajouter une réponse d\'annotation',
queryName: 'Question',
answerName: 'Réponse',
answerPlaceholder: 'Tapez la réponse ici',
queryPlaceholder: 'Tapez la requête ici',
createNext: 'Ajoutez une autre réponse annotée',
},
batchModal: {
title: 'Importation en masse',
csvUploadTitle: 'Glissez et déposez votre fichier CSV ici, ou',
browse: 'parcourir',
tip: 'Le fichier CSV doit se conformer à la structure suivante :',
question: 'question',
answer: 'réponse',
contentTitle: 'contenu du bloc',
content: 'contenu',
template: 'Téléchargez le modèle ici',
cancel: 'Annuler',
run: 'Exécuter le lot',
runError: 'L\'exécution du lot a échoué',
processing: 'Dans le traitement par lots',
completed: 'Importation terminée',
error: 'Erreur d\'Importation',
ok: 'D\'accord',
},
errorMessage: {
answerRequired: 'Une réponse est requise',
queryRequired: 'La question est requise',
},
viewModal: {
annotatedResponse: 'Réponse à l\'annotation',
hitHistory: 'Historique des coups',
hit: 'Clic',
hits: 'Clics',
noHitHistory: 'Aucun historique de recherche',
},
hitHistoryTable: {
query: 'Requête',
match: 'Correspondance',
response: 'Réponse',
source: 'Source',
score: 'Score',
time: 'Temps',
},
initSetup: {
title: 'Réponse d\'Annotation Configuration Initiale',
configTitle: 'Configuration de la Réponse d\'Annotation',
confirmBtn: 'Enregistrer & Activer',
configConfirmBtn: 'Enregistrer',
},
embeddingModelSwitchTip: 'Modèle de vectorisation de texte d\'annotation, changer de modèles entraînera une ré-intégration, ce qui entraînera des coûts supplémentaires.',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'Serveur API',
apiKey: 'Clé API',
status: 'Statut',
disabled: 'Désactivé',
ok: 'En Service',
copy: 'Copier',
copied: 'Copié',
play: 'Jouer',
pause: 'Pause',
playing: 'Jouant',
merMaid: {
rerender: 'Refaire Rerendu',
},
never: 'Jamais',
apiKeyModal: {
apiSecretKey: 'Clé secrète de l\'API',
apiSecretKeyTips: 'Pour prévenir l\'abus de l\'API, protégez votre clé API. Évitez de l\'utiliser comme du texte brut dans le code front-end. :)',
createNewSecretKey: 'Créer une nouvelle clé secrète',
secretKey: 'Clé Secrète',
created: 'CRÉÉ',
lastUsed: 'DERNIÈRE UTILISATION',
generateTips: 'Gardez cette clé dans un endroit sûr et accessible.',
},
actionMsg: {
deleteConfirmTitle: 'Supprimer cette clé secrète ?',
deleteConfirmTips: 'Cette action ne peut pas être annulée.',
ok: 'D\'accord',
},
completionMode: {
title: 'API de l\'application Completion',
info: 'Pour une génération de texte de haute qualité, telle que des articles, des résumés et des traductions, utilisez l\'API completion-messages avec l\'entrée de l\'utilisateur. La génération de texte repose sur les paramètres du modèle et les modèles de prompt définis dans',
createCompletionApi: 'Créer un Message de Fin',
createCompletionApiTip: 'Créez un message de fin pour soutenir le mode question-réponse.',
inputsTips: '(Facultatif) Fournissez des champs de saisie utilisateur sous forme de paires clé-valeur, correspondant aux variables dans Prompt Eng. La clé est le nom de la variable, la valeur est la valeur du paramètre. Si le type de champ est Sélection, la valeur sou',
queryTips: 'Contenu du texte saisi par l\'utilisateur.',
blocking: 'Type de blocage, en attente de l\'exécution pour terminer et renvoyer les résultats. (Les demandes peuvent être interrompues si le processus est long)',
streaming: 'retours en continu. Mise en œuvre de retours en continu basée sur SSE (Server-Sent Events).',
messageFeedbackApi: 'Retour de message (j\'aime)',
messageFeedbackApiTip: 'Évaluez les messages reçus au nom des utilisateurs finaux avec des likes ou des dislikes. Ces données sont visibles sur la page Logs & Annotations et sont utilisées pour le réglage fin des modèles futurs.',
messageIDTip: 'ID de message',
ratingTip: 'aimer ou ne pas aimer, null est annuler',
parametersApi: 'Obtenir des informations sur les paramètres de l\'application',
parametersApiTip: 'Récupérer les paramètres d\'entrée configurés, y compris les noms de variables, les noms de champs, les types et les valeurs par défaut. Généralement utilisé pour afficher ces champs dans un formulaire ou pour remplir les valeurs par défaut après le charg',
},
chatMode: {
title: 'API de l\'application de chat',
info: 'Pour des applications conversationnelles polyvalentes utilisant un format Q&R, appelez l\'API de chat-messages pour initier le dialogue. Maintenez les conversations en cours en passant l\'ID de conversation retourné. Les paramètres de réponse et les modèles dépendent des paramètres de',
createChatApi: 'Créer un message de chat',
createChatApiTip: 'Créez un nouveau message de conversation ou continuez un dialogue existant.',
inputsTips: '(Facultatif) Fournir des champs de saisie utilisateur sous forme de paires clé-valeur, correspondant aux variables dans Prompt Eng. La clé est le nom de la variable, la valeur est la valeur du paramètre. Si le type de champ est Sélection, la valeur soumise',
queryTips: 'Contenu de la question/saisie de l\'utilisateur',
blocking: 'Type de blocage, en attente de l\'exécution pour terminer et renvoyer les résultats. (Les demandes peuvent être interrompues si le processus est long)',
streaming: 'retours en continu. Mise en œuvre de retours en continu basée sur SSE (Server-Sent Events).',
conversationIdTip: '(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.',
messageFeedbackApi: 'Message de retour d\'information de l\'utilisateur du terminal, comme',
messageFeedbackApiTip: 'Évaluez les messages reçus au nom des utilisateurs finaux avec des likes ou des dislikes. Ces données sont visibles sur la page Logs & Annotations et sont utilisées pour l\'ajustement futur du modèle.',
messageIDTip: 'ID de message',
ratingTip: 'aimer ou ne pas aimer, null est annuler',
chatMsgHistoryApi: 'Obtenez le message de l\'historique de chat',
chatMsgHistoryApiTip: 'La première page renvoie la dernière `limit` bar, qui est en ordre inverse.',
chatMsgHistoryConversationIdTip: 'ID de conversation',
chatMsgHistoryFirstId: 'ID du premier enregistrement de chat sur la page actuelle. La valeur par défaut est aucune.',
chatMsgHistoryLimit: 'Combien de chats sont renvoyés en une seule demande',
conversationsListApi: 'Obtenir la liste des conversations',
conversationsListApiTip: 'Obtient la liste des sessions de l\'utilisateur actuel. Par défaut, les 20 dernières sessions sont renvoyées.',
conversationsListFirstIdTip: 'L\'ID du dernier enregistrement sur la page actuelle, par défaut aucun.',
conversationsListLimitTip: 'Combien de chats sont renvoyés dans une seule requête',
conversationRenamingApi: 'Renommage de la conversation',
conversationRenamingApiTip: 'Renommez les conversations ; le nom est affiché dans les interfaces client multi-session.',
conversationRenamingNameTip: 'Nouveau nom',
parametersApi: 'Obtenir des informations sur les paramètres de l\'application',
parametersApiTip: 'Récupérer les paramètres d\'entrée configurés, y compris les noms de variables, les noms de champs, les types et les valeurs par défaut. Typiquement utilisé pour afficher ces champs dans un formulaire ou pour remplir les valeurs par défaut après le chargement du',
},
develop: {
requestBody: 'Corps de la Requête',
pathParams: 'Params de chemin',
query: 'Requête',
toc: 'Contenu',
},
loading: 'Chargement',
regenerate: 'Régénérer',
}
export default translation

View File

@@ -0,0 +1,410 @@
const translation = {
pageTitle: {
line1: 'INVITATION',
line2: 'Ingénierie',
},
orchestrate: 'Orchestrer',
promptMode: {
simple: 'Passez en Mode Expert pour modifier l\'intégralité du PROMPT',
advanced: 'Mode Expert',
switchBack: 'Revenir en arrière',
advancedWarning: {
title: 'Vous êtes passé en Mode Expert, et une fois que vous modifiez le PROMPT, vous NE POUVEZ PAS revenir au mode basique.',
description: 'En mode Expert, vous pouvez modifier l\'intégralité du PROMPT.',
learnMore: 'En savoir plus',
ok: 'D\'accord',
},
operation: {
addMessage: 'Ajouter un message',
},
contextMissing: 'Le composant de contexte est manquant, l\'efficacité de la suggestion peut ne pas être bonne.',
},
operation: {
applyConfig: 'Publier',
resetConfig: 'Réinitialiser',
debugConfig: 'Déboguer',
addFeature: 'Ajouter une fonctionnalité',
automatic: 'Générer',
stopResponding: 'Arrêtez de répondre',
agree: 'comme',
disagree: 'déteste',
cancelAgree: 'Annuler comme',
cancelDisagree: 'Annuler le dislike',
userAction: 'Utilisateur',
},
notSetAPIKey: {
title: 'La clé du fournisseur LLM n\'a pas été définie',
trailFinished: 'Parcours terminé',
description: 'La clé du fournisseur LLM n\'a pas été définie, et elle doit être définie avant le débogage.',
settingBtn: 'Aller aux paramètres',
},
trailUseGPT4Info: {
title: 'Ne prend pas en charge gpt-4 pour le moment',
description: 'Utilisez gpt-4, veuillez définir la clé API.',
},
feature: {
groupChat: {
title: 'Amélioration de chat',
description: 'Ajouter des paramètres de pré-conversation pour les applications peut améliorer l\'expérience utilisateur.',
},
groupExperience: {
title: 'Amélioration de l\'expérience',
},
conversationOpener: {
title: 'Convertisseurs de conversation',
description: 'Dans une application de chat, la première phrase que l\'IA prononce activement à l\'utilisateur est généralement utilisée comme message de bienvenue.',
},
suggestedQuestionsAfterAnswer: {
title: 'Suivi',
description: 'La configuration de la suggestion des prochaines questions peut offrir aux utilisateurs une meilleure discussion.',
resDes: '3 suggestions pour la prochaine question de l\'utilisateur.',
tryToAsk: 'Essayez de demander',
},
moreLikeThis: {
title: 'Plus comme ça',
description: 'Générez plusieurs textes à la fois, puis modifiez et continuez à générer',
generateNumTip: 'Nombre de chaque temps généré',
tip: 'L\'utilisation de cette fonctionnalité entraînera un surcoût de tokens supplémentaires',
},
speechToText: {
title: 'Discours en Texte',
description: 'Une fois activé, vous pouvez utiliser l\'entrée vocale.',
resDes: 'La saisie vocale est activée',
},
textToSpeech: {
title: 'Texte à la parole',
description: 'Une fois activé, le texte peut être converti en parole.',
resDes: 'La Texte à Audio est activée',
},
citation: {
title: 'Citations et Attributions',
description: 'Une fois activé, affichez le document source et la section attribuée du contenu généré.',
resDes: 'Les citations et attributions sont activées',
},
annotation: {
title: 'Réponse d\'Annotation',
description: 'Vous pouvez manuellement ajouter une réponse de haute qualité au cache pour une correspondance prioritaire avec des questions d\'utilisateur similaires.',
resDes: 'La réponse d\'annotation est activée',
scoreThreshold: {
title: 'Seuil de Score',
description: 'Utilisé pour définir le seuil de similarité pour la réponse d\'annotation.',
easyMatch: 'Correspondance Facile',
accurateMatch: 'Correspondance précise',
},
matchVariable: {
title: 'Correspondance de Variable',
choosePlaceholder: 'Choisissez la variable correspondante',
},
cacheManagement: 'Annotations',
cached: 'Annoté',
remove: 'Supprimer',
removeConfirm: 'Supprimer cette annotation ?',
add: 'Ajouter une annotation',
edit: 'Modifier l\'annotation',
},
dataSet: {
title: 'Contexte',
noData: 'Vous pouvez importer des Connaissances comme contexte',
words: 'Mots',
textBlocks: 'Blocs de texte',
selectTitle: 'Sélectionnez la connaissance de référence',
selected: 'Connaissance sélectionnée',
noDataSet: 'Aucune connaissance trouvée',
toCreate: 'Aller à créer',
notSupportSelectMulti: 'Actuellement, ne prend en charge qu\'une seule Connaissance',
queryVariable: {
title: 'Variable de requête',
tip: 'Cette variable sera utilisée comme entrée de requête pour la récupération du contexte, obtenant des informations contextuelles liées à l\'entrée de cette variable.',
choosePlaceholder: 'Choisissez la variable de requête',
noVar: 'Aucune variable',
noVarTip: 'veuillez créer une variable sous la section Variables',
unableToQueryDataSet: 'Impossible de questionner la Connaissance',
unableToQueryDataSetTip: 'Impossible d\'interroger la Connaissance avec succès, veuillez choisir une variable de requête de contexte dans la section contexte.',
ok: 'D\'accord',
contextVarNotEmpty: 'la variable de requête de contexte ne peut pas être vide',
deleteContextVarTitle: 'Supprimer la variable "{{varName}}" ?',
deleteContextVarTip: 'Cette variable a été définie comme une variable de requête de contexte, et sa suppression affectera l\'utilisation normale de la Connaissance. Si vous devez toujours la supprimer, veuillez la re-sélectionner dans la section contexte.',
},
},
tools: {
title: 'Outils',
tips: 'Les outils fournissent une méthode d\'appel API standard, prenant en compte les entrées de l\'utilisateur ou des variables comme paramètres de requête pour interroger des données externes en tant que contexte.',
toolsInUse: '{{count}} outils en usage',
modal: {
title: 'Outil',
toolType: {
title: 'Type d\'outil',
placeholder: 'Veuillez sélectionner le type d\'outil',
},
name: {
title: 'Nom',
placeholder: 'Veuillez entrer le nom',
},
variableName: {
title: 'Nom de la Variable',
placeholder: 'Veuillez entrer le nom de la variable',
},
},
},
conversationHistory: {
title: 'Historique de Conversation',
description: 'Définir les noms de préfixe pour les rôles de conversation',
tip: 'L\'historique de conversation n\'est pas activé, veuillez ajouter <histories> dans le prompt ci-dessus.',
learnMore: 'En savoir plus',
editModal: {
title: 'Modifier les noms de rôles de conversation',
userPrefix: 'Préfixe utilisateur',
assistantPrefix: 'Préfixe de l\'assistant',
},
},
toolbox: {
title: 'BOÎTE À OUTILS',
},
moderation: {
title: 'Modération de contenu',
description: 'Sécurisez la sortie du modèle en utilisant l\'API de modération ou en conservant une liste de mots sensibles.',
allEnabled: 'Contenu Entrant/Sortant Activé',
inputEnabled: 'Contenu Activé',
outputEnabled: 'Contenu de SORTIE activé',
modal: {
title: 'Paramètres de modération de contenu',
provider: {
title: 'Fournisseur',
openai: 'Modération OpenAI',
openaiTip: {
prefix: 'La modération d\'OpenAI nécessite une clé API OpenAI configurée dans le',
suffix: '.',
},
keywords: 'Mots-clés',
},
keywords: {
tip: 'Un par ligne, séparés par des sauts de ligne. Jusqu\'à 100 caractères par ligne.',
placeholder: 'Un par ligne, séparé par des sauts de ligne',
line: 'Ligne',
},
content: {
input: 'Modérer le contenu INPUT',
output: 'Modérer le contenu de SORTIE',
preset: 'Réponses préétablies',
placeholder: 'Contenu des réponses prédéfinies ici',
condition: 'Contenu MODÉRÉ pour INPUT et OUTPUT activé au moins une fois',
fromApi: 'Les réponses prédéfinies sont renvoyées par l\'API',
errorMessage: 'Les réponses prédéfinies ne peuvent pas être vides',
supportMarkdown: 'Prise en charge de Markdown',
},
openaiNotConfig: {
before: 'La modération d\'OpenAI nécessite une clé API OpenAI configurée dans le',
after: 'Sorry, but you didn\'t provide a text to translate. Could you please provide the text?',
},
},
},
},
resetConfig: {
title: 'Confirmer la réinitialisation ?',
message:
'Réinitialiser supprime les modifications, en restaurant la dernière configuration publiée.',
},
errorMessage: {
nameOfKeyRequired: 'name of the key: {{key}} required',
valueOfVarRequired: 'La valeur de {{key}} ne peut pas être vide',
queryRequired: 'Le texte de la requête est requis.',
waitForResponse:
'Veuillez attendre que la réponse au message précédent soit terminée.',
waitForBatchResponse:
'Veuillez attendre que la réponse à la tâche en lot soit terminée.',
notSelectModel: 'Veuillez choisir un modèle',
waitForImgUpload: 'Veuillez attendre que l\'image soit téléchargée',
},
chatSubTitle: 'Instructions',
completionSubTitle: 'Indicatif de Prompt',
promptTip:
'Les prompts guident les réponses de l\'IA avec des instructions et des contraintes. Insérez des variables comme {{input}}. Ce prompt ne sera pas visible pour les utilisateurs.',
formattingChangedTitle: 'Formatage modifié',
formattingChangedText:
'La modification du formatage réinitialisera la zone de débogage, êtes-vous sûr ?',
variableTitle: 'Variables',
variableTip:
'Les utilisateurs remplissent des variables dans un formulaire, remplaçant automatiquement les variables dans le prompt.',
notSetVar: 'Les variables permettent aux utilisateurs d\'introduire des mots de prompt ou des remarques d\'ouverture lors du remplissage des formulaires. Vous pouvez essayer de saisir "{{input}}" dans les mots de prompt.',
autoAddVar: 'Des variables indéfinies référencées dans le pre-prompt, voulez-vous les ajouter dans le formulaire d\'entrée de l\'utilisateur ?',
variableTable: {
key: 'Clé Variable',
name: 'Nom du champ d\'entrée de l\'utilisateur',
optional: 'Facultatif',
type: 'Type d\'Entrée',
action: 'Actions',
typeString: 'Chaîne',
typeSelect: 'Sélectionner',
},
varKeyError: {
canNoBeEmpty: '{{key}} est obligatoire',
tooLong: '{{key}} too length. Can not be longer then 30 characters',
notValid: '{{key}} is invalid. Can only contain letters, numbers, and underscores',
notStartWithNumber: '{{key}} can not start with a number',
keyAlreadyExists: '{{key}} already exists',
},
otherError: {
promptNoBeEmpty: 'Le prompt ne peut pas être vide',
historyNoBeEmpty: 'L\'historique de la conversation doit être défini dans le prompt',
queryNoBeEmpty: 'La requête doit être définie dans le prompt',
},
variableConfig: {
'addModalTitle': 'Add Input Field',
'editModalTitle': 'Edit Input Field',
'description': 'Setting for variable {{varName}}',
'fieldType': 'Field type',
'string': 'Short Text',
'text-input': 'Short Text',
'paragraph': 'Paragraph',
'select': 'Select',
'number': 'Number',
'notSet': 'Not set, try typing {{input}} in the prefix prompt',
'stringTitle': 'Form text box options',
'maxLength': 'Max length',
'options': 'Options',
'addOption': 'Add option',
'apiBasedVar': 'API-based Variable',
'varName': 'Variable Name',
'labelName': 'Label Name',
'inputPlaceholder': 'Please input',
'required': 'Required',
'errorMsg': {
varNameRequired: 'Variable name is required',
labelNameRequired: 'Label name is required',
varNameCanBeRepeat: 'Variable name can not be repeated',
atLeastOneOption: 'At least one option is required',
optionRepeat: 'Has repeat options',
},
},
vision: {
name: 'Vision',
description: 'Enable Vision permettra au modèle de prendre des images et de répondre à des questions à leur sujet.',
settings: 'Paramètres',
visionSettings: {
title: 'Paramètres de Vision',
resolution: 'Résolution',
resolutionTooltip: `low res will allow model receive a low-res 512 x 512 version of the image, and represent the image with a budget of 65 tokens. This allows the API to return faster responses and consume fewer input tokens for use cases that do not require high detail.
\n
high res will first allows the model to see the low res image and then creates detailed crops of input images as 512px squares based on the input image size. Each of the detailed crops uses twice the token budget for a total of 129 tokens.`,
high: 'Élevé',
low: 'Faible',
uploadMethod: 'Méthode de Téléchargement',
both: 'Les deux',
localUpload: 'Téléchargement Local',
url: 'URL',
uploadLimit: 'Limite de téléchargement',
},
},
voice: {
name: 'Voix',
defaultDisplay: 'Voix par défaut',
description: 'Paramètres de la voix de synthèse vocale',
settings: 'Paramètres',
voiceSettings: {
title: 'Paramètres de voix',
language: 'Langue',
resolutionTooltip: 'Support de la langue pour la voix de synthèse de texte.',
voice: 'Voix',
autoPlay: 'Lecture Automatique',
autoPlayEnabled: 'Allumer',
autoPlayDisabled: 'Fermeture',
},
},
openingStatement: {
title: 'Ouverture de Conversation',
add: 'Ajouter',
writeOpener: 'Écrire l\'introduction',
placeholder: 'Rédigez votre message d\'ouverture ici, vous pouvez utiliser des variables, essayez de taper {{variable}}.',
openingQuestion: 'Questions d\'ouverture',
noDataPlaceHolder:
'Commencer la conversation avec l\'utilisateur peut aider l\'IA à établir une connexion plus proche avec eux dans les applications conversationnelles.',
varTip: 'Vous pouvez utiliser des variables, essayez de taper {{variable}}',
tooShort: 'Au moins 20 mots de l\'invite initiale sont requis pour générer des remarques d\'ouverture pour la conversation.',
notIncludeKey: 'The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt.',
},
modelConfig: {
model: 'Modèle',
setTone: 'Définir le ton des réponses',
title: 'Modèle et Paramètres',
modeType: {
chat: 'Discussion',
completion: 'Complet',
},
},
inputs: {
title: 'Déboguer et Aperçu',
noPrompt: 'Essayez d\'écrire une proposition dans l\'entrée pré-proposition',
userInputField: 'Champ de saisie utilisateur',
noVar: 'Remplissez la valeur de la variable, qui sera automatiquement remplacée dans le mot d\'invite chaque fois qu\'une nouvelle session est démarrée.',
chatVarTip:
'Remplissez la valeur de la variable, qui sera automatiquement remplacée dans le mot d\'invite chaque fois qu\'une nouvelle session est démarrée',
completionVarTip:
'Remplissez la valeur de la variable, qui sera automatiquement remplacée dans les mots de l\'invite chaque fois qu\'une question est soumise.',
previewTitle: 'Aperçu de la prompte',
queryTitle: 'Contenu de la requête',
queryPlaceholder: 'Veuillez entrer le texte de la demande.',
run: 'EXÉCUTER',
},
result: 'Texte de sortie',
datasetConfig: {
settingTitle: 'Paramètres de récupération',
knowledgeTip: 'Cliquez sur le bouton “+” pour ajouter des connaissances',
retrieveOneWay: {
title: 'Récupération N-vers-1',
description: 'En fonction de l\'intention de l\'utilisateur et des descriptions de Connaissance, l\'Agent sélectionne de manière autonome la meilleure Connaissance pour interroger. Idéal pour les applications avec une Connaissance distincte et limitée.',
},
retrieveMultiWay: {
title: 'Récupération multi-chemins',
description: 'En fonction de l\'intention de l\'utilisateur, interroge toutes les connaissances, récupère le texte pertinent de plusieurs sources et sélectionne les meilleurs résultats correspondant à la requête de l\'utilisateur après réordonnancement. La configuration de l\'API du modèle de réordonnancement est requise',
},
rerankModelRequired: 'Un modèle de réorganisation est nécessaire',
params: 'Paramètres',
top_k: 'Top K',
top_kTip: 'Utilisé pour filtrer les morceaux qui sont les plus similaires aux questions de l\'utilisateur. Le système ajustera également dynamiquement la valeur de Top K, selon max_tokens du modèle sélectionné.',
score_threshold: 'Seuil de Score',
score_thresholdTip: 'Utilisé pour définir le seuil de similarité pour le filtrage des morceaux.',
retrieveChangeTip: 'La modification du mode d\'indexation et du mode de récupération peut affecter les applications associées à cette Connaissance.',
},
debugAsSingleModel: 'Déboguer comme Modèle Unique',
debugAsMultipleModel: 'Déboguer en tant que Modèles Multiples',
duplicateModel: 'Dupliquer',
publishAs: 'Publier comme',
assistantType: {
name: 'Type d\'Assistant',
chatAssistant: {
name: 'Assistant de Base',
description: 'Construisez un assistant basé sur le chat en utilisant un grand modèle de langage',
},
agentAssistant: {
name: 'Assistant Agent',
description: 'Construisez un Agent intelligent qui peut choisir de manière autonome des outils pour accomplir les tâches',
},
},
agent: {
agentMode: 'Mode Agent',
agentModeDes: 'Définissez le type de mode d\'inférence pour l\'agent',
agentModeType: {
ReACT: 'RéAgir',
functionCall: 'Appel de fonction',
},
setting: {
name: 'Paramètres de l\'Agent',
description: 'Les paramètres de l\'Assistant Agent permettent de définir le mode de l\'agent et des fonctionnalités avancées comme les prompts intégrés, uniquement disponibles dans le type Agent.',
maximumIterations: {
name: 'Nombre Maximum d\'Itérations',
description: 'Limiter le nombre d\'itérations qu\'un assistant agent peut exécuter',
},
},
buildInPrompt: 'Prompt Intégré',
firstPrompt: 'Première Prompte',
nextIteration: 'Prochaine Itération',
promptPlaceholder: 'Écrivez votre prompt ici',
tools: {
name: 'Outils',
description: 'L\'utilisation d\'outils peut étendre les capacités des LLM, comme la recherche sur internet ou l\'exécution de calculs scientifiques.',
enabled: 'Activé',
},
},
}
export default translation

View File

@@ -0,0 +1,98 @@
const translation = {
title: 'Journaux',
description: 'Les journaux enregistrent l\'état d\'exécution de l\'application, y compris les entrées utilisateur et les réponses de l\'IA.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
updatedTime: 'Heure de mise à jour',
time: 'Heure de création',
endUser: 'Utilisateur final ou compte',
input: 'Entrée',
output: 'Sortie',
summary: 'Titre',
messageCount: 'Nombre de messages',
userRate: 'Taux utilisateur',
adminRate: 'Taux op.',
startTime: 'HEURE DE DÉBUT',
status: 'STATUT',
runtime: 'TEMPS D\'EXÉCUTION',
tokens: 'JETONS',
user: 'UTILISATEUR FINAL OU COMPTE',
version: 'VERSION',
},
pagination: {
previous: 'Précédent',
next: 'Suivant',
},
empty: {
noChat: 'Aucune conversation pour le moment',
noOutput: 'Aucune sortie',
element: {
title: 'Y a-t-il quelqu\'un ?',
content: 'Observez et annotez ici les interactions entre les utilisateurs finaux et les applications d\'IA pour améliorer en continu la précision de l\'IA. Vous pouvez essayer de <shareLink>partager</shareLink> ou de <testLink>tester</testLink> l\'application Web vous-même, puis revenir sur cette page.',
},
},
},
detail: {
time: 'Heure',
conversationId: 'ID de conversation',
promptTemplate: 'Modèle de consigne',
promptTemplateBeforeChat: 'Modèle de consigne avant la conversation · En tant que message système',
annotationTip: 'Améliorations marquées par {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Jeton dépensé',
loading: 'chargement',
operation: {
like: 'j\'aime',
dislike: 'je n\'aime pas',
addAnnotation: 'Ajouter une amélioration',
editAnnotation: 'Modifier une amélioration',
annotationPlaceholder: 'Entrez la réponse attendue que vous souhaitez que l\'IA donne, cela peut être utilisé pour le réglage fin du modèle et l\'amélioration continue de la qualité de génération de texte à l\'avenir.',
},
variables: 'Variables',
uploadImages: 'Images téléchargées',
modelParams: 'Paramètres du modèle',
},
filter: {
period: {
today: 'Aujourd\'hui',
last7days: '7 derniers jours',
last4weeks: '4 dernières semaines',
last3months: '3 derniers mois',
last12months: '12 derniers mois',
monthToDate: 'Mois à ce jour',
quarterToDate: 'Trimestre à ce jour',
yearToDate: 'Année à ce jour',
allTime: 'Tout le temps',
},
annotation: {
all: 'Tous',
annotated: 'Améliorations annotées ({{count}} éléments)',
not_annotated: 'Non annoté',
},
sortBy: 'Trier par :',
descending: 'décroissant',
ascending: 'croissant',
},
workflowTitle: 'Journaux de workflow',
workflowSubtitle: 'Le journal enregistre l\'opération d\'Automate.',
runDetail: {
title: 'Journal de conversation',
workflowTitle: 'Détail du journal',
fileListDetail: 'Détail',
fileListLabel: 'Détails du fichier',
},
promptLog: 'Journal de consigne',
agentLog: 'Journal des agents',
viewLog: 'Voir le journal',
agentLogDetail: {
agentMode: 'Mode Agent',
toolUsed: 'Outil utilisé',
iterations: 'Itérations',
iteration: 'Itération',
finalProcessing: 'Traitement final',
},
}
export default translation

View File

@@ -0,0 +1,172 @@
const translation = {
welcome: {
firstStepTip: 'Pour commencer,',
enterKeyTip: 'saisissez votre clé API OpenAI ci-dessous',
getKeyTip: 'Obtenez votre clé API depuis le tableau de bord OpenAI',
placeholder: 'Votre clé API OpenAI (ex. sk-xxxx)',
},
apiKeyInfo: {
cloud: {
trial: {
title: 'Vous utilisez le quota d\'essai de {{providerName}}.',
description: 'Le quota d\'essai est fourni pour votre usage de test. Avant l\'épuisement des appels de quota d\'essai, veuillez configurer votre propre fournisseur de modèle ou acheter un quota supplémentaire.',
},
exhausted: {
title: 'Votre quota d\'essai a été utilisé, veuillez configurer votre clé API.',
description: 'Votre quota d\'essai a été épuisé. Veuillez configurer votre propre fournisseur de modèle ou acheter un quota supplémentaire.',
},
},
selfHost: {
title: {
row1: 'Pour commencer,',
row2: 'configurez d\'abord votre fournisseur de modèle.',
},
},
callTimes: 'Appels',
usedToken: 'Token utilisés',
setAPIBtn: 'Aller à la configuration du fournisseur de modèle',
tryCloud: 'Ou essayez la version cloud de Dify avec un devis gratuit',
},
overview: {
title: 'Aperçu',
appInfo: {
explanation: 'WebApp AI prête à l\'emploi',
accessibleAddress: 'URL publique',
preview: 'Aperçu',
regenerate: 'Regénérer',
regenerateNotice: 'Voulez-vous régénérer l\'URL publique ?',
preUseReminder: 'Veuillez activer WebApp avant de continuer.',
settings: {
entry: 'Paramètres',
title: 'Paramètres de l\'application Web',
webName: 'Nom de l\'application Web',
webDesc: 'Description de l\'application Web',
webDescTip: 'Ce texte sera affiché côté client, fournissant des directives de base sur la façon d\'utiliser l\'application',
webDescPlaceholder: 'Entrez la description de l\'application Web',
language: 'Langue',
workflow: {
title: 'Étapes du workflow',
show: 'Afficher',
hide: 'Masquer',
showDesc: 'Afficher ou masquer les détails du flux de travail dans WebApp',
subTitle: 'Détails du flux de travail',
},
chatColorTheme: 'Thème de couleur du chatbot',
chatColorThemeDesc: 'Définir le thème de couleur du chatbot',
chatColorThemeInverted: 'Inversé',
invalidHexMessage: 'Valeur hexadécimale invalide',
more: {
entry: 'Afficher plus de paramètres',
copyright: 'Droits d\'auteur',
copyRightPlaceholder: 'Entrez le nom de l\'auteur ou de l\'organisation',
privacyPolicy: 'Politique de confidentialité',
privacyPolicyPlaceholder: 'Entrez le lien de la politique de confidentialité',
privacyPolicyTip: 'Aide les visiteurs à comprendre les données collectées par l\'application, voir la <privacyPolicyLink>Politique de confidentialité</privacyPolicyLink> de Dify.',
customDisclaimer: 'Clause de non-responsabilité personnalisée',
customDisclaimerPlaceholder: 'Entrez le texte de la clause de non-responsabilité personnalisée',
customDisclaimerTip: 'Le texte de la clause de non-responsabilité personnalisée sera affiché côté client, fournissant des informations supplémentaires sur l\'application',
copyrightTip: 'Afficher les informations de copyright dans lapplication web',
copyrightTooltip: 'Veuillez passer à labonnement professionnel ou supérieur',
},
sso: {
label: 'Authentification SSO',
title: 'WebApp SSO',
tooltip: 'Contactez ladministrateur pour activer lauthentification unique WebApp',
description: 'Tous les utilisateurs doivent se connecter avec lauthentification unique avant dutiliser WebApp',
},
modalTip: 'Paramètres de lapplication web côté client.',
},
embedded: {
entry: 'Intégré',
title: 'Intégrer sur un site Web',
explanation: 'Choisissez la manière d\'intégrer l\'application de chat à votre site Web',
iframe: 'Pour ajouter l\'application de chat n\'importe où sur votre site Web, ajoutez cette iframe à votre code HTML.',
scripts: 'Pour ajouter une application de chat en bas à droite de votre site Web, ajoutez ce code à votre HTML.',
chromePlugin: 'Installer l\'extension Chrome Dify Chatbot',
copied: 'Copié',
copy: 'Copier',
},
qrcode: {
title: 'QR code à partager',
scan: 'Scanner et partager l\'application',
download: 'Télécharger le code QR',
},
customize: {
way: 'façon',
entry: 'Personnaliser',
title: 'Personnaliser l\'application Web AI',
explanation: 'Vous pouvez personnaliser l\'interface utilisateur de l\'application Web pour répondre à vos besoins de scénario et de style.',
way1: {
name: 'Faire une copie du code client, le modifier et le déployer sur Vercel (recommandé)',
step1: 'Faire une copie du code client et le modifier',
step1Tip: 'Cliquez ici pour faire une copie du code source dans votre compte GitHub et le modifier',
step1Operation: 'Client-Web-Dify',
step2: 'Déployer sur Vercel',
step2Tip: 'Cliquez ici pour importer le dépôt dans Vercel et le déployer',
step2Operation: 'Importer le dépôt',
step3: 'Configurer les variables d\'environnement',
step3Tip: 'Ajoutez les variables d\'environnement suivantes dans Vercel',
},
way2: {
name: 'Écrire du code côté client pour appeler l\'API et le déployer sur un serveur',
operation: 'Documentation',
},
},
launch: 'Lancer',
},
apiInfo: {
title: 'API de service Backend',
explanation: 'Facilement intégré dans votre application',
accessibleAddress: 'Point de terminaison du service API',
doc: 'Référence de l\'API',
},
status: {
running: 'En service',
disable: 'Désactiver',
},
},
analysis: {
title: 'Analyse',
ms: 'ms',
tokenPS: 'Token/s',
totalMessages: {
title: 'Total des messages',
explanation: 'Nombre d\'interactions quotidiennes avec l\'IA.',
},
totalConversations: {
title: 'Conversations totales',
explanation: 'Nombre de conversations quotidiennes avec l\'IA ; ingénierie/débogage des prompts exclus.',
},
activeUsers: {
title: 'Utilisateurs actifs',
explanation: 'Utilisateurs uniques engagés dans des Q&R avec l\'IA ; l\'ingénierie/le débogage des prompts sont exclus.',
},
tokenUsage: {
title: 'Utilisation des tokens',
explanation: 'Reflet de l\'utilisation quotidienne des tokens du modèle de langue pour l\'application, utile pour le contrôle des coûts.',
consumed: 'Consommé',
},
avgSessionInteractions: {
title: 'Interactions moyennes par session',
explanation: 'Nombre de communications continu utilisateur-IA ; pour les applications basées sur la conversation.',
},
avgUserInteractions: {
title: 'Interactions moyennes par utilisateur',
explanation: 'Reflet de la fréquence d\'utilisation quotidienne des utilisateurs. Cette métrique reflète la fidélité des utilisateurs.',
},
userSatisfactionRate: {
title: 'Taux de satisfaction des utilisateurs',
explanation: 'Le nombre de likes parmi 1 000 messages. Cela indique la proportion de réponses avec lesquelles les utilisateurs sont très satisfaits.',
},
avgResponseTime: {
title: 'Temps de réponse moyen',
explanation: 'Temps (ms) pour l\'IA pour traiter/répondre ; pour les applications basées sur du texte.',
},
tps: {
title: 'Vitesse de sortie de token',
explanation: 'Mesurer les performances du LLM. Compter la vitesse de sortie des tokens du LLM depuis le début de la requête jusqu\'à l\'achèvement de la sortie.',
},
},
}
export default translation

View File

@@ -0,0 +1,199 @@
const translation = {
createApp: 'CRÉER UNE APPLICATION',
types: {
all: 'Tout',
chatbot: 'Chatbot',
agent: 'Agent',
workflow: 'Flux de travail',
completion: 'Terminaison',
basic: 'Basique',
advanced: 'Chatflow',
},
duplicate: 'Dupliquer',
duplicateTitle: 'Dupliquer l\'application',
export: 'Exporter DSL',
exportFailed: 'Échec de l\'exportation du DSL.',
importDSL: 'Importer le fichier DSL',
createFromConfigFile: 'Créer à partir du fichier DSL',
deleteAppConfirmTitle: 'Supprimer cette application ?',
deleteAppConfirmContent:
'La suppression de l\'application est irréversible. Les utilisateurs ne pourront plus accéder à votre application et toutes les configurations de prompt et les journaux seront définitivement supprimés.',
appDeleted: 'Application supprimée',
appDeleteFailed: 'Échec de la suppression de l\'application',
join: 'Rejoindre la communauté',
communityIntro:
'Discutez avec les membres de l\'équipe, les contributeurs et les développeurs sur différents canaux.',
roadmap: 'Voir notre feuille de route',
newApp: {
startFromBlank: 'Créer à partir de zéro',
startFromTemplate: 'Créer à partir d\'un modèle',
captionAppType: 'Quel type d\'application souhaitez-vous créer ?',
chatbotDescription: 'Construisez une application basée sur le chat. Cette application utilise un format question-réponse, permettant ainsi plusieurs tours de conversation continue.',
completionDescription: 'Construisez une application qui génère du texte de haute qualité en fonction des invites, telles que la génération d\'articles, de résumés, de traductions, et plus encore.',
completionWarning: 'Ce type d\'application ne sera plus pris en charge.',
agentDescription: 'Construisez un agent intelligent capable de choisir automatiquement les outils pour accomplir les tâches',
workflowDescription: 'Construisez une application qui génère du texte de haute qualité en fonction d\'un flux de travail avec un haut degré de personnalisation. Il convient aux utilisateurs expérimentés.',
workflowWarning: 'Actuellement en version bêta',
chatbotType: 'Méthode d\'orchestration du chatbot',
basic: 'Basique',
basicTip: 'Pour les débutants, peut passer à Chatflow plus tard',
basicFor: 'POUR LES DÉBUTANTS',
basicDescription: 'L\'orchestration de base permet d\'orchestrer une application Chatbot à l\'aide de paramètres simples, sans possibilité de modifier les invites intégrées. Il convient aux débutants.',
advanced: 'Chatflow',
advancedFor: 'Pour les utilisateurs avancés',
advancedDescription: 'L\'orchestration de flux de travail orchestre les Chatbots sous forme de workflows, offrant un haut degré de personnalisation, y compris la possibilité de modifier les invites intégrées. Il convient aux utilisateurs expérimentés.',
captionName: 'Icône et nom de l\'application',
appNamePlaceholder: 'Donnez un nom à votre application',
captionDescription: 'Description',
appDescriptionPlaceholder: 'Entrez la description de l\'application',
useTemplate: 'Utiliser ce modèle',
previewDemo: 'Aperçu de la démo',
chatApp: 'Assistant',
chatAppIntro:
'Je veux construire une application basée sur le chat. Cette application utilise un format question-réponse, permettant plusieurs tours de conversation continue.',
agentAssistant: 'Nouvel assistant agent',
completeApp: 'Générateur de texte',
completeAppIntro:
'Je veux créer une application qui génère du texte de haute qualité en fonction des invites, telles que la génération d\'articles, de résumés, de traductions, et plus encore.',
showTemplates: 'Je veux choisir parmi un modèle',
hideTemplates: 'Revenir à la sélection de mode',
Create: 'Créer',
Cancel: 'Annuler',
nameNotEmpty: 'Le nom ne peut pas être vide',
appTemplateNotSelected: 'Veuillez sélectionner un modèle',
appTypeRequired: 'Veuillez sélectionner un type d\'application',
appCreated: 'Application créée',
appCreateFailed: 'Échec de la création de l\'application',
Confirm: 'Confirmer',
caution: 'Prudence',
appCreateDSLWarning: 'Attention : la différence de version DSL peut affecter certaines fonctionnalités',
appCreateDSLErrorPart4: 'Version DSL prise en charge par le système :',
appCreateDSLErrorPart1: 'Une différence significative entre les versions DSL a été détectée. Forcer limportation peut entraîner un dysfonctionnement de lapplication.',
appCreateDSLErrorTitle: 'Incompatibilité de version',
appCreateDSLErrorPart3: 'Version actuelle de lapplication DSL :',
appCreateDSLErrorPart2: 'Voulez-vous continuer ?',
foundResults: '{{compte}} Résultats',
workflowShortDescription: 'Orchestration pour les tâches dautomatisation à tour unique',
agentShortDescription: 'Agent intelligent avec raisonnement et utilisation autonome de loutil',
learnMore: 'Pour en savoir plus',
noTemplateFound: 'Aucun modèle trouvé',
completionShortDescription: 'Assistant IA pour les tâches de génération de texte',
chatbotShortDescription: 'Chatbot basé sur LLM avec configuration simple',
advancedUserDescription: 'Orchestration du flux de travail pour les tâches de dialogue complexes à plusieurs tours avec des capacités de mémoire.',
noTemplateFoundTip: 'Essayez deffectuer une recherche à laide de mots-clés différents.',
noAppsFound: 'Aucune application trouvée',
chooseAppType: 'Choisissez le type dapplication',
forAdvanced: 'POUR LES UTILISATEURS AVANCÉS',
chatbotUserDescription: 'Créez rapidement un chatbot basé sur LLM avec une configuration simple. Vous pouvez passer à Chatflow plus tard.',
workflowUserDescription: 'Orchestration du flux de travail pour les tâches ponctuelles telles que lautomatisation et le traitement par lots.',
completionUserDescription: 'Créez rapidement un assistant IA pour les tâches de génération de texte avec une configuration simple.',
agentUserDescription: 'Un agent intelligent capable dun raisonnement itératif et dune utilisation autonome doutils pour atteindre les objectifs de la tâche.',
forBeginners: 'POUR LES DÉBUTANTS',
foundResult: '{{compte}} Résultat',
noIdeaTip: 'Pas didées ? Consultez nos modèles',
optional: 'Optionnel',
advancedShortDescription: 'Flux de travail pour des dialogues complexes à plusieurs tours avec mémoire',
},
editApp: 'Modifier les informations',
editAppTitle: 'Modifier les informations de l\'application',
editDone: 'Informations sur l\'application mises à jour',
editFailed: 'Échec de la mise à jour des informations de l\'application',
iconPicker: {
ok: 'OK',
cancel: 'Annuler',
emoji: 'Emoji',
image: 'Image',
},
switch: 'Passer à l\'orchestration de flux de travail',
switchTipStart: 'Une nouvelle copie de l\'application sera créée pour vous, et la nouvelle copie passera à l\'orchestration de flux de travail. La nouvelle copie ne permettra pas le ',
switchTip: 'retour',
switchTipEnd: ' à l\'orchestration de base.',
switchLabel: 'La copie de l\'application à créer',
removeOriginal: 'Supprimer l\'application d\'origine',
switchStart: 'Commencer la commutation',
typeSelector: {
all: 'Tous Types',
chatbot: 'Chatbot',
agent: 'Agent',
workflow: 'Flux de travail',
completion: 'Terminaison',
advanced: 'Chatflow',
},
tracing: {
title: 'Traçage des performances de l\'application',
description: 'Configuration d\'un fournisseur LLMOps tiers et traçage des performances de l\'application.',
config: 'Configurer',
collapse: 'Réduire',
expand: 'Développer',
tracing: 'Traçage',
disabled: 'Désactivé',
disabledTip: 'Veuillez d\'abord configurer le fournisseur',
enabled: 'En service',
tracingDescription: 'Capturez le contexte complet de l\'exécution de l\'application, y compris les appels LLM, le contexte, les prompts, les requêtes HTTP et plus encore, vers une plateforme de traçage tierce.',
configProviderTitle: {
configured: 'Configuré',
notConfigured: 'Configurez le fournisseur pour activer le traçage',
moreProvider: 'Plus de fournisseurs',
},
langsmith: {
title: 'LangSmith',
description: 'Une plateforme de développement tout-en-un pour chaque étape du cycle de vie des applications basées sur LLM.',
},
langfuse: {
title: 'Langfuse',
description: 'Traces, évaluations, gestion des prompts et métriques pour déboguer et améliorer votre application LLM.',
},
inUse: 'En utilisation',
configProvider: {
title: 'Configurer ',
placeholder: 'Entrez votre {{key}}',
project: 'Projet',
publicKey: 'Clé Publique',
secretKey: 'Clé Secrète',
viewDocsLink: 'Voir la documentation de {{key}}',
removeConfirmTitle: 'Supprimer la configuration de {{key}} ?',
removeConfirmContent: 'La configuration actuelle est en cours d\'utilisation, sa suppression désactivera la fonction de Traçage.',
},
view: 'Vue',
opik: {
description: 'Opik est une plate-forme open-source pour lévaluation, le test et la surveillance des applications LLM.',
title: 'Opik',
},
},
answerIcon: {
description: 'Sil faut utiliser licône WebApp pour remplacer 🤖 dans lapplication partagée',
title: 'Utiliser licône WebApp pour remplacer 🤖',
descriptionInExplore: 'Utilisation de licône WebApp pour remplacer 🤖 dans Explore',
},
importFromDSLUrlPlaceholder: 'Collez le lien DSL ici',
importFromDSL: 'Importation à partir dune DSL',
importFromDSLUrl: 'À partir de lURL',
importFromDSLFile: 'À partir dun fichier DSL',
mermaid: {
handDrawn: 'Dessiné à la main',
classic: 'Classique',
},
openInExplore: 'Ouvrir dans Explorer',
newAppFromTemplate: {
sidebar: {
HR: 'RH',
Assistant: 'Assistant',
Writing: 'Écriture',
Programming: 'Programmation',
Recommended: 'Recommandé',
Workflow: 'Flux de travail',
Agent: 'Agent',
},
byCategories: 'PAR CATÉGORIES',
searchAllTemplate: 'Rechercher dans tous les modèles...',
},
showMyCreatedAppsOnly: 'Afficher uniquement mes applications créées',
appSelector: {
noParams: 'Aucun paramètre nécessaire',
params: 'PARAMÈTRES DE LAPPLICATION',
label: 'APPLI',
placeholder: 'Sélectionnez une application...',
},
}
export default translation

View File

@@ -0,0 +1,118 @@
const translation = {
currentPlan: 'Plan Actuel',
upgradeBtn: {
plain: 'Mettre à jour le plan',
encourage: 'Mettre à niveau maintenant',
encourageShort: 'Mise à niveau',
},
viewBilling: 'Gérer la facturation et les abonnements',
buyPermissionDeniedTip: 'Veuillez contacter votre administrateur d\'entreprise pour vous abonner',
plansCommon: {
title: 'Choisissez un plan qui vous convient',
yearlyTip: 'Obtenez 2 mois gratuitement en vous abonnant annuellement !',
mostPopular: 'Le Plus Populaire',
planRange: {
monthly: 'Mensuel',
yearly: 'Annuel',
},
month: 'mois',
year: 'année',
save: 'Enregistrer',
free: 'Gratuit',
currentPlan: 'Plan Actuel',
contractSales: 'Contactez les ventes',
contractOwner: 'Contacter le chef d\'équipe',
startForFree: 'Commencez gratuitement',
getStartedWith: 'Commencez avec',
contactSales: 'Contacter les ventes',
talkToSales: 'Parlez aux Ventes',
modelProviders: 'Fournisseurs de Modèles',
teamMembers: 'Membres de l\'équipe',
buildApps: 'Construire des Applications',
vectorSpace: 'Espace Vectoriel',
vectorSpaceBillingTooltip: 'Chaque 1MB peut stocker environ 1,2 million de caractères de données vectorisées (estimé en utilisant les embeddings OpenAI, varie selon les modèles).',
vectorSpaceTooltip: 'L\'espace vectoriel est le système de mémoire à long terme nécessaire pour que les LLMs comprennent vos données.',
documentsUploadQuota: 'Quota de téléchargement de documents',
documentProcessingPriority: 'Priorité de Traitement de Document',
documentProcessingPriorityTip: 'Pour une priorité de traitement de documents plus élevée, veuillez mettre à niveau votre plan.',
documentProcessingPriorityUpgrade: 'Traitez plus de données avec une précision plus élevée à des vitesses plus rapides.',
priority: {
'standard': 'Standard',
'priority': 'Priorité',
'top-priority': 'Priorité Maximale',
},
logsHistory: 'Historique des logs',
customTools: 'Outils personnalisés',
unavailable: 'Indisponible',
days: 'jours',
unlimited: 'Illimité',
support: 'Assistance',
supportItems: {
communityForums: 'Forums communautaires',
emailSupport: 'Support par email',
priorityEmail: 'Support prioritaire par email et chat',
logoChange: 'Changement de logo',
SSOAuthentication: 'Authentification SSO',
personalizedSupport: 'Soutien personnalisé',
dedicatedAPISupport: 'Support dédié pour l\'API',
customIntegration: 'Intégration personnalisée et support',
ragAPIRequest: 'Requêtes API RAG',
bulkUpload: 'Téléchargement en masse de documents',
agentMode: 'Mode Agent',
workflow: 'Flux de travail',
llmLoadingBalancingTooltip: 'Ajoutez plusieurs clés API aux modèles, en contournant efficacement les limites de débit de lAPI.',
llmLoadingBalancing: 'Équilibrage de charge LLM',
},
comingSoon: 'Bientôt disponible',
member: 'Membre',
memberAfter: 'Membre',
messageRequest: {
title: 'Crédits de message',
tooltip: 'Quotas d\'invocation de messages pour divers plans utilisant les modèles OpenAI (sauf gpt4). Les messages dépassant la limite utiliseront votre clé API OpenAI.',
},
annotatedResponse: {
title: 'Limites de quota d\'annotation',
tooltip: 'L\'édition manuelle et l\'annotation des réponses fournissent des capacités de réponse aux questions de haute qualité personnalisables pour les applications. (Applicable uniquement dans les applications de chat)',
},
ragAPIRequestTooltip: 'Fait référence au nombre d\'appels API invoquant uniquement les capacités de traitement de la base de connaissances de Dify.',
receiptInfo: 'Seuls le propriétaire de l\'équipe et l\'administrateur de l\'équipe peuvent s\'abonner et consulter les informations de facturation',
annotationQuota: 'Quota dannotation',
},
plans: {
sandbox: {
name: 'Bac à sable',
description: '200 essais gratuits de GPT',
includesTitle: 'Inclus :',
},
professional: {
name: 'Professionnel',
description: 'Pour les individus et les petites équipes afin de débloquer plus de puissance à un prix abordable.',
includesTitle: 'Tout ce qui est dans le plan gratuit, plus :',
},
team: {
name: 'Équipe',
description: 'Collaborez sans limites et profitez d\'une performance de premier ordre.',
includesTitle: 'Tout ce qui est inclus dans le plan Professionnel, plus :',
},
enterprise: {
name: 'Entreprise',
description: 'Obtenez toutes les capacités et le support pour les systèmes à grande échelle et critiques pour la mission.',
includesTitle: 'Tout ce qui est inclus dans le plan Équipe, plus :',
},
},
vectorSpace: {
fullTip: 'L\'espace vectoriel est plein.',
fullSolution: 'Mettez à niveau votre plan pour obtenir plus d\'espace.',
},
apps: {
fullTipLine1: 'Mettez à jour votre plan pour',
fullTipLine2: 'construire plus d\'applications.',
},
annotatedResponse: {
fullTipLine1: 'Mettez à niveau votre plan pour',
fullTipLine2: 'annotez plus de conversations.',
quotaTitle: 'Quota de Réponse d\'Annotation',
},
}
export default translation

View File

@@ -0,0 +1,642 @@
const translation = {
api: {
success: 'Succès',
actionSuccess: 'Action réussie',
saved: 'Sauvegardé',
create: 'Créé',
remove: 'Supprimé',
},
operation: {
create: 'Créer',
confirm: 'Confirmer',
cancel: 'Annuler',
clear: 'Effacer',
save: 'Enregistrer',
saveAndEnable: 'Enregistrer et Activer',
edit: 'Modifier',
add: 'Ajouter',
added: 'Ajouté',
refresh: 'Redémarrer',
reset: 'Réinitialiser',
search: 'Recherche',
change: 'Changer',
remove: 'Supprimer',
send: 'Envoyer',
copy: 'Copier',
lineBreak: 'Saut de ligne',
sure: 'Je suis sûr',
download: 'Télécharger',
delete: 'Supprimer',
settings: 'Paramètres',
setup: 'Configuration',
getForFree: 'Obtenez gratuitement',
reload: 'Recharger',
ok: 'D\'accord',
log: 'Journal',
learnMore: 'En savoir plus',
params: 'Paramètres',
duplicate: 'Dupliquer',
rename: 'Renommer',
audioSourceUnavailable: 'AudioSource nest pas disponible',
zoomOut: 'Zoom arrière',
zoomIn: 'Zoom avant',
openInNewTab: 'Ouvrir dans un nouvel onglet',
copyImage: 'Copier limage',
view: 'Vue',
viewMore: 'VOIR PLUS',
close: 'Fermer',
saveAndRegenerate: 'Enregistrer et régénérer des morceaux enfants',
regenerate: 'Régénérer',
submit: 'Envoyer',
skip: 'Bateau',
imageCopied: 'Image copied',
deleteApp: 'Supprimer lapplication',
viewDetails: 'Voir les détails',
copied: 'Copied',
in: 'dans',
},
placeholder: {
input: 'Veuillez entrer',
select: 'Veuillez sélectionner',
},
voice: {
language: {
zhHans: 'Chinois',
zhHant: 'Chinois (traditionnel)',
enUS: 'Anglais',
deDE: 'Allemand',
frFR: 'Français',
esES: 'Espagnol',
itIT: 'Italien',
thTH: 'Thaï',
idID: 'Indonésien',
jaJP: 'Japonais',
koKR: 'Coréen',
ptBR: 'Portugais',
ruRU: 'Russe',
ukUA: 'Ukrainien',
viVN: 'Vietnamien',
plPL: 'Polonais',
roRO: 'Roumain',
hiIN: 'Hindi',
trTR: 'Turc',
faIR: 'Persan',
},
},
unit: {
char: 'caractères',
},
actionMsg: {
noModification: 'Aucune modification pour le moment.',
modifiedSuccessfully: 'Modifié avec succès',
modifiedUnsuccessfully: 'Modifié sans succès',
copySuccessfully: 'Copié avec succès',
paySucceeded: 'Paiement réussi',
payCancelled: 'Paiement annulé',
generatedSuccessfully: 'Généré avec succès',
generatedUnsuccessfully: 'Généré sans succès',
},
model: {
params: {
temperature: 'Température',
temperatureTip:
'Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.',
top_p: 'Haut P',
top_pTip:
'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.',
presence_penalty: 'Pénalité de présence',
presence_penaltyTip:
'Combien pénaliser les nouveaux tokens en fonction de leur apparition dans le texte jusqu\'à présent. Augmente la probabilité du modèle de parler de nouveaux sujets.',
frequency_penalty: 'Pénalité de fréquence',
frequency_penaltyTip:
'Combien pénaliser les nouveaux tokens en fonction de leur fréquence existante dans le texte jusqu\'à présent. Réduit la probabilité du modèle de répéter la même ligne mot pour mot.',
max_tokens: 'Max jeton',
max_tokensTip:
'Utilisé pour limiter la longueur maximale de la réponse, en jetons. \nDes valeurs plus grandes peuvent limiter l\'espace restant pour les mots de prompt, les journaux de chat, et la Connaissance. \nIl est recommandé de le régler en dessous des',
maxTokenSettingTip: 'Votre réglage de max token est élevé, limitant potentiellement l\'espace pour les prompts, les requêtes et les données. Envisagez de le définir en dessous de 2/3.',
setToCurrentModelMaxTokenTip: 'Le max token est mis à jour à 80% du max token du modèle actuel {{maxToken}}.',
stop_sequences: 'Séquences d\'arrêt',
stop_sequencesTip: 'Jusqu\'à quatre séquences où l\'API arrêtera de générer d\'autres tokens. Le texte renvoyé ne contiendra pas la séquence d\'arrêt.',
stop_sequencesPlaceholder: 'Entrez la séquence et appuyez sur Tab',
},
tone: {
Creative: 'Créatif',
Balanced: 'Équilibré',
Precise: 'Précis',
Custom: 'Personnalisé',
},
addMoreModel: 'Allez dans les paramètres pour ajouter plus de modèles',
capabilities: 'Capacités multimodales',
settingsLink: 'Paramètres du fournisseur de modèles',
},
menus: {
status: 'bêta',
explore: 'Explorer',
apps: 'Studio',
plugins: 'Plugins',
pluginsTips: 'Intégrez des plugins tiers ou créez des AI-Plugins compatibles avec ChatGPT.',
datasets: 'Connaissance',
datasetsTips: 'COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.',
newApp: 'Nouvelle Application',
newDataset: 'Créer des Connaissances',
tools: 'Outils',
exploreMarketplace: 'Explorer Marketplace',
},
userProfile: {
settings: 'Paramètres',
emailSupport: 'Support par courriel',
workspace: 'Espace de travail',
createWorkspace: 'Créer un Espace de Travail',
helpCenter: 'Aide',
communityFeedback: 'Retour d\'information',
roadmap: 'Feuille de route',
community: 'Communauté',
about: 'À propos',
logout: 'Se déconnecter',
},
settings: {
accountGroup: 'COMPTE',
workplaceGroup: 'ESPACE DE TRAVAIL',
account: 'Mon compte',
members: 'Membres',
billing: 'Facturation',
integrations: 'Intégrations',
language: 'Langue',
provider: 'Fournisseur de Modèle',
dataSource: 'Source de Données',
plugin: 'Plugins',
apiBasedExtension: 'Extension API',
generalGroup: 'GÉNÉRALITÉS',
},
account: {
avatar: 'Avatar',
name: 'Nom',
email: 'Courriel',
password: 'Mot de passe',
passwordTip: 'Vous pouvez définir un mot de passe permanent si vous ne souhaitez pas utiliser des codes de connexion temporaires.',
setPassword: 'Définir un mot de passe',
resetPassword: 'Réinitialiser le mot de passe',
currentPassword: 'Mot de passe actuel',
newPassword: 'Nouveau mot de passe',
confirmPassword: 'Confirmer le mot de passe',
notEqual: 'Les deux mots de passe sont différents.',
langGeniusAccount: 'Compte Dify',
langGeniusAccountTip: 'Votre compte Dify et les données utilisateur associées.',
editName: 'Modifier le nom',
showAppLength: 'Afficher {{length}} applications',
delete: 'Supprimer le compte',
deleteTip: 'La suppression de votre compte effacera définitivement toutes vos données et elles ne pourront pas être récupérées.',
deleteConfirmTip: 'Pour confirmer, veuillez envoyer ce qui suit depuis votre adresse e-mail enregistrée à ',
myAccount: 'Mon compte',
account: 'Compte',
studio: 'Dify Studio',
deletePrivacyLinkTip: 'Pour plus dinformations sur la façon dont nous traitons vos données, veuillez consulter notre',
deletePrivacyLink: 'Politique de confidentialité.',
deleteSuccessTip: 'Votre compte a besoin de temps pour terminer la suppression. Nous vous enverrons un e-mail lorsque tout sera terminé.',
deleteLabel: 'Pour confirmer, veuillez saisir votre adresse e-mail ci-dessous',
deletePlaceholder: 'Veuillez entrer votre adresse e-mail',
sendVerificationButton: 'Envoyer le code de vérification',
verificationLabel: 'Code de vérification',
verificationPlaceholder: 'Collez le code à 6 chiffres',
permanentlyDeleteButton: 'Supprimer définitivement le compte',
feedbackTitle: 'Rétroaction',
feedbackLabel: 'Dites-nous pourquoi vous avez supprimé votre compte ?',
feedbackPlaceholder: 'Optionnel',
},
members: {
team: 'Équipe',
invite: 'Ajouter',
name: 'NOM',
lastActive: 'DERNIÈRE ACTIVITÉ',
role: 'RÔLES',
pending: 'En attente...',
owner: 'Propriétaire',
admin: 'Administrateur',
adminTip: 'Peut construire des applications & gérer les paramètres de l\'équipe',
normal: 'Normal',
normalTip: 'Peut seulement utiliser des applications, ne peut pas construire des applications',
editor: 'Éditeur',
editorTip: 'Peut construire des applications, mais ne peut pas gérer les paramètres de l\'équipe',
inviteTeamMember: 'Ajouter un membre de l\'équipe',
inviteTeamMemberTip: 'Ils peuvent accéder directement à vos données d\'équipe après s\'être connectés.',
emailNotSetup: 'Le serveur de messagerie n\'est pas configuré, les e-mails d\'invitation ne peuvent donc pas être envoyés. Veuillez informer les utilisateurs du lien d\'invitation qui sera émis après l\'invitation.',
email: 'Courrier électronique',
emailInvalid: 'Format de courriel invalide',
emailPlaceholder: 'Veuillez entrer des emails',
sendInvite: 'Envoyer une invitation',
invitedAsRole: 'Invité en tant qu\'utilisateur {{role}}',
invitationSent: 'Invitation envoyée',
invitationSentTip: 'Invitation envoyée, et ils peuvent se connecter à Dify pour accéder aux données de votre équipe.',
invitationLink: 'Lien d\'invitation',
failedInvitationEmails: 'Les utilisateurs ci-dessous n\'ont pas été invités avec succès',
ok: 'D\'accord',
removeFromTeam: 'Retirer de l\'équipe',
removeFromTeamTip: 'Supprimera l\'accès de l\'équipe',
setAdmin: 'Définir comme administrateur',
setMember: 'Définir en tant que membre ordinaire',
setEditor: 'Définir en tant qu\'éditeur',
disInvite: 'Annuler l\'invitation',
deleteMember: 'Supprimer Membre',
you: '(Vous)',
builder: 'Constructeur',
datasetOperatorTip: 'Seul peut gérer la base de connaissances',
datasetOperator: 'Administrateur des connaissances',
setBuilder: 'Définir en tant que constructeur',
builderTip: 'Peut créer et modifier ses propres applications',
},
integrations: {
connected: 'Connecté',
google: 'Google',
googleAccount: 'Connectez-vous avec un compte Google',
github: 'GitHub',
githubAccount: 'Connectez-vous avec un compte GitHub',
connect: 'Connecter',
},
language: {
displayLanguage: 'Langue d\'affichage',
timezone: 'Fuseau horaire',
},
provider: {
apiKey: 'Clé API',
enterYourKey: 'Entrez votre clé API ici',
invalidKey: 'Clé API OpenAI invalide',
validatedError: 'Validation failed: ',
validating: 'Validation de la clé...',
saveFailed: 'La sauvegarde de la clé API a échoué',
apiKeyExceedBill: 'Cette clé API n\'a pas de quota disponible, veuillez lire',
addKey: 'Ajouter une clé',
comingSoon: 'Bientôt disponible',
editKey: 'Modifier',
invalidApiKey: 'Clé API invalide',
azure: {
apiBase: 'Base de l\'API',
apiBasePlaceholder: 'L\'URL de base de l\'API de votre point de terminaison Azure OpenAI.',
apiKey: 'Clé API',
apiKeyPlaceholder: 'Entrez votre clé API ici',
helpTip: 'Apprenez le service OpenAI Azure',
},
openaiHosted: {
openaiHosted: 'OpenAI Hébergé',
onTrial: 'EN ESSAI',
exhausted: 'QUOTA ÉPUISÉ',
desc: 'Le service d\'hébergement OpenAI fourni par Dify vous permet d\'utiliser des modèles tels que GPT-3.5. Avant que votre quota d\'essai ne soit épuisé, vous devez configurer d\'autres fournisseurs de modèles.',
callTimes: 'Temps d\'appel',
usedUp: 'Quota d\'essai épuisé. Ajoutez votre propre fournisseur de modèle.',
useYourModel: 'Utilise actuellement son propre fournisseur de modèle.',
close: 'Fermer',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: 'EN ESSAI',
exhausted: 'QUOTA ÉPUISÉ',
desc: 'Modèle puissant, qui excelle dans une large gamme de tâches allant du dialogue sophistiqué et de la génération de contenu créatif à l\'instruction détaillée.',
callTimes: 'Temps d\'appel',
usedUp: 'Quota d\'essai épuisé. Ajoutez votre propre fournisseur de modèle.',
useYourModel: 'Utilise actuellement son propre fournisseur de modèle.',
close: 'Fermer',
trialQuotaTip: 'Votre quota dessai Anthropic expirera le 11/03/2025 et ne sera plus disponible par la suite. Veuillez lutiliser à temps.',
},
anthropic: {
using: 'La capacité d\'embedding est utilisée',
enableTip: 'Pour activer le modèle Anthropic, vous devez d\'abord vous lier à OpenAI ou au service Azure OpenAI.',
notEnabled: 'Non activé',
keyFrom: 'Obtenez votre clé API de chez Anthropic',
},
encrypted: {
front: 'Votre clé API sera chiffrée et stockée en utilisant',
back: 'technologie.',
},
},
modelProvider: {
notConfigured: 'Le modèle du système n\'a pas encore été entièrement configuré, et certaines fonctions peuvent être indisponibles.',
systemModelSettings: 'Paramètres du Modèle Système',
systemModelSettingsLink: 'Pourquoi est-il nécessaire de mettre en place un modèle de système ?',
selectModel: 'Sélectionnez votre modèle',
setupModelFirst: 'Veuillez d\'abord configurer votre modèle',
systemReasoningModel: {
key: 'Modèle de Raisonnement du Système',
tip: 'Définissez le modèle d\'inférence par défaut à utiliser pour la création d\'applications, ainsi que des fonctionnalités telles que la génération de noms de dialogue et la suggestion de la prochaine question utiliseront également le modèle d\'inférence par défaut.',
},
embeddingModel: {
key: 'Modèle d\'Embedding',
tip: 'Définissez le modèle par défaut pour le traitement d\'incorporation de documents de la Connaissance, à la fois la récupération et l\'importation de la Connaissance utilisent ce modèle d\'Embedding pour le traitement de vectorisation. Si vous changez de modèle, la dimension du vecteur entre la connaissance importée et la question ne sera pas cohérente, ce qui entraînera un échec de la recherche. Pour éviter les échecs de recherche, veuillez ne pas changer de modèle à volonté.',
required: 'Le modèle d\'embedding est requis',
},
speechToTextModel: {
key: 'Modèle de Texte-à-Parole',
tip: 'Définissez le modèle par défaut pour l\'entrée de texte par la parole dans la conversation.',
},
ttsModel: {
key: 'Modèle de Texte-à-Parole',
tip: 'Définissez le modèle par défaut pour l\'entrée de texte à la parole dans une conversation.',
},
rerankModel: {
key: 'Modèle de Réorganisation',
tip: 'Le modèle de réorganisation réorganisera la liste des documents candidats en fonction de la correspondance sémantique avec la requête de l\'utilisateur, améliorant ainsi les résultats du classement sémantique.',
},
quota: 'Quota',
searchModel: 'Modèle de recherche',
noModelFound: 'Aucun modèle trouvé pour {{model}}',
models: 'Modèles',
showMoreModelProvider: 'Montrer plus de fournisseur de modèle',
selector: {
tip: 'Ce modèle a été supprimé. Veuillez ajouter un modèle ou sélectionner un autre modèle.',
emptyTip: 'Aucun modèle disponible',
emptySetting: 'Veuillez aller dans les paramètres pour configurer',
rerankTip: 'Veuillez configurer le modèle Rerank',
},
card: {
quota: 'QUOTA',
onTrial: 'En Essai',
paid: 'Payé',
quotaExhausted: 'Quota épuisé',
callTimes: 'Temps d\'appel',
tokens: 'Jetons',
buyQuota: 'Acheter Quota',
priorityUse: 'Utilisation prioritaire',
removeKey: 'Supprimer la clé API',
tip: 'La priorité sera donnée au quota payant. Le quota d\'essai sera utilisé après épuisement du quota payant.',
},
item: {
deleteDesc: '{{modelName}} sont utilisés comme modèles de raisonnement système. Certaines fonctions ne seront pas disponibles après la suppression. Veuillez confirmer.',
freeQuota: 'QUOTA GRATUIT',
},
addApiKey: 'Ajoutez votre clé API',
invalidApiKey: 'Clé API invalide',
encrypted: {
front: 'Votre clé API sera cryptée et stockée en utilisant',
back: 'technologie.',
},
freeQuota: {
howToEarn: 'Comment gagner',
},
addMoreModelProvider: 'AJOUTER PLUS DE FOURNISSEUR DE MODÈLE',
addModel: 'Ajouter un modèle',
modelsNum: '{{num}} Modèles',
showModels: 'Montrer les modèles',
showModelsNum: 'Afficher {{num}} Modèles',
collapse: 'Effondrer',
config: 'Configuration',
modelAndParameters: 'Modèle et Paramètres',
model: 'Modèle',
featureSupported: '{{feature}} pris en charge',
callTimes: 'Temps d\'appel',
credits: 'Crédits de Messages',
buyQuota: 'Acheter Quota',
getFreeTokens: 'Obtenez des Tokens gratuits',
priorityUsing: 'Prioriser l\'utilisation',
deprecated: 'Obsolète',
confirmDelete: 'confirmer la suppression?',
quotaTip: 'Tokens gratuits restants disponibles',
loadPresets: 'Charger les Présents',
parameters: 'PARAMÈTRES',
modelHasBeenDeprecated: 'Ce modèle est obsolète',
providerManagedDescription: 'Utilisez lensemble unique dinformations didentification fourni par le fournisseur de modèle.',
loadBalancingHeadline: 'Équilibrage',
loadBalancing: 'Équilibrage',
loadBalancingLeastKeyWarning: 'Pour activer léquilibrage de charge, au moins 2 clés doivent être activées.',
apiKey: 'API-KEY',
apiKeyStatusNormal: 'Létat de lAPIKey est normal',
configLoadBalancing: 'Équilibrage de charge de configuration',
loadBalancingInfo: 'Par défaut, léquilibrage de charge utilise la stratégie Round-robin. Si la limitation de vitesse est déclenchée, une période de recharge de 1 minute sera appliquée.',
editConfig: 'Modifier la configuration',
addConfig: 'Ajouter une configuration',
apiKeyRateLimit: 'La limite de débit a été atteinte, disponible après {{secondes}}s',
defaultConfig: 'Configuration par défaut',
loadBalancingDescription: 'Réduisez la pression grâce à plusieurs ensembles dinformations didentification.',
providerManaged: 'Géré par le fournisseur',
upgradeForLoadBalancing: 'Mettez à niveau votre plan pour activer léquilibrage de charge.',
emptyProviderTitle: 'Le fournisseur de modèles nest pas configuré',
toBeConfigured: 'À configurer',
configureTip: 'Configurer api-key ou ajouter un modèle à utiliser',
installProvider: 'Installer des fournisseurs de modèles',
discoverMore: 'Découvrez-en plus dans',
emptyProviderTip: 'Veuillez dabord installer un fournisseur de modèles.',
},
dataSource: {
add: 'Ajouter une source de données',
connect: 'Connecter',
notion: {
title: 'Notion',
description: 'Utiliser Notion comme source de données pour la Connaissance.',
connectedWorkspace: 'Espace de travail connecté',
addWorkspace: 'Ajouter un espace de travail',
connected: 'Connecté',
disconnected: 'Déconnecté',
changeAuthorizedPages: 'Modifier les pages autorisées',
pagesAuthorized: 'Pages autorisées',
sync: 'Synchronisation',
remove: 'Supprimer',
selector: {
pageSelected: 'Pages Sélectionnées',
searchPages: 'Rechercher des pages...',
noSearchResult: 'Aucun résultat de recherche',
addPages: 'Ajouter des pages',
preview: 'APERÇU',
},
},
website: {
configuredCrawlers: 'Robots dexploration configurés',
with: 'Avec',
inactive: 'Inactif',
active: 'Actif',
title: 'Site internet',
description: 'Importez du contenu à partir de sites Web à laide du robot dindexation.',
},
configure: 'Configurer',
},
plugin: {
serpapi: {
apiKey: 'Clé API',
apiKeyPlaceholder: 'Entrez votre clé API',
keyFrom: 'Obtenez votre clé SerpAPI depuis la page de compte SerpAPI',
},
},
apiBasedExtension: {
title: 'Les extensions API fournissent une gestion centralisée des API, simplifiant la configuration pour une utilisation facile à travers les applications de Dify.',
link: 'Apprenez comment développer votre propre Extension API.',
linkUrl: 'https://docs.dify.ai/fonctionnalites/extension/extension_basee_sur_api',
add: 'Ajouter l\'extension API',
selector: {
title: 'Extension de l\'API',
placeholder: 'Veuillez sélectionner l\'extension API',
manage: 'Gérer l\'extension API',
},
modal: {
title: 'Ajouter une extension API',
editTitle: 'Modifier l\'extension API',
name: {
title: 'Nom',
placeholder: 'Veuillez entrer le nom',
},
apiEndpoint: {
title: 'Point de terminaison API',
placeholder: 'Veuillez entrer le point de terminaison de l\'API',
},
apiKey: {
title: 'clé API',
placeholder: 'Veuillez entrer la clé API',
lengthError: 'La longueur de la clé API ne peut pas être inférieure à 5 caractères',
},
},
type: 'Tapez',
},
about: {
changeLog: 'Journal des modifications',
updateNow: 'Mettre à jour maintenant',
nowAvailable: 'Dify {{version}} est maintenant disponible.',
latestAvailable: 'Dify {{version}} est la dernière version disponible.',
},
appMenus: {
overview: 'Surveillance',
promptEng: 'Orchestrer',
apiAccess: 'Accès API',
logAndAnn: 'Journaux & Annonces.',
logs: 'Journaux',
},
environment: {
testing: 'TESTER',
development: 'DÉVELOPPEMENT',
},
appModes: {
completionApp: 'Générateur de Texte',
chatApp: 'Appli de Chat',
},
datasetMenus: {
documents: 'Documents',
hitTesting: 'Test de Récupération',
settings: 'Paramètres',
emptyTip: 'La Connaissance n\'a pas été associée, veuillez aller à l\'application ou au plug-in pour compléter l\'association.',
viewDoc: 'Voir la documentation',
relatedApp: 'applications liées',
noRelatedApp: 'Pas dapplications liées',
},
voiceInput: {
speaking: 'Parle maintenant...',
converting: 'Conversion en texte...',
notAllow: 'microphone non autorisé',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Texte-Davinci-003',
'text-embedding-ada-002': 'Texte-Intégration-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: 'Renommer la conversation',
conversationName: 'Nom de la conversation',
conversationNamePlaceholder: 'Veuillez entrer le nom de la conversation',
conversationNameCanNotEmpty: 'Nom de la conversation requis',
citation: {
title: 'CITATIONS',
linkToDataset: 'Lien vers la Connaissance',
characters: 'Personnages :',
hitCount: 'Nombre de récupérations :',
vectorHash: 'Hachage vectoriel:',
hitScore: 'Score de Récupération:',
},
inputPlaceholder: 'Parler au bot',
thinking: 'Pensée...',
thought: 'Pensée',
},
promptEditor: {
placeholder: 'Écrivez votre mot d\'invite ici, entrez \'{\' pour insérer une variable, entrez \'/\' pour insérer un bloc de contenu d\'invite',
context: {
item: {
title: 'Contexte',
desc: 'Insérez le modèle de contexte',
},
modal: {
title: '{{num}} Connaissance en Contexte',
add: 'Ajouter Contexte',
footer: 'Vous pouvez gérer les contextes dans la section Contexte ci-dessous.',
},
},
history: {
item: {
title: 'Historique des conversations',
desc: 'Insérer le modèle de message historique',
},
modal: {
title: 'EXEMPLE',
user: 'Bonjour',
assistant: 'Bonjour ! Comment puis-je vous aider aujourd\'hui ?',
edit: 'Modifier les Noms des Rôles de Conversation',
},
},
variable: {
item: {
title: 'Variables & Outils Externes',
desc: 'Insérer des Variables & Outils Externes',
},
outputToolDisabledItem: {
title: 'Variables',
desc: 'Insérer Variables',
},
modal: {
add: 'Nouvelle variable',
addTool: 'Nouvel outil',
},
},
query: {
item: {
title: 'Requête',
desc: 'Insérez le modèle de requête utilisateur',
},
},
existed: 'Existe déjà dans le prompt',
},
imageUploader: {
uploadFromComputer: 'Télécharger depuis l\'ordinateur',
uploadFromComputerReadError: 'La lecture de l\'image a échoué, veuillez réessayer.',
uploadFromComputerUploadError: 'Le téléchargement de l\'image a échoué, veuillez télécharger à nouveau.',
uploadFromComputerLimit: 'Le téléchargement d\'images ne peut pas dépasser {{size}} MB',
pasteImageLink: 'Collez le lien de l\'image',
pasteImageLinkInputPlaceholder: 'Collez le lien de l\'image ici',
pasteImageLinkInvalid: 'Lien d\'image invalide',
imageUpload: 'Téléchargement d\'image',
},
tag: {
placeholder: 'Toutes les balises',
addNew: 'Ajouter une nouvelle balise',
noTag: 'Aucune balise',
noTagYet: 'Aucune balise pour l\'instant',
addTag: 'ajouter une balise',
editTag: 'Modifier les balises',
manageTags: 'Gérer les balises',
selectorPlaceholder: 'Type de recherche ou de création',
create: 'Créer',
delete: 'Supprimer la balise',
deleteTip: 'Le tag est utilisé, le supprimer ?',
created: 'Tag créé avec succès',
failed: 'La création de la balise a échoué',
},
errorMsg: {
fieldRequired: '{{field}} est obligatoire',
urlError: 'LURL doit commencer par http:// ou https://',
},
fileUploader: {
pasteFileLinkInputPlaceholder: 'Entrez lURL...',
uploadFromComputer: 'Téléchargement local',
pasteFileLink: 'Coller le lien du fichier',
uploadFromComputerReadError: 'Échec de la lecture du fichier, veuillez réessayer.',
uploadFromComputerUploadError: 'Le téléchargement du fichier a échoué, veuillez le télécharger à nouveau.',
fileExtensionNotSupport: 'Extension de fichier non prise en charge',
pasteFileLinkInvalid: 'Lien de fichier non valide',
uploadFromComputerLimit: 'Le fichier de téléchargement ne peut pas dépasser {{size}}',
},
license: {
expiring: 'Expirant dans un jour',
expiring_plural: 'Expirant dans {{count}} jours',
},
pagination: {
perPage: 'Articles par page',
},
}
export default translation

View File

@@ -0,0 +1,30 @@
const translation = {
custom: 'Personnalisation',
upgradeTip: {
prefix: 'Mettez à niveau votre plan pour',
suffix: 'personnalisez votre marque.',
},
webapp: {
title: 'Personnalisez la marque WebApp',
removeBrand: 'Supprimer Propulsé par Dify',
changeLogo: 'Changer Propulsé par l\'Image de Marque',
changeLogoTip: 'Format SVG ou PNG avec une taille minimum de 40x40px',
},
app: {
title: 'Personnaliser la marque de l\'en-tête de l\'application',
changeLogoTip: 'Format SVG ou PNG avec une taille minimale de 80x80px',
},
upload: 'Télécharger',
uploading: 'Téléchargement',
uploadedFail: 'Le téléchargement de l\'image a échoué, veuillez la télécharger à nouveau.',
change: 'Changer',
apply: 'Appliquer',
restore: 'Rétablir les paramètres par défaut',
customize: {
contactUs: 'Contactez-nous',
prefix: 'Pour personnaliser le logo de la marque dans l\'application, s\'il vous plaît',
suffix: 'pour passer à l\'édition Enterprise.',
},
}
export default translation

View File

@@ -0,0 +1,205 @@
const translation = {
steps: {
header: {
creation: 'Créer des Connaissances',
update: 'Ajouter des données',
fallbackRoute: 'Connaissance',
},
one: 'Choisissez la source de données',
two: 'Prétraitement et Nettoyage du Texte',
three: 'Exécutez et terminez',
},
error: {
unavailable: 'Cette connaissance n\'est pas disponible',
},
stepOne: {
filePreview: 'Aperçu du fichier',
pagePreview: 'Aperçu de la page',
dataSourceType: {
file: 'Importer à partir d\'un fichier texte',
notion: 'Synchroniser depuis Notion',
web: 'Synchroniser depuis le site web',
},
uploader: {
title: 'Télécharger le fichier texte',
button: 'Glisser et déposer le fichier, ou',
browse: 'Parcourir',
tip: 'Prend en charge {{supportTypes}}. Max {{size}}MB chacun.',
validation: {
typeError: 'Type de fichier non pris en charge',
size: 'Fichier trop volumineux. Le maximum est de {{size}}MB',
count: 'Plusieurs fichiers non pris en charge',
filesNumber: 'Vous avez atteint la limite de téléchargement par lot de {{filesNumber}}.',
},
cancel: 'Annuler',
change: 'Changer',
failed: 'Le téléchargement a échoué',
},
notionSyncTitle: 'Notion n\'est pas connecté',
notionSyncTip: 'Pour synchroniser avec Notion, une connexion à Notion doit d\'abord être établie.',
connect: 'Aller à connecter',
button: 'suivant',
emptyDatasetCreation: 'Je veux créer un Savoir vide',
modal: {
title: 'Créer une Connaissance vide',
tip: 'Une Connaissance vide ne contiendra aucun document, et vous pouvez télécharger des documents à tout moment.',
input: 'Nom de la connaissance',
placeholder: 'Veuillez entrer',
nameNotEmpty: 'Le nom ne peut pas être vide',
nameLengthInvalid: 'Le nom doit comporter entre 1 et 40 caractères.',
cancelButton: 'Annuler',
confirmButton: 'Créer',
failed: 'Création échouée',
},
website: {
limit: 'Limite',
fireCrawlNotConfiguredDescription: 'Configurez Firecrawl avec la clé API pour lutiliser.',
selectAll: 'Tout sélectionner',
unknownError: 'Erreur inconnue',
firecrawlDoc: 'Docs Firecrawl',
totalPageScraped: 'Nombre total de pages extraites :',
preview: 'Aperçu',
crawlSubPage: 'Explorer les sous-pages',
configure: 'Configurer',
firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
maxDepth: 'Profondeur maximale',
fireCrawlNotConfigured: 'Firecrawl nest pas configuré',
firecrawlTitle: 'Extraire du contenu web avec 🔥Firecrawl',
scrapTimeInfo: 'Pages récupérées au total dans un délai de {{time}}s',
options: 'Options',
exceptionErrorTitle: 'Une exception sest produite lors de lexécution de la tâche Firecrawl :',
includeOnlyPaths: 'Inclure uniquement les chemins daccès',
resetAll: 'Tout réinitialiser',
run: 'Courir',
extractOnlyMainContent: 'Extraire uniquement le contenu principal (pas den-têtes, de navigations, de pieds de page, etc.)',
excludePaths: 'Exclure les chemins daccès',
maxDepthTooltip: 'Profondeur maximale à explorer par rapport à lURL saisie. La profondeur 0 gratte simplement la page de lURL saisie, la profondeur 1 récupère lURL et tout ce qui suit lURL saisie + un /, et ainsi de suite.',
jinaReaderDocLink: 'https://jina.ai/reader',
jinaReaderDoc: 'En savoir plus sur Jina Reader',
useSitemapTooltip: 'Suivez le plan du site pour explorer le site. Si ce nest pas le cas, Jina Reader explorera de manière itérative en fonction de la pertinence de la page, produisant des pages moins nombreuses mais de meilleure qualité.',
jinaReaderNotConfiguredDescription: 'Configurez Jina Reader en saisissant votre clé API gratuite pour y accéder.',
useSitemap: 'Utiliser le sitemap',
jinaReaderNotConfigured: 'Jina Reader nest pas configuré',
chooseProvider: 'Sélectionnez un fournisseur',
jinaReaderTitle: 'Convertir lintégralité du site en Markdown',
},
cancel: 'Annuler',
},
stepTwo: {
segmentation: 'Paramètres de bloc',
auto: 'Automatique',
autoDescription: 'Définir automatiquement les règles de découpage et de prétraitement. Il est recommandé aux utilisateurs non familiers de sélectionner ceci.',
custom: 'Personnalisé',
customDescription: 'Personnalisez les règles de morceaux, la longueur des morceaux et les règles de prétraitement, etc.',
separator: 'Identifiant de segment',
separatorPlaceholder: 'Par exemple, nouvelle ligne (\\\\n) ou séparateur spécial (tel que "***")',
maxLength: 'Longueur maximale du morceau',
overlap: 'Chevauchement de morceaux',
overlapTip: 'La définition d\'un chevauchement de morceaux peut maintenir la pertinence sémantique entre eux, améliorant ainsi l\'effet de récupération. Il est recommandé de définir 10%-25% de la taille maximale du morceau.',
overlapCheck: 'le chevauchement de morceaux ne doit pas être plus grand que la longueur maximale de morceau',
rules: 'Règles de prétraitement du texte',
removeExtraSpaces: 'Remplacer les espaces consécutifs, les sauts de ligne et les tabulations',
removeUrlEmails: 'Supprimez toutes les URL et adresses e-mail',
removeStopwords: 'Supprimez les mots vides tels que "a", "an", "the"',
preview: 'Confirmer & Aperçu',
reset: 'Réinitialiser',
indexMode: 'Mode d\'index',
qualified: 'Haute Qualité',
recommend: 'Recommander',
qualifiedTip: 'Appelez l\'interface d\'embedding système par défaut pour le traitement afin de fournir une précision plus élevée lorsque les utilisateurs font une requête.',
warning: 'Veuillez d\'abord configurer la clé API du fournisseur de modèle.',
click: 'Aller aux paramètres',
economical: 'Économique',
economicalTip: 'Utilisez des moteurs vectoriels hors ligne, des index de mots-clés, etc. pour réduire la précision sans dépenser de jetons',
QATitle: 'Segmentation en format Question & Réponse',
QATip: 'Activer cette option consommera plus de jetons',
QALanguage: 'Segmenter en utilisant',
estimateCost: 'Estimation',
estimateSegment: 'Morceaux estimés',
segmentCount: 'morceaux',
calculating: 'En calcul...',
fileSource: 'Prétraiter les documents',
notionSource: 'Prétraiter les pages',
other: 'et autres',
fileUnit: 'fichiers',
notionUnit: 'pages',
previousStep: 'Étape précédente',
nextStep: 'Enregistrer & Traiter',
save: 'Enregistrer & Traiter',
cancel: 'Annuler',
sideTipTitle: 'Pourquoi découper et prétraiter ?',
sideTipP1: 'Lors du traitement des données textuelles, le découpage et le nettoyage sont deux étapes importantes de la prétraitement.',
sideTipP2: 'La segmentation divise les longs textes en paragraphes afin que les modèles puissent mieux comprendre. Cela améliore la qualité et la pertinence des résultats du modèle.',
sideTipP3: 'Le nettoyage élimine les caractères et les formats inutiles, rendant le Savoir plus propre et plus facile à analyser.',
sideTipP4: 'Un bon découpage et nettoyage améliorent les performances du modèle, fournissant des résultats plus précis et précieux.',
previewTitle: 'Aperçu',
previewTitleButton: 'Aperçu',
previewButton: 'Passage au format Q&R',
previewSwitchTipStart: 'L\'aperçu actuel du morceau est en format texte, passer à un aperçu en format de questions-réponses va',
previewSwitchTipEnd: 'consommer des tokens supplémentaires',
characters: 'personnages',
indexSettingTip: 'Pour changer la méthode d\'index, veuillez aller à la',
retrievalSettingTip: 'Pour changer la méthode d\'index, veuillez aller à la',
datasetSettingLink: 'Paramètres de connaissance.',
webpageUnit: 'Pages',
websiteSource: 'Site web de prétraitement',
separatorTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n et \\n sont des délimiteurs couramment utilisés pour séparer les paragraphes et les lignes. Combiné à des virgules (\\n\\n,\\n), les paragraphes seront segmentés par des lignes lorsquils dépasseront la longueur maximale des morceaux. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même (par exemple ***).',
maxLengthCheck: 'La longueur maximale des morceaux doit être inférieure à {{limit}}',
parentChunkForContext: 'Parent-chunk pour le contexte',
notAvailableForParentChild: 'Non disponible pour lindice parent-enfant',
parentChild: 'Parent-enfant',
useQALanguage: 'Chunk utilisant le format Q&A dans',
highQualityTip: 'Une fois lintégration terminée en mode Haute qualité, il nest pas possible de revenir au mode économique.',
switch: 'Interrupteur',
paragraph: 'Paragraphe',
general: 'Généralités',
fullDocTip: 'Lintégralité du document est utilisée comme morceau parent et récupérée directement. Veuillez noter que pour des raisons de performance, le texte dépassant 10000 jetons sera automatiquement tronqué.',
fullDoc: 'Doc complet',
previewChunkCount: '{{compte}} Tronçons estimés',
childChunkForRetrieval: 'Child-chunk pour lextraction',
parentChildDelimiterTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n est recommandé pour diviser le document dorigine en gros morceaux parents. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même.',
qaSwitchHighQualityTipTitle: 'Le format Q&R nécessite une méthode dindexation de haute qualité',
notAvailableForQA: 'Non disponible pour lindice Q&R',
previewChunk: 'Aperçu du morceau',
parentChildTip: 'Lors de lutilisation du mode parent-enfant, le morceau enfant est utilisé pour la récupération et le morceau parent est utilisé pour le rappel en tant que contexte.',
paragraphTip: 'Ce mode divise le texte en paragraphes en fonction des délimiteurs et de la longueur maximale du morceau, en utilisant le texte scindé comme morceau parent pour la récupération.',
qaSwitchHighQualityTipContent: 'Actuellement, seule la méthode dindex de haute qualité prend en charge la segmentation du format Q&R. Vous souhaitez passer en mode haute qualité ?',
previewChunkTip: 'Cliquez sur le bouton « Preview Chunk » sur la gauche pour charger laperçu',
parentChildChunkDelimiterTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n est recommandé pour diviser les blocs parents en petits blocs enfants. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même.',
generalTip: 'Mode général de segmentation du texte, les morceaux récupérés et rappelés sont les mêmes.',
},
stepThree: {
creationTitle: '🎉 Connaissance créée',
creationContent: 'Nous avons automatiquement nommé le Savoir, vous pouvez le modifier à tout moment',
label: 'Nom de la connaissance',
additionTitle: '🎉 Document téléchargé',
additionP1: 'Le document a été téléchargé dans la Connaissance',
additionP2: ', vous pouvez le trouver dans la liste des documents de la Connaissance.',
stop: 'Arrêter le traitement',
resume: 'Reprendre le traitement',
navTo: 'Aller au document',
sideTipTitle: 'Qu\'est-ce qui suit ?',
sideTipContent: 'Après l\'indexation du document, la Connaissance peut être intégrée dans l\'application en tant que contexte, vous pouvez trouver le paramètre de contexte sur la page d\'orchestration de prompt. Vous pouvez également le créer en tant que plugin d\'indexation ChatGPT ind',
modelTitle: 'Êtes-vous sûr de vouloir arrêter l\'embedding ?',
modelContent: 'Si vous devez reprendre le traitement plus tard, vous continuerez à partir de l\'endroit où vous vous êtes arrêté.',
modelButtonConfirm: 'Confirmer',
modelButtonCancel: 'Annuler',
},
firecrawl: {
apiKeyPlaceholder: 'Clé API de firecrawl.dev',
configFirecrawl: 'Configurer 🔥Firecrawl',
getApiKeyLinkText: 'Obtenez votre clé API auprès de firecrawl.dev',
},
jinaReader: {
getApiKeyLinkText: 'Obtenez votre clé API gratuite chez jina.ai',
apiKeyPlaceholder: 'Clé API de jina.ai',
configJinaReader: 'Configurer Jina Reader',
},
otherDataSource: {
learnMore: 'Pour en savoir plus',
description: 'Actuellement, la base de connaissances de Dify ne dispose que de sources de données limitées. Contribuer à une source de données dans la base de connaissances Dify est un moyen fantastique daméliorer la flexibilité et la puissance de la plateforme pour tous les utilisateurs. Notre guide de contribution facilite la prise en main. Veuillez cliquer sur le lien ci-dessous pour en savoir plus.',
title: 'Se connecter à dautres sources de données ?',
},
}
export default translation

View File

@@ -0,0 +1,395 @@
const translation = {
list: {
title: 'Documents',
desc: 'Tous les fichiers de la Connaissance sont affichés ici, et l\'ensemble de la Connaissance peut être lié aux citations Dify ou indexé via le plugin Chat.',
addFile: 'ajouter un fichier',
addPages: 'Ajouter des Pages',
table: {
header: {
fileName: 'NOM DU FICHIER',
words: 'MOTS',
hitCount: 'NOMBRE DE RÉCUPÉRATIONS',
uploadTime: 'TEMPS DE TÉLÉCHARGEMENT',
status: 'STATUT',
action: 'ACTION',
chunkingMode: 'MODE DE MORCEAU',
},
rename: 'Renommer',
name: 'Nom',
},
action: {
uploadFile: 'Télécharger un nouveau fichier',
settings: 'Paramètres de segment',
addButton: 'Ajouter un morceau',
add: 'Ajouter un morceau',
batchAdd: 'Ajout en lot',
archive: 'Archive',
unarchive: 'Décompresser',
delete: 'Supprimer',
enableWarning: 'Le fichier archivé ne peut pas être activé',
sync: 'Synchroniser',
},
index: {
enable: 'Activer',
disable: 'Désactiver',
all: 'Tout',
enableTip: 'Le fichier peut être indexé',
disableTip: 'Le fichier ne peut pas être indexé',
},
status: {
queuing: 'Mise en file d\'attente',
indexing: 'Indexation',
paused: 'En pause',
error: 'Erreur',
available: 'Disponible',
enabled: 'Activé',
disabled: 'Désactivé',
archived: 'Archivé',
},
empty: {
title: 'Il n\'y a pas encore de documentation',
upload: {
tip: 'Vous pouvez télécharger des fichiers, synchroniser à partir du site web, ou à partir d\'applications web comme Notion, GitHub, etc.',
},
sync: {
tip: 'Dify téléchargera périodiquement des fichiers de votre Notion et terminera le traitement.',
},
},
delete: {
title: 'Êtes-vous sûr de vouloir supprimer ?',
content: 'Si vous avez besoin de reprendre le traitement plus tard, vous continuerez à partir de l\'endroit où vous vous êtes arrêté',
},
batchModal: {
title: 'Ajouter des lots de segments',
csvUploadTitle: 'Faites glisser et déposez votre fichier CSV ici, ou',
browse: 'parcourir',
tip: 'Le fichier CSV doit se conformer à la structure suivante :',
question: 'question',
answer: 'réponse',
contentTitle: 'contenu du bloc',
content: 'contenu',
template: 'Téléchargez le modèle ici',
cancel: 'Annuler',
run: 'Exécuter le lot',
runError: 'L\'exécution du lot a échoué',
processing: 'Dans le traitement par lots',
completed: 'Importation terminée',
error: 'Erreur d\'Importation',
ok: 'D\'accord',
},
addUrl: 'Ajouter une URL',
learnMore: 'Pour en savoir plus',
},
metadata: {
title: 'Métadonnées',
desc: 'L\'étiquetage des métadonnées pour les documents permet à l\'IA d\'y accéder en temps opportun et expose la source des références pour les utilisateurs.',
dateTimeFormat: 'MMMM D, YYYY hh:mm A',
docTypeSelectTitle: 'Veuillez sélectionner un type de document',
docTypeChangeTitle: 'Changer le type de document',
docTypeSelectWarning:
'Si le type de document est modifié, les métadonnées actuellement remplies ne seront plus conservées',
firstMetaAction: 'Allons-y',
placeholder: {
add: 'Ajouter',
select: 'Sélectionner',
},
source: {
upload_file: 'Télécharger le fichier',
notion: 'Synchroniser le formulaire depuis Notion',
github: 'Synchroniser à partir de Github',
},
type: {
book: 'Livre',
webPage: 'Page Web',
paper: 'Papier',
socialMediaPost: 'Publication sur les Réseaux Sociaux',
personalDocument: 'Document Personnel',
businessDocument: 'Document Commercial',
IMChat: 'Chat IM',
wikipediaEntry: 'Entrée Wikipédia',
notion: 'Synchroniser depuis Notion',
github: 'Synchroniser depuis Github',
technicalParameters: 'Paramètres Techniques',
},
field: {
processRule: {
processDoc: 'Document de Processus',
segmentRule: 'Règle de Segment',
segmentLength: 'Longueur des Morceaux',
processClean: 'Processus de Nettoyage du Texte',
},
book: {
title: 'Titre',
language: 'Langue',
author: 'Auteur',
publisher: 'Éditeur',
publicationDate: 'Date de publication',
ISBN: 'ISBN',
category: 'Catégorie',
},
webPage: {
title: 'Titre',
url: 'URL',
language: 'Langue',
authorPublisher: 'Auteur/Éditeur',
publishDate: 'Date de publication',
topicKeywords: 'Sujets/Mots-clés',
description: 'Description',
},
paper: {
title: 'Titre',
language: 'Langue',
author: 'Auteur',
publishDate: 'Date de publication',
journalConferenceName: 'Nom du Journal/Conférence',
volumeIssuePage: 'Volume/Numéro/Page',
DOI: 'DOI',
topicsKeywords: 'Sujets/Mots-clés',
abstract: 'Résumé',
},
socialMediaPost: {
platform: 'Plateforme',
authorUsername: 'Auteur/Nom d\'utilisateur',
publishDate: 'Date de publication',
postURL: 'URL de publication',
topicsTags: 'Sujets/Tags',
},
personalDocument: {
title: 'Titre',
author: 'Auteur',
creationDate: 'Date de Création',
lastModifiedDate: 'Date de Dernière Modification',
documentType: 'Type de Document',
tagsCategory: 'Tags/Catégorie',
},
businessDocument: {
title: 'Titre',
author: 'Auteur',
creationDate: 'Date de création',
lastModifiedDate: 'Date de Dernière Modification',
documentType: 'Type de Document',
departmentTeam: 'Département/Équipe',
},
IMChat: {
chatPlatform: 'Plateforme de Chat',
chatPartiesGroupName: 'Nom du groupe/Parties de discussion',
participants: 'Participants',
startDate: 'Date de Début',
endDate: 'Date de fin',
topicsKeywords: 'Sujets/Mots-clés',
fileType: 'Type de fichier',
},
wikipediaEntry: {
title: 'Titre',
language: 'Langue',
webpageURL: 'URL de la page web',
editorContributor: 'Éditeur/Contributeur',
lastEditDate: 'Date de dernière modification',
summaryIntroduction: 'Résumé/Introduction',
},
notion: {
title: 'Titre',
language: 'Langue',
author: 'Auteur',
createdTime: 'Heure de création',
lastModifiedTime: 'Dernière Modification',
url: 'URL',
tag: 'Étiquette',
description: 'Description',
},
github: {
repoName: 'Nom du dépôt',
repoDesc: 'Description du dépôt',
repoOwner: 'Propriétaire du dépôt',
fileName: 'Nom du Fichier',
filePath: 'Chemin du fichier',
programmingLang: 'Langage de programmation',
url: 'URL',
license: 'Licence',
lastCommitTime: 'Heure du dernier commit',
lastCommitAuthor: 'Auteur du dernier commit',
},
originInfo: {
originalFilename: 'Nom de fichier original',
originalFileSize: 'Taille originale du fichier',
uploadDate: 'Date de téléchargement',
lastUpdateDate: 'Date de dernière mise à jour',
source: 'Source',
},
technicalParameters: {
segmentSpecification: 'Spécification des morceaux',
segmentLength: 'Longueur des morceaux',
avgParagraphLength: 'Longueur moyenne de paragraphe',
paragraphs: 'Paragraphes',
hitCount: 'Nombre de récupérations',
embeddingTime: 'Temps d\'incorporation',
embeddedSpend: 'Dépenses intégrées',
},
},
languageMap: {
zh: 'Chinois',
en: 'Anglais',
es: 'Espagnol',
fr: 'Français',
de: 'Allemand',
ja: 'Japonais',
ko: 'Coréen',
ru: 'Russe',
ar: 'Arabe',
pt: 'Portugais',
it: 'Italien',
nl: 'Néerlandais',
pl: 'Polonais',
sv: 'Suédois',
tr: 'Turc',
he: 'Hébreu',
hi: 'Hindi',
da: 'Danois',
fi: 'Finlandais',
no: 'Norvégien',
hu: 'Hongrois',
el: 'Grec',
cs: 'Tchèque',
th: 'Thaï',
id: 'Indonésien',
},
categoryMap: {
book: {
fiction: 'Fiction',
biography: 'Biographie',
history: 'Histoire',
science: 'Science',
technology: 'Technologie',
education: 'Éducation',
philosophy: 'Philosophie',
religion: 'Religion',
socialSciences: 'Sciences Sociales',
art: 'Art',
travel: 'Voyage',
health: 'Santé',
selfHelp: 'AutoAssistance',
businessEconomics: 'Économie d\'entreprise',
cooking: 'Cuisson',
childrenYoungAdults: 'EnfantsJeunesAdultes',
comicsGraphicNovels: 'BandesDessinéesRomansGraphiques',
poetry: 'Poésie',
drama: 'Drame',
other: 'Autre',
},
personalDoc: {
notes: 'Notes',
blogDraft: 'Brouillon de Blog',
diary: 'Journal',
researchReport: 'Rapport de Recherche',
bookExcerpt: 'Extrait de livre',
schedule: 'Programme',
list: 'Liste',
projectOverview: 'Aperçu du Projet',
photoCollection: 'Collection de Photos',
creativeWriting: 'Écriture Créative',
codeSnippet: 'Extrait de Code',
designDraft: 'Projet de Conception',
personalResume: 'Curriculum Vitae Personnel',
other: 'Autre',
},
businessDoc: {
meetingMinutes: 'Compte-rendu de Réunion',
researchReport: 'Rapport de Recherche',
proposal: 'Proposition',
employeeHandbook: 'Manuel de l\'employé',
trainingMaterials: 'Matériaux de Formation',
requirementsDocument: 'Document de Spécifications',
designDocument: 'Document de Conception',
productSpecification: 'Spécification du produit',
financialReport: 'Rapport Financier',
marketAnalysis: 'Analyse de marché',
projectPlan: 'Plan de Projet',
teamStructure: 'Structure de l\'équipe',
policiesProcedures: 'Politiques & Procédures',
contractsAgreements: 'Contrats & Accords',
emailCorrespondence: 'Correspondance par Email',
other: 'Autre',
},
},
},
embedding: {
processing: 'Traitement des embeddings...',
paused: 'Intégration en pause',
completed: 'Intégration terminée',
error: 'Erreur d\'embedding',
docName: 'Prétraitement du document',
mode: 'Règle de segmentation',
segmentLength: 'Longueur des morceaux',
textCleaning: 'Pré-définition du texte et nettoyage',
segments: 'Paragraphes',
highQuality: 'Mode haute qualité',
economy: 'Mode économique',
estimate: 'Consommation estimée',
stop: 'Arrêtez le traitement',
resume: 'Reprendre le traitement',
automatic: 'Automatique',
custom: 'Personnalisé',
previewTip: 'L\'aperçu du paragraphe sera disponible après la fin de l\'embedding.',
childMaxTokens: 'Enfant',
hierarchical: 'Parent-enfant',
pause: 'Pause',
parentMaxTokens: 'Parent',
},
segment: {
paragraphs: 'Paragraphes',
keywords: 'Mots Clés',
addKeyWord: 'Ajouter un mot-clé',
keywordError: 'La longueur maximale du mot-clé est de 20',
characters: 'personnages',
hitCount: 'Nombre de récupérations',
vectorHash: 'Vector hash: ',
questionPlaceholder: 'ajoutez la question ici',
questionEmpty: 'La question ne peut pas être vide',
answerPlaceholder: 'ajoutez une réponse ici',
answerEmpty: 'La réponse ne peut pas être vide',
contentPlaceholder: 'ajoutez du contenu ici',
contentEmpty: 'Le contenu ne peut pas être vide',
newTextSegment: 'Nouveau Segment de Texte',
newQaSegment: 'Nouveau Segment Q&R',
delete: 'Supprimer ce morceau ?',
chunks_other: 'MORCEAUX',
childChunks_other: 'MORCEAUX ENFANTS',
clearFilter: 'Effacer le filtre',
newChunk: 'Nouveau Chunk',
childChunk: 'Enfant-Chunk',
newChildChunk: 'Nouveau morceau enfant',
addChunk: 'Ajouter un morceau',
chunkAdded: '1 morceau ajouté',
editChunk: 'Modifier le morceau',
regenerationConfirmMessage: 'La régénération des blocs enfants remplacera les blocs enfants actuels, y compris les blocs modifiés et les blocs nouvellement ajoutés. La régénération ne peut pas être annulée.',
regenerationSuccessTitle: 'Régénération terminée',
edited: 'ÉDITION',
collapseChunks: 'Réduire les morceaux',
childChunkAdded: '1 morceau enfant ajouté',
addAnother: 'Ajouter un autre',
searchResults_one: 'RÉSULTAT',
regeneratingTitle: 'Régénération de blocs enfants',
expandChunks: 'Développer des blocs',
characters_other: 'caractères',
editedAt: 'Édité le',
searchResults_other: 'RÉSULTATS',
regenerationSuccessMessage: 'Vous pouvez fermer cette fenêtre.',
parentChunks_one: 'MORCEAU PARENT',
regenerationConfirmTitle: 'Voulez-vous régénérer des morceaux enfants ?',
chunks_one: 'MORCEAU',
childChunks_one: 'MORCEAU ENFANT',
parentChunk: 'Parent-Chunk',
chunkDetail: 'Détail du morceau',
chunk: 'Morceau',
parentChunks_other: 'MORCEAUX PARENTS',
regeneratingMessage: 'Cela peut prendre un moment, veuillez patienter...',
addChildChunk: 'Ajouter un morceau enfant',
editParentChunk: 'Modifier le bloc parent',
characters_one: 'personnage',
searchResults_zero: 'RÉSULTAT',
empty: 'Aucun Chunk trouvé',
editChildChunk: 'Modifier le morceau enfant',
},
}
export default translation

View File

@@ -0,0 +1,35 @@
const translation = {
title: 'Test de Récupération',
desc: 'Testez l\'effet d\'impact de la Connaissance basée sur le texte de la requête donnée.',
dateTimeFormat: 'JJ/MM/AAAA hh:mm A',
recents: 'Récents',
table: {
header: {
source: 'Source',
text: 'Texte',
time: 'Temps',
},
},
input: {
title: 'Texte source',
placeholder: 'Veuillez entrer un texte, une phrase déclarative courte est recommandée.',
countWarning: 'Jusqu\'à 200 caractères.',
indexWarning: 'Connaissances de haute qualité uniquement.',
testing: 'Test',
},
hit: {
title: 'PARAGRAPHES DE RÉCUPÉRATION',
emptyTip: 'Les résultats des tests de récupération s\'afficheront ici',
},
noRecentTip: 'Aucun résultat de requête récent ici',
viewChart: 'Voir GRAPHIQUE VECTORIEL',
settingTitle: 'Réglage de récupération',
viewDetail: 'Voir les détails',
hitChunks: 'Appuyez sur {{num}} morceaux enfants',
records: 'Archives',
chunkDetail: 'Détail du morceau',
open: 'Ouvrir',
keyword: 'Mots-clés',
}
export default translation

View File

@@ -0,0 +1,41 @@
const translation = {
title: 'Paramètres de connaissance',
desc: 'Ici, vous pouvez modifier les propriétés et les méthodes de fonctionnement de la Connaissance.',
form: {
name: 'Nom de la Connaissance',
namePlaceholder: 'Veuillez entrer le nom de la Connaissance',
nameError: 'Le nom ne peut pas être vide',
desc: 'Description des connaissances',
descInfo: 'Veuillez rédiger une description textuelle claire pour décrire le contenu de la Connaissance. Cette description sera utilisée comme base pour la correspondance lors de la sélection parmi plusieurs Connaissances pour l\'inférence.',
descPlaceholder: 'Décrivez ce qui se trouve dans cette Connaissance. Une description détaillée permet à l\'IA d\'accéder au contenu de la Connaissance en temps opportun. Si vide, Dify utilisera la stratégie de hit par défaut.',
descWrite: 'Apprenez comment rédiger une bonne description de connaissance.',
permissions: 'Autorisations',
permissionsOnlyMe: 'Seulement moi',
permissionsAllMember: 'Tous les membres de l\'équipe',
indexMethod: 'Méthode d\'Indexation',
indexMethodHighQuality: 'Haute Qualité',
indexMethodHighQualityTip: 'Appeler le modèle d\'Embedding pour le traitement afin de fournir une plus grande précision lors des requêtes des utilisateurs.',
indexMethodEconomy: 'Économique',
indexMethodEconomyTip: 'Utilisez des moteurs vectoriels hors ligne, des index de mots-clés, etc. pour réduire la précision sans dépenser de jetons',
embeddingModel: 'Modèle d\'Embedding',
embeddingModelTip: 'Changez le modèle intégré, veuillez aller à',
embeddingModelTipLink: 'Paramètres',
retrievalSetting: {
title: 'Paramètre de récupération',
learnMore: 'En savoir plus',
description: 'à propos de la méthode de récupération.',
longDescription: 'À propos de la méthode de récupération, vous pouvez la modifier à tout moment dans les paramètres de Connaissance.',
},
save: 'Enregistrer',
me: '(Vous)',
permissionsInvitedMembers: 'Membres partiels de léquipe',
retrievalSettings: 'Paramètres de récupération',
externalKnowledgeAPI: 'API de connaissances externes',
externalKnowledgeID: 'Identification des connaissances externes',
indexMethodChangeToEconomyDisabledTip: 'Non disponible pour le déclassement de HQ à ECO',
upgradeHighQualityTip: 'Une fois la mise à niveau vers le mode Haute Qualité, il nest pas possible de revenir au mode Économique',
helpText: 'Apprenez à rédiger une bonne description de jeu de données.',
},
}
export default translation

View File

@@ -0,0 +1,173 @@
const translation = {
knowledge: 'Connaissance',
documentCount: ' documents',
wordCount: ' k mots',
appCount: ' applications liées',
createDataset: 'Créer des Connaissances',
createDatasetIntro: 'Importez vos propres données textuelles ou écrivez des données en temps réel via Webhook pour l\'amélioration du contexte LLM.',
deleteDatasetConfirmTitle: 'Supprimer cette Connaissance ?',
deleteDatasetConfirmContent:
'La suppression de la Connaissance est irréversible. Les utilisateurs ne pourront plus accéder à votre Savoir, et toutes les configurations de prompt et les journaux seront supprimés de façon permanente.',
datasetUsedByApp: 'La connaissance est utilisée par certaines applications. Les applications ne pourront plus utiliser cette Connaissance, et toutes les configurations de prompts et les journaux seront définitivement supprimés.',
datasetDeleted: 'Connaissance supprimée',
datasetDeleteFailed: 'Échec de la suppression de la Connaissance',
didYouKnow: 'Saviez-vous ?',
intro1: 'La Connaissance peut être intégrée dans l\'application Dify',
intro2: 'comme un contexte',
intro3: ',',
intro4: 'ou ça ',
intro5: 'peut être créé',
intro6: 'comme un plug-in d\'index ChatGPT autonome à publier',
unavailable: 'Indisponible',
unavailableTip: 'Le modèle d\'embedding n\'est pas disponible, le modèle d\'embedding par défaut doit être configuré',
datasets: 'CONNAISSANCE',
datasetsApi: 'API',
retrieval: {
semantic_search: {
title: 'Recherche Vectorielle',
description: 'Générez des embeddings de requête et recherchez le morceau de texte le plus similaire à sa représentation vectorielle.',
},
full_text_search: {
title: 'Recherche en Texte Intégral',
description: 'Indexez tous les termes dans le document, permettant aux utilisateurs de rechercher n\'importe quel terme et de récupérer le fragment de texte pertinent contenant ces termes.',
},
hybrid_search: {
title: 'Recherche Hybride',
description: 'Exécutez une recherche en texte intégral et des recherches vectorielles en même temps, réorganisez pour sélectionner la meilleure correspondance pour la requête de l\'utilisateur. La configuration de l\'API du modèle de réorganisation est nécessaire.',
recommend: 'Recommander',
},
invertedIndex: {
title: 'Index inversé',
description: 'L\'Index inversé est une structure utilisée pour une récupération efficace. Organisé par termes, chaque terme pointe vers des documents ou des pages web le contenant.',
},
change: 'Changer',
changeRetrievalMethod: 'Changer la méthode de récupération',
},
docsFailedNotice: 'Les documents n\'ont pas pu être indexés',
retry: 'Réessayer',
indexingTechnique: {
high_quality: 'HQ',
economy: 'ÉCO',
},
indexingMethod: {
semantic_search: 'VECTEUR',
full_text_search: 'TEXTE INTÉGRAL',
hybrid_search: 'HYBRIDE',
invertedIndex: 'INVERSÉ',
},
mixtureHighQualityAndEconomicTip: 'Le modèle de reclassement est nécessaire pour le mélange de bases de connaissances de haute qualité et économiques.',
inconsistentEmbeddingModelTip: 'Le modèle de reclassement est nécessaire si les modèles d\'incorporation des bases de connaissances sélectionnées sont incohérents.',
retrievalSettings: 'Paramètres de récupération',
rerankSettings: 'Paramètres de reclassement',
weightedScore: {
title: 'Score pondéré',
description: 'En ajustant les poids attribués, cette stratégie de reclassement détermine s\'il faut prioriser la correspondance sémantique ou par mots-clés.',
semanticFirst: 'Sémantique d\'abord',
keywordFirst: 'Mot-clé d\'abord',
customized: 'Personnalisé',
semantic: 'Sémantique',
keyword: 'Mot-clé',
},
nTo1RetrievalLegacy: 'La récupération N-à-1 sera officiellement obsolète à partir de septembre. Il est recommandé d\'utiliser la dernière récupération multi-chemins pour obtenir de meilleurs résultats.',
nTo1RetrievalLegacyLink: 'En savoir plus',
nTo1RetrievalLegacyLinkText: 'La récupération N-à-1 sera officiellement obsolète en septembre.',
defaultRetrievalTip: 'La récupération à chemins multiples est utilisée par défaut. Les connaissances sont extraites de plusieurs bases de connaissances, puis reclassées.',
editExternalAPIConfirmWarningContent: {
front: 'Cette API de connaissances externes est liée à',
end: 'connaissances externes, et cette modification sera appliquée à tous. Êtes-vous sûr de vouloir enregistrer cette modification ?',
},
editExternalAPIFormWarning: {
end: 'Connaissances externes',
front: 'Cette API externe est liée à',
},
deleteExternalAPIConfirmWarningContent: {
title: {
end: '?',
front: 'Supprimer',
},
content: {
front: 'Cette API de connaissances externes est liée à',
end: 'connaissances externes. La suppression de cette API les invalidera toutes. Êtes-vous sûr de vouloir supprimer cette API ?',
},
noConnectionContent: 'Êtes-vous sûr de supprimer cette API ?',
},
selectExternalKnowledgeAPI: {
placeholder: 'Choisir une API de connaissances externe',
},
connectDatasetIntro: {
content: {
link: 'Découvrez comment créer une API externe',
end: '. Trouvez ensuite lID de connaissances correspondant et remplissez-le dans le formulaire sur la gauche. Si toutes les informations sont correctes, il passera automatiquement au test de récupération dans la base de connaissances après avoir cliqué sur le bouton de connexion.',
front: 'Pour vous connecter à une base de connaissances externe, vous devez dabord créer une API externe. Veuillez lire attentivement et vous référer à',
},
learnMore: 'Pour en savoir plus',
title: 'Comment se connecter à une base de connaissances externe',
},
connectHelper: {
helper2: 'Seule la fonctionnalité de récupération est prise en charge',
helper3: '. Nous vous recommandons vivement de',
helper4: 'Lire la documentation daide',
helper5: 'soigneusement avant dutiliser cette fonctionnalité.',
helper1: 'Connectez-vous à des bases de connaissances externes via lAPI et lID de base de connaissances.',
},
externalKnowledgeForm: {
cancel: 'Annuler',
connect: 'Relier',
},
externalAPIForm: {
encrypted: {
end: 'Technologie.',
front: 'Votre jeton API sera chiffré et stocké à laide de',
},
name: 'Nom',
apiKey: 'Clé API',
save: 'Sauvegarder',
cancel: 'Annuler',
edit: 'Éditer',
endpoint: 'Point de terminaison de lAPI',
},
externalKnowledgeName: 'Nom de la connaissance externe',
mixtureInternalAndExternalTip: 'Le modèle Rerank est nécessaire pour mélanger les connaissances internes et externes.',
externalKnowledgeIdPlaceholder: 'Entrez lID de connaissances',
createExternalAPI: 'Ajouter une API de connaissances externe',
externalKnowledgeNamePlaceholder: 'Entrez le nom de la base de connaissances',
allExternalTip: 'Lorsquil utilise uniquement des connaissances externes, lutilisateur peut choisir dactiver ou non le modèle Rerank. Sil nest pas activé, les morceaux récupérés seront triés en fonction des scores. Lorsque les stratégies de récupération des différentes bases de connaissances sont incohérentes, elles seront inexactes.',
externalAPI: 'API externe',
editExternalAPIFormTitle: 'Modifier lAPI de connaissances externes',
externalTag: 'Externe',
editExternalAPITooltipTitle: 'CONNAISSANCES ASSOCIÉES',
connectDataset: 'Se connecter à une base de connaissances externe',
externalKnowledgeDescription: 'Description des connaissances',
externalAPIPanelDocumentation: 'Découvrez comment créer une API de connaissances externe',
createNewExternalAPI: 'Créer une API de connaissances externe',
externalKnowledgeDescriptionPlaceholder: 'Décrivez le contenu de cette base de connaissances (facultatif)',
externalAPIPanelDescription: 'LAPI de connaissances externe est utilisée pour se connecter à une base de connaissances en dehors de Dify et récupérer des connaissances de cette base de connaissances.',
externalKnowledgeId: 'Identification des connaissances externes',
externalAPIPanelTitle: 'API de connaissances externes',
noExternalKnowledge: 'Il ny a pas encore dAPI de connaissances externes, cliquez ici pour créer',
learnHowToWriteGoodKnowledgeDescription: 'Apprenez à rédiger une bonne description des connaissances',
chunkingMode: {
general: 'Généralités',
parentChild: 'Parent-enfant',
},
parentMode: {
paragraph: 'Paragraphe',
fullDoc: 'Doc complet',
},
batchAction: {
archive: 'Archiver',
disable: 'Désactiver',
delete: 'Supprimer',
cancel: 'Annuler',
enable: 'Activer',
selected: 'Sélectionné',
},
preprocessDocument: '{{num}} Prétraiter les documents',
documentsDisabled: '{{num}} documents désactivés - inactifs depuis plus de 30 jours',
localDocs: 'Docs locaux',
enable: 'Activer',
allKnowledge: 'Toutes les connaissances',
allKnowledgeDescription: 'Sélectionnez cette option pour afficher toutes les connaissances dans cet espace de travail. Seul le propriétaire de lespace de travail peut gérer toutes les connaissances.',
}
export default translation

View File

@@ -0,0 +1,43 @@
const translation = {
title: 'Explorer',
sidebar: {
discovery: 'Découverte',
chat: 'Discussion',
workspace: 'Espace de travail',
action: {
pin: 'Épingle',
unpin: 'Détacher',
rename: 'Renommer',
delete: 'Supprimer',
},
delete: {
title: 'Supprimer l\'application',
content: 'Êtes-vous sûr de vouloir supprimer cette application ?',
},
},
apps: {
title: 'Explorez les applications par Dify',
description: 'Utilisez ces applications modèles instantanément ou personnalisez vos propres applications basées sur les modèles.',
allCategories: 'Recommandé',
},
appCard: {
addToWorkspace: 'Ajouter à l\'espace de travail',
customize: 'Personnaliser',
},
appCustomize: {
title: 'Créer une application à partir de {{name}}',
subTitle: 'Icône de l\'application & nom',
nameRequired: 'Le nom de l\'application est requis',
},
category: {
Assistant: 'Assistant',
Writing: 'Écriture',
Translate: 'Traduire',
Programming: 'Programmation',
HR: 'RH',
Agent: 'Agent',
Workflow: 'Flux de travail',
},
}
export default translation

View File

@@ -0,0 +1,4 @@
const translation = {
}
export default translation

View File

@@ -0,0 +1,110 @@
const translation = {
pageTitle: 'Salut, commençons !👋',
welcome: 'Bienvenue sur Dify, veuillez vous connecter pour continuer.',
email: 'Adresse e-mail',
emailPlaceholder: 'Votre email',
password: 'Mot de passe',
passwordPlaceholder: 'Votre mot de passe',
name: 'Nom d\'utilisateur',
namePlaceholder: 'Votre nom d\'utilisateur',
forget: 'Mot de passe oublié ?',
signBtn: 'Se connecter',
installBtn: 'Mettre en place',
setAdminAccount: 'Configuration d\'un compte administrateur',
setAdminAccountDesc: 'Privilèges maximum pour le compte administrateur, qui peut être utilisé pour créer des applications et gérer les fournisseurs de LLM, etc.',
createAndSignIn: 'Créer et se connecter',
oneMoreStep: 'Une étape de plus',
createSample: 'Sur la base de ces informations, nous créerons une application exemple pour vous',
invitationCode: 'Code d\'invitation',
invitationCodePlaceholder: 'Votre code d\'invitation',
interfaceLanguage: 'Langue de l\'interface',
timezone: 'Fuseau horaire',
go: 'Aller à Dify',
sendUsMail: 'Envoyez-nous votre introduction, et nous nous occuperons de la demande d\'invitation.',
acceptPP: 'J\'ai lu et j\'accepte la politique de confidentialité',
reset: 'Veuillez exécuter la commande suivante pour réinitialiser votre mot de passe',
withGitHub: 'Continuer avec GitHub',
withGoogle: 'Continuer avec Google',
rightTitle: 'Débloquez le plein potentiel des LLM',
rightDesc: 'Construisez sans effort des applications IA visuellement captivantes, opérationnelles et améliorables.',
tos: 'Conditions de Service',
pp: 'Politique de Confidentialité',
tosDesc: 'En vous inscrivant, vous acceptez nos',
goToInit: 'Si vous n\'avez pas initialisé le compte, veuillez vous rendre sur la page d\'initialisation',
dontHave: 'Vous n\'avez pas ?',
invalidInvitationCode: 'Code d\'invitation invalide',
accountAlreadyInited: 'Compte déjà initialisé',
forgotPassword: 'Mot de passe oublié?',
resetLinkSent: 'Lien de réinitialisation envoyé',
sendResetLink: 'Envoyer le lien de réinitialisation',
backToSignIn: 'Retour à la connexion',
forgotPasswordDesc: 'Veuillez entrer votre adresse e-mail pour réinitialiser votre mot de passe. Nous vous enverrons un e-mail avec des instructions sur la réinitialisation de votre mot de passe.',
checkEmailForResetLink: 'Veuillez vérifier votre e-mail pour un lien de réinitialisation de votre mot de passe. S\'il n\'apparaît pas dans quelques minutes, assurez-vous de vérifier votre dossier de spam.',
passwordChanged: 'Connectez-vous maintenant',
changePassword: 'Changer le mot de passe',
changePasswordTip: 'Veuillez entrer un nouveau mot de passe pour votre compte',
invalidToken: 'Token invalide ou expiré',
confirmPassword: 'Confirmez le mot de passe',
confirmPasswordPlaceholder: 'Confirmez votre nouveau mot de passe',
passwordChangedTip: 'Votre mot de passe a été changé avec succès',
error: {
emailEmpty: 'Une adresse e-mail est requise',
emailInValid: 'Veuillez entrer une adresse email valide',
nameEmpty: 'Le nom est requis',
passwordEmpty: 'Un mot de passe est requis',
passwordInvalid: 'Le mot de passe doit contenir des lettres et des chiffres, et la longueur doit être supérieure à 8.',
passwordLengthInValid: 'Le mot de passe doit comporter au moins 8 caractères.',
registrationNotAllowed: 'Compte introuvable. Veuillez contacter ladministrateur système pour vous inscrire.',
},
license: {
tip: 'Avant de commencer Dify Community Edition, lisez le GitHub',
link: 'Licence Open-source',
},
join: 'Rejoindre',
joinTipStart: 'Je vous invite à rejoindre',
joinTipEnd: 'équipe sur Dify',
invalid: 'Le lien a expiré',
explore: 'Explorez Dify',
activatedTipStart: 'Vous avez rejoint le',
activatedTipEnd: 'équipe',
activated: 'Connectez-vous maintenant',
adminInitPassword: 'Mot de passe d\'initialisation de l\'administrateur',
validate: 'Valider',
sso: 'Poursuivre avec lauthentification unique',
checkCode: {
verificationCode: 'Code de vérification',
useAnotherMethod: 'Utiliser une autre méthode',
didNotReceiveCode: 'Vous navez pas reçu le code ?',
emptyCode: 'Le code est requis',
verify: 'Vérifier',
verificationCodePlaceholder: 'Entrez le code à 6 chiffres',
resend: 'Renvoyer',
invalidCode: 'Code non valide',
checkYourEmail: 'Vérifiez vos e-mails',
validTime: 'Gardez à lesprit que le code est valable 5 minutes',
tips: 'Nous envoyons un code de vérification à <strong>{{email}}</strong>',
},
sendVerificationCode: 'Envoyer le code de vérification',
or: 'OU',
continueWithCode: 'Continuer avec le code',
useVerificationCode: 'Utiliser le code de vérification',
noLoginMethod: 'Méthode dauthentification non configurée',
backToLogin: 'Retour à la connexion',
changePasswordBtn: 'Définir un mot de passe',
setYourAccount: 'Configurer votre compte',
withSSO: 'Poursuivre avec lauthentification unique',
resetPassword: 'Réinitialiser le mot de passe',
back: 'Précédent',
enterYourName: 'Veuillez entrer votre nom dutilisateur',
noLoginMethodTip: 'Veuillez contacter ladministrateur système pour ajouter une méthode dauthentification.',
resetPasswordDesc: 'Tapez ladresse e-mail que vous avez utilisée pour vous inscrire sur Dify et nous vous enverrons un e-mail de réinitialisation de mot de passe.',
usePassword: 'Utiliser le mot de passe',
licenseInactiveTip: 'La licence Dify Enterprise de votre espace de travail est inactive. Veuillez contacter votre administrateur pour continuer à utiliser Dify.',
licenseLostTip: 'Échec de la connexion au serveur de licences Dify. Veuillez contacter votre administrateur pour continuer à utiliser Dify.',
licenseExpired: 'Licence expirée',
licenseLost: 'Licence perdue',
licenseExpiredTip: 'La licence Dify Enterprise de votre espace de travail a expiré. Veuillez contacter votre administrateur pour continuer à utiliser Dify.',
licenseInactive: 'Licence inactive',
}
export default translation

View File

@@ -0,0 +1,25 @@
const translation = {
tags: {
news: 'Nouvelles',
design: 'Concevoir',
videos: 'Vidéos',
agent: 'Agent',
finance: 'Finance',
entertainment: 'Divertissement',
travel: 'Voyager',
productivity: 'Productivité',
search: 'Rechercher',
education: 'Éducation',
business: 'Affaire',
weather: 'Temps',
image: 'Image',
social: 'Social',
medical: 'Médical',
other: 'Autre',
utilities: 'Utilitaires',
},
searchTags: 'Mots-clés de recherche',
allTags: 'Tous les mots-clés',
}
export default translation

View File

@@ -0,0 +1,209 @@
const translation = {
category: {
extensions: 'Extensions',
agents: 'Stratégies des agents',
models: 'Modèle',
tools: 'Outils',
bundles: 'Paquets',
all: 'Tout',
},
categorySingle: {
extension: 'Extension',
tool: 'Outil',
model: 'Modèle',
agent: 'Stratégie dagent',
bundle: 'Paquet',
},
list: {
source: {
github: 'Installer à partir de GitHub',
local: 'Installer à partir dun fichier de package local',
marketplace: 'Installer à partir de Marketplace',
},
notFound: 'Aucun plugin trouvé',
noInstalled: 'Aucun plugin installé',
},
source: {
local: 'Fichier de package local',
github: 'Lien avec GitHub',
marketplace: 'Marché',
},
detailPanel: {
categoryTip: {
debugging: 'Plugin de débogage',
local: 'Plugin local',
github: 'Installé à partir de Github',
marketplace: 'Installé à partir de Marketplace',
},
operation: {
viewDetail: 'Voir les détails',
info: 'Informations sur le plugin',
checkUpdate: 'Vérifier la mise à jour',
update: 'Mettre à jour',
install: 'Installer',
remove: 'Enlever',
detail: 'Détails',
},
toolSelector: {
uninstalledLink: 'Gérer dans les plugins',
title: 'Ajouter un outil',
uninstalledContent: 'Ce plugin est installé à partir du référentiel local/GitHub. Veuillez utiliser après linstallation.',
unsupportedTitle: 'Action non soutenue',
descriptionLabel: 'Description de loutil',
placeholder: 'Sélectionnez un outil...',
params: 'CONFIGURATION DE RAISONNEMENT',
unsupportedContent: 'La version du plugin installée ne fournit pas cette action.',
auto: 'Automatique',
descriptionPlaceholder: 'Brève description de lobjectif de loutil, par exemple, obtenir la température dun endroit spécifique.',
unsupportedContent2: 'Cliquez pour changer de version.',
uninstalledTitle: 'Outil non installé',
empty: 'Cliquez sur le bouton « + » pour ajouter des outils. Vous pouvez ajouter plusieurs outils.',
toolLabel: 'Outil',
settings: 'PARAMÈTRES UTILISATEUR',
paramsTip2: 'Lorsque « Automatique » est désactivé, la valeur par défaut est utilisée.',
paramsTip1: 'Contrôle les paramètres dinférence LLM.',
},
modelNum: '{{num}} MODÈLES INCLUS',
endpointDeleteTip: 'Supprimer le point de terminaison',
endpoints: 'Terminaison',
endpointsDocLink: 'Voir le document',
switchVersion: 'Version du commutateur',
strategyNum: '{{num}} {{stratégie}} INCLUS',
configureTool: 'Configurer loutil',
endpointDeleteContent: 'Souhaitez-vous supprimer {{name}} ?',
disabled: 'Handicapé',
endpointsTip: 'Ce plug-in fournit des fonctionnalités spécifiques via des points de terminaison, et vous pouvez configurer plusieurs ensembles de points de terminaison pour lespace de travail actuel.',
configureModel: 'Configurer le modèle',
configureApp: 'Configurer lapplication',
endpointsEmpty: 'Cliquez sur le bouton « + » pour ajouter un point de terminaison',
actionNum: '{{num}} {{action}} INCLUS',
endpointDisableContent: 'Souhaitez-vous désactiver {{name}} ?',
endpointDisableTip: 'Désactiver le point de terminaison',
endpointModalTitle: 'Configurer le point de terminaison',
serviceOk: 'Service OK',
endpointModalDesc: 'Une fois configuré, les fonctionnalités fournies par le plugin via les points de terminaison de lAPI peuvent être utilisées.',
},
debugInfo: {
title: 'Débogage',
viewDocs: 'Voir la documentation',
},
privilege: {
whoCanInstall: 'Qui peut installer et gérer les plugins ?',
admins: 'Administrateurs',
noone: 'Personne',
title: 'Préférences du plugin',
everyone: 'Tout le monde',
whoCanDebug: 'Qui peut déboguer les plugins ?',
},
pluginInfoModal: {
release: 'Libérer',
title: 'Informations sur le plugin',
packageName: 'Colis',
repository: 'Dépôt',
},
action: {
checkForUpdates: 'Rechercher des mises à jour',
pluginInfo: 'Informations sur le plugin',
delete: 'Supprimer le plugin',
deleteContentLeft: 'Souhaitez-vous supprimer',
deleteContentRight: 'Plug-in ?',
usedInApps: 'Ce plugin est utilisé dans les applications {{num}}.',
},
installModal: {
labels: {
package: 'Colis',
version: 'Version',
repository: 'Dépôt',
},
installedSuccessfullyDesc: 'Le plugin a été installé avec succès.',
uploadingPackage: 'Téléchargement de {{packageName}}...',
readyToInstallPackage: 'Sur le point dinstaller le plugin suivant',
back: 'Précédent',
fromTrustSource: 'Assurez-vous de ninstaller que des plugins provenant dune <trustSource>source fiable</trustSource>.',
close: 'Fermer',
installing: 'Installation...',
pluginLoadErrorDesc: 'Ce plugin ne sera pas installé',
cancel: 'Annuler',
installFailed: 'Échec de linstallation',
readyToInstallPackages: 'Sur le point dinstaller les plugins {{num}} suivants',
install: 'Installer',
uploadFailed: 'Échec du téléchargement',
installComplete: 'Installation terminée',
pluginLoadError: 'Erreur de chargement du plugin',
dropPluginToInstall: 'Déposez le package de plugin ici pour linstaller',
readyToInstall: 'Sur le point dinstaller le plugin suivant',
installedSuccessfully: 'Installation réussie',
next: 'Prochain',
installPlugin: 'Installer le plugin',
installFailedDesc: 'Linstallation du plug-in a échoué.',
},
installFromGitHub: {
installFailed: 'Échec de linstallation',
installPlugin: 'Installer le plugin depuis GitHub',
gitHubRepo: 'Référentiel GitHub',
selectPackage: 'Sélectionnez le forfait',
selectVersion: 'Sélectionner la version',
uploadFailed: 'Échec du téléchargement',
installNote: 'Assurez-vous de ninstaller que des plugins provenant dune source fiable.',
selectVersionPlaceholder: 'Veuillez sélectionner une version',
installedSuccessfully: 'Installation réussie',
updatePlugin: 'Mettre à jour le plugin à partir de GitHub',
selectPackagePlaceholder: 'Veuillez sélectionner un forfait',
},
upgrade: {
upgrading: 'Installation...',
usedInApps: 'Utilisé dans les applications {{num}}',
close: 'Fermer',
description: 'Sur le point dinstaller le plugin suivant',
upgrade: 'Installer',
title: 'Installer le plugin',
successfulTitle: 'Installation réussie',
},
error: {
noReleasesFound: 'Aucune version na été trouvée. Vérifiez le référentiel GitHub ou lURL dentrée.',
inValidGitHubUrl: 'URL GitHub non valide. Entrez une URL valide au format : https://github.com/owner/repo',
fetchReleasesError: 'Impossible de récupérer les versions. Veuillez réessayer plus tard.',
},
marketplace: {
sortOption: {
firstReleased: 'Première sortie',
mostPopular: 'Les plus populaires',
recentlyUpdated: 'Récemment mis à jour',
newlyReleased: 'Nouvellement publié',
},
noPluginFound: 'Aucun plugin trouvé',
moreFrom: 'Plus de Marketplace',
and: 'et',
viewMore: 'Voir plus',
pluginsResult: '{{num}} résultats',
discover: 'Découvrir',
difyMarketplace: 'Marché Dify',
empower: 'Renforcez le développement de votre IA',
sortBy: 'Ville noire',
},
task: {
installError: '{{errorLength}} les plugins nont pas pu être installés, cliquez pour voir',
installingWithSuccess: 'Installation des plugins {{installingLength}}, succès de {{successLength}}.',
installingWithError: 'Installation des plugins {{installingLength}}, succès de {{successLength}}, échec de {{errorLength}}',
installedError: '{{errorLength}} les plugins nont pas pu être installés',
clearAll: 'Effacer tout',
installing: 'Installation des plugins {{installingLength}}, 0 fait.',
},
search: 'Rechercher',
submitPlugin: 'Soumettre le plugin',
installAction: 'Installer',
from: 'De',
searchCategories: 'Catégories de recherche',
searchPlugins: 'Rechercher des plugins',
fromMarketplace: 'À partir de Marketplace',
findMoreInMarketplace: 'En savoir plus sur Marketplace',
install: '{{num}} sinstalle',
installFrom: 'INSTALLER À PARTIR DE',
searchInMarketplace: 'Rechercher sur Marketplace',
allCategories: 'Toutes les catégories',
endpointsEnabled: '{{num}} ensembles de points de terminaison activés',
searchTools: 'Outils de recherche...',
installPlugin: 'Installer le plugin',
}
export default translation

View File

@@ -0,0 +1,4 @@
const translation = {
}
export default translation

View File

@@ -0,0 +1,31 @@
const translation = {
input: 'ENTRÉE',
result: 'RÉSULTAT',
detail: 'DÉTAIL',
tracing: 'TRACE',
resultPanel: {
status: 'STATUT',
time: 'TEMPS ÉCOULÉ',
tokens: 'TOTAL DES JETONS',
},
meta: {
title: 'MÉTADONNÉES',
status: 'Statut',
version: 'Version',
executor: 'Exécuteur',
startTime: 'Heure de début',
time: 'Temps écoulé',
tokens: 'Total des jetons',
steps: 'Étapes d\'exécution',
},
resultEmpty: {
title: 'Cela exécute uniquement le format de sortie JSON,',
tipLeft: 'veuillez aller à ',
link: 'panneau de détail',
tipRight: ' visualisez-le.',
},
actionLogs: 'Journaux dactions',
circularInvocationTip: 'Il y a un appel circulaire doutils/nœuds dans le flux de travail actuel.',
}
export default translation

View File

@@ -0,0 +1,74 @@
const translation = {
common: {
welcome: '',
appUnavailable: 'L\'application n\'est pas disponible',
appUnknownError: 'L\'application n\'est pas disponible',
},
chat: {
newChat: 'Nouveau chat',
pinnedTitle: 'Épinglé',
unpinnedTitle: 'Discussions',
newChatDefaultName: 'Nouvelle conversation',
resetChat: 'Réinitialiser la conversation',
poweredBy: 'Propulsé par',
prompt: 'Prompt',
privatePromptConfigTitle: 'Paramètres de conversation',
publicPromptConfigTitle: 'Prompt Initial',
configStatusDes: 'Avant de commencer, vous pouvez modifier les paramètres de conversation',
configDisabled:
'Les paramètres de la session précédente ont été utilisés pour cette session.',
startChat: 'Commencer le Chat',
privacyPolicyLeft:
'Veuillez lire',
privacyPolicyMiddle:
'politique de confidentialité',
privacyPolicyRight:
'fourni par le développeur de l\'application.',
deleteConversation: {
title: 'Supprimer la conversation',
content: 'Êtes-vous sûr de vouloir supprimer cette conversation ?',
},
tryToSolve: 'Essayez de résoudre',
temporarySystemIssue: 'Désolé, problème temporaire du système.',
},
generation: {
tabs: {
create: 'Exécuter une fois',
batch: 'Exécuter le lot',
saved: 'Enregistré',
},
savedNoData: {
title: 'Vous n\'avez pas encore enregistré de résultat !',
description: 'Commencez à générer du contenu et retrouvez vos résultats sauvegardés ici.',
startCreateContent: 'Commencez à créer du contenu',
},
title: 'Complétion IA',
queryTitle: 'Contenu de la requête',
completionResult: 'Résultat de la complétion',
queryPlaceholder: 'Rédigez le contenu de votre requête...',
run: 'Exécuter',
copy: 'Copier',
resultTitle: 'Complétion IA',
noData: 'L\'IA vous donnera ce que vous voulez ici.',
csvUploadTitle: 'Faites glisser et déposez votre fichier CSV ici, ou',
browse: 'parcourir',
csvStructureTitle: 'Le fichier CSV doit se conformer à la structure suivante :',
downloadTemplate: 'Téléchargez le modèle ici',
field: 'Champ',
batchFailed: {
info: '{{num}} exécutions échouées',
retry: 'Réessayer',
outputPlaceholder: 'Aucun contenu de sortie',
},
errorMsg: {
empty: 'Veuillez entrer le contenu dans le fichier téléchargé.',
fileStructNotMatch: 'Le fichier CSV téléchargé ne correspond pas à la structure.',
emptyLine: 'La ligne {{rowIndex}} est vide',
invalidLine: 'Row {{rowIndex}}: {{varName}} value can not be empty',
moreThanMaxLengthLine: 'Row {{rowIndex}}: {{varName}} value can not be more than {{maxLength}} characters',
atLeastOne: 'Veuillez entrer au moins une ligne dans le fichier téléchargé.',
},
},
}
export default translation

View File

@@ -0,0 +1,3 @@
const translation = {}
export default translation

View File

@@ -0,0 +1,158 @@
const translation = {
title: 'Outils',
createCustomTool: 'Créer un Outil Personnalisé',
type: {
all: 'Tout',
builtIn: 'Intégré',
custom: 'Personnalisé',
workflow: 'Flux de travail',
},
contribute: {
line1: 'Je suis intéressé par',
line2: 'contribuer des outils à Dify.',
viewGuide: 'Voir le guide',
},
author: 'Par',
auth: {
unauthorized: 'Pour Autoriser',
authorized: 'Autorisé',
setup: 'Mettez en place l\'autorisation à utiliser',
setupModalTitle: 'Configurer l\'Autorisation',
setupModalTitleDescription: 'Après avoir configuré les identifiants, tous les membres de l\'espace de travail peuvent utiliser cet outil lors de l\'orchestration des applications.',
},
includeToolNum: '{{num}} outils inclus',
addTool: 'Ajouter un outil',
createTool: {
title: 'Créer un Outil Personnalisé',
editAction: 'Configurer',
editTitle: 'Modifier l\'Outil Personnalisé',
name: 'Nom',
toolNamePlaceHolder: 'Entrez le nom de l\'outil',
schema: 'Schéma',
schemaPlaceHolder: 'Entrez votre schéma OpenAPI ici',
viewSchemaSpec: 'Voir la spécification OpenAPI-Swagger',
importFromUrl: 'Importer depuis l\'URL',
importFromUrlPlaceHolder: 'https://...',
urlError: 'Veuillez entrer une URL valide',
examples: 'Exemples',
exampleOptions: {
json: 'Météo(JSON)',
yaml: 'Animalerie (YAML)',
blankTemplate: 'Modèle Vierge',
},
availableTools: {
title: 'Outils Disponibles',
name: 'Nom',
description: 'Description',
method: 'Méthode',
path: 'Chemin',
action: 'Actions',
test: 'Test',
},
authMethod: {
title: 'Méthode d\'autorisation',
type: 'Type d\'autorisation',
keyTooltip: 'Clé de l\'en-tête HTTP. Vous pouvez la laisser telle quelle avec "Autorisation" si vous n\'avez aucune idée de ce que c\'est, ou la définir sur une valeur personnalisée.',
types: {
none: 'Aucun',
api_key: 'Clé API',
apiKeyPlaceholder: 'Nom de l\'en-tête HTTP pour la clé API',
apiValuePlaceholder: 'Entrez la clé API',
},
key: 'Clé',
value: 'Valeur',
},
authHeaderPrefix: {
title: 'Type d\'Authentification',
types: {
basic: 'Basique',
bearer: 'Porteur',
custom: 'Personnalisé',
},
},
privacyPolicy: 'Politique de confidentialité',
privacyPolicyPlaceholder: 'Veuillez entrer la politique de confidentialité',
customDisclaimer: 'Clause de non-responsabilité personnalisée',
customDisclaimerPlaceholder: 'Entrez le texte de la clause de non-responsabilité personnalisée',
deleteToolConfirmTitle: 'Supprimer cet outil ?',
deleteToolConfirmContent: 'La suppression de l\'outil est irréversible. Les utilisateurs ne pourront plus accéder à votre outil.',
toolInput: {
required: 'Obligatoire',
name: 'Nom',
label: 'Étiquettes',
title: 'Entrée doutil',
methodSetting: 'Réglage',
labelPlaceholder: 'Choisir des balises(facultatif)',
descriptionPlaceholder: 'Description de la signification du paramètre',
method: 'Méthode',
methodParameter: 'Paramètre',
methodSettingTip: 'Lutilisateur renseigne la configuration de loutil',
methodParameterTip: 'Remplissages LLM pendant linférence',
description: 'Description',
},
nameForToolCallTip: 'Ne prend en charge que les chiffres, les lettres et les traits de soulignement.',
confirmTitle: 'Confirmer pour enregistrer ?',
nameForToolCall: 'Nom de lappel de loutil',
confirmTip: 'Les applications utilisant cet outil seront affectées',
description: 'Description',
nameForToolCallPlaceHolder: 'Utilisé pour la reconnaissance automatique, tels que getCurrentWeather, list_pets',
descriptionPlaceholder: 'Brève description de lobjectif de loutil, par exemple, obtenir la température dun endroit spécifique.',
},
test: {
title: 'Test',
parametersValue: 'Paramètres & Valeur',
parameters: 'Paramètres',
value: 'Valeur',
testResult: 'Résultats du Test',
testResultPlaceholder: 'Le résultat du test s\'affichera ici',
},
thought: {
using: 'Utilisation',
used: 'Utilisé',
requestTitle: 'Demande à',
responseTitle: 'Réponse de',
},
setBuiltInTools: {
info: 'Infos',
setting: 'Paramètres',
toolDescription: 'Description de l\'outil',
parameters: 'paramètres',
string: 'chaîne',
number: 'nombre',
required: 'Requis',
infoAndSetting: 'Infos & Paramètres',
file: 'lime',
},
noCustomTool: {
title: 'Pas d\'outils personnalisés !',
content: 'Ajoutez et gérez vos outils personnalisés ici pour construire des applications IA.',
createTool: 'Créer un outil',
},
noSearchRes: {
title: 'Désolé, aucun résultat !',
content: 'Nous n\'avons trouvé aucun outil correspondant à votre recherche.',
reset: 'Réinitialiser la recherche',
},
builtInPromptTitle: 'Invite',
toolRemoved: 'Outil supprimé',
notAuthorized: 'Outil non autorisé',
howToGet: 'Comment obtenir',
addToolModal: {
type: 'type',
emptyTitle: 'Aucun outil de flux de travail disponible',
added: 'supplémentaire',
add: 'ajouter',
category: 'catégorie',
manageInTools: 'Gérer dans Outils',
emptyTip: 'Allez dans « Flux de travail -> Publier en tant quoutil »',
emptyTitleCustom: 'Aucun outil personnalisé disponible',
emptyTipCustom: 'Créer un outil personnalisé',
},
openInStudio: 'Ouvrir dans Studio',
customToolTip: 'En savoir plus sur les outils personnalisés Dify',
toolNameUsageTip: 'Nom de lappel de loutil pour le raisonnement et linvite de lagent',
copyToolName: 'Copier le nom',
noTools: 'Aucun outil trouvé',
}
export default translation

View File

@@ -0,0 +1,782 @@
const translation = {
common: {
undo: 'Défaire',
redo: 'Réexécuter',
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: 'Aperçu',
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',
syncingData: 'Synchroniser des données en quelques secondes.',
importDSL: 'Importe DSL',
importDSLTip: 'Le projet actuel sera écrasé. Exporter le flux de travail en tant que sauvegarde avant d\'importer.',
backupCurrentDraft: 'Sauvegarder le projet actuel',
chooseDSL: 'Choisir le fichier DSL(yml)',
overwriteAndImport: 'Écraser et importer',
importFailure: 'Echec de l\'importation',
importSuccess: 'Import avec succès',
parallelTip: {
click: {
title: 'Cliquer',
desc: 'à ajouter',
},
drag: {
title: 'Traîner',
desc: 'pour se connecter',
},
limit: 'Le parallélisme est limité aux branches {{num}}.',
depthLimit: 'Limite de couches dimbrication parallèle de {{num}} couches',
},
parallelRun: 'Exécution parallèle',
disconnect: 'Déconnecter',
jumpToNode: 'Aller à ce nœud',
addParallelNode: 'Ajouter un nœud parallèle',
parallel: 'PARALLÈLE',
branch: 'BRANCHE',
featuresDocLink: 'Pour en savoir plus',
ImageUploadLegacyTip: 'Vous pouvez désormais créer des variables de type de fichier dans le formulaire de démarrage. À lavenir, nous ne prendrons plus en charge la fonctionnalité de téléchargement dimages.',
fileUploadTip: 'Les fonctionnalités de téléchargement dimages ont été mises à niveau vers le téléchargement de fichiers.',
featuresDescription: 'Améliorer lexpérience utilisateur de lapplication web',
importWarning: 'Prudence',
importWarningDetails: 'La différence de version DSL peut affecter certaines fonctionnalités',
openInExplore: 'Ouvrir dans Explorer',
onFailure: 'Sur léchec',
addFailureBranch: 'Ajouter une branche déchec',
loadMore: 'Charger plus de flux de travail',
noHistory: 'Pas dhistoire',
},
env: {
envPanelTitle: 'Variables d\'Environnement',
envDescription: 'Les variables d\'environnement peuvent être utilisées pour stocker des informations privées et des informations d\'identification. Elles sont en lecture seule et peuvent être séparées du fichier DSL lors de l\'exportation.',
envPanelButton: 'Ajouter Variable',
modal: {
title: 'Ajouter Variables d\'Environnement',
editTitle: 'Editer titre',
type: 'Type',
name: 'Nom',
namePlaceholder: 'Nom de l\'env',
value: 'valeur',
valuePlaceholder: 'Valeur de l\'env',
secretTip: 'Utilisé pour définir des informations ou des données sensibles, avec des paramètres DSL configurés pour la prévention des fuites.',
},
export: {
title: 'Exporter des variables d\'environnement secrètes?',
checkbox: 'Exporter les valeurs secrètes',
ignore: 'Exporter DSL',
export: 'Exporter les DSL avec des valeurs secrètes',
},
},
chatVariable: {
panelTitle: 'Variables de Conversation',
panelDescription: 'Les Variables de Conversation sont utilisées pour stocker des informations interactives dont le LLM a besoin de se souvenir, y compris l\'historique des conversations, les fichiers téléchargés et les préférences de l\'utilisateur. Elles sont en lecture-écriture.',
docLink: 'Consultez notre documentation pour en savoir plus.',
button: 'Ajouter une Variable',
modal: {
title: 'Ajouter une Variable de Conversation',
editTitle: 'Modifier une Variable de Conversation',
name: 'Nom',
namePlaceholder: 'Nom de la variable',
type: 'Type',
value: 'Valeur par Défaut',
valuePlaceholder: 'Valeur par défaut, laisser vide pour ne pas définir',
description: 'Description',
descriptionPlaceholder: 'Décrivez la variable',
editInJSON: 'Éditer en JSON',
oneByOne: 'Ajouter un par un',
editInForm: 'Éditer dans le Formulaire',
arrayValue: 'Valeur',
addArrayValue: 'Ajouter une Valeur',
objectKey: 'Clé',
objectType: 'Type',
objectValue: 'Valeur par Défaut',
},
storedContent: 'Contenu stocké',
updatedAt: 'Mis à jour le ',
},
changeHistory: {
title: 'Historique des modifications',
placeholder: 'Vous n\'avez encore rien modifié',
clearHistory: 'Effacer l\'historique',
hint: 'Conseil',
hintText: 'Vos actions d\'édition sont suivies dans un historique des modifications, qui est stocké sur votre appareil pour la durée de cette session. Cet historique sera effacé lorsque vous quitterez l\'éditeur.',
stepBackward_one: '{{count}} pas en arrière',
stepBackward_other: '{{count}} pas en arrière',
stepForward_one: '{{count}} pas en avant',
stepForward_other: '{{count}} pas en avant',
sessionStart: 'Début de la session',
currentState: 'État actuel',
nodeTitleChange: 'Titre du bloc modifié',
nodeDescriptionChange: 'Description du bloc modifiée',
nodeDragStop: 'Bloc déplacé',
nodeChange: 'Bloc modifié',
nodeConnect: 'Bloc connecté',
nodePaste: 'Bloc collé',
nodeDelete: 'Bloc supprimé',
nodeAdd: 'Bloc ajouté',
nodeResize: 'Bloc redimensionné',
noteAdd: 'Note ajoutée',
noteChange: 'Note modifiée',
noteDelete: 'Note supprimée',
edgeDelete: 'Bloc déconnecté',
},
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',
visionVariable: 'Vision Variable',
},
invalidVariable: 'Variable invalide',
rerankModelRequired: 'Avant dactiver le modèle de reclassement, veuillez confirmer que le modèle a été correctement configuré dans les paramètres.',
noValidTool: '{{field}} aucun outil valide sélectionné',
toolParameterRequired: '{{field}} : le paramètre [{{param}}] est obligatoire',
},
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é',
'searchTool': 'Outil de recherche',
'plugin': 'Plugin',
'agent': 'Stratégie dagent',
},
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',
'assigner': 'Assignateur de Variables',
'iteration-start': 'Début d\'itération',
'iteration': 'Itération',
'parameter-extractor': 'Extracteur de paramètres',
'list-operator': 'Opérateur de liste',
'document-extractor': 'Extracteur de documents',
'agent': 'Agent',
},
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.',
'assigner': 'Le nœud d\'assignation de variables est utilisé pour attribuer des valeurs aux variables modifiables (comme les variables de conversation).',
'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.',
'list-operator': 'Utilisé pour filtrer ou trier le contenu dun tableau.',
'document-extractor': 'Utilisé pour analyser les documents téléchargés en contenu texte facilement compréhensible par LLM.',
'agent': 'Appel de grands modèles de langage pour répondre à des questions ou traiter le langage naturel',
},
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',
optional: '(facultatif)',
},
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é',
},
errorHandle: {
none: {
title: 'Aucun',
desc: 'Le nœud cessera de sexécuter si une exception se produit et nest pas gérée',
},
defaultValue: {
title: 'Valeur par défaut',
desc: 'Lorsquune erreur se produit, spécifiez un contenu de sortie statique.',
tip: 'En cas derreur, le retour est inférieur à la valeur.',
inLog: 'Exception de nœud, sortie en fonction des valeurs par défaut.',
output: 'Valeur par défaut de sortie',
},
failBranch: {
desc: 'Lorsquune erreur se produit, il exécute la branche dexception',
customize: 'Accédez au canevas pour personnaliser la logique de branche déchec.',
customizeTip: 'Lorsque la branche fail est activée, les exceptions levées par les nœuds ne mettent pas fin au processus. Au lieu de cela, il exécutera automatiquement la branche déchec prédéfinie, ce qui vous permettra de fournir de manière flexible des messages derreur, des rapports, des correctifs ou des actions dignorance.',
inLog: 'Exception de nœud, exécutera automatiquement la branche déchec. La sortie du nœud renverra un type derreur et un message derreur et les transmettra en aval.',
title: 'Branche déchec',
},
partialSucceeded: {
tip: 'Il y a des nœuds {{num}} dans le processus qui fonctionnent anormalement, veuillez aller dans le traçage pour vérifier les journaux.',
},
title: 'Gestion des erreurs',
tip: 'Stratégie de gestion des exceptions, déclenchée lorsquun nœud rencontre une exception.',
},
retry: {
retry: 'Réessayer',
retryOnFailure: 'Réessai en cas déchec',
maxRetries: 'Nombre maximal de tentatives',
retryInterval: 'intervalle de nouvelle tentative',
retryTimes: 'Réessayez {{times}} fois en cas déchec',
retrying: 'Réessayer...',
retrySuccessful: 'Réessai réussi',
retryFailed: 'Échec de la nouvelle tentative',
retryFailedTimes: '{{times}} les tentatives ont échoué',
times: 'fois',
ms: 'ms',
retries: '{{num}} Tentatives',
},
},
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',
},
binaryFileVariable: 'Variable de fichier binaire',
type: 'Type',
extractListPlaceholder: 'Entrez lindex de lélément de liste, tapez \'/\' insérer la variable',
curl: {
placeholder: 'Collez la chaîne cURL ici',
title: 'Importer à partir de cURL',
},
},
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',
'regex match': 'correspondance regex',
'in': 'dans',
'not in': 'pas dans',
'exists': 'Existe',
'all of': 'lensemble des',
'not exists': 'nexiste pas',
},
enterValue: 'Entrez la valeur',
addCondition: 'Ajouter une condition',
conditionNotSetup: 'Condition NON configurée',
selectVariable: 'Sélectionner une variable...',
optionName: {
video: 'Vidéo',
image: 'Image',
audio: 'Audio',
doc: 'Médecin',
localUpload: 'Téléchargement local',
url: 'URL',
},
select: 'Choisir',
addSubVariable: 'Sous-variable',
},
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',
},
assigner: {
'assignedVariable': 'Variable Assignée',
'writeMode': 'Mode d\'Écriture',
'writeModeTip': 'Lorsque la VARIABLE ASSIGNÉE est un tableau, le mode d\'ajout ajoute à la fin.',
'over-write': 'Écraser',
'append': 'Ajouter',
'plus': 'Plus',
'clear': 'Effacer',
'setVariable': 'Définir Variable',
'variable': 'Variable',
'operations': {
'clear': 'Clair',
'*=': '*=',
'-=': '-=',
'extend': 'Étendre',
'+=': '+=',
'over-write': 'Écraser',
'set': 'Poser',
'append': 'Ajouter',
'title': 'Opération',
'/=': '/=',
'overwrite': 'Écraser',
},
'assignedVarsDescription': 'Les variables affectées doivent être accessibles en écriture, telles que des variables de conversation.',
'noVarTip': 'Cliquez sur le bouton « + » pour ajouter des variables',
'variables': 'Variables',
'setParameter': 'Définir le paramètre...',
'noAssignedVars': 'Aucune variable affectée disponible',
'varNotSet': 'Variable NON définie',
'selectAssignedVariable': 'Sélectionner la variable affectée...',
},
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é',
},
json: 'JSON généré par un outil',
},
},
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',
ErrorMethod: {
operationTerminated: 'Terminé',
removeAbnormalOutput: 'remove-abnormal-output',
continueOnError: 'continuer sur lerreur',
},
comma: ',',
error_one: '{{compte}} Erreur',
error_other: '{{compte}} Erreurs',
parallelModeEnableDesc: 'En mode parallèle, les tâches au sein des itérations prennent en charge lexécution parallèle. Vous pouvez le configurer dans le panneau des propriétés à droite.',
parallelModeUpper: 'MODE PARALLÈLE',
parallelPanelDesc: 'En mode parallèle, les tâches de litération prennent en charge lexécution parallèle.',
MaxParallelismDesc: 'Le parallélisme maximal est utilisé pour contrôler le nombre de tâches exécutées simultanément en une seule itération.',
errorResponseMethod: 'Méthode de réponse aux erreurs',
MaxParallelismTitle: 'Parallélisme maximal',
answerNodeWarningDesc: 'Avertissement en mode parallèle : les nœuds de réponse, les affectations de variables de conversation et les opérations de lecture/écriture persistantes au sein des itérations peuvent provoquer des exceptions.',
parallelModeEnableTitle: 'Mode parallèle activé',
parallelMode: 'Mode parallèle',
},
note: {
addNote: 'Ajouter note',
editor: {
placeholder: 'Redigez votre note...',
small: 'Petit',
medium: 'Moyen',
large: 'Grand',
bold: 'Gras',
italic: 'Italique',
strikethrough: 'Barré',
link: 'Lien',
openLink: 'Ouvrir',
unlink: 'Annuler le lien',
enterUrl: 'Entrer l\'URL...',
invalidUrl: 'URL invalide',
bulletList: 'Liste à puces',
showAuthor: 'Afficher l\'auteur',
},
},
docExtractor: {
outputVars: {
text: 'Texte extrait',
},
learnMore: 'Pour en savoir plus',
inputVar: 'Variable dentrée',
supportFileTypes: 'Types de fichiers de support : {{types}}.',
},
listFilter: {
outputVars: {
result: 'Filtrer le résultat',
last_record: 'Dernier enregistrement',
first_record: 'Premier enregistrement',
},
filterCondition: 'État du filtre',
asc: 'LASC',
inputVar: 'Variable dentrée',
filterConditionComparisonValue: 'Valeur de la condition de filtre',
desc: 'DESC',
filterConditionComparisonOperator: 'Opérateur de comparaison de létat des filtres',
selectVariableKeyPlaceholder: 'Sélectionner la clé de sous-variable',
limit: 'Haut N',
orderBy: 'Trier par',
filterConditionKey: 'Clé de condition de filtre',
extractsCondition: 'Extraire lélément N',
},
agent: {
strategy: {
configureTip: 'Veuillez configurer la stratégie agentique.',
tooltip: 'Différentes stratégies agentiques déterminent la façon dont le système planifie et exécute les appels doutils en plusieurs étapes',
shortLabel: 'Stratégie',
selectTip: 'Sélectionner la stratégie agentique',
configureTipDesc: 'Après avoir configuré la stratégie agentique, ce nœud chargera automatiquement les configurations restantes. La stratégie affectera le mécanisme du raisonnement à loutil en plusieurs étapes.',
searchPlaceholder: 'Stratégie de recherche agentique',
label: 'Stratégie agentique',
},
pluginInstaller: {
installing: 'Installation',
install: 'Installer',
},
modelNotInMarketplace: {
manageInPlugins: 'Gérer dans les plugins',
desc: 'Ce modèle est installé à partir dun référentiel local ou GitHub. Veuillez utiliser après linstallation.',
title: 'Modèle non installé',
},
modelNotSupport: {
title: 'Modèle non pris en charge',
desc: 'La version du plugin installée ne fournit pas ce modèle.',
descForVersionSwitch: 'La version du plugin installée ne fournit pas ce modèle. Cliquez pour changer de version.',
},
modelSelectorTooltips: {
deprecated: 'Ce modèle est obsolète',
},
outputVars: {
files: {
title: 'Fichiers générés par lagent',
url: 'URL de limage',
transfer_method: 'Méthode de transfert. La valeur est remote_url ou local_file',
type: 'Type de support. Maintenant, seulement limage de support',
upload_file_id: 'Télécharger lidentifiant du fichier',
},
json: 'JSON généré par lagent',
text: 'Contenu généré par lagent',
},
checkList: {
strategyNotSelected: 'Stratégie non sélectionnée',
},
installPlugin: {
title: 'Installer le plugin',
install: 'Installer',
changelog: 'Journal des modifications',
cancel: 'Annuler',
desc: 'Sur le point dinstaller le plugin suivant',
},
modelNotSelected: 'Modèle non sélectionné',
configureModel: 'Configurer le modèle',
pluginNotFoundDesc: 'Ce plugin est installé à partir de GitHub. Veuillez aller dans Plugins pour réinstaller',
strategyNotSet: 'Stratégie agentique non définie',
unsupportedStrategy: 'Stratégie non soutenue',
linkToPlugin: 'Lien vers les plugins',
toolNotInstallTooltip: '{{tool}} nest pas installé',
model: 'modèle',
learnMore: 'Pour en savoir plus',
pluginNotInstalled: 'Ce plugin nest pas installé',
modelNotInstallTooltip: 'Ce modèle nest pas installé',
tools: 'Outils',
notAuthorized: 'Non autorisé',
strategyNotInstallTooltip: '{{strategy}} nest pas installé',
strategyNotFoundDesc: 'La version du plugin installée ne fournit pas cette stratégie.',
strategyNotFoundDescAndSwitchVersion: 'La version du plugin installée ne fournit pas cette stratégie. Cliquez pour changer de version.',
toolbox: 'boîte à outils',
pluginNotInstalledDesc: 'Ce plugin est installé à partir de GitHub. Veuillez aller dans Plugins pour réinstaller',
maxIterations: 'Nombre maximal ditérations',
toolNotAuthorizedTooltip: '{{outil}} Non autorisé',
},
},
tracing: {
stopBy: 'Arrêté par {{user}}',
},
variableReference: {
noAssignedVars: 'Aucune variable affectée disponible',
noVarsForOperation: 'Aucune variable nest disponible pour laffectation avec lopération sélectionnée.',
noAvailableVars: 'Aucune variable disponible',
assignedVarsDescription: 'Les variables affectées doivent être des variables accessibles en écriture, telles que',
conversationVars: 'Variables de conversation',
},
}
export default translation