mirror of
https://github.com/langgenius/webapp-conversation.git
synced 2025-12-08 17:32:27 +08:00
Merge pull request #123 from vvatelot/i18n/french
i18n(fr): Add french translations
This commit is contained in:
@ -6,15 +6,18 @@ import commonEs from './lang/common.es'
|
|||||||
import commonZh from './lang/common.zh'
|
import commonZh from './lang/common.zh'
|
||||||
import commonVi from './lang/common.vi'
|
import commonVi from './lang/common.vi'
|
||||||
import commonJa from './lang/common.ja'
|
import commonJa from './lang/common.ja'
|
||||||
|
import commonFr from './lang/common.fr'
|
||||||
import appEn from './lang/app.en'
|
import appEn from './lang/app.en'
|
||||||
import appEs from './lang/app.es'
|
import appEs from './lang/app.es'
|
||||||
import appZh from './lang/app.zh'
|
import appZh from './lang/app.zh'
|
||||||
import appVi from './lang/app.vi'
|
import appVi from './lang/app.vi'
|
||||||
import appJa from './lang/app.ja'
|
import appJa from './lang/app.ja'
|
||||||
|
import appFr from './lang/app.fr'
|
||||||
import toolsEn from './lang/tools.en'
|
import toolsEn from './lang/tools.en'
|
||||||
import toolsZh from './lang/tools.zh'
|
import toolsZh from './lang/tools.zh'
|
||||||
import toolsVi from './lang/tools.vi'
|
import toolsVi from './lang/tools.vi'
|
||||||
import toolsJa from './lang/tools.ja'
|
import toolsJa from './lang/tools.ja'
|
||||||
|
import toolsFr from './lang/tools.fr'
|
||||||
|
|
||||||
import type { Locale } from '.'
|
import type { Locale } from '.'
|
||||||
|
|
||||||
@ -57,6 +60,14 @@ const resources = {
|
|||||||
tools: toolsJa,
|
tools: toolsJa,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'fr': {
|
||||||
|
translation: {
|
||||||
|
common: commonFr,
|
||||||
|
app: appFr,
|
||||||
|
// tools
|
||||||
|
tools: toolsFr,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
i18n.use(initReactI18next)
|
i18n.use(initReactI18next)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
export const i18n = {
|
export const i18n = {
|
||||||
defaultLocale: 'en',
|
defaultLocale: 'en',
|
||||||
locales: ['en', 'es', 'zh-Hans', 'ja'],
|
locales: ['en', 'es', 'zh-Hans', 'ja', 'fr'],
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export type Locale = typeof i18n['locales'][number]
|
export type Locale = typeof i18n['locales'][number]
|
||||||
|
|||||||
37
i18n/lang/app.fr.ts
Normal file
37
i18n/lang/app.fr.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
const translation = {
|
||||||
|
common: {
|
||||||
|
welcome: 'Bienvenue sur l\'application',
|
||||||
|
appUnavailable: 'L\'application n\'est pas disponible',
|
||||||
|
appUnkonwError: 'L\'application n\'est pas disponible',
|
||||||
|
},
|
||||||
|
chat: {
|
||||||
|
newChat: 'Nouvelle conversation',
|
||||||
|
newChatDefaultName: 'Nouvelle conversation',
|
||||||
|
openingStatementTitle: 'Phrase d\'ouverture',
|
||||||
|
powerBy: 'Propulsé par',
|
||||||
|
prompt: 'Prompt',
|
||||||
|
privatePromptConfigTitle: 'Param tres de la conversation',
|
||||||
|
publicPromptConfigTitle: 'Prompt initial',
|
||||||
|
configStatusDes: 'Avant de commencer, vous pouvez modifier les paramètres de la conversation',
|
||||||
|
configDisabled:
|
||||||
|
'Les paramètres de la session précédente ont été utilisés pour cette session.',
|
||||||
|
startChat: 'Démarrer la conversation',
|
||||||
|
privacyPolicyLeft:
|
||||||
|
'Veuillez lire la ',
|
||||||
|
privacyPolicyMiddle:
|
||||||
|
'politique de confidentialité ',
|
||||||
|
privacyPolicyRight:
|
||||||
|
' fournie par le développeur de l\'application.',
|
||||||
|
},
|
||||||
|
errorMessage: {
|
||||||
|
valueOfVarRequired: 'La valeur des variables ne peut pas être vide',
|
||||||
|
waitForResponse:
|
||||||
|
'Veuillez attendre que la réponse au message précédent soit terminée.',
|
||||||
|
},
|
||||||
|
variableTable: {
|
||||||
|
optional: 'Facultatif',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
|
|
||||||
34
i18n/lang/common.fr.ts
Normal file
34
i18n/lang/common.fr.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
const translation = {
|
||||||
|
api: {
|
||||||
|
success: 'Succès',
|
||||||
|
saved: 'Enregistré',
|
||||||
|
create: 'Créé',
|
||||||
|
},
|
||||||
|
operation: {
|
||||||
|
confirm: 'Confirmer',
|
||||||
|
cancel: 'Annuler',
|
||||||
|
clear: 'Effacer',
|
||||||
|
save: 'Enregistrer',
|
||||||
|
edit: 'Éditer',
|
||||||
|
refresh: 'Redémarrer',
|
||||||
|
search: 'Rechercher',
|
||||||
|
send: 'Envoyer',
|
||||||
|
lineBreak: 'Saut de ligne',
|
||||||
|
like: 'like',
|
||||||
|
dislike: 'dislike',
|
||||||
|
ok: 'D\'accord',
|
||||||
|
},
|
||||||
|
imageUploader: {
|
||||||
|
uploadFromComputer: 'Télécharger depuis l\'ordinateur',
|
||||||
|
uploadFromComputerReadError: 'Édition de l\'image échouée, veuillez essayer à nouveau.',
|
||||||
|
uploadFromComputerUploadError: 'Édition de l\'image échouée, veuillez télécharger à nouveau.',
|
||||||
|
uploadFromComputerLimit: 'Les images téléchargées ne peuvent pas dépasser {{size}} Mo',
|
||||||
|
pasteImageLink: 'Coller le lien de l\'image',
|
||||||
|
pasteImageLinkInputPlaceholder: 'Coller le lien de l\'image ici',
|
||||||
|
pasteImageLinkInvalid: 'Lien d\'image invalide',
|
||||||
|
imageUpload: 'Téléchargement d\'image',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
|
|
||||||
104
i18n/lang/tools.fr.ts
Normal file
104
i18n/lang/tools.fr.ts
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
const translation = {
|
||||||
|
title: 'Outils',
|
||||||
|
createCustomTool: 'Créer un outil personnalisé',
|
||||||
|
type: {
|
||||||
|
all: 'Tous',
|
||||||
|
builtIn: 'Intégré',
|
||||||
|
custom: 'Personnalisé',
|
||||||
|
},
|
||||||
|
contribute: {
|
||||||
|
line1: 'Je suis intéressé pour ',
|
||||||
|
line2: ' contribuer à des outils de Dify.',
|
||||||
|
viewGuide: 'Voir le guide',
|
||||||
|
},
|
||||||
|
author: 'Par',
|
||||||
|
auth: {
|
||||||
|
unauthorized: 'Autoriser',
|
||||||
|
authorized: 'Autorisé',
|
||||||
|
setup: 'Configurer l\'autorisation pour utiliser',
|
||||||
|
setupModalTitle: 'Configurer l\'autorisation',
|
||||||
|
setupModalTitleDescription: 'Aprèss avoir configuré les informations d\'identification, tous les membres de l\'espace de travail pourront utiliser cet outil pour orchestrer les applications.',
|
||||||
|
},
|
||||||
|
includeToolNum: '{{num}} outils inclus',
|
||||||
|
addTool: 'Ajouter un outil',
|
||||||
|
createTool: {
|
||||||
|
title: 'Créer un outil personnalisé',
|
||||||
|
editAction: 'Configurer',
|
||||||
|
editTitle: 'Éditer l\'outil personnalisé',
|
||||||
|
name: 'Nom',
|
||||||
|
toolNamePlaceHolder: 'Saisissez le nom de l\'outil',
|
||||||
|
schema: 'Schéma',
|
||||||
|
schemaPlaceHolder: 'Saisissez votre schéma OpenAPI ici',
|
||||||
|
viewSchemaSpec: 'Voir la spécification OpenAPI-Swagger',
|
||||||
|
importFromUrl: 'Importer depuis une URL',
|
||||||
|
importFromUrlPlaceHolder: 'https://...',
|
||||||
|
urlError: 'Veuillez saisir une URL valide',
|
||||||
|
examples: 'Exemples',
|
||||||
|
exampleOptions: {
|
||||||
|
json: 'Météo (JSON)',
|
||||||
|
yaml: 'Pet Store (YAML)',
|
||||||
|
blankTemplate: 'Modèle vide',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
types: {
|
||||||
|
none: 'Aucun',
|
||||||
|
api_key: 'Clé API',
|
||||||
|
},
|
||||||
|
key: 'Clé',
|
||||||
|
value: 'Valeur',
|
||||||
|
},
|
||||||
|
privacyPolicy: 'Politique de confidentialité',
|
||||||
|
privacyPolicyPlaceholder: 'Veuillez saisir la politique de confidentialité',
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
title: 'Test',
|
||||||
|
parametersValue: 'Paramètres & Valeurs',
|
||||||
|
parameters: 'Paramètres',
|
||||||
|
value: 'Valeurs',
|
||||||
|
testResult: 'Résultats du test',
|
||||||
|
testResultPlaceholder: 'Le résultat du test sera affiché ici',
|
||||||
|
},
|
||||||
|
thought: {
|
||||||
|
using: 'En cours d\'utilisation',
|
||||||
|
used: 'Utilisé',
|
||||||
|
requestTitle: 'Demande ',
|
||||||
|
responseTitle: 'Réponse de ',
|
||||||
|
},
|
||||||
|
setBuiltInTools: {
|
||||||
|
info: 'Informations',
|
||||||
|
setting: 'Paramétrage',
|
||||||
|
toolDescription: 'Description de l\'outil',
|
||||||
|
parameters: 'paramètres',
|
||||||
|
string: 'chaine de caractères',
|
||||||
|
number: 'nombre',
|
||||||
|
required: 'Requis',
|
||||||
|
infoAndSetting: 'Informations & Paramétrage',
|
||||||
|
},
|
||||||
|
noCustomTool: {
|
||||||
|
title: 'Aucun outil personnalisé !',
|
||||||
|
content: 'Ajoutez et gérez vos outils personnalisé pour créer des applications d\'apprentissage automatique.',
|
||||||
|
createTool: 'Créer un outil',
|
||||||
|
},
|
||||||
|
noSearchRes: {
|
||||||
|
title: 'Désolé, pas de résultats!',
|
||||||
|
content: 'Nous n\'avons pas trouvé d\'outils qui correspondent à votre recherche.',
|
||||||
|
reset: 'Réinitialiser la recherche',
|
||||||
|
},
|
||||||
|
builtInPromptTitle: 'Suggestion',
|
||||||
|
toolRemoved: 'Outil supprimé',
|
||||||
|
notAuthorized: 'Outil non autorisé',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default translation
|
||||||
|
|
||||||
Reference in New Issue
Block a user