dify
This commit is contained in:
98
dify/web/i18n/fr-FR/app-annotation.ts
Normal file
98
dify/web/i18n/fr-FR/app-annotation.ts
Normal file
@@ -0,0 +1,98 @@
|
||||
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',
|
||||
clearAllConfirm: 'Supprimer 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.',
|
||||
list: {
|
||||
delete: {
|
||||
title: 'Êtes-vous sûr de vouloir supprimer ?',
|
||||
},
|
||||
},
|
||||
batchAction: {
|
||||
cancel: 'Annuler',
|
||||
delete: 'Supprimer',
|
||||
selected: 'sélectionné',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
85
dify/web/i18n/fr-FR/app-api.ts
Normal file
85
dify/web/i18n/fr-FR/app-api.ts
Normal 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
|
||||
575
dify/web/i18n/fr-FR/app-debug.ts
Normal file
575
dify/web/i18n/fr-FR/app-debug.ts
Normal file
@@ -0,0 +1,575 @@
|
||||
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',
|
||||
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?',
|
||||
},
|
||||
},
|
||||
contentEnableLabel: 'Modération de contenu activée',
|
||||
},
|
||||
fileUpload: {
|
||||
title: 'Téléchargement de fichier',
|
||||
description: 'La boîte de saisie de chat permet de télécharger des images, des documents et d\'autres fichiers.',
|
||||
supportedTypes: 'Types de fichiers supportés',
|
||||
numberLimit: 'Nombre max de téléchargements',
|
||||
modalTitle: 'Paramètres de téléchargement de fichier',
|
||||
},
|
||||
imageUpload: {
|
||||
title: 'Téléchargement d\'image',
|
||||
description: 'Permet de télécharger des images.',
|
||||
supportedTypes: 'Types de fichiers supportés',
|
||||
numberLimit: 'Nombre max de téléchargements',
|
||||
modalTitle: 'Paramètres de téléchargement d\'image',
|
||||
},
|
||||
bar: {
|
||||
empty: 'Activer la fonctionnalité pour améliorer l\'expérience utilisateur de l\'application web',
|
||||
enableText: 'Fonctionnalités activées',
|
||||
manage: 'Gérer',
|
||||
},
|
||||
documentUpload: {
|
||||
title: 'Document',
|
||||
description: 'Activer Document permettra au modèle de prendre des documents et de répondre aux questions à leur sujet.',
|
||||
},
|
||||
audioUpload: {
|
||||
title: 'Audio',
|
||||
description: 'Activer Audio permettra au modèle de traiter les fichiers audio pour la transcription et l\'analyse.',
|
||||
},
|
||||
},
|
||||
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',
|
||||
waitForFileUpload: 'Veuillez patienter pendant le téléchargement du/des fichier(s)',
|
||||
},
|
||||
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',
|
||||
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',
|
||||
'hide': 'Caché',
|
||||
'errorMsg': {
|
||||
labelNameRequired: 'Label name is required',
|
||||
varNameCanBeRepeat: 'Variable name can not be repeated',
|
||||
atLeastOneOption: 'At least one option is required',
|
||||
optionRepeat: 'Has repeat options',
|
||||
},
|
||||
'defaultValue': 'Valeur par défaut',
|
||||
'noDefaultValue': 'Aucune valeur par défaut',
|
||||
'selectDefaultValue': 'Sélectionner la valeur par défaut',
|
||||
'file': {
|
||||
image: {
|
||||
name: 'Image',
|
||||
},
|
||||
audio: {
|
||||
name: 'Audio',
|
||||
},
|
||||
document: {
|
||||
name: 'Document',
|
||||
},
|
||||
video: {
|
||||
name: 'Vidéo',
|
||||
},
|
||||
custom: {
|
||||
description: 'Spécifiez d’autres types de fichiers.',
|
||||
name: 'Autres types de fichiers',
|
||||
createPlaceholder: ' Extension de fichier, par exemple .doc',
|
||||
},
|
||||
supportFileTypes: 'Types de fichiers de support',
|
||||
},
|
||||
'content': 'Contenu',
|
||||
'uploadFileTypes': 'Types de fichiers de téléchargement',
|
||||
'multi-files': 'Liste des fichiers',
|
||||
'both': 'Les deux',
|
||||
'maxNumberOfUploads': 'Nombre maximal de téléchargements',
|
||||
'maxNumberTip': 'Document < {{docLimit}}, image < {{imgLimit}}, audio < {{audioLimit}}, vidéo < {{videoLimit}}',
|
||||
'localUpload': 'Téléchargement local',
|
||||
'single-file': 'En file indienne',
|
||||
'optional': 'optionnel',
|
||||
'checkbox': 'Checkbox',
|
||||
'jsonSchema': 'Schéma JSON',
|
||||
'json': 'Code JSON',
|
||||
'unit': 'Unité',
|
||||
'placeholder': 'Espace réservé',
|
||||
'startChecked': 'Démarrer vérifié',
|
||||
'displayName': 'Nom d’affichage',
|
||||
'startSelectedOption': 'Démarrer l’option sélectionnée',
|
||||
'uploadMethod': 'Méthode de téléchargement',
|
||||
'showAllSettings': 'Afficher tous les paramètres',
|
||||
'defaultValuePlaceholder': 'Entrez la valeur par défaut pour pré-remplir le champ',
|
||||
'placeholderPlaceholder': 'Saisissez le texte à afficher lorsque le champ est vide',
|
||||
'tooltips': 'Infobulles',
|
||||
'tooltipsPlaceholder': 'Entrez le texte utile affiché lorsque vous passez la souris sur l’étiquette',
|
||||
'unitPlaceholder': 'Affichage des unités après les nombres, par exemple les jetons',
|
||||
'noDefaultSelected': 'Ne sélectionnez pas',
|
||||
},
|
||||
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',
|
||||
},
|
||||
onlySupportVisionModelTip: 'Ne prend en charge que les modèles de vision',
|
||||
},
|
||||
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',
|
||||
openingQuestionPlaceholder: 'Vous pouvez utiliser des variables, essayez de taper {{variable}}.',
|
||||
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.',
|
||||
embeddingModelRequired: 'Un modèle d’incorporation configuré est requis',
|
||||
},
|
||||
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é',
|
||||
},
|
||||
},
|
||||
codegen: {
|
||||
noDataLine1: 'Décrivez votre cas d’utilisation sur la gauche,',
|
||||
instruction: 'Instructions',
|
||||
generate: 'Générer',
|
||||
noDataLine2: 'L’aperçu du code s’affichera ici.',
|
||||
resTitle: 'Code généré',
|
||||
applyChanges: 'Appliquer les modifications',
|
||||
overwriteConfirmTitle: 'Écraser le code existant ?',
|
||||
description: 'Le générateur de code utilise des modèles configurés pour générer un code de haute qualité basé sur vos instructions. Veuillez fournir des instructions claires et détaillées.',
|
||||
loading: 'Génération de code...',
|
||||
overwriteConfirmMessage: 'Cette action remplacera le code existant. Voulez-vous continuer ?',
|
||||
generatedCodeTitle: 'Code généré',
|
||||
apply: 'Appliquer',
|
||||
title: 'Générateur de code',
|
||||
instructionPlaceholder: 'Entrez une description détaillée du code que vous souhaitez générer.',
|
||||
},
|
||||
generate: {
|
||||
template: {
|
||||
pythonDebugger: {
|
||||
name: 'Débogueur Python',
|
||||
instruction: 'Un bot capable de générer et de déboguer votre code en fonction de vos instructions',
|
||||
},
|
||||
translation: {
|
||||
name: 'Traduction',
|
||||
instruction: 'Un traducteur capable de traduire en plusieurs langues',
|
||||
},
|
||||
professionalAnalyst: {
|
||||
instruction: 'Extrayez des informations, identifiez les risques et distillez les informations clés des rapports longs dans un seul mémo',
|
||||
name: 'Analyste professionnel',
|
||||
},
|
||||
excelFormulaExpert: {
|
||||
name: 'Expert en formules Excel',
|
||||
instruction: 'Un chatbot qui peut aider les utilisateurs novices à comprendre, utiliser et créer des formules Excel basées sur les instructions de l’utilisateur',
|
||||
},
|
||||
travelPlanning: {
|
||||
instruction: 'L’assistant de planification de voyage est un outil intelligent conçu pour aider les utilisateurs à planifier sans effort leurs voyages',
|
||||
name: 'Planification de voyage',
|
||||
},
|
||||
SQLSorcerer: {
|
||||
instruction: 'Transformez le langage quotidien en requêtes SQL',
|
||||
name: 'Sorcier SQL',
|
||||
},
|
||||
GitGud: {
|
||||
name: 'Git gud',
|
||||
instruction: 'Générer des commandes Git appropriées en fonction des actions de contrôle de version décrites par l’utilisateur',
|
||||
},
|
||||
meetingTakeaways: {
|
||||
name: 'Points à retenir de la réunion',
|
||||
instruction: 'Distillez les réunions en résumés concis comprenant les sujets de discussion, les points clés à retenir et les actions à prendre',
|
||||
},
|
||||
writingsPolisher: {
|
||||
name: 'Polisseuse d’écriture',
|
||||
instruction: 'Utilisez des techniques de révision avancées pour améliorer vos écrits',
|
||||
},
|
||||
},
|
||||
instruction: 'Instructions',
|
||||
generate: 'Générer',
|
||||
tryIt: 'Essaie',
|
||||
overwriteTitle: 'Remplacer la configuration existante ?',
|
||||
overwriteMessage: 'L’application de cette invite remplacera la configuration existante.',
|
||||
title: 'Générateur d’invites',
|
||||
apply: 'Appliquer',
|
||||
resTitle: 'Invite générée',
|
||||
loading: 'Orchestrer l’application pour vous...',
|
||||
description: 'Le générateur d’invites utilise le modèle configuré pour optimiser les invites afin d’obtenir une meilleure qualité et une meilleure structure. Veuillez rédiger des instructions claires et détaillées.',
|
||||
version: 'Version',
|
||||
latest: 'Dernier',
|
||||
versions: 'Versions',
|
||||
optional: 'Facultatif',
|
||||
optimizationNote: 'Remarque d\'optimisation',
|
||||
to: 'à',
|
||||
press: 'Presse',
|
||||
instructionPlaceHolderLine2: 'Le format de sortie est incorrect, veuillez suivre strictement le format JSON.',
|
||||
instructionPlaceHolderTitle: 'Décrivez comment vous aimeriez améliorer cette invite. Par exemple:',
|
||||
optimizePromptTooltip: 'Optimiser dans le générateur de prompts',
|
||||
instructionPlaceHolderLine1: 'Rendez la sortie plus concise, en conservant les points clés.',
|
||||
instructionPlaceHolderLine3: 'Le ton est trop brusque, veuillez le rendre plus amical.',
|
||||
insertContext: 'insérer le contexte',
|
||||
idealOutputPlaceholder: 'Décrivez votre format de réponse idéal, la longueur, le ton et les exigences en matière de contenu...',
|
||||
newNoDataLine1: 'Écrivez une instruction dans la colonne de gauche, puis cliquez sur Générer pour voir la réponse.',
|
||||
dismiss: 'Rejeter',
|
||||
idealOutput: 'Sortie Idéale',
|
||||
codeGenInstructionPlaceHolderLine: 'Plus le retour d\'information est détaillé, comme les types de données d\'entrée et de sortie ainsi que la manière dont les variables sont traitées, plus la génération de code sera précise.',
|
||||
},
|
||||
warningMessage: {
|
||||
timeoutExceeded: 'Les résultats ne s’affichent pas en raison d’un délai d’expiration. Veuillez vous référer aux journaux pour rassembler les résultats complets.',
|
||||
},
|
||||
noResult: 'La sortie sera affichée ici.',
|
||||
}
|
||||
|
||||
export default translation
|
||||
112
dify/web/i18n/fr-FR/app-log.ts
Normal file
112
dify/web/i18n/fr-FR/app-log.ts
Normal file
@@ -0,0 +1,112 @@
|
||||
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:ss 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',
|
||||
triggered_from: 'DÉCLENCHÉ PAR',
|
||||
},
|
||||
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',
|
||||
custom: 'Personnalisé',
|
||||
last30days: 'Derniers 30 jours',
|
||||
},
|
||||
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',
|
||||
testWithParams: 'Test avec paramètres',
|
||||
},
|
||||
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',
|
||||
},
|
||||
dateFormat: 'JJ/MM/YYYY',
|
||||
triggerBy: {
|
||||
debugging: 'Débogage',
|
||||
appRun: 'Application Web',
|
||||
webhook: 'Webhook',
|
||||
schedule: 'Programme',
|
||||
plugin: 'Plugin',
|
||||
ragPipelineRun: 'Pipeline RAG',
|
||||
ragPipelineDebugging: 'Débogage RAG',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
189
dify/web/i18n/fr-FR/app-overview.ts
Normal file
189
dify/web/i18n/fr-FR/app-overview.ts
Normal file
@@ -0,0 +1,189 @@
|
||||
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: 'web app 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 web app 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 web app',
|
||||
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',
|
||||
invalidPrivacyPolicy: 'Lien de politique de confidentialité invalide. Veuillez utiliser un lien valide commençant par http ou https',
|
||||
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 l’application web',
|
||||
copyrightTooltip: 'Veuillez passer à l’abonnement professionnel ou supérieur',
|
||||
},
|
||||
sso: {
|
||||
label: 'Authentification SSO',
|
||||
title: 'web app SSO',
|
||||
tooltip: 'Contactez l’administrateur pour activer l’authentification unique web app',
|
||||
description: 'Tous les utilisateurs doivent se connecter avec l’authentification unique avant d’utiliser web app',
|
||||
},
|
||||
modalTip: 'Paramètres de l’application 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',
|
||||
enableTooltip: {
|
||||
description: 'Pour activer cette fonctionnalité, veuillez ajouter un nœud d\'entrée utilisateur sur le canevas. (Peut déjà exister dans le brouillon, prend effet après publication)',
|
||||
learnMore: 'En savoir plus',
|
||||
},
|
||||
title: 'Application Web',
|
||||
},
|
||||
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',
|
||||
},
|
||||
triggerInfo: {
|
||||
title: 'Déclencheurs',
|
||||
explanation: 'Gestion des déclencheurs de flux de travail',
|
||||
triggersAdded: 'Déclencheurs ajoutés',
|
||||
noTriggerAdded: 'Aucun déclencheur ajouté',
|
||||
triggerStatusDescription: 'L\'état du nœud de déclenchement apparaît ici. (Peut déjà exister dans le brouillon, prend effet après publication)',
|
||||
learnAboutTriggers: 'En savoir plus sur les déclencheurs',
|
||||
},
|
||||
disableTooltip: {
|
||||
triggerMode: 'La fonctionnalité {{feature}} n\'est pas prise en charge en mode Nœud Déclencheur.',
|
||||
},
|
||||
},
|
||||
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
|
||||
349
dify/web/i18n/fr-FR/app.ts
Normal file
349
dify/web/i18n/fr-FR/app.ts
Normal file
@@ -0,0 +1,349 @@
|
||||
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',
|
||||
workflowWarning: 'Actuellement en version bêta',
|
||||
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 l’importation peut entraîner un dysfonctionnement de l’application.',
|
||||
appCreateDSLErrorTitle: 'Incompatibilité de version',
|
||||
appCreateDSLErrorPart3: 'Version actuelle de l’application DSL :',
|
||||
appCreateDSLErrorPart2: 'Voulez-vous continuer ?',
|
||||
foundResults: '{{count}} Résultats',
|
||||
workflowShortDescription: 'Flux agentique pour automatisations intelligentes',
|
||||
agentShortDescription: 'Agent intelligent avec raisonnement et utilisation autonome de l’outil',
|
||||
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: 'Workflow avec fonctionnalités de mémoire et interface de chatbot.',
|
||||
noTemplateFoundTip: 'Essayez d’effectuer une recherche à l’aide de mots-clés différents.',
|
||||
noAppsFound: 'Aucune application trouvée',
|
||||
chooseAppType: 'Choisissez un type d’application',
|
||||
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: 'Créez visuellement des flux IA autonomes avec la simplicité du glisser-déposer.',
|
||||
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 d’un raisonnement itératif et d’une utilisation autonome d’outils pour atteindre les objectifs de la tâche.',
|
||||
forBeginners: 'Types d’applications plus basiques',
|
||||
foundResult: '{{count}} Résultat',
|
||||
noIdeaTip: 'Pas d’idées ? Consultez nos modèles',
|
||||
optional: 'Optionnel',
|
||||
advancedShortDescription: 'Workflow amélioré pour conversations multi-tours',
|
||||
dropDSLToCreateApp: 'Déposez le fichier DSL ici pour créer une application',
|
||||
import: 'Importation',
|
||||
},
|
||||
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',
|
||||
},
|
||||
arize: {
|
||||
title: 'Arize',
|
||||
description: 'Observabilité de LLM de niveau entreprise, évaluation en ligne et hors ligne, surveillance et expérimentation—alimentée par OpenTelemetry. Conçue spécialement pour les applications basées sur LLM et agents.',
|
||||
},
|
||||
phoenix: {
|
||||
title: 'Phoenix',
|
||||
description: 'Plateforme open-source basée sur OpenTelemetry pour l’observabilité, l’évaluation, l’ingénierie des prompts et l’expérimentation de vos flux de travail et agents LLM.',
|
||||
},
|
||||
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.',
|
||||
password: 'Mot de passe',
|
||||
trackingUri: 'URI de suivi',
|
||||
clientId: 'ID client OAuth',
|
||||
clientSecret: 'Secret client OAuth',
|
||||
username: 'Nom d\'utilisateur',
|
||||
experimentId: 'ID de l\'expérience',
|
||||
personalAccessToken: 'Jeton d\'accès personnel (ancien)',
|
||||
databricksHost: 'URL de l\'espace de travail Databricks',
|
||||
},
|
||||
view: 'Vue',
|
||||
opik: {
|
||||
description: 'Opik est une plate-forme open-source pour l’évaluation, le test et la surveillance des applications LLM.',
|
||||
title: 'Opik',
|
||||
},
|
||||
weave: {
|
||||
title: 'Tisser',
|
||||
description: 'Weave est une plateforme open-source pour évaluer, tester et surveiller les applications LLM.',
|
||||
},
|
||||
aliyun: {
|
||||
title: 'Surveillance Cloud',
|
||||
description: 'La plateforme d\'observabilité entièrement gérée et sans maintenance fournie par Alibaba Cloud permet une surveillance, un traçage et une évaluation prêts à l\'emploi des applications Dify.',
|
||||
},
|
||||
mlflow: {
|
||||
title: 'MLflow',
|
||||
description: 'Plateforme LLMOps open source pour le suivi d\'expériences, l\'observabilité et l\'évaluation, pour créer des applications IA/LLM en toute confiance.',
|
||||
},
|
||||
databricks: {
|
||||
title: 'Databricks',
|
||||
description: 'Databricks propose MLflow entièrement géré avec une gouvernance et une sécurité robustes pour stocker les données de traçabilité.',
|
||||
},
|
||||
tencent: {
|
||||
title: 'Tencent APM',
|
||||
description: 'Tencent Application Performance Monitoring fournit une traçabilité complète et une analyse multidimensionnelle pour les applications LLM.',
|
||||
},
|
||||
},
|
||||
answerIcon: {
|
||||
description: 'S’il faut utiliser l’icône web app pour remplacer 🤖 dans l’application partagée',
|
||||
title: 'Utiliser l’icône web app pour remplacer 🤖',
|
||||
descriptionInExplore: 'Utilisation de l’icône web app pour remplacer 🤖 dans Explore',
|
||||
},
|
||||
importFromDSLUrlPlaceholder: 'Collez le lien DSL ici',
|
||||
dslUploader: {
|
||||
button: 'Glisser-déposer un fichier, ou',
|
||||
browse: 'Parcourir',
|
||||
},
|
||||
importFromDSL: 'Importation à partir d\'une DSL',
|
||||
importFromDSLUrl: 'À partir de l’URL',
|
||||
importFromDSLFile: 'À partir d’un 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 L’APPLICATION',
|
||||
label: 'APPLI',
|
||||
placeholder: 'Sélectionnez une application...',
|
||||
},
|
||||
structOutput: {
|
||||
LLMResponse: 'Réponse LLM',
|
||||
notConfiguredTip: 'La sortie structurée n\'a pas encore été configurée.',
|
||||
required: 'Obligatoire',
|
||||
structuredTip: 'Les sorties structurées sont une fonctionnalité qui garantit que le modèle générera toujours des réponses qui respectent votre schéma JSON fourni.',
|
||||
modelNotSupportedTip: 'Le modèle actuel ne prend pas en charge cette fonctionnalité et est automatiquement rétrogradé à l\'injection de prompt.',
|
||||
modelNotSupported: 'Modèle non pris en charge',
|
||||
moreFillTip: 'Affichage d\'un maximum de 10 niveaux d\'imbrication',
|
||||
configure: 'Configurer',
|
||||
structured: 'systématique',
|
||||
},
|
||||
accessItemsDescription: {
|
||||
anyone: 'Tout le monde peut accéder à l\'application web.',
|
||||
specific: 'Seules des groupes ou membres spécifiques peuvent accéder à l\'application web.',
|
||||
organization: 'Toute personne dans l\'organisation peut accéder à l\'application web.',
|
||||
external: 'Seuls les utilisateurs externes authentifiés peuvent accéder à l\'application Web.',
|
||||
},
|
||||
accessControlDialog: {
|
||||
accessItems: {
|
||||
anyone: 'Quiconque avec le lien',
|
||||
specific: 'Groupes ou membres spécifiques',
|
||||
organization: 'Seuls les membres au sein de l\'entreprise',
|
||||
external: 'Utilisateurs externes authentifiés',
|
||||
},
|
||||
operateGroupAndMember: {
|
||||
searchPlaceholder: 'Rechercher des groupes et des membres',
|
||||
allMembers: 'Tous les membres',
|
||||
expand: 'Développer',
|
||||
noResult: 'Aucun résultat',
|
||||
},
|
||||
title: 'Contrôle d\'accès à l\'application Web',
|
||||
description: 'Définir les autorisations d\'accès à l\'application web',
|
||||
accessLabel: 'Qui a accès',
|
||||
groups_one: '{{count}} GROUPE',
|
||||
groups_other: '{{count}} GROUPES',
|
||||
members_one: '{{count}} MEMBRE',
|
||||
members_other: '{{count}} MEMBRES',
|
||||
noGroupsOrMembers: 'Aucun groupe ou membre sélectionné',
|
||||
webAppSSONotEnabledTip: 'Veuillez contacter l\'administrateur de l\'entreprise pour configurer la méthode d\'authentification de l\'application web.',
|
||||
updateSuccess: 'Mise à jour réussie',
|
||||
},
|
||||
publishApp: {
|
||||
title: 'Qui peut accéder à l\'application web',
|
||||
notSet: 'Non défini',
|
||||
notSetDesc: 'Actuellement, personne ne peut accéder à l\'application web. Veuillez définir les autorisations.',
|
||||
},
|
||||
accessControl: 'Contrôle d\'accès à l\'application Web',
|
||||
noAccessPermission: 'Pas de permission d\'accéder à l\'application web',
|
||||
maxActiveRequestsPlaceholder: 'Entrez 0 pour illimité',
|
||||
maxActiveRequests: 'Nombre maximal de requêtes simultanées',
|
||||
maxActiveRequestsTip: 'Nombre maximum de requêtes actives concurrentes par application (0 pour illimité)',
|
||||
gotoAnything: {
|
||||
actions: {
|
||||
searchPluginsDesc: 'Recherchez et naviguez vers vos plugins',
|
||||
searchKnowledgeBasesDesc: 'Recherchez et accédez à vos bases de connaissances',
|
||||
searchWorkflowNodesDesc: 'Recherchez et accédez aux nœuds du flux de travail actuel par nom ou type',
|
||||
searchApplicationsDesc: 'Recherchez et accédez à vos applications',
|
||||
searchPlugins: 'Rechercher des plugins',
|
||||
searchWorkflowNodes: 'Rechercher des nœuds de workflow',
|
||||
searchKnowledgeBases: 'Rechercher dans les bases de connaissances',
|
||||
searchApplications: 'Rechercher des applications',
|
||||
searchWorkflowNodesHelp: 'Cette fonctionnalité ne fonctionne que lors de l\'affichage d\'un flux de travail. Accédez d\'abord à un flux de travail.',
|
||||
runTitle: 'Commandes',
|
||||
languageCategoryTitle: 'Langue',
|
||||
themeSystem: 'Thème du système',
|
||||
themeDark: 'Thème Sombre',
|
||||
themeCategoryTitle: 'Thème',
|
||||
themeLight: 'Thème clair',
|
||||
themeCategoryDesc: 'Changer le thème de l\'application',
|
||||
themeLightDesc: 'Utiliser une apparence légère',
|
||||
languageChangeDesc: 'Changer la langue de l\'interface',
|
||||
themeDarkDesc: 'Utiliser l\'apparence sombre',
|
||||
themeSystemDesc: 'Suivez l\'apparence de votre système d\'exploitation',
|
||||
languageCategoryDesc: 'Changer la langue de l\'interface',
|
||||
runDesc: 'Exécuter des commandes rapides (thème, langue, ...)',
|
||||
slashDesc: 'Exécutez des commandes telles que /theme, /lang',
|
||||
communityDesc: 'Ouvrir la communauté Discord',
|
||||
docDesc: 'Ouvrir la documentation d\'aide',
|
||||
accountDesc: 'Accédez à la page de compte',
|
||||
feedbackDesc: 'Discussions de rétroaction de la communauté ouverte',
|
||||
},
|
||||
emptyState: {
|
||||
noKnowledgeBasesFound: 'Aucune base de connaissances trouvée',
|
||||
noAppsFound: 'Aucune application trouvée',
|
||||
noPluginsFound: 'Aucun plugin trouvé',
|
||||
noWorkflowNodesFound: 'Aucun nœud de workflow trouvé',
|
||||
tryDifferentTerm: 'Essayez un terme de recherche différent ou supprimez le filtre {{mode}}',
|
||||
trySpecificSearch: 'Essayez {{shortcuts}} pour des recherches spécifiques',
|
||||
},
|
||||
groups: {
|
||||
apps: 'Applications',
|
||||
workflowNodes: 'Nœuds de flux de travail',
|
||||
knowledgeBases: 'Bases de connaissances',
|
||||
plugins: 'Plug-ins',
|
||||
commands: 'Commandes',
|
||||
},
|
||||
someServicesUnavailable: 'Certains services de recherche indisponibles',
|
||||
servicesUnavailableMessage: 'Certains services de recherche peuvent rencontrer des problèmes. Réessayez dans un instant.',
|
||||
useAtForSpecific: 'Utilisez @ pour des types spécifiques',
|
||||
searchTemporarilyUnavailable: 'Recherche temporairement indisponible',
|
||||
searchTitle: 'Recherchez n\'importe quoi',
|
||||
clearToSearchAll: 'Effacer @ pour rechercher tout',
|
||||
searching: 'Recherche...',
|
||||
searchPlaceholder: 'Recherchez ou tapez @ pour les commandes...',
|
||||
searchFailed: 'Echec de la recherche',
|
||||
noResults: 'Aucun résultat trouvé',
|
||||
commandHint: 'Tapez @ pour parcourir par catégorie',
|
||||
selectSearchType: 'Choisissez les éléments de recherche',
|
||||
searchHint: 'Commencez à taper pour tout rechercher instantanément',
|
||||
resultCount: '{{count}} résultat',
|
||||
resultCount_other: '{{count}} résultats',
|
||||
inScope: 'dans {{scope}}s',
|
||||
noMatchingCommands: 'Aucune commande correspondante n’a été trouvée',
|
||||
tryDifferentSearch: 'Essayez un autre terme de recherche',
|
||||
slashHint: 'Tapez / pour voir toutes les commandes disponibles',
|
||||
pressEscToClose: 'Appuyez sur Échap pour fermer',
|
||||
tips: 'Appuyez sur ↑↓ pour naviguer',
|
||||
startTyping: 'Commencez à taper pour rechercher',
|
||||
selectToNavigate: 'Sélectionnez pour naviguer',
|
||||
},
|
||||
noUserInputNode: 'Nœud d\'entrée utilisateur manquant',
|
||||
notPublishedYet: 'L\'application n\'est pas encore publiée',
|
||||
}
|
||||
|
||||
export default translation
|
||||
203
dify/web/i18n/fr-FR/billing.ts
Normal file
203
dify/web/i18n/fr-FR/billing.ts
Normal file
@@ -0,0 +1,203 @@
|
||||
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: {
|
||||
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',
|
||||
contactSales: 'Contacter les ventes',
|
||||
talkToSales: 'Parlez aux Ventes',
|
||||
modelProviders: 'Fournisseurs de Modèles',
|
||||
buildApps: 'Construire des Applications',
|
||||
vectorSpace: 'Espace Vectoriel',
|
||||
vectorSpaceTooltip: 'L\'espace vectoriel est le système de mémoire à long terme nécessaire pour que les LLMs comprennent vos données.',
|
||||
documentProcessingPriority: 'Priorité de Traitement de Document',
|
||||
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 l’API.',
|
||||
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.',
|
||||
titlePerMonth: '{{count,number}} messages/mois',
|
||||
},
|
||||
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 d’annotation',
|
||||
apiRateLimitUnit: '{{count,number}}',
|
||||
priceTip: 'par espace de travail/',
|
||||
freeTrialTipSuffix: 'Aucune carte de crédit requise',
|
||||
teamWorkspace: '{{count,number}} Espace de travail d\'équipe',
|
||||
teamMember_one: '{{count,number}} membre de l\'équipe',
|
||||
annualBilling: 'Facturation Annuelle',
|
||||
self: 'Auto-hébergé',
|
||||
documentsRequestQuota: '{{count,number}}/min Limite de Fréquence de Demande de Connaissance',
|
||||
teamMember_other: '{{count,number}} Membres de l\'équipe',
|
||||
getStarted: 'Commencer',
|
||||
unlimitedApiRate: 'Pas de limite de taux d\'API',
|
||||
cloud: 'Service cloud',
|
||||
documentsTooltip: 'Quota sur le nombre de documents importés à partir de la source de données de connaissance.',
|
||||
freeTrialTip: 'essai gratuit de 200 appels OpenAI.',
|
||||
freeTrialTipPrefix: 'Inscrivez-vous et obtenez un',
|
||||
apiRateLimit: 'Limite de taux de l\'API',
|
||||
comparePlanAndFeatures: 'Comparer les plans et les fonctionnalités',
|
||||
apiRateLimitTooltip: 'La limite de taux de l\'API s\'applique à toutes les demandes effectuées via l\'API Dify, y compris la génération de texte, les conversations de chat, les exécutions de flux de travail et le traitement de documents.',
|
||||
documents: '{{count,number}} Documents de connaissance',
|
||||
documentsRequestQuotaTooltip: 'Spécifie le nombre total d\'actions qu\'un espace de travail peut effectuer par minute dans la base de connaissances, y compris la création, la suppression, les mises à jour de jeux de données, le téléchargement de documents, les modifications, l\'archivage et les requêtes de la base de connaissances. Ce paramètre est utilisé pour évaluer les performances des requêtes de la base de connaissances. Par exemple, si un utilisateur de Sandbox effectue 10 tests de validité consécutifs en une minute, son espace de travail sera temporairement restreint dans l\'exécution des actions suivantes pendant la minute suivante : création, suppression, mises à jour de jeux de données, et téléchargements ou modifications de documents.',
|
||||
startBuilding: 'Commencez à construire',
|
||||
taxTip: 'Tous les prix des abonnements (mensuels/annuels) s\'entendent hors taxes applicables (par exemple, TVA, taxe de vente).',
|
||||
taxTipSecond: 'Si votre région n\'a pas de exigences fiscales applicables, aucune taxe n\'apparaîtra lors de votre paiement et vous ne serez pas facturé de frais supplémentaires pendant toute la durée de l\'abonnement.',
|
||||
triggerEvents: {
|
||||
unlimited: 'Événements Déclencheurs Illimités',
|
||||
tooltip: 'Le nombre d\'événements qui déclenchent automatiquement des flux de travail via des déclencheurs Plugin, Planification ou Webhook.',
|
||||
sandbox: '{{count,number}} Déclencher des événements',
|
||||
professional: '{{count,number}} Déclenchements par mois',
|
||||
},
|
||||
workflowExecution: {
|
||||
priority: 'Exécution du flux de travail prioritaire',
|
||||
standard: 'Exécution du flux de travail standard',
|
||||
tooltip: 'Priorité et vitesse de la file d\'exécution des flux de travail.',
|
||||
faster: 'Exécution de flux de travail plus rapide',
|
||||
},
|
||||
startNodes: {
|
||||
unlimited: 'Déclencheurs/workflows illimités',
|
||||
limited: 'Jusqu\'à {{count}} déclencheurs/workflow',
|
||||
},
|
||||
title: {
|
||||
plans: 'plans',
|
||||
description: 'Sélectionnez le plan qui correspond le mieux aux besoins de votre équipe.',
|
||||
},
|
||||
},
|
||||
plans: {
|
||||
sandbox: {
|
||||
name: 'Bac à sable',
|
||||
description: '200 essais gratuits de GPT',
|
||||
for: 'Essai gratuit des fonctionnalités principales',
|
||||
},
|
||||
professional: {
|
||||
name: 'Professionnel',
|
||||
description: 'Pour les individus et les petites équipes afin de débloquer plus de puissance à un prix abordable.',
|
||||
for: 'Pour les développeurs indépendants/petites équipes',
|
||||
},
|
||||
team: {
|
||||
name: 'Équipe',
|
||||
description: 'Collaborez sans limites et profitez d\'une performance de premier ordre.',
|
||||
for: 'Pour les équipes de taille moyenne',
|
||||
},
|
||||
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 :',
|
||||
features: ['Solutions de déploiement évolutives de niveau entreprise', 'Autorisation de licence commerciale', 'Fonctionnalités exclusives pour les entreprises', 'Espaces de travail multiples et gestion d\'entreprise', 'SSO', 'Accords sur les SLA négociés par les partenaires Dify', 'Sécurité et Contrôles Avancés', 'Mises à jour et maintenance par Dify Officiellement', 'Assistance technique professionnelle'],
|
||||
for: 'Pour les équipes de grande taille',
|
||||
btnText: 'Contacter les ventes',
|
||||
priceTip: 'Facturation Annuel Seulement',
|
||||
price: 'Personnalisé',
|
||||
},
|
||||
community: {
|
||||
features: ['Toutes les fonctionnalités principales publiées dans le dépôt public', 'Espace de travail unique', 'Conforme à la licence open source Dify'],
|
||||
name: 'Communauté',
|
||||
btnText: 'Commencez avec la communauté',
|
||||
for: 'Pour les utilisateurs individuels, les petites équipes ou les projets non commerciaux',
|
||||
includesTitle: 'Fonctionnalités gratuites :',
|
||||
price: 'Gratuit',
|
||||
description: 'Pour les utilisateurs individuels, les petites équipes ou les projets non commerciaux',
|
||||
},
|
||||
premium: {
|
||||
features: ['Fiabilité autonome par divers fournisseurs de cloud', 'Espace de travail unique', 'Personnalisation du logo et de l\'identité visuelle de l\'application web', 'Assistance prioritaire par e-mail et chat'],
|
||||
for: 'Pour les organisations et les équipes de taille moyenne',
|
||||
includesTitle: 'Tout de la communauté, en plus :',
|
||||
name: 'Premium',
|
||||
description: 'Pour les organisations et les équipes de taille moyenne',
|
||||
comingSoon: 'Support de Microsoft Azure et Google Cloud bientôt disponible',
|
||||
btnText: 'Obtenez Premium dans',
|
||||
price: 'Scalable',
|
||||
priceTip: 'Basé sur le marché des nuages',
|
||||
},
|
||||
},
|
||||
vectorSpace: {
|
||||
fullTip: 'L\'espace vectoriel est plein.',
|
||||
fullSolution: 'Mettez à niveau votre plan pour obtenir plus d\'espace.',
|
||||
},
|
||||
apps: {
|
||||
fullTip2: 'Limite de plan atteinte',
|
||||
contactUs: 'Contactez-nous',
|
||||
fullTip1: 'Mettez à niveau pour créer plus d\'applications',
|
||||
fullTip2des: 'Il est recommandé de nettoyer les applications inactives pour libérer de l\'espace d\'utilisation, ou de nous contacter.',
|
||||
fullTip1des: 'Vous avez atteint la limite de création d\'applications avec ce plan.',
|
||||
},
|
||||
annotatedResponse: {
|
||||
fullTipLine1: 'Mettez à niveau votre plan pour',
|
||||
fullTipLine2: 'annotez plus de conversations.',
|
||||
quotaTitle: 'Quota de Réponse d\'Annotation',
|
||||
},
|
||||
usagePage: {
|
||||
buildApps: 'Construire des applications',
|
||||
vectorSpace: 'Stockage de données de connaissance',
|
||||
vectorSpaceTooltip: 'Les documents avec le mode d\'indexation de haute qualité utiliseront des ressources de stockage de données de connaissance. Lorsque le stockage de données de connaissance atteindra la limite, de nouveaux documents ne pourront pas être téléchargés.',
|
||||
teamMembers: 'Membres de l\'équipe',
|
||||
annotationQuota: 'Quota d\'annotation',
|
||||
documentsUploadQuota: 'Quota de téléchargement de documents',
|
||||
perMonth: 'par mois',
|
||||
triggerEvents: 'Événements déclencheurs',
|
||||
resetsIn: 'Réinitialisations dans {{count,number}} jours',
|
||||
},
|
||||
teamMembers: 'Membres de l\'équipe',
|
||||
triggerLimitModal: {
|
||||
upgrade: 'Mettre à niveau',
|
||||
usageTitle: 'ÉVÉNEMENTS DÉCLENCHEURS',
|
||||
description: 'Vous avez atteint la limite des déclencheurs d\'événements de flux de travail pour ce plan.',
|
||||
dismiss: 'Fermer',
|
||||
title: 'Mettez à niveau pour débloquer plus d\'événements déclencheurs',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
788
dify/web/i18n/fr-FR/common.ts
Normal file
788
dify/web/i18n/fr-FR/common.ts
Normal file
@@ -0,0 +1,788 @@
|
||||
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 n’est pas disponible',
|
||||
zoomOut: 'Zoom arrière',
|
||||
zoomIn: 'Zoom avant',
|
||||
openInNewTab: 'Ouvrir dans un nouvel onglet',
|
||||
copyImage: 'Copier l’image',
|
||||
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 l’application',
|
||||
viewDetails: 'Voir les détails',
|
||||
copied: 'Copied',
|
||||
in: 'dans',
|
||||
format: 'Format',
|
||||
downloadFailed: 'Échec du téléchargement. Veuillez réessayer plus tard.',
|
||||
more: 'Plus',
|
||||
downloadSuccess: 'Téléchargement terminé.',
|
||||
deSelectAll: 'Désélectionner tout',
|
||||
selectAll: 'Sélectionner tout',
|
||||
config: 'Config',
|
||||
no: 'Non',
|
||||
confirmAction: 'Veuillez confirmer votre action.',
|
||||
deleteConfirmTitle: 'Supprimer ?',
|
||||
yes: 'Oui',
|
||||
noSearchResults: 'Aucun {{content}} n\'a été trouvé',
|
||||
resetKeywords: 'Réinitialiser les mots-clés',
|
||||
selectCount: '{{count}} Sélectionné',
|
||||
searchCount: 'Trouver {{count}} {{content}}',
|
||||
noSearchCount: '0 {{content}}',
|
||||
now: 'Maintenant',
|
||||
},
|
||||
placeholder: {
|
||||
input: 'Veuillez entrer',
|
||||
select: 'Veuillez sélectionner',
|
||||
search: 'Rechercher...',
|
||||
},
|
||||
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',
|
||||
appDetail: 'Détails de l\'application',
|
||||
account: 'Compte',
|
||||
},
|
||||
userProfile: {
|
||||
settings: 'Paramètres',
|
||||
emailSupport: 'Support par courriel',
|
||||
workspace: 'Espace de travail',
|
||||
createWorkspace: 'Créer un Espace de Travail',
|
||||
helpCenter: 'Aide',
|
||||
roadmap: 'Feuille de route',
|
||||
community: 'Communauté',
|
||||
about: 'À propos',
|
||||
logout: 'Se déconnecter',
|
||||
support: 'Soutien',
|
||||
github: 'GitHub',
|
||||
compliance: 'Conformité',
|
||||
contactUs: 'Contactez-nous',
|
||||
forum: 'Forum',
|
||||
},
|
||||
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.',
|
||||
myAccount: 'Mon compte',
|
||||
account: 'Compte',
|
||||
studio: 'Dify Studio',
|
||||
deletePrivacyLinkTip: 'Pour plus d’informations 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',
|
||||
workspaceName: 'Nom de l\'espace de travail',
|
||||
workspaceIcon: 'Icône de l\'espace de travail',
|
||||
editWorkspaceInfo: 'Modifier les informations de l\'espace de travail',
|
||||
changeEmail: {
|
||||
codePlaceholder: 'Collez le code à 6 chiffres',
|
||||
emailLabel: 'Nouveau courriel',
|
||||
newEmail: 'Créez une nouvelle adresse email',
|
||||
verifyNew: 'Vérifiez votre nouvel e-mail',
|
||||
existingEmail: 'Un utilisateur avec cet email existe déjà.',
|
||||
title: 'Changer l\'email',
|
||||
resendTip: 'Vous n\'avez pas reçu de code ?',
|
||||
emailPlaceholder: 'Entrez un nouvel e-mail',
|
||||
sendVerifyCode: 'Envoyer le code de vérification',
|
||||
continue: 'Continuer',
|
||||
changeTo: 'Changer pour {{email}}',
|
||||
authTip: 'Une fois que votre email est changé, les comptes Google ou GitHub liés à votre ancien email ne pourront plus se connecter à ce compte.',
|
||||
content3: 'Entrez un nouvel e-mail et nous vous enverrons un code de vérification.',
|
||||
resendCount: 'Renvoyer dans {{count}}s',
|
||||
content4: 'Nous vous avons juste envoyé un code de vérification temporaire à <email>{{email}}</email>.',
|
||||
resend: 'Renvoyer',
|
||||
verifyEmail: 'Vérifiez votre adresse e-mail actuelle',
|
||||
content2: 'Votre adresse e-mail actuelle est <email>{{email}}</email>. Un code de vérification a été envoyé à cette adresse e-mail.',
|
||||
codeLabel: 'Code de vérification',
|
||||
content1: 'Si vous continuez, nous enverrons un code de vérification à <email>{{email}}</email> pour une nouvelle authentification.',
|
||||
unAvailableEmail: 'Cet e-mail est temporairement indisponible.',
|
||||
},
|
||||
},
|
||||
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',
|
||||
transferModal: {
|
||||
resend: 'Renvoyer',
|
||||
continue: 'Continuer',
|
||||
verifyEmail: 'Vérifiez votre adresse e-mail actuelle',
|
||||
resendCount: 'Renvoyer dans {{count}}s',
|
||||
verifyContent2: 'Nous enverrons un code de vérification temporaire à cet email pour la ré-authentification.',
|
||||
codePlaceholder: 'Collez le code à 6 chiffres',
|
||||
transfer: 'Transférer la propriété de l\'espace de travail',
|
||||
sendVerifyCode: 'Envoyer le code de vérification',
|
||||
title: 'Transférer la propriété de l\'espace de travail',
|
||||
codeLabel: 'Code de vérification',
|
||||
transferLabel: 'Transférer la propriété de l\'espace de travail à',
|
||||
verifyContent: 'Votre adresse e-mail actuelle est <email>{{email}}</email>.',
|
||||
transferPlaceholder: 'Sélectionnez un membre de l\'espace de travail…',
|
||||
warningTip: 'Vous deviendrez membre administrateur, et le nouveau propriétaire aura le contrôle total.',
|
||||
resendTip: 'Vous n\'avez pas reçu de code ?',
|
||||
sendTip: 'Si vous continuez, nous enverrons un code de vérification à <email>{{email}}</email> pour la ré-authentification.',
|
||||
warning: 'Vous êtes sur le point de transférer la propriété de « {{workspace}} ». Cela prend effet immédiatement et ne peut pas être annulé.',
|
||||
},
|
||||
transferOwnership: 'Transférer la propriété',
|
||||
},
|
||||
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 d’essai Anthropic expirera le 11/03/2025 et ne sera plus disponible par la suite. Veuillez l’utiliser à 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 l’ensemble unique d’informations d’identification 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 l’APIKey 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 d’informations d’identification.',
|
||||
providerManaged: 'Géré par le fournisseur',
|
||||
upgradeForLoadBalancing: 'Mettez à niveau votre plan pour activer l’équilibrage de charge.',
|
||||
emptyProviderTitle: 'Le fournisseur de modèles n’est 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 d’abord installer un fournisseur de modèles.',
|
||||
auth: {
|
||||
apiKeyModal: {
|
||||
addModel: 'Ajouter un modèle',
|
||||
title: 'Configuration de l\'autorisation de clé API',
|
||||
desc: 'Après avoir configuré les identifiants, tous les membres de l\'espace de travail peuvent utiliser ce modèle lors de l\'orchestration des applications.',
|
||||
},
|
||||
addModelCredential: 'Ajouter des informations d’identification de modèle',
|
||||
configModel: 'Configurer le modèle',
|
||||
addNewModel: 'Ajouter un nouveau modèle',
|
||||
apiKeys: 'Clés API',
|
||||
providerManaged: 'Fournisseur géré',
|
||||
configLoadBalancing: 'Configuration de l\'équilibrage de charge',
|
||||
modelCredentials: 'Informations d\'identification du modèle',
|
||||
addApiKey: 'Ajouter une clé API',
|
||||
specifyModelCredential: 'Spécifiez les identifiants du modèle',
|
||||
authorizationError: 'Erreur d\'autorisation',
|
||||
authRemoved: 'Autorisation retirée',
|
||||
addCredential: 'Ajouter un identifiant',
|
||||
unAuthorized: 'Non autorisé',
|
||||
specifyModelCredentialTip: 'Utilisez un identifiant de modèle configuré.',
|
||||
providerManagedTip: 'La configuration actuelle est hébergée par le fournisseur.',
|
||||
customModelCredentials: 'Informations d’identification du modèle personnalisé',
|
||||
manageCredentials: 'Gérer les informations d’identification',
|
||||
modelCredential: 'Références du modèle',
|
||||
addModel: 'Ajouter un modèle',
|
||||
addNewModelCredential: 'Ajouter de nouvelles informations d’identification de modèle',
|
||||
selectModelCredential: 'Sélectionnez les informations d’identification d’un modèle',
|
||||
customModelCredentialsDeleteTip: 'Les informations d’identification sont en cours d’utilisation et ne peuvent pas être supprimées',
|
||||
removeModel: 'Supprimer le modèle',
|
||||
editModelCredential: 'Modifier les informations d’identification du modèle',
|
||||
},
|
||||
parametersInvalidRemoved: 'Certains paramètres sont invalides et ont été supprimés.',
|
||||
installDataSourceProvider: 'Installer les fournisseurs de sources de données',
|
||||
},
|
||||
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',
|
||||
},
|
||||
integratedAlert: 'Notion est intégré via des identifiants internes, aucune autorisation supplémentaire n\'est nécessaire.',
|
||||
},
|
||||
website: {
|
||||
configuredCrawlers: 'Robots d’exploration configurés',
|
||||
with: 'Avec',
|
||||
inactive: 'Inactif',
|
||||
active: 'Actif',
|
||||
title: 'Site internet',
|
||||
description: 'Importez du contenu à partir de sites Web à l’aide du robot d’indexation.',
|
||||
},
|
||||
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.',
|
||||
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 d’applications liées',
|
||||
pipeline: 'Pipeline',
|
||||
},
|
||||
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 {{botName}}',
|
||||
thinking: 'Pensée...',
|
||||
thought: 'Pensée',
|
||||
resend: 'Renvoyer',
|
||||
},
|
||||
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: 'L’URL doit commencer par http:// ou https://',
|
||||
},
|
||||
fileUploader: {
|
||||
pasteFileLinkInputPlaceholder: 'Entrez l’URL...',
|
||||
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}}',
|
||||
fileExtensionBlocked: 'Ce type de fichier est bloqué pour des raisons de sécurité',
|
||||
},
|
||||
license: {
|
||||
expiring: 'Expirant dans un jour',
|
||||
expiring_plural: 'Expirant dans {{count}} jours',
|
||||
unlimited: 'Illimité',
|
||||
},
|
||||
pagination: {
|
||||
perPage: 'Articles par page',
|
||||
},
|
||||
theme: {
|
||||
auto: 'système',
|
||||
light: 'lumière',
|
||||
dark: 'sombre',
|
||||
theme: 'Thème',
|
||||
},
|
||||
compliance: {
|
||||
soc2Type1: 'Rapport SOC 2 Type I',
|
||||
iso27001: 'Certification ISO 27001:2022',
|
||||
professionalUpgradeTooltip: 'Disponible uniquement avec un plan Équipe ou supérieur.',
|
||||
gdpr: 'RGPD DPA',
|
||||
soc2Type2: 'Rapport SOC 2 Type II',
|
||||
sandboxUpgradeTooltip: 'Disponible uniquement avec un plan Professionnel ou Équipe.',
|
||||
},
|
||||
imageInput: {
|
||||
browse: 'naviguer',
|
||||
dropImageHere: 'Déposez votre image ici, ou',
|
||||
supportedFormats: 'Prend en charge PNG, JPG, JPEG, WEBP et GIF',
|
||||
},
|
||||
you: 'Vous',
|
||||
avatar: {
|
||||
deleteTitle: 'Supprimer l\'avatar',
|
||||
deleteDescription: 'Êtes-vous sûr de vouloir supprimer votre photo de profil ? Votre compte utilisera l\'avatar par défaut.',
|
||||
},
|
||||
feedback: {
|
||||
content: 'Contenu des retours',
|
||||
title: 'Fournir des retours',
|
||||
placeholder: 'Veuillez décrire ce qui n\'a pas fonctionné ou comment nous pourrions nous améliorer...',
|
||||
subtitle: 'Veuillez nous dire ce qui n\'a pas fonctionné avec cette réponse.',
|
||||
},
|
||||
label: {
|
||||
optional: '(facultatif)',
|
||||
},
|
||||
noData: 'Aucune donnée',
|
||||
dynamicSelect: {
|
||||
error: 'Échec du chargement des options',
|
||||
noData: 'Aucune option disponible',
|
||||
loading: 'Chargement des options...',
|
||||
selected: '{{count}} sélectionné',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
32
dify/web/i18n/fr-FR/custom.ts
Normal file
32
dify/web/i18n/fr-FR/custom.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
const translation = {
|
||||
custom: 'Personnalisation',
|
||||
upgradeTip: {
|
||||
prefix: 'Mettez à niveau votre plan pour',
|
||||
suffix: 'personnalisez votre marque.',
|
||||
des: 'Mettez à niveau votre plan pour personnaliser votre marque',
|
||||
title: 'Améliorez votre plan',
|
||||
},
|
||||
webapp: {
|
||||
title: 'Personnalisez la marque web app',
|
||||
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
|
||||
217
dify/web/i18n/fr-FR/dataset-creation.ts
Normal file
217
dify/web/i18n/fr-FR/dataset-creation.ts
Normal file
@@ -0,0 +1,217 @@
|
||||
const translation = {
|
||||
steps: {
|
||||
header: {
|
||||
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: 'Faites glisser et déposez des fichiers ou des dossiers, ou',
|
||||
buttonSingleFile: 'Faites glisser et déposez un 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 l’utiliser.',
|
||||
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',
|
||||
maxDepth: 'Profondeur maximale',
|
||||
fireCrawlNotConfigured: 'Firecrawl n’est 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 s’est produite lors de l’exécution de la tâche Firecrawl :',
|
||||
includeOnlyPaths: 'Inclure uniquement les chemins d’accès',
|
||||
resetAll: 'Tout réinitialiser',
|
||||
run: 'Courir',
|
||||
extractOnlyMainContent: 'Extraire uniquement le contenu principal (pas d’en-têtes, de navigations, de pieds de page, etc.)',
|
||||
excludePaths: 'Exclure les chemins d’accès',
|
||||
maxDepthTooltip: 'Profondeur maximale à explorer par rapport à l’URL saisie. La profondeur 0 gratte simplement la page de l’URL saisie, la profondeur 1 récupère l’URL et tout ce qui suit l’URL 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 n’est 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 n’est pas configuré',
|
||||
chooseProvider: 'Sélectionnez un fournisseur',
|
||||
jinaReaderTitle: 'Convertir l’intégralité du site en Markdown',
|
||||
watercrawlTitle: 'Extraire du contenu web avec Watercrawl',
|
||||
watercrawlDoc: 'Documents Watercrawl',
|
||||
waterCrawlNotConfiguredDescription: 'Configurez Watercrawl avec la clé API pour l\'utiliser.',
|
||||
configureJinaReader: 'Configurer le lecteur Jina',
|
||||
configureWatercrawl: 'Configurer Watercrawl',
|
||||
waterCrawlNotConfigured: 'Watercrawl n\'est pas configuré',
|
||||
configureFirecrawl: 'Configurer Firecrawl',
|
||||
running: 'Course',
|
||||
},
|
||||
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 lorsqu’ils 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 l’indice parent-enfant',
|
||||
parentChild: 'Parent-enfant',
|
||||
useQALanguage: 'Chunk utilisant le format Q&A dans',
|
||||
highQualityTip: 'Une fois l’intégration terminée en mode Haute qualité, il n’est pas possible de revenir au mode économique.',
|
||||
switch: 'Interrupteur',
|
||||
paragraph: 'Paragraphe',
|
||||
general: 'Généralités',
|
||||
fullDocTip: 'L’inté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: '{{count}} Tronçons estimés',
|
||||
childChunkForRetrieval: 'Child-chunk pour l’extraction',
|
||||
parentChildDelimiterTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n est recommandé pour diviser le document d’origine 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 d’indexation de haute qualité',
|
||||
notAvailableForQA: 'Non disponible pour l’indice Q&R',
|
||||
previewChunk: 'Aperçu du morceau',
|
||||
parentChildTip: 'Lors de l’utilisation 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 d’index 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 l’aperç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.',
|
||||
qaTip: 'Lorsque vous utilisez des données de questions-réponses structurées, vous pouvez créer des documents qui associent des questions et des réponses. Ces documents sont indexés en fonction de la partie question, ce qui permet au système de récupérer des réponses pertinentes en fonction de la similarité des requêtes.',
|
||||
},
|
||||
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 d’amé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 à d’autres sources de données ?',
|
||||
},
|
||||
watercrawl: {
|
||||
apiKeyPlaceholder: 'Clé API de watercrawl.dev',
|
||||
configWatercrawl: 'Configurer Watercrawl',
|
||||
getApiKeyLinkText: 'Obtenez votre clé API sur watercrawl.dev',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
407
dify/web/i18n/fr-FR/dataset-documents.ts
Normal file
407
dify/web/i18n/fr-FR/dataset-documents.ts
Normal file
@@ -0,0 +1,407 @@
|
||||
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',
|
||||
pause: 'Pause',
|
||||
resume: 'Reprendre',
|
||||
},
|
||||
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',
|
||||
sort: {
|
||||
uploadTime: 'Heure de téléchargement',
|
||||
hitCount: 'Nombre de récupérations',
|
||||
},
|
||||
},
|
||||
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',
|
||||
local_file: 'Fichier local',
|
||||
online_document: 'Document en ligne',
|
||||
website_crawl: 'Exploration du site Web',
|
||||
},
|
||||
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',
|
||||
waiting: 'En attente d\'incorporation...',
|
||||
},
|
||||
segment: {
|
||||
paragraphs: 'Paragraphes',
|
||||
keywords: 'Mots Clés',
|
||||
addKeyWord: 'Ajouter un mot-clé',
|
||||
keywordError: 'La longueur maximale du mot-clé est de 20',
|
||||
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',
|
||||
dateTimeFormat: 'DD/MM/YYYY HH:mm',
|
||||
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',
|
||||
keywordDuplicate: 'Le mot-clé existe déjà',
|
||||
keywordEmpty: 'Le mot-clé ne peut pas être vide.',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
34
dify/web/i18n/fr-FR/dataset-hit-testing.ts
Normal file
34
dify/web/i18n/fr-FR/dataset-hit-testing.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
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',
|
||||
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
|
||||
166
dify/web/i18n/fr-FR/dataset-pipeline.ts
Normal file
166
dify/web/i18n/fr-FR/dataset-pipeline.ts
Normal file
@@ -0,0 +1,166 @@
|
||||
const translation = {
|
||||
creation: {
|
||||
createFromScratch: {
|
||||
title: 'Pipeline de connaissances vide',
|
||||
description: 'Créez un pipeline personnalisé à partir de zéro avec un contrôle total sur le traitement et la structure des données.',
|
||||
},
|
||||
caution: 'Prudence',
|
||||
createKnowledge: 'Créer des connaissances',
|
||||
successTip: 'Création réussie d’une base de connaissances',
|
||||
backToKnowledge: 'Retour à la page Connaissances',
|
||||
importDSL: 'Importation à partir d’un fichier DSL',
|
||||
errorTip: 'Échec de la création d’une base de connaissances',
|
||||
},
|
||||
templates: {
|
||||
customized: 'Personnalisé',
|
||||
},
|
||||
operations: {
|
||||
preview: 'Aperçu',
|
||||
process: 'Processus',
|
||||
convert: 'Convertir',
|
||||
exportPipeline: 'Pipeline d’exportation',
|
||||
choose: 'Choisir',
|
||||
details: 'Détails',
|
||||
saveAndProcess: 'Enregistrer et traiter',
|
||||
editInfo: 'Modifier les infos',
|
||||
useTemplate: 'Utiliser ce pipeline de connaissances',
|
||||
dataSource: 'Source des données',
|
||||
backToDataSource: 'Retour à la source de données',
|
||||
},
|
||||
deletePipeline: {
|
||||
title: 'Êtes-vous sûr de supprimer ce modèle de pipeline ?',
|
||||
content: 'La suppression du modèle de pipeline est irréversible.',
|
||||
},
|
||||
publishPipeline: {
|
||||
success: {
|
||||
message: 'Pipeline de connaissances publié',
|
||||
tip: '<CustomLink>Allez dans Documents</CustomLink> pour ajouter ou gérer des documents.',
|
||||
},
|
||||
error: {
|
||||
message: 'Échec de la publication du pipeline de connaissances',
|
||||
},
|
||||
},
|
||||
publishTemplate: {
|
||||
success: {
|
||||
learnMore: 'Pour en savoir plus',
|
||||
tip: 'Vous pouvez utiliser ce modèle sur la page de création.',
|
||||
message: 'Modèle de pipeline publié',
|
||||
},
|
||||
error: {
|
||||
message: 'Échec de la publication du modèle de pipeline',
|
||||
},
|
||||
},
|
||||
exportDSL: {
|
||||
errorTip: 'Echec de l’exportation du DSL du pipeline',
|
||||
successTip: 'Pipeline d’exportation DSL réussi',
|
||||
},
|
||||
details: {
|
||||
structure: 'Structure',
|
||||
structureTooltip: 'La structure par blocs détermine la façon dont les documents sont divisés et indexés (en proposant les modes Général, Parent-Enfant et Q&R) et est unique à chaque base de connaissances.',
|
||||
createdBy: 'Par {{author}}',
|
||||
},
|
||||
testRun: {
|
||||
steps: {
|
||||
dataSource: 'Source des données',
|
||||
documentProcessing: 'Traitement des documents',
|
||||
},
|
||||
dataSource: {
|
||||
localFiles: 'Fichiers locaux',
|
||||
},
|
||||
notion: {
|
||||
title: 'Choisissez les pages Notion',
|
||||
docTitle: 'Docs Notion',
|
||||
},
|
||||
title: 'Série d’essai',
|
||||
tooltip: 'En mode de test, un seul document peut être importé à la fois pour faciliter le débogage et l’observation.',
|
||||
},
|
||||
inputFieldPanel: {
|
||||
uniqueInputs: {
|
||||
title: 'Entrées uniques pour chaque entrée',
|
||||
tooltip: 'Les entrées uniques ne sont accessibles qu’à la source de données sélectionnée et à ses nœuds en aval. Les utilisateurs n’auront pas besoin de le remplir lorsqu’ils choisiront d’autres sources de données. Seuls les champs de saisie référencés par les variables de source de données apparaîtront dans la première étape (Source de données). Tous les autres champs seront affichés à la deuxième étape (Traiter les documents).',
|
||||
},
|
||||
globalInputs: {
|
||||
title: 'Entrées globales pour toutes les entrées',
|
||||
tooltip: 'Les entrées globales sont partagées entre tous les nœuds. Les utilisateurs devront les remplir lors de la sélection d’une source de données. Par exemple, des champs tels que le délimiteur et la longueur maximale des morceaux peuvent être appliqués uniformément à plusieurs sources de données. Seuls les champs de saisie référencés par les variables de source de données apparaissent dans la première étape (Source de données). Tous les autres champs s’affichent à la deuxième étape (Traiter les documents).',
|
||||
},
|
||||
preview: {
|
||||
stepTwoTitle: 'Documents de processus',
|
||||
stepOneTitle: 'Source des données',
|
||||
},
|
||||
error: {
|
||||
variableDuplicate: 'Le nom de la variable existe déjà. Veuillez choisir un autre nom.',
|
||||
},
|
||||
editInputField: 'Modifier le champ de saisie',
|
||||
title: 'Champs de saisie utilisateur',
|
||||
addInputField: 'Ajouter un champ de saisie',
|
||||
description: 'Les champs de saisie utilisateur sont utilisés pour définir et collecter les variables requises pendant le processus d’exécution du pipeline. Les utilisateurs peuvent personnaliser le type de champ et configurer de manière flexible la valeur d’entrée pour répondre aux besoins des différentes sources de données ou étapes de traitement des documents.',
|
||||
},
|
||||
addDocuments: {
|
||||
steps: {
|
||||
processDocuments: 'Documents de processus',
|
||||
processingDocuments: 'Traitement des documents',
|
||||
chooseDatasource: 'Choisissez une source de données',
|
||||
},
|
||||
stepOne: {
|
||||
preview: 'Aperçu',
|
||||
},
|
||||
stepTwo: {
|
||||
previewChunks: 'Prévisualiser les morceaux',
|
||||
chunkSettings: 'Paramètres de bloc',
|
||||
},
|
||||
stepThree: {
|
||||
learnMore: 'Pour en savoir plus',
|
||||
},
|
||||
characters: 'caractères',
|
||||
title: 'Ajouter des documents',
|
||||
backToDataSource: 'Source des données',
|
||||
selectOnlineDocumentTip: 'Traiter jusqu\'à {{count}} pages',
|
||||
selectOnlineDriveTip: 'Traiter jusqu\'à {{count}} fichiers, maximum {{fileSize}} Mo chacun',
|
||||
},
|
||||
documentSettings: {
|
||||
title: 'Paramètres du document',
|
||||
},
|
||||
onlineDocument: {
|
||||
pageSelectorTitle: '{{name}} pages',
|
||||
},
|
||||
onlineDrive: {
|
||||
breadcrumbs: {
|
||||
searchPlaceholder: 'Rechercher des fichiers...',
|
||||
allBuckets: 'Tous les compartiments de stockage dans le cloud',
|
||||
allFiles: 'Tous les fichiers',
|
||||
searchResult: 'Trouver {{searchResultsLength}} éléments dans le dossier « {{folderName}} »',
|
||||
},
|
||||
notSupportedFileType: 'Ce type de fichier n’est pas pris en charge',
|
||||
emptySearchResult: 'Aucun objet n’a été trouvé',
|
||||
emptyFolder: 'Ce dossier est vide',
|
||||
resetKeywords: 'Réinitialiser les mots-clés',
|
||||
notConnected: '{{name}} n\'est pas connecté',
|
||||
notConnectedTip: 'Pour se synchroniser avec {{name}}, une connexion à {{name}} doit d\'abord être établie.',
|
||||
},
|
||||
credentialSelector: {
|
||||
name: '{{credentialName}} de {{pluginName}}',
|
||||
},
|
||||
conversion: {
|
||||
confirm: {
|
||||
title: 'Confirmation',
|
||||
content: 'Cette action est permanente. Vous ne pourrez pas revenir à la méthode précédente. Veuillez confirmer la conversion.',
|
||||
},
|
||||
title: 'Convertir vers le pipeline de connaissances',
|
||||
warning: 'Cette action ne peut pas être annulée.',
|
||||
successMessage: 'Conversion réussie du jeu de données en pipeline',
|
||||
errorMessage: 'Échec de la conversion du jeu de données en pipeline',
|
||||
descriptionChunk2: '— une approche plus ouverte et plus flexible avec un accès aux plugins de notre Marketplace. Cela appliquera la nouvelle méthode de traitement à tous les documents futurs.',
|
||||
descriptionChunk1: 'Vous pouvez désormais convertir votre base de connaissances existante pour utiliser le pipeline de connaissances pour le traitement des documents',
|
||||
},
|
||||
knowledgePermissions: 'Autorisations',
|
||||
editPipelineInfo: 'Modifier les informations sur le pipeline',
|
||||
knowledgeNameAndIconPlaceholder: 'Entrez le nom de la base de connaissances',
|
||||
pipelineNameAndIcon: 'Nom et icône du pipeline',
|
||||
knowledgeDescription: 'Description des connaissances',
|
||||
knowledgeNameAndIcon: 'Nom et icône de la connaissance',
|
||||
inputField: 'Champ de saisie',
|
||||
knowledgeDescriptionPlaceholder: 'Décrivez le contenu de cette base de connaissances. Une description détaillée permet à l’IA d’accéder plus précisément au contenu de l’ensemble de données. S’il est vide, Dify utilisera la stratégie d’accès par défaut. (Facultatif)',
|
||||
configurationTip: 'Configurer {{pluginName}}',
|
||||
}
|
||||
|
||||
export default translation
|
||||
51
dify/web/i18n/fr-FR/dataset-settings.ts
Normal file
51
dify/web/i18n/fr-FR/dataset-settings.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
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.',
|
||||
method: 'Méthode de récupération',
|
||||
},
|
||||
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 n’est pas possible de revenir au mode Économique',
|
||||
helpText: 'Apprenez à rédiger une bonne description de jeu de données.',
|
||||
searchModel: 'Rechercher un modèle',
|
||||
chunkStructure: {
|
||||
learnMore: 'Pour en savoir plus',
|
||||
title: 'Structure de morceaux',
|
||||
description: 'sur la structure des morceaux.',
|
||||
},
|
||||
numberOfKeywords: 'Nombre de mots-clés',
|
||||
onSearchResults: 'Aucun membre ne correspond à votre recherche.\nRéessayez votre recherche.',
|
||||
nameAndIcon: 'Nom et icône',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
243
dify/web/i18n/fr-FR/dataset.ts
Normal file
243
dify/web/i18n/fr-FR/dataset.ts
Normal file
@@ -0,0 +1,243 @@
|
||||
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',
|
||||
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: {
|
||||
},
|
||||
change: 'Changer',
|
||||
changeRetrievalMethod: 'Changer la méthode de récupération',
|
||||
keyword_search: {
|
||||
title: 'Index inversé',
|
||||
description: 'L’indice 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 qui le contiennent.',
|
||||
},
|
||||
},
|
||||
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 l’ID 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 d’abord 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 d’aide',
|
||||
helper5: 'soigneusement avant d’utiliser cette fonctionnalité.',
|
||||
helper1: 'Connectez-vous à des bases de connaissances externes via l’API et l’ID de base de connaissances.',
|
||||
},
|
||||
externalKnowledgeForm: {
|
||||
cancel: 'Annuler',
|
||||
connect: 'Relier',
|
||||
},
|
||||
externalAPIForm: {
|
||||
encrypted: {
|
||||
end: 'Technologie.',
|
||||
front: 'Votre jeton API sera chiffré et stocké à l’aide de',
|
||||
},
|
||||
name: 'Nom',
|
||||
apiKey: 'Clé API',
|
||||
save: 'Sauvegarder',
|
||||
cancel: 'Annuler',
|
||||
edit: 'Éditer',
|
||||
endpoint: 'Point de terminaison de l’API',
|
||||
},
|
||||
externalKnowledgeName: 'Nom de la connaissance externe',
|
||||
mixtureInternalAndExternalTip: 'Le modèle Rerank est nécessaire pour mélanger les connaissances internes et externes.',
|
||||
externalKnowledgeIdPlaceholder: 'Entrez l’ID de connaissances',
|
||||
createExternalAPI: 'Ajouter une API de connaissances externe',
|
||||
externalKnowledgeNamePlaceholder: 'Entrez le nom de la base de connaissances',
|
||||
allExternalTip: 'Lorsqu’il utilise uniquement des connaissances externes, l’utilisateur peut choisir d’activer ou non le modèle Rerank. S’il n’est 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 l’API 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: 'L’API 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 n’y a pas encore d’API 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',
|
||||
graph: 'Graphique',
|
||||
qa: 'Q&R',
|
||||
},
|
||||
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 l’espace de travail peut gérer toutes les connaissances.',
|
||||
metadata: {
|
||||
createMetadata: {
|
||||
name: 'Nom',
|
||||
title: 'Nouveaux Métadonnées',
|
||||
namePlaceholder: 'Ajouter le nom des métadonnées',
|
||||
type: 'Type',
|
||||
back: 'Retour',
|
||||
},
|
||||
checkName: {
|
||||
empty: 'Le nom des métadonnées ne peut pas être vide',
|
||||
invalid: 'Le nom des métadonnées ne peut contenir que des lettres minuscules, des chiffres et des tirets bas et doit commencer par une lettre minuscule.',
|
||||
tooLong: 'Le nom des métadonnées ne peut pas dépasser {{max}} caractères',
|
||||
},
|
||||
batchEditMetadata: {
|
||||
editMetadata: 'Modifier les métadonnées',
|
||||
applyToAllSelectDocumentTip: 'Créez automatiquement toutes les métadonnées modifiées et nouvelles pour tous les documents sélectionnés, sinon l\'édition des métadonnées ne s\'appliquera qu\'aux documents qui en ont.',
|
||||
applyToAllSelectDocument: 'Appliquer à tous les documents sélectionnés',
|
||||
multipleValue: 'Valeur multiple',
|
||||
editDocumentsNum: 'Édition de {{num}} documents',
|
||||
},
|
||||
selectMetadata: {
|
||||
search: 'Rechercher des métadonnées',
|
||||
newAction: 'Nouveaux métadonnées',
|
||||
manageAction: 'Gérer',
|
||||
},
|
||||
datasetMetadata: {
|
||||
description: 'Vous pouvez gérer toutes les métadonnées dans cette connaissance ici. Les modifications seront synchronisées avec chaque document.',
|
||||
rename: 'Renommer',
|
||||
builtIn: 'Intégré',
|
||||
addMetaData: 'Ajouter des métadonnées',
|
||||
namePlaceholder: 'Nom de métadonnées',
|
||||
builtInDescription: 'Les métadonnées intégrées sont automatiquement extraites et générées. Elles doivent être activées avant utilisation et ne peuvent pas être modifiées.',
|
||||
deleteTitle: 'Confirmer la suppression',
|
||||
values: '{{num}} Valeurs',
|
||||
deleteContent: 'Êtes-vous sûr de vouloir supprimer les métadonnées "{{name}}" ?',
|
||||
name: 'Nom',
|
||||
disabled: 'handicapés',
|
||||
},
|
||||
documentMetadata: {
|
||||
technicalParameters: 'Paramètres techniques',
|
||||
metadataToolTip: 'Les métadonnées servent de filtre essentiel qui améliore l\'exactitude et la pertinence de la recherche d\'informations. Vous pouvez modifier et ajouter des métadonnées pour ce document ici.',
|
||||
documentInformation: 'Informations du document',
|
||||
startLabeling: 'Commencer l\'étiquetage',
|
||||
},
|
||||
addMetadata: 'Ajouter des métadonnées',
|
||||
metadata: 'Métadonnées',
|
||||
chooseTime: 'Choisissez un moment...',
|
||||
},
|
||||
embeddingModelNotAvailable: 'Le modèle d\'embedding n\'est pas disponible.',
|
||||
updated: 'Actualisé',
|
||||
createFromPipeline: 'Créer à partir du pipeline de connaissances',
|
||||
externalKnowledgeBase: 'Base de connaissances externe',
|
||||
serviceApi: {
|
||||
card: {
|
||||
apiKey: 'Clé API',
|
||||
apiReference: 'Référence API',
|
||||
title: 'API du service backend',
|
||||
endpoint: 'Point de terminaison de l\'API',
|
||||
},
|
||||
enabled: 'En service',
|
||||
title: 'API de service',
|
||||
disabled: 'désactivé',
|
||||
},
|
||||
docAllEnabled_one: 'Document {{count}} activé',
|
||||
docAllEnabled_other: 'Tous les documents {{count}} activés',
|
||||
partialEnabled_one: 'Total de {{count}} documents, {{num}} disponibles',
|
||||
partialEnabled_other: 'Total de {{count}} documents, {{num}} disponibles',
|
||||
}
|
||||
|
||||
export default translation
|
||||
76
dify/web/i18n/fr-FR/education.ts
Normal file
76
dify/web/i18n/fr-FR/education.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
const translation = {
|
||||
toVerifiedTip: {
|
||||
front: 'Vous êtes maintenant éligible pour le statut Vérifié en Éducation. Veuillez entrer vos informations éducatives ci-dessous pour compléter le processus et recevoir un',
|
||||
coupon: 'coupon exclusif 100%',
|
||||
end: 'pour le Plan Professionnel Dify.',
|
||||
},
|
||||
form: {
|
||||
schoolName: {
|
||||
placeholder: 'Entrez le nom officiel et complet de votre école',
|
||||
title: 'Le nom de votre école',
|
||||
},
|
||||
schoolRole: {
|
||||
option: {
|
||||
administrator: 'Administrateur scolaire',
|
||||
student: 'Étudiant',
|
||||
teacher: 'Professeur',
|
||||
},
|
||||
title: 'Votre rôle à l\'école',
|
||||
},
|
||||
terms: {
|
||||
desc: {
|
||||
and: 'et',
|
||||
privacyPolicy: 'Politique de confidentialité',
|
||||
termsOfService: 'Conditions d\'utilisation',
|
||||
end: '. En soumettant :',
|
||||
front: 'Vos informations et votre utilisation du statut Éducation Vérifiée sont soumises à notre',
|
||||
},
|
||||
option: {
|
||||
age: 'Je confirme que j\'ai au moins 18 ans.',
|
||||
inSchool: 'Je confirme que je suis inscrit ou employé dans l\'institution indiquée. Dify peut demander une preuve d\'inscription/employé. Si je falsifie mon éligibilité, j\'accepte de payer tous les frais initialement annulés en fonction de mon statut éducatif.',
|
||||
},
|
||||
title: 'Conditions et accords',
|
||||
},
|
||||
},
|
||||
emailLabel: 'Votre email actuel',
|
||||
learn: 'Apprenez comment faire vérifier votre éducation',
|
||||
currentSigned: 'ACTUELLEMENT CONNECTÉ EN TANT QUE',
|
||||
successTitle: 'Vous avez obtenu une éducation Dify vérifiée.',
|
||||
successContent: 'Nous avons émis un coupon de réduction de 100 % pour le plan Dify Professionnel sur votre compte. Le coupon est valable pendant un an, veuillez l\'utiliser dans la période de validité.',
|
||||
rejectTitle: 'Votre vérification éducative Dify a été rejetée.',
|
||||
submit: 'Soumettre',
|
||||
submitError: 'L\'envoi du formulaire a échoué. Veuillez réessayer plus tard.',
|
||||
toVerified: 'Faire vérifier l\'éducation',
|
||||
rejectContent: 'Malheureusement, vous n\'êtes pas éligible au statut Éducation Vérifié et ne pouvez donc pas recevoir le coupon exclusif de 100 % pour le Plan Professionnel Dify si vous utilisez cette adresse e-mail.',
|
||||
notice: {
|
||||
expired: {
|
||||
summary: {
|
||||
line2: 'Cependant, vous n\'êtes plus éligible pour de nouveaux bons de réduction pour l\'éducation.',
|
||||
line1: 'Vous pouvez toujours accéder à Dify et l\'utiliser.',
|
||||
},
|
||||
title: 'Votre statut éducatif a expiré',
|
||||
},
|
||||
isAboutToExpire: {
|
||||
summary: 'Ne vous inquiétez pas — cela n\'affectera pas votre abonnement actuel, mais vous n\'obtiendrez pas la remise éducative lors de son renouvellement à moins que vous ne vérifiiez à nouveau votre statut.',
|
||||
title: 'Votre statut éducatif expirera le {{date}}',
|
||||
},
|
||||
stillInEducation: {
|
||||
title: 'Encore dans l\'éducation ?',
|
||||
expired: 'Veuillez vérifier à nouveau maintenant pour obtenir un nouveau coupon pour la prochaine année académique. Nous l\'ajouterons à votre compte et vous pourrez l\'utiliser pour la prochaine mise à niveau.',
|
||||
isAboutToExpire: 'Vérifiez de nouveau maintenant pour obtenir un nouveau coupon pour la prochaine année académique. Il sera enregistré dans votre compte et prêt à être utilisé lors de votre prochain renouvellement.',
|
||||
},
|
||||
alreadyGraduated: {
|
||||
expired: 'N\'hésitez pas à vous abonner à tout moment pour accéder à toutes les fonctionnalités payantes.',
|
||||
title: 'Déjà diplômé ?',
|
||||
isAboutToExpire: 'Votre abonnement actuel restera actif. Lorsqu\'il se terminera, vous serez transféré au plan Sandbox, ou vous pourrez mettre à niveau à tout moment pour restaurer l\'accès complet aux fonctionnalités payantes.',
|
||||
},
|
||||
action: {
|
||||
reVerify: 'Re-vérifier',
|
||||
dismiss: 'Rejeter',
|
||||
upgrade: 'Améliorer',
|
||||
},
|
||||
dateFormat: 'JJ/MM/YYYY',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
44
dify/web/i18n/fr-FR/explore.ts
Normal file
44
dify/web/i18n/fr-FR/explore.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
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',
|
||||
Entertainment: 'Divertissement',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
8
dify/web/i18n/fr-FR/layout.ts
Normal file
8
dify/web/i18n/fr-FR/layout.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
const translation = {
|
||||
sidebar: {
|
||||
collapseSidebar: 'Réduire la barre latérale',
|
||||
expandSidebar: 'Développer la barre latérale',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
126
dify/web/i18n/fr-FR/login.ts
Normal file
126
dify/web/i18n/fr-FR/login.ts
Normal file
@@ -0,0 +1,126 @@
|
||||
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 l’administrateur système pour vous inscrire.',
|
||||
invalidEmailOrPassword: 'Adresse e-mail ou mot de passe invalide.',
|
||||
},
|
||||
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',
|
||||
checkCode: {
|
||||
verificationCode: 'Code de vérification',
|
||||
useAnotherMethod: 'Utiliser une autre méthode',
|
||||
didNotReceiveCode: 'Vous n’avez 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 à l’esprit que le code est valable 5 minutes',
|
||||
tipsPrefix: 'Nous envoyons un code de vérification à',
|
||||
},
|
||||
sendVerificationCode: 'Envoyer le code de vérification',
|
||||
or: 'OU',
|
||||
continueWithCode: 'Continuer avec le code',
|
||||
useVerificationCode: 'Utiliser le code de vérification',
|
||||
noLoginMethod: 'Méthode d’authentification non configurée',
|
||||
backToLogin: 'Retour à la connexion',
|
||||
changePasswordBtn: 'Définir un mot de passe',
|
||||
setYourAccount: 'Configurer votre compte',
|
||||
withSSO: 'Poursuivre avec l’authentification unique',
|
||||
resetPassword: 'Réinitialiser le mot de passe',
|
||||
back: 'Précédent',
|
||||
enterYourName: 'Veuillez entrer votre nom d’utilisateur',
|
||||
noLoginMethodTip: 'Veuillez contacter l’administrateur système pour ajouter une méthode d’authentification.',
|
||||
resetPasswordDesc: 'Tapez l’adresse 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',
|
||||
webapp: {
|
||||
noLoginMethodTip: 'Veuillez contacter l\'administrateur système pour ajouter une méthode d\'authentification.',
|
||||
noLoginMethod: 'Méthode d\'authentification non configurée pour l\'application web',
|
||||
disabled: 'L\'authentification de l\'application web est désactivée. Veuillez contacter l\'administrateur du système pour l\'activer. Vous pouvez essayer d\'utiliser l\'application directement.',
|
||||
login: 'Connexion',
|
||||
},
|
||||
signup: {
|
||||
signUp: 'S\'inscrire',
|
||||
noAccount: 'Vous n\'avez pas de compte ?',
|
||||
welcome: '👋 Bienvenue ! Veuillez remplir les détails pour commencer.',
|
||||
signIn: 'Se connecter',
|
||||
haveAccount: 'Vous avez déjà un compte ?',
|
||||
verifyMail: 'Continuez avec le code de vérification',
|
||||
createAccount: 'Créez votre compte',
|
||||
},
|
||||
pageTitleForE: 'Hé, commençons !',
|
||||
}
|
||||
|
||||
export default translation
|
||||
27
dify/web/i18n/fr-FR/oauth.ts
Normal file
27
dify/web/i18n/fr-FR/oauth.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
const translation = {
|
||||
tips: {
|
||||
needLogin: 'Veuillez vous connecter pour autoriser',
|
||||
notLoggedIn: 'Cette application veut accéder à votre compte Dify Cloud',
|
||||
common: 'Nous respectons votre vie privée et n\'utiliserons ces informations que pour améliorer votre expérience avec nos outils de développement.',
|
||||
loggedIn: 'Cette application veut accéder aux informations suivantes de votre compte Dify Cloud.',
|
||||
},
|
||||
scopes: {
|
||||
email: 'E-mail',
|
||||
name: 'Nom',
|
||||
timezone: 'Fuseau horaire',
|
||||
avatar: 'Avatar',
|
||||
languagePreference: 'Préférence de langue',
|
||||
},
|
||||
error: {
|
||||
authAppInfoFetchFailed: 'Échec de la récupération des informations de l\'application pour l\'autorisation',
|
||||
invalidParams: 'Paramètres invalides',
|
||||
authorizeFailed: 'Autorisation échouée',
|
||||
},
|
||||
switchAccount: 'Changer de compte',
|
||||
login: 'Connexion',
|
||||
unknownApp: 'Application inconnue',
|
||||
continue: 'Continuer',
|
||||
connect: 'Se connecter à',
|
||||
}
|
||||
|
||||
export default translation
|
||||
40
dify/web/i18n/fr-FR/pipeline.ts
Normal file
40
dify/web/i18n/fr-FR/pipeline.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
const translation = {
|
||||
common: {
|
||||
publishAsPipeline: {
|
||||
description: 'Description des connaissances',
|
||||
name: 'Nom et icône du pipeline',
|
||||
namePlaceholder: 'Entrez le nom de ce pipeline de connaissances. (Obligatoire)',
|
||||
descriptionPlaceholder: 'Entrez la description de ce pipeline de connaissances. (Facultatif)',
|
||||
},
|
||||
processing: 'Traitement',
|
||||
testRun: 'Série d’essai',
|
||||
confirmPublish: 'Confirmer la publication',
|
||||
publishAs: 'Publier en tant que pipeline de connaissances',
|
||||
goToAddDocuments: 'Aller à ajouter des documents',
|
||||
reRun: 'Relancer',
|
||||
confirmPublishContent: 'Une fois le pipeline de connaissances publié avec succès, la structure de blocs de cette base de connaissances ne peut pas être modifiée. Êtes-vous sûr de vouloir le publier ?',
|
||||
preparingDataSource: 'Préparation de la source de données',
|
||||
},
|
||||
inputField: {
|
||||
manage: 'Gérer',
|
||||
create: 'Créer un champ de saisie utilisateur',
|
||||
},
|
||||
publishToast: {
|
||||
title: 'Ce pipeline n’a pas encore été publié',
|
||||
desc: 'Lorsque le pipeline n’est pas publié, vous pouvez modifier la structure des blocs dans le nœud de la base de connaissances, et l’orchestration et les modifications du pipeline seront automatiquement enregistrées en tant que brouillon.',
|
||||
},
|
||||
result: {
|
||||
resultPreview: {
|
||||
loading: 'Traitement... Veuillez patienter',
|
||||
viewDetails: 'Voir les détails',
|
||||
error: 'Une erreur s’est produite lors de l’exécution',
|
||||
footerTip: 'En mode de test, prévisualisez jusqu\'à {{count}} morceaux',
|
||||
},
|
||||
},
|
||||
ragToolSuggestions: {
|
||||
title: 'Suggestions pour RAG',
|
||||
noRecommendationPlugins: 'Aucun plugin recommandé, trouvez-en plus dans le <CustomLink>Marketplace</CustomLink>',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
26
dify/web/i18n/fr-FR/plugin-tags.ts
Normal file
26
dify/web/i18n/fr-FR/plugin-tags.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
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',
|
||||
rag: 'CHIFFON',
|
||||
},
|
||||
searchTags: 'Mots-clés de recherche',
|
||||
allTags: 'Tous les mots-clés',
|
||||
}
|
||||
|
||||
export default translation
|
||||
186
dify/web/i18n/fr-FR/plugin-trigger.ts
Normal file
186
dify/web/i18n/fr-FR/plugin-trigger.ts
Normal file
@@ -0,0 +1,186 @@
|
||||
const translation = {
|
||||
subscription: {
|
||||
title: 'Abonnements',
|
||||
listNum: 'abonnements {{num}}',
|
||||
empty: {
|
||||
title: 'Aucun abonnement',
|
||||
button: 'Nouvel abonnement',
|
||||
},
|
||||
createButton: {
|
||||
oauth: 'Nouvelle abonnement avec OAuth',
|
||||
apiKey: 'Nouvel abonnement avec clé API',
|
||||
manual: 'Collez l\'URL pour créer un nouvel abonnement',
|
||||
},
|
||||
createSuccess: 'Abonnement créé avec succès',
|
||||
createFailed: 'Échec de la création de l\'abonnement',
|
||||
maxCount: 'Nombre maximal d\'abonnements {{num}}',
|
||||
selectPlaceholder: 'Sélectionner un abonnement',
|
||||
noSubscriptionSelected: 'Aucun abonnement sélectionné',
|
||||
subscriptionRemoved: 'Abonnement supprimé',
|
||||
list: {
|
||||
title: 'Abonnements',
|
||||
addButton: 'Ajouter',
|
||||
tip: 'Recevoir des événements via abonnement',
|
||||
item: {
|
||||
enabled: 'Activé',
|
||||
disabled: 'désactivé',
|
||||
credentialType: {
|
||||
api_key: 'Clé API',
|
||||
oauth2: 'OAuth',
|
||||
unauthorized: 'Manuel',
|
||||
},
|
||||
actions: {
|
||||
delete: 'Supprimer',
|
||||
deleteConfirm: {
|
||||
title: 'Supprimer {{name}} ?',
|
||||
success: 'Abonnement {{name}} supprimé avec succès',
|
||||
error: 'Échec de la suppression de l\'abonnement {{name}}',
|
||||
content: 'Une fois supprimé, cet abonnement ne peut pas être récupéré. Veuillez confirmer.',
|
||||
contentWithApps: 'L\'abonnement actuel est référencé par {{count}} applications. Le supprimer fera en sorte que les applications configurées ne reçoivent plus d\'événements d\'abonnement.',
|
||||
confirm: 'Confirmer la suppression',
|
||||
cancel: 'Annuler',
|
||||
confirmInputWarning: 'Veuillez entrer le nom correct pour confirmer.',
|
||||
confirmInputPlaceholder: 'Entrez "{{name}}" pour confirmer.',
|
||||
confirmInputTip: 'Veuillez entrer « {{name}} » pour confirmer.',
|
||||
},
|
||||
},
|
||||
status: {
|
||||
active: 'actif',
|
||||
inactive: 'Inactif',
|
||||
},
|
||||
usedByNum: 'Utilisé par {{num}} flux de travail',
|
||||
noUsed: 'Aucun flux de travail utilisé',
|
||||
},
|
||||
},
|
||||
addType: {
|
||||
title: 'Ajouter un abonnement',
|
||||
description: 'Choisissez comment vous souhaitez créer votre abonnement de déclenchement',
|
||||
options: {
|
||||
apikey: {
|
||||
title: 'Créer avec la clé API',
|
||||
description: 'Créer automatiquement un abonnement en utilisant les identifiants API',
|
||||
},
|
||||
oauth: {
|
||||
title: 'Créer avec OAuth',
|
||||
description: 'Autoriser la plateforme tierce à créer un abonnement',
|
||||
clientSettings: 'Paramètres du client OAuth',
|
||||
clientTitle: 'Client OAuth',
|
||||
default: 'Par défaut',
|
||||
custom: 'Personnalisé',
|
||||
},
|
||||
manual: {
|
||||
title: 'Configuration manuelle',
|
||||
description: 'Collez l\'URL pour créer un nouvel abonnement',
|
||||
tip: 'Configurer l\'URL sur une plateforme tierce manuellement',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
modal: {
|
||||
steps: {
|
||||
verify: 'Vérifier',
|
||||
configuration: 'Configuration',
|
||||
},
|
||||
common: {
|
||||
cancel: 'Annuler',
|
||||
back: 'Retour',
|
||||
next: 'Suivant',
|
||||
create: 'Créer',
|
||||
verify: 'Vérifier',
|
||||
authorize: 'Autoriser',
|
||||
creating: 'Création...',
|
||||
verifying: 'Vérification...',
|
||||
authorizing: 'Autorisation en cours...',
|
||||
},
|
||||
oauthRedirectInfo: 'Comme aucun secret client système n\'a été trouvé pour ce fournisseur d\'outil, une configuration manuelle est requise ; pour redirect_uri, veuillez utiliser',
|
||||
apiKey: {
|
||||
title: 'Créer avec la clé API',
|
||||
verify: {
|
||||
title: 'Vérifier les identifiants',
|
||||
description: 'Veuillez fournir vos identifiants API pour vérifier l\'accès',
|
||||
error: 'Échec de la vérification des identifiants. Veuillez vérifier votre clé API.',
|
||||
success: 'Identifiants vérifiés avec succès',
|
||||
},
|
||||
configuration: {
|
||||
title: 'Configurer l\'abonnement',
|
||||
description: 'Configurez les paramètres de votre abonnement',
|
||||
},
|
||||
},
|
||||
oauth: {
|
||||
title: 'Créer avec OAuth',
|
||||
authorization: {
|
||||
title: 'Autorisation OAuth',
|
||||
description: 'Autorisez Dify à accéder à votre compte',
|
||||
redirectUrl: 'URL de redirection',
|
||||
redirectUrlHelp: 'Utilisez cette URL dans la configuration de votre application OAuth',
|
||||
authorizeButton: 'Autoriser avec {{provider}}',
|
||||
waitingAuth: 'En attente d\'autorisation...',
|
||||
authSuccess: 'Autorisation réussie',
|
||||
authFailed: 'Échec de l’obtention des informations d’autorisation OAuth',
|
||||
waitingJump: 'Autorisé, en attente du saut',
|
||||
},
|
||||
configuration: {
|
||||
title: 'Configurer l\'abonnement',
|
||||
description: 'Configurez les paramètres de votre abonnement après l\'autorisation',
|
||||
success: 'Configuration OAuth réussie',
|
||||
failed: 'Échec de la configuration OAuth',
|
||||
},
|
||||
remove: {
|
||||
success: 'Suppression d\'OAuth réussie',
|
||||
failed: 'Échec de la suppression d\'OAuth',
|
||||
},
|
||||
save: {
|
||||
success: 'Configuration OAuth enregistrée avec succès',
|
||||
},
|
||||
},
|
||||
manual: {
|
||||
title: 'Configuration manuelle',
|
||||
description: 'Configurez votre abonnement webhook manuellement',
|
||||
logs: {
|
||||
title: 'Journaux des requêtes',
|
||||
request: 'Demande',
|
||||
loading: 'En attente de la demande de {{pluginName}}...',
|
||||
},
|
||||
},
|
||||
form: {
|
||||
subscriptionName: {
|
||||
label: 'Nom de l\'abonnement',
|
||||
placeholder: 'Entrez le nom de l\'abonnement',
|
||||
required: 'Le nom de l\'abonnement est requis',
|
||||
},
|
||||
callbackUrl: {
|
||||
label: 'URL de rappel',
|
||||
description: 'Cette URL recevra des événements webhook',
|
||||
tooltip: 'Fournissez un point de terminaison accessible publiquement qui peut recevoir des requêtes de rappel du fournisseur de déclenchement.',
|
||||
placeholder: 'Génération...',
|
||||
privateAddressWarning: 'Cette URL semble être une adresse interne, ce qui peut provoquer l\'échec des requêtes webhook. Vous pouvez changer TRIGGER_URL pour une adresse publique.',
|
||||
},
|
||||
},
|
||||
errors: {
|
||||
createFailed: 'Échec de la création de l\'abonnement',
|
||||
verifyFailed: 'Échec de la vérification des identifiants',
|
||||
authFailed: 'Autorisation échouée',
|
||||
networkError: 'Erreur réseau, veuillez réessayer',
|
||||
},
|
||||
},
|
||||
events: {
|
||||
title: 'Événements disponibles',
|
||||
description: 'Événements auxquels ce plugin de déclenchement peut s\'abonner',
|
||||
empty: 'Aucun événement disponible',
|
||||
event: 'Événement',
|
||||
events: 'Événements',
|
||||
actionNum: '{{num}} {{event}} INCLUS',
|
||||
item: {
|
||||
parameters: 'paramètres {{count}}',
|
||||
noParameters: 'Aucun paramètre',
|
||||
},
|
||||
output: 'Sortie',
|
||||
},
|
||||
node: {
|
||||
status: {
|
||||
warning: 'Se déconnecter',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
353
dify/web/i18n/fr-FR/plugin.ts
Normal file
353
dify/web/i18n/fr-FR/plugin.ts
Normal file
@@ -0,0 +1,353 @@
|
||||
const translation = {
|
||||
category: {
|
||||
extensions: 'Extensions',
|
||||
agents: 'Stratégies des agents',
|
||||
models: 'Modèle',
|
||||
tools: 'Outils',
|
||||
bundles: 'Paquets',
|
||||
all: 'Tout',
|
||||
datasources: 'Sources des données',
|
||||
triggers: 'Déclencheurs',
|
||||
},
|
||||
categorySingle: {
|
||||
extension: 'Extension',
|
||||
tool: 'Outil',
|
||||
model: 'Modèle',
|
||||
agent: 'Stratégie d’agent',
|
||||
bundle: 'Paquet',
|
||||
datasource: 'Source des données',
|
||||
trigger: 'Déclencheur',
|
||||
},
|
||||
list: {
|
||||
source: {
|
||||
github: 'Installer à partir de GitHub',
|
||||
local: 'Installer à partir d’un 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',
|
||||
back: 'Retour',
|
||||
},
|
||||
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 l’installation.',
|
||||
unsupportedTitle: 'Action non soutenue',
|
||||
descriptionLabel: 'Description de l’outil',
|
||||
placeholder: 'Sélectionnez un outil...',
|
||||
params: 'CONFIGURATION DE RAISONNEMENT',
|
||||
unsupportedContent:
|
||||
'La version du plugin installée ne fournit pas cette action.',
|
||||
auto: 'Auto',
|
||||
descriptionPlaceholder:
|
||||
'Brève description de l’objectif de l’outil, par exemple, obtenir la température d’un 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 « Auto » est désactivé, la valeur par défaut est utilisée.',
|
||||
paramsTip1: 'Contrôle les paramètres d’inférence LLM.',
|
||||
toolSetting: 'Paramètres de l\'outil',
|
||||
unsupportedMCPTool:
|
||||
'La version actuelle du plugin de stratégie d\'agent sélectionné ne prend pas en charge les outils MCP.',
|
||||
},
|
||||
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 l’outil',
|
||||
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 l’espace de travail actuel.',
|
||||
configureModel: 'Configurer le modèle',
|
||||
configureApp: 'Configurer l’application',
|
||||
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 l’API peuvent être utilisées.',
|
||||
deprecation: {
|
||||
reason: {
|
||||
ownershipTransferred: 'propriété transférée',
|
||||
businessAdjustments: 'ajustements commerciaux',
|
||||
noMaintainer: 'aucun mainteneur',
|
||||
},
|
||||
noReason: 'Ce plugin a été abandonné et ne sera plus mis à jour.',
|
||||
onlyReason:
|
||||
'Ce plugin a été déprécié en raison de {{deprecatedReason}} et ne sera plus mis à jour.',
|
||||
fullMessage:
|
||||
'Ce plugin a été déprécié en raison de {{deprecatedReason}}, et ne sera plus mis à jour. Veuillez utiliser <CustomLink href=\'https://example.com/\'>{{-alternativePluginId}}</CustomLink> à la place.',
|
||||
},
|
||||
},
|
||||
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 d’installer le plugin suivant',
|
||||
back: 'Précédent',
|
||||
fromTrustSource:
|
||||
'Assurez-vous de n’installer que des plugins provenant d’une <trustSource>source fiable</trustSource>.',
|
||||
close: 'Fermer',
|
||||
installing: 'Installation...',
|
||||
pluginLoadErrorDesc: 'Ce plugin ne sera pas installé',
|
||||
cancel: 'Annuler',
|
||||
installFailed: 'Échec de l’installation',
|
||||
readyToInstallPackages:
|
||||
'Sur le point d’installer 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 l’installer',
|
||||
readyToInstall: 'Sur le point d’installer le plugin suivant',
|
||||
installedSuccessfully: 'Installation réussie',
|
||||
next: 'Prochain',
|
||||
installPlugin: 'Installer le plugin',
|
||||
installFailedDesc: 'L’installation du plug-in a échoué.',
|
||||
installWarning: 'Ce plugin n’est pas autorisé à être installé.',
|
||||
},
|
||||
installFromGitHub: {
|
||||
installFailed: 'Échec de l’installation',
|
||||
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 n’installer que des plugins provenant d’une 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 d’installer le plugin suivant',
|
||||
upgrade: 'Installer',
|
||||
title: 'Installer le plugin',
|
||||
successfulTitle: 'Installation réussie',
|
||||
},
|
||||
error: {
|
||||
noReleasesFound:
|
||||
'Aucune version n’a été trouvée. Vérifiez le référentiel GitHub ou l’URL d’entré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',
|
||||
partnerTip: 'Vérifié par un partenaire Dify',
|
||||
verifiedTip: 'Vérifié par Dify',
|
||||
},
|
||||
task: {
|
||||
installError:
|
||||
'{{errorLength}} les plugins n’ont 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 n’ont pas pu être installés',
|
||||
clearAll: 'Effacer tout',
|
||||
installing: 'Installation des plugins {{installingLength}}, 0 fait.',
|
||||
},
|
||||
search: 'Rechercher',
|
||||
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}} s’installe',
|
||||
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',
|
||||
metadata: {
|
||||
title: 'Plugins',
|
||||
},
|
||||
difyVersionNotCompatible:
|
||||
'La version actuelle de Dify n\'est pas compatible avec ce plugin, veuillez mettre à niveau vers la version minimale requise : {{minimalDifyVersion}}',
|
||||
requestAPlugin: 'Demander un plugin',
|
||||
publishPlugins: 'Publier des plugins',
|
||||
auth: {
|
||||
oauthClient: 'Client OAuth',
|
||||
authorizationName: 'Nom d\'autorisation',
|
||||
authorizations: 'Autorisations',
|
||||
workspaceDefault: 'Espace de travail par défaut',
|
||||
default: 'Par défaut',
|
||||
addOAuth: 'Ajouter OAuth',
|
||||
saveAndAuth: 'Enregistrer et autoriser',
|
||||
custom: 'Personnalisé',
|
||||
authRemoved: 'Autorisation retirée',
|
||||
saveOnly: 'Sauvegarder seulement',
|
||||
setupOAuth: 'Configurer le client OAuth',
|
||||
useApiAuth: 'Configuration de l\'autorisation de clé API',
|
||||
addApi: 'Ajouter une clé API',
|
||||
useOAuth: 'Utilisez OAuth',
|
||||
oauthClientSettings: 'Paramètres du client OAuth',
|
||||
useOAuthAuth: 'Utilisez l\'autorisation OAuth',
|
||||
useApiAuthDesc:
|
||||
'Après avoir configuré les identifiants, tous les membres de l\'espace de travail peuvent utiliser cet outil lors de l\'orchestration des applications.',
|
||||
clientInfo:
|
||||
'Comme aucun secret client du système n\'a été trouvé pour ce fournisseur d\'outils, une configuration manuelle est requise. Pour redirect_uri, veuillez utiliser',
|
||||
setDefault: 'Définir comme par défaut',
|
||||
authorization: 'Autorisation',
|
||||
useApi: 'Utilisez la clé API',
|
||||
customCredentialUnavailable:
|
||||
'Les identifiants personnalisés ne sont actuellement pas disponibles.',
|
||||
credentialUnavailable:
|
||||
'Les informations d\'identification ne sont actuellement pas disponibles. Veuillez contacter l\'administrateur.',
|
||||
unavailable: 'Non disponible',
|
||||
credentialUnavailableInButton: 'Identifiant indisponible',
|
||||
connectedWorkspace: 'Espace de travail connecté',
|
||||
emptyAuth: 'Veuillez configurer l’authentification',
|
||||
},
|
||||
deprecated: 'Obsolète',
|
||||
autoUpdate: {
|
||||
strategy: {
|
||||
disabled: {
|
||||
description: 'Les plugins ne se mettront pas à jour automatiquement',
|
||||
name: 'désactivé',
|
||||
},
|
||||
fixOnly: {
|
||||
selectedDescription:
|
||||
'Mise à jour automatique uniquement pour les versions de correctif',
|
||||
name: 'Réparer seulement',
|
||||
description:
|
||||
'Mise à jour automatique uniquement pour les versions de correctif (par exemple, 1.0.1 → 1.0.2). Les changements de version mineure ne déclencheront pas de mises à jour.',
|
||||
},
|
||||
latest: {
|
||||
name: 'Dernier',
|
||||
selectedDescription: 'Mettez toujours à jour vers la dernière version',
|
||||
description: 'Mettez toujours à jour vers la dernière version',
|
||||
},
|
||||
},
|
||||
upgradeMode: {
|
||||
exclude: 'Exclure sélectionné',
|
||||
all: 'Mettre à jour tout',
|
||||
partial: 'Seulement sélectionné',
|
||||
},
|
||||
upgradeModePlaceholder: {
|
||||
partial:
|
||||
'Seuls les plugins sélectionnés se mettront à jour automatiquement. Aucun plugin n\'est actuellement sélectionné, donc aucun plugin ne se mettra à jour automatiquement.',
|
||||
exclude:
|
||||
'Les plugins sélectionnés ne se mettront pas à jour automatiquement.',
|
||||
},
|
||||
operation: {
|
||||
clearAll: 'Tout effacer',
|
||||
select: 'Sélectionner des plugins',
|
||||
},
|
||||
pluginDowngradeWarning: {
|
||||
title: 'Baisse de version du plugin',
|
||||
exclude: 'Exclure de la mise à jour automatique',
|
||||
downgrade: 'Dégradez de toute façon',
|
||||
description:
|
||||
'La mise à jour automatique est actuellement activée pour ce plugin. Le fait de rétrograder la version peut entraîner la perte de vos modifications lors de la prochaine mise à jour automatique.',
|
||||
},
|
||||
noPluginPlaceholder: {
|
||||
noInstalled: 'Aucun plugin installé',
|
||||
noFound: 'Aucun plugin n\'a été trouvé',
|
||||
},
|
||||
updateTime: 'Temps de mise à jour',
|
||||
specifyPluginsToUpdate: 'Spécifiez les plugins à mettre à jour',
|
||||
updateTimeTitle: 'Temps de mise à jour',
|
||||
changeTimezone:
|
||||
'Pour changer de fuseau horaire, allez dans <setTimezone>Paramètres</setTimezone>',
|
||||
automaticUpdates: 'Mises à jour automatiques',
|
||||
updateSettings: 'Mettre à jour les paramètres',
|
||||
excludeUpdate:
|
||||
'Les {{num}} plugins suivants ne se mettront pas à jour automatiquement',
|
||||
partialUPdate:
|
||||
'Seuls les {{num}} plugins suivants se mettront à jour automatiquement',
|
||||
nextUpdateTime: 'Prochaine mise à jour automatique : {{time}}',
|
||||
},
|
||||
readmeInfo: {
|
||||
title: 'Lisez-moi',
|
||||
needHelpCheckReadme: 'Besoin d\'aide ? Consultez le README.',
|
||||
noReadmeAvailable: 'Aucun README disponible',
|
||||
failedToFetch: 'Échec de la récupération du README',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
4
dify/web/i18n/fr-FR/register.ts
Normal file
4
dify/web/i18n/fr-FR/register.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
const translation = {
|
||||
}
|
||||
|
||||
export default translation
|
||||
31
dify/web/i18n/fr-FR/run-log.ts
Normal file
31
dify/web/i18n/fr-FR/run-log.ts
Normal 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 d’actions',
|
||||
circularInvocationTip: 'Il y a un appel circulaire d’outils/nœuds dans le flux de travail actuel.',
|
||||
}
|
||||
|
||||
export default translation
|
||||
86
dify/web/i18n/fr-FR/share.ts
Normal file
86
dify/web/i18n/fr-FR/share.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
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.',
|
||||
expand: 'Développer',
|
||||
collapse: 'Réduire',
|
||||
chatSettingsTitle: 'Nouvelle configuration de chat',
|
||||
viewChatSettings: 'Voir les paramètres de chat',
|
||||
newChatTip: 'Déjà dans une nouvelle discussion',
|
||||
chatFormTip: 'Les paramètres de chat ne peuvent pas être modifiés une fois que le chat a commencé.',
|
||||
},
|
||||
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é.',
|
||||
},
|
||||
execution: 'Exécuter',
|
||||
executions: '{{num}} exécutions',
|
||||
stopRun: 'Arrêter l\'exécution',
|
||||
},
|
||||
login: {
|
||||
backToHome: 'Retour à l\'accueil',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
44
dify/web/i18n/fr-FR/time.ts
Normal file
44
dify/web/i18n/fr-FR/time.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
const translation = {
|
||||
daysInWeek: {
|
||||
Sat: 'Sat',
|
||||
Fri: 'Libre',
|
||||
Wed: 'Mercredi',
|
||||
Mon: 'Mon',
|
||||
Thu: 'Jeudi',
|
||||
Tue: 'Mardi',
|
||||
Sun: 'Soleil',
|
||||
},
|
||||
months: {
|
||||
October: 'octobre',
|
||||
July: 'Juillet',
|
||||
June: 'Juin',
|
||||
December: 'Décembre',
|
||||
November: 'Novembre',
|
||||
April: 'Avril',
|
||||
September: 'Septembre',
|
||||
February: 'Février',
|
||||
May: 'Mai',
|
||||
January: 'Janvier',
|
||||
August: 'août',
|
||||
March: 'Mars',
|
||||
},
|
||||
operation: {
|
||||
now: 'Maintenant',
|
||||
pickDate: 'Choisir une date',
|
||||
cancel: 'Annuler',
|
||||
ok: 'D\'accord',
|
||||
},
|
||||
title: {
|
||||
pickTime: 'Choisir le temps',
|
||||
},
|
||||
defaultPlaceholder: 'Choisissez un moment...',
|
||||
dateFormats: {
|
||||
display: 'MMMM D, AAAA',
|
||||
output: 'AAAA-MM-JJ',
|
||||
input: 'AAAA-MM-JJ',
|
||||
displayWithTime: 'MMMM D, YYYY hh:mm A',
|
||||
outputWithTime: 'AAAA-MM-JJTHH:mm:ss.SSSZ',
|
||||
},
|
||||
}
|
||||
|
||||
export default translation
|
||||
257
dify/web/i18n/fr-FR/tools.ts
Normal file
257
dify/web/i18n/fr-FR/tools.ts
Normal file
@@ -0,0 +1,257 @@
|
||||
const translation = {
|
||||
title: 'Outils',
|
||||
createCustomTool: 'Créer un Outil Personnalisé',
|
||||
type: {
|
||||
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: {
|
||||
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',
|
||||
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',
|
||||
apiKeyPlaceholder: 'Nom de l\'en-tête HTTP pour la clé API',
|
||||
apiValuePlaceholder: 'Entrez la clé API',
|
||||
api_key_query: 'Paramètre de requête',
|
||||
queryParamPlaceholder: 'Nom du paramètre de requête pour la clé API',
|
||||
api_key_header: 'En-tête',
|
||||
},
|
||||
key: 'Clé',
|
||||
value: 'Valeur',
|
||||
queryParam: 'Paramètre de requête',
|
||||
queryParamTooltip: 'Le nom du paramètre de requête de la clé API à passer, par exemple "key" dans "https://example.com/test?key=API_KEY".',
|
||||
},
|
||||
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 d’outil',
|
||||
methodSetting: 'Réglage',
|
||||
labelPlaceholder: 'Choisir des balises(facultatif)',
|
||||
descriptionPlaceholder: 'Description de la signification du paramètre',
|
||||
method: 'Méthode',
|
||||
methodParameter: 'Paramètre',
|
||||
methodSettingTip: 'L’utilisateur renseigne la configuration de l’outil',
|
||||
methodParameterTip: 'Remplissages LLM pendant l’infé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 l’appel de l’outil',
|
||||
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 l’objectif de l’outil, par exemple, obtenir la température d’un 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',
|
||||
added: 'supplémentaire',
|
||||
category: 'catégorie',
|
||||
custom: {
|
||||
title: 'Aucun outil personnalisé disponible',
|
||||
tip: 'Créer un outil personnalisé',
|
||||
},
|
||||
workflow: {
|
||||
title: 'Aucun outil de workflow disponible',
|
||||
tip: 'Publier des workflows en tant qu\'outils dans le Studio',
|
||||
},
|
||||
mcp: {
|
||||
title: 'Aucun outil MCP disponible',
|
||||
tip: 'Ajouter un serveur MCP',
|
||||
},
|
||||
agent: {
|
||||
title: 'Aucune stratégie d\'agent disponible',
|
||||
},
|
||||
},
|
||||
openInStudio: 'Ouvrir dans Studio',
|
||||
customToolTip: 'En savoir plus sur les outils personnalisés Dify',
|
||||
toolNameUsageTip: 'Nom de l’appel de l’outil pour le raisonnement et l’invite de l’agent',
|
||||
copyToolName: 'Copier le nom',
|
||||
noTools: 'Aucun outil trouvé',
|
||||
mcp: {
|
||||
create: {
|
||||
cardTitle: 'Ajouter un Serveur MCP (HTTP)',
|
||||
cardLink: 'En savoir plus sur l\'intégration du serveur MCP',
|
||||
},
|
||||
noConfigured: 'Serveur Non Configuré',
|
||||
updateTime: 'Mis à jour',
|
||||
toolsCount: '{count} outils',
|
||||
noTools: 'Aucun outil disponible',
|
||||
modal: {
|
||||
title: 'Ajouter un Serveur MCP (HTTP)',
|
||||
editTitle: 'Modifier le Serveur MCP (HTTP)',
|
||||
name: 'Nom & Icône',
|
||||
namePlaceholder: 'Nommez votre serveur MCP',
|
||||
serverUrl: 'URL du Serveur',
|
||||
serverUrlPlaceholder: 'URL de l\'endpoint du serveur',
|
||||
serverUrlWarning: 'Mettre à jour l\'adresse du serveur peut perturber les applications qui dépendent de ce serveur',
|
||||
serverIdentifier: 'Identifiant du Serveur',
|
||||
serverIdentifierTip: 'Identifiant unique pour le serveur MCP au sein de l\'espace de travail. Seulement des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Jusqu\'à 24 caractères.',
|
||||
serverIdentifierPlaceholder: 'Identifiant unique, par ex. mon-serveur-mcp',
|
||||
serverIdentifierWarning: 'Le serveur ne sera pas reconnu par les applications existantes après un changement d\'ID',
|
||||
cancel: 'Annuler',
|
||||
save: 'Enregistrer',
|
||||
confirm: 'Ajouter & Authoriser',
|
||||
sseReadTimeout: 'Délai d\'attente de lecture SSE',
|
||||
timeout: 'Délai d\'attente',
|
||||
timeoutPlaceholder: 'trente',
|
||||
headerValue: 'Valeur d\'en-tête',
|
||||
headerKey: 'Nom de l\'en-tête',
|
||||
noHeaders: 'Aucun en-tête personnalisé configuré',
|
||||
headers: 'En-têtes',
|
||||
headerKeyPlaceholder: 'par exemple, Autorisation',
|
||||
headerValuePlaceholder: 'par exemple, Jeton d\'accès123',
|
||||
headersTip: 'En-têtes HTTP supplémentaires à envoyer avec les requêtes au serveur MCP',
|
||||
addHeader: 'Ajouter un en-tête',
|
||||
maskedHeadersTip: 'Les valeurs d\'en-tête sont masquées pour des raisons de sécurité. Les modifications mettront à jour les valeurs réelles.',
|
||||
clientSecretPlaceholder: 'Secret client',
|
||||
configurations: 'Configurations',
|
||||
clientID: 'ID client',
|
||||
authentication: 'Authentification',
|
||||
useDynamicClientRegistration: 'Utiliser l\'enregistrement dynamique des clients',
|
||||
clientSecret: 'Secret client',
|
||||
redirectUrlWarning: 'Veuillez configurer votre URL de redirection OAuth sur :',
|
||||
},
|
||||
delete: 'Supprimer le Serveur MCP',
|
||||
deleteConfirmTitle: 'Souhaitez-vous supprimer {mcp}?',
|
||||
operation: {
|
||||
edit: 'Modifier',
|
||||
remove: 'Supprimer',
|
||||
},
|
||||
authorize: 'Autoriser',
|
||||
authorizing: 'Autorisation en cours...',
|
||||
authorizingRequired: 'L\'autorisation est requise',
|
||||
authorizeTip: 'Après autorisation, les outils seront affichés ici.',
|
||||
update: 'Mettre à jour',
|
||||
updating: 'Mise à jour en cours',
|
||||
gettingTools: 'Obtention des Outils...',
|
||||
updateTools: 'Mise à jour des Outils...',
|
||||
toolsEmpty: 'Outils non chargés',
|
||||
getTools: 'Obtenir des outils',
|
||||
toolUpdateConfirmTitle: 'Mettre à jour la Liste des Outils',
|
||||
toolUpdateConfirmContent: 'La mise à jour de la liste des outils peut affecter les applications existantes. Souhaitez-vous continuer?',
|
||||
toolsNum: '{count} outils inclus',
|
||||
onlyTool: '1 outil inclus',
|
||||
identifier: 'Identifiant du Serveur (Cliquez pour Copier)',
|
||||
server: {
|
||||
title: 'Serveur MCP',
|
||||
url: 'URL du Serveur',
|
||||
reGen: 'Voulez-vous régénérer l\'URL du serveur?',
|
||||
addDescription: 'Ajouter une description',
|
||||
edit: 'Modifier la description',
|
||||
modal: {
|
||||
addTitle: 'Ajouter une description pour activer le serveur MCP',
|
||||
editTitle: 'Modifier la description',
|
||||
description: 'Description',
|
||||
descriptionPlaceholder: 'Expliquez ce que fait cet outil et comment il doit être utilisé par le LLM',
|
||||
parameters: 'Paramètres',
|
||||
parametersTip: 'Ajoutez des descriptions pour chaque paramètre afin d\'aider le LLM à comprendre leur objectif et leurs contraintes.',
|
||||
parametersPlaceholder: 'Objectif et contraintes du paramètre',
|
||||
confirm: 'Activer le Serveur MCP',
|
||||
},
|
||||
publishTip: 'Application non publiée. Merci de publier l\'application en premier.',
|
||||
},
|
||||
toolItem: {
|
||||
parameters: 'Paramètres',
|
||||
noDescription: 'Aucune description',
|
||||
},
|
||||
},
|
||||
allTools: 'Tous les outils',
|
||||
}
|
||||
|
||||
export default translation
|
||||
1291
dify/web/i18n/fr-FR/workflow.ts
Normal file
1291
dify/web/i18n/fr-FR/workflow.ts
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user