2026-04-17 09:09:50 +08:00
export default {
// Login
login : {
title : 'Hermes Web UI' ,
description : 'Entrez votre jeton d\'acces pour continuer. Retrouvez-le dans les journaux de demarrage du serveur.' ,
placeholder : 'Jeton d\'acces' ,
submit : 'Connexion' ,
tokenRequired : 'Veuillez entrer votre jeton d\'acces' ,
invalidToken : 'Jeton invalide' ,
connectionFailed : 'Impossible de se connecter au serveur' ,
2026-04-22 20:27:33 +08:00
passwordLogin : 'Mot de passe' ,
tokenLogin : 'Jeton' ,
usernamePlaceholder : 'Nom d\'utilisateur' ,
passwordPlaceholder : 'Mot de passe' ,
credentialsRequired : 'Veuillez entrer le nom d\'utilisateur et le mot de passe' ,
invalidCredentials : 'Nom d\'utilisateur ou mot de passe incorrect' ,
2026-05-08 18:29:43 +08:00
tooManyAttempts : 'Trop de tentatives echouees, veuillez reessayer plus tard' ,
2026-04-22 20:27:33 +08:00
passwordMismatch : 'Les mots de passe ne correspondent pas' ,
passwordTooShort : 'Le mot de passe doit contenir au moins 6 caracteres' ,
setupSuccess : 'Login par mot de passe configure avec succes' ,
passwordChanged : 'Mot de passe change avec succes' ,
passwordRemoved : 'Login par mot de passe supprime' ,
setupPassword : 'Configurer le login par mot de passe' ,
changePassword : 'Changer le mot de passe' ,
changeUsername : 'Changer le nom d\'utilisateur' ,
removePasswordLogin : 'Supprimer' ,
username : 'Nom d\'utilisateur' ,
currentPassword : 'Mot de passe actuel' ,
newPassword : 'Nouveau mot de passe' ,
confirmPassword : 'Confirmer le mot de passe' ,
newUsername : 'Nouveau nom d\'utilisateur' ,
usernameChanged : 'Nom d\'utilisateur change avec succes' ,
usernameTooShort : 'Le nom d\'utilisateur doit contenir au moins 2 caracteres' ,
setupDescription : 'Configurez un nom d\'utilisateur et un mot de passe pour un login rapide. Le jeton d\'acces reste disponible.' ,
removeConfirm : 'Voulez-vous vraiment supprimer le login par mot de passe? Vous devrez utiliser le jeton d\'acces.' ,
passwordLoginNotConfigured : 'Login par mot de passe non configure' ,
passwordLoginConfigured : 'Login par mot de passe active ({username})' ,
2026-04-17 09:09:50 +08:00
} ,
// Common
common : {
loading : 'Chargement...' ,
cancel : 'Annuler' ,
2026-04-17 23:11:57 +08:00
retry : 'Réessayer' ,
2026-04-17 09:09:50 +08:00
delete : 'Supprimer' ,
edit : 'Modifier' ,
save : 'Enregistrer' ,
saved : 'Enregistre' ,
update : 'Mettre a jour' ,
create : 'Creer' ,
saveFailed : 'Echec de l\'enregistrement' ,
2026-04-24 20:41:14 +08:00
deleteFailed : 'Echec de la suppression' ,
2026-04-17 09:09:50 +08:00
ok : 'OK' ,
copied : 'Copie' ,
copy : 'Copier' ,
noData : 'Aucune donnee' ,
fetch : 'Recuperer' ,
add : 'Ajouter' ,
enable : 'Activer' ,
disable : 'Desactiver' ,
configured : 'Configure' ,
notConfigured : 'Non configure' ,
confirm : 'Confirmer' ,
expand : 'Developper' ,
collapse : 'Reduire' ,
2026-05-20 17:13:32 +08:00
stop : 'Arrêter' ,
start : 'Démarrer' ,
expired : 'Expiré' ,
2026-04-17 09:09:50 +08:00
} ,
// Sidebar
sidebar : {
chat : 'Discussion' ,
2026-05-01 11:27:43 +08:00
search : 'Rechercher' ,
2026-05-07 22:16:52 +08:00
apiRelay : 'API Relay' ,
2026-05-01 11:27:43 +08:00
history : 'Historique' ,
2026-04-17 09:09:50 +08:00
jobs : 'Taches planifiees' ,
models : 'Modeles' ,
profiles : 'Profils' ,
2026-05-10 13:50:39 +02:00
plugins : 'Plugins' ,
2026-04-17 09:09:50 +08:00
skills : 'Competences' ,
memory : 'Memoire' ,
logs : 'Journaux' ,
usage : 'Utilisation' ,
2026-05-14 09:28:51 +08:00
skillsUsage : 'Utilisation des compétences' ,
2026-04-17 09:09:50 +08:00
channels : 'Canaux' ,
terminal : 'Terminal' ,
2026-04-23 14:10:14 +08:00
files : 'Fichiers' ,
2026-04-24 20:41:14 +08:00
groupChat : 'Chat de groupe' ,
groupConversation : 'Conversation' ,
2026-05-20 17:13:32 +08:00
groupConversationShort : 'Conv.' ,
2026-05-19 02:33:53 +02:00
groupAgent : 'Agent' ,
groupAgentShort : 'Agent' ,
groupSystem : 'Systeme' ,
groupSystemShort : 'Sys' ,
groupMonitoring : 'Suivi' ,
groupMonitoringShort : 'Suivi' ,
2026-04-17 09:09:50 +08:00
settings : 'Parametres' ,
connected : 'Connecte' ,
disconnected : 'Deconnecte' ,
updateTip : 'Executez "hermes-web-ui update" dans le terminal pour mettre a jour' ,
updateVersion : 'Mettre a jour vers v{version}' ,
2026-05-12 03:03:07 +02:00
reloadClientVersion : 'Recharger pour v{version}' ,
2026-04-17 09:09:50 +08:00
updating : 'Mise a jour...' ,
2026-05-14 12:06:39 +08:00
updateSuccess : 'Mise a jour terminee. Veuillez actualiser la page sous peu. Si le service ne demarre pas apres un moment, demarrez-le manuellement.' ,
2026-04-17 09:09:50 +08:00
updateFailed : 'Echec de la mise a jour' ,
2026-04-22 20:27:33 +08:00
logout : 'Deconnexion' ,
2026-04-24 02:31:42 +02:00
nodeVersionWarning : 'Node.js v{version} detecte. Veuillez passer a la version 23 ou ulterieure.' ,
2026-04-22 20:27:33 +08:00
changelog : 'Journal des modifications' ,
noChangelog : 'Aucun journal disponible' ,
2026-05-20 17:13:32 +08:00
kanban : 'Kanban' ,
groupTools : 'Outils' ,
groupPlatform : 'Plateforme' ,
gateways : 'Passerelles' ,
expand : 'Déplier le menu' ,
collapse : 'Replier le menu' ,
2026-04-17 09:09:50 +08:00
} ,
2026-05-03 22:10:40 +08:00
// Drawer
drawer : {
terminal : 'Terminal' ,
files : 'Espace de travail' ,
} ,
2026-04-17 09:09:50 +08:00
// Chat
chat : {
2026-04-22 16:14:50 +08:00
contextRemaining : 'restant' ,
2026-05-06 15:05:44 +08:00
contextClickToEdit : 'Cliquez pour modifier la longueur du contexte' ,
contextEditTitle : 'Modifier la longueur du contexte' ,
contextEditDesc : 'Définir la limite de longueur du contexte pour le modèle actuel (en tokens)' ,
contextEditPlaceholder : 'Entrez la longueur du contexte' ,
contextEditHint : 'Valeurs courantes : 200k (Claude), 128k (GPT-4), 32k (GPT-3.5)' ,
contextEditSave : 'Enregistrer' ,
contextEditCancel : 'Annuler' ,
contextEditInvalid : 'Veuillez entrer une longueur de contexte valide' ,
contextEditSuccess : 'Longueur du contexte mise à jour' ,
contextEditFailed : 'Échec de la mise à jour' ,
2026-04-17 09:09:50 +08:00
emptyState : 'Demarrer une conversation avec Hermes Agent' ,
2026-05-19 08:25:01 +08:00
outlineTitle : 'Plan de la conversation' ,
outlineEmpty : 'Aucun contenu de conversation' ,
outlineUserQuestion : 'Question utilisateur' ,
2026-04-17 09:09:50 +08:00
inputPlaceholder : 'Tapez un message... (Entree pour envoyer, Shift+Entree pour un saut de ligne)' ,
2026-05-15 12:04:03 +08:00
slashCommandArgs : {
message : '<message>' ,
title : '<titre>' ,
text : '<texte>' ,
} ,
slashCommands : {
usage : 'Calculer l’ utilisation de la session actuelle' ,
status : 'Afficher l’état de la session et la file' ,
abort : 'Arrêter l’ exécution Bridge active' ,
queue : 'Mettre un message en file après l’ exécution active' ,
clear : 'Effacer l’ affichage actuel' ,
clearHistory : 'Supprimer l’ historique des messages enregistrés de cette session' ,
title : 'Renommer cette session' ,
compress : 'Lancer la compression du contexte au repos' ,
steer : 'Envoyer un guidage à l’ exécution Bridge active' ,
destroy : 'Libérer l’ agent Bridge de cette session' ,
} ,
2026-04-17 09:09:50 +08:00
attachFiles : 'Joindre des fichiers' ,
2026-05-17 09:01:59 +08:00
showToolCalls : 'Afficher les appels d’ outils' ,
hideToolCalls : 'Masquer les appels d’ outils' ,
2026-05-07 10:34:58 +08:00
messageQueue : 'File de messages' ,
removeQueuedMessage : 'Retirer le message de la file' ,
2026-04-17 09:09:50 +08:00
stop : 'Arreter' ,
send : 'Envoyer' ,
contextUsed : 'Contexte utilise :' ,
sessions : 'Sessions' ,
2026-05-06 16:15:42 +08:00
webUiSessions : 'Sessions' ,
2026-05-19 16:09:59 +08:00
allProfiles : 'Tous les profils' ,
2026-05-02 03:00:47 +02:00
sessionScopeHint : 'Le chat affiche uniquement les sessions Web UI/API Server. Les sessions CLI, Telegram, Discord, Cron et autres canaux sont en lecture seule dans Historique.' ,
openHistory : 'Ouvrir l’ historique' ,
hermesHistory : 'Historique Hermes' ,
2026-05-19 16:09:59 +08:00
historyScopeHint : 'Sessions d’ historique Hermes du profil actuel en lecture seule, regroupées par source.' ,
2026-04-17 09:09:50 +08:00
noSessions : 'Aucune session' ,
newChat : 'Nouvelle discussion' ,
2026-05-16 00:11:51 +08:00
approvalKicker : 'Permission terminal' ,
approvalTitle : 'Vérifier la commande avant exécution' ,
approvalAllowOnce : 'Autoriser une fois' ,
approvalAllowSession : 'Autoriser la session' ,
approvalAlways : 'Toujours' ,
approvalDeny : 'Refuser' ,
2026-04-17 09:09:50 +08:00
deleteSession : 'Supprimer cette session ?' ,
2026-05-06 16:15:42 +08:00
toggleBatchMode : 'Sélection par lot' ,
selectAll : 'Tout sélectionner' ,
confirmBatchDelete : 'Supprimer {count} sessions sélectionnées?' ,
batchDeleteSuccess : '{count} sessions supprimées' ,
batchDeletePartial : '{failed} sessions ont échoué' ,
batchDeleteFailed : 'Échec de la suppression par lot' ,
2026-04-17 09:09:50 +08:00
sessionDeleted : 'Session supprimee' ,
rename : 'Renommer' ,
2026-04-22 02:09:58 +02:00
pin : 'Épingler' ,
unpin : 'Désépingler' ,
pinned : 'Épinglés' ,
2026-05-20 17:13:32 +08:00
chatMode : 'Mode chat' ,
2026-04-22 02:09:58 +02:00
liveMode : 'Direct' ,
liveSessions : 'Sessions en direct' ,
recentBadge : 'Récent' ,
linkedSessions : '{count} sessions liées' ,
noVisibleMessages : 'Aucun message visible par l’ humain.' ,
monitorRoleUser : 'Utilisateur' ,
monitorRoleAssistant : 'Assistant' ,
copySessionId : "Copier l'ID de session" ,
2026-05-07 13:49:57 +08:00
export : 'Exporter' ,
exportFull : 'Export complet (JSON)' ,
exportCompressed : 'Export compressé (TXT)' ,
exportCompressing : 'Compression du contexte, veuillez patienter...' ,
exportSuccess : 'Session exportée' ,
exportFailed : "Échec de l'export" ,
2026-04-17 09:09:50 +08:00
renamed : 'Renomme' ,
renameFailed : 'Echec du renommage' ,
renameSession : 'Renommer la session' ,
2026-05-03 22:10:40 +08:00
sessionNotFound : 'Session non trouvee' ,
2026-04-17 09:09:50 +08:00
enterNewTitle : 'Entrez un nouveau titre' ,
other : 'Autre' ,
runFailed : 'Echec de l\'execution' ,
error : 'Erreur' ,
tool : 'Outil' ,
arguments : 'Arguments' ,
result : 'Resultat' ,
truncated : '... (tronque)' ,
2026-05-20 17:13:32 +08:00
executionDuration : 'Temps d’ exécution' , thinkingLabel : 'Raisonnement' ,
2026-04-25 08:46:50 +08:00
thinkingInProgress : 'En réflexion…' ,
thinkingShow : 'Afficher le raisonnement' ,
thinkingHide : 'Masquer le raisonnement' ,
thinkingDuration : 'Observé {duration}' ,
thinkingChars : '{count} caractères' ,
2026-04-26 22:59:43 +08:00
copyBubble : 'Copier le message' ,
copiedBubble : 'Message copié' ,
copyFailed : 'Échec de la copie' ,
2026-05-02 13:26:57 +08:00
playSpeech : 'Lire à voix haute' ,
pauseSpeech : 'Pause' ,
resumeSpeech : 'Reprendre' ,
stopSpeech : 'Arrêter' ,
speechNotSupported : 'Reproduction vocale non prise en charge dans ce navigateur' ,
2026-05-20 17:13:32 +08:00
searchEnterHint : 'Entrée pour ouvrir · Échap pour fermer' ,
searchHint : 'Cmd/Ctrl+K' ,
searchScope : 'Portée de recherche : base locale des sessions Web UI uniquement ; les sessions d’ historique Hermes en lecture seule ne sont pas incluses.' ,
searchFailed : 'Échec de la recherche de sessions' ,
searchNoSnippet : 'Aucun extrait disponible' ,
searchNoResults : 'Aucune session correspondante' ,
searchRecent : 'Session récente' ,
searchEmpty : 'Sessions récentes' ,
searchPlaceholder : 'Rechercher des sessions...' ,
searchSubtitle : 'Rechercher par titre ou contenu des messages' ,
searchTitle : 'Rechercher des sessions' ,
stopGateway : 'Arrêter le gateway' ,
start : 'Démarrer' ,
workspaceSetFailed : 'Échec de la définition du workspace' ,
workspaceSet : 'Workspace défini' ,
workspacePlaceholder : 'Saisissez le chemin du projet, ex. /home/user/project' ,
workspace : 'Espace de travail' ,
setWorkspaceTitle : 'Définir le workspace de session' ,
setWorkspace : 'Définir le workspace' ,
modelSetFailed : 'Échec de la définition du modèle' ,
modelSet : 'Modèle défini' ,
setModelTitle : 'Définir le modèle de session' ,
setModel : 'Définir le modèle' ,
newCliChat : 'Nouveau CLI' ,
cliEmptyState : 'Démarrer un chat CLI' ,
autoPlaySpeech : 'Lire la voix automatiquement' ,
2026-04-17 09:09:50 +08:00
} ,
// Jobs
jobs : {
title : 'Taches planifiees' ,
createJob : 'Creer une tache' ,
editJob : 'Modifier la tache' ,
noJobs : 'Aucune tache planifiee. Creez-en une pour commencer.' ,
name : 'Nom' ,
namePlaceholder : 'Nom de la tache' ,
schedule : 'Planification (expression Cron)' ,
schedulePlaceholder : 'ex. 0 9 * * *' ,
quickPresets : 'Presets rapides' ,
selectPreset : 'Selectionner un preset...' ,
presetEveryMinute : 'Chaque minute' ,
presetEvery5Min : 'Toutes les 5 minutes' ,
presetEveryHour : 'Chaque heure' ,
presetEveryDay : 'Tous les jours a 00:00' ,
presetEveryDay9 : 'Tous les jours a 09:00' ,
presetEveryMonday : 'Chaque lundi a 09:00' ,
presetEveryMonth : 'Le 1er de chaque mois a 09:00' ,
prompt : 'Invite' ,
promptPlaceholder : 'L\'invite a executer' ,
deliverTarget : 'Cible de livraison' ,
origin : 'Origine' ,
local : 'Local' ,
repeatCount : 'Nombre de repetitions (facultatif)' ,
2026-04-30 10:17:25 +10:00
modelPlaceholder : 'Modele par defaut' ,
2026-04-17 09:09:50 +08:00
repeatPlaceholder : 'Laisser vide pour infini' ,
jobCreated : 'Tache creee' ,
jobUpdated : 'Tache mise a jour' ,
nameRequired : 'Le nom est requis' ,
scheduleRequired : 'La planification est requise' ,
loadFailed : 'Echec du chargement de la tache' ,
jobPaused : 'Tache en pause' ,
jobResumed : 'Tache reprise' ,
2026-04-30 10:17:25 +10:00
jobTriggered : 'Job declenche' ,
modelUpdated : 'Modele mis a jour' ,
2026-04-17 09:09:50 +08:00
jobDeleted : 'Tache supprimee' ,
status : {
running : 'En cours' ,
paused : 'En pause' ,
disabled : 'Desactivee' ,
scheduled : 'Planifiee' ,
} ,
info : {
2026-04-30 10:17:25 +10:00
model : 'Modele' ,
2026-04-17 09:09:50 +08:00
schedule : 'Planification' ,
lastRun : 'Derniere execution' ,
nextRun : 'Prochaine execution' ,
deliver : 'Livraison' ,
repeat : 'Repetition' ,
} ,
action : {
pause : 'Pause' ,
pauseJob : 'Mettre en pause' ,
resume : 'Reprendre' ,
resumeJob : 'Reprendre la tache' ,
runNow : 'Executer maintenant' ,
2026-04-30 10:17:25 +10:00
triggerImmediately : 'Déclencher immédiatement' ,
} ,
runHistory : {
title : 'Historique' ,
runs : 'exécutions' ,
noRuns : 'Aucun historique trouvé.' ,
2026-04-17 09:09:50 +08:00
} ,
} ,
// Skills
skills : {
title : 'Competences' ,
searchPlaceholder : 'Rechercher des competences...' ,
noMatch : 'Aucune competence ne correspond a votre recherche' ,
noSkills : 'Aucune competence trouvee' ,
backTo : 'Retour a' ,
attachedFiles : 'Fichiers joints' ,
loadFailed : 'Echec du chargement de la competence' ,
fileLoadFailed : 'Echec du chargement du fichier' ,
2026-05-02 10:56:58 +10:00
modified : "Modifi\u00e9 par l'utilisateur" ,
archived : 'Archivé' ,
pinned : 'Épinglé' ,
pin : 'Épingler la compétence' ,
unpin : 'Désépingler la compétence' ,
pinFailed : "Impossible de changer le statut d'épinglage" ,
2026-04-17 09:09:50 +08:00
toggleFailed : 'Echec de l\'activation/desactivation de la competence' ,
2026-05-02 10:56:58 +10:00
source : {
builtin : 'Intégré' ,
hub : 'Hub' ,
local : 'Local' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
2026-05-10 13:50:39 +02:00
// Plugins
plugins : {
title : 'Plugins' ,
refresh : 'Actualiser' ,
notice : 'Inventaire en lecture seule des manifests de plugins Hermes détectables. Les métadonnées de découverte sont lues sans charger le code des plugins. En v1, la gestion reste dans le CLI; les changements prennent effet dans les nouvelles sessions Hermes.' ,
loadFailed : 'Échec du chargement des plugins' ,
commandCopied : 'Commande copiée' ,
searchPlaceholder : 'Rechercher key, nom, description, chemin...' ,
source : 'Source' ,
kind : 'Type' ,
statusTitle : 'Statut' ,
configStatus : 'config : {status}' ,
notAvailable : 'n/a' ,
copyCommand : 'Copier la commande' ,
managedElsewhere : 'géré ailleurs' ,
noMatch : 'Aucun plugin ne correspond aux filtres actuels' ,
enabled : 'activé' ,
disabled : 'désactivé' ,
summary : {
total : 'Total' ,
active : 'Activé / auto' ,
inactive : 'Inactif' ,
disabled : 'Désactivé' ,
providerManaged : 'Géré par provider' ,
} ,
status : {
enabled : 'Activé' ,
'auto-active' : 'Auto-actif' ,
inactive : 'Inactif' ,
disabled : 'Désactivé' ,
'provider-managed' : 'Géré par provider' ,
} ,
statusLabel : {
enabled : 'Activé par configuration' ,
'auto-active' : 'Auto-actif' ,
inactive : 'Inactif' ,
disabled : 'Désactivé' ,
'provider-managed' : 'Géré par provider' ,
} ,
configStatuses : {
enabled : 'activé' ,
disabled : 'désactivé' ,
'not-enabled' : 'non activé' ,
auto : 'auto' ,
'provider-managed' : 'géré par provider' ,
} ,
table : {
plugin : 'Plugin' ,
status : 'Statut' ,
source : 'Source' ,
kind : 'Type' ,
capabilities : 'Capacités' ,
path : 'Chemin / entrypoint' ,
cli : 'CLI' ,
} ,
capabilities : {
tools : '{count} outils' ,
hooks : '{count} hooks' ,
env : '{count} env' ,
} ,
metadata : {
2026-05-20 17:13:32 +08:00
agentRoot : 'Racine de l’ agent' ,
2026-05-10 13:50:39 +02:00
python : 'Python' ,
2026-05-20 17:13:32 +08:00
scanCwd : 'Analyser cwd' ,
2026-05-10 13:50:39 +02:00
projectPlugins : 'Plugins du projet' ,
} ,
} ,
2026-04-17 09:09:50 +08:00
// Memory
memory : {
title : 'Memoire' ,
refresh : 'Actualiser' ,
loadFailed : 'Echec du chargement de la memoire' ,
myNotes : 'Mes notes' ,
noNotes : 'Aucune note pour l\'instant.' ,
notesPlaceholder : 'Ecrivez vos notes...' ,
userProfile : 'Profil utilisateur' ,
noProfile : 'Aucun profil pour l\'instant.' ,
profilePlaceholder : 'Ecrivez votre profil...' ,
soul : 'Ame' ,
noSoul : 'Aucune configuration d\'ame pour l\'instant.' ,
soulPlaceholder : 'Ecrivez la configuration de l\'ame...' ,
} ,
// Models
models : {
title : 'Modeles' ,
addProvider : 'Ajouter un fournisseur' ,
providerType : 'Type de fournisseur' ,
2026-05-20 17:13:32 +08:00
preset : 'Préréglage' ,
2026-04-17 09:09:50 +08:00
custom : 'Personnalise' ,
selectProvider : 'Selectionner un fournisseur' ,
chooseProvider : 'Choisir un fournisseur...' ,
name : 'Nom' ,
autoGeneratedName : 'Genere automatiquement a partir de l\'URL de base' ,
baseUrl : 'URL de base' ,
2026-04-25 14:00:07 +08:00
region : 'Région' ,
regionIntl : 'International' ,
regionCn : 'Chine continentale' ,
2026-04-17 09:09:50 +08:00
baseUrlPlaceholder : 'ex. https://api.example.com/v1' ,
apiKey : 'Cle API' ,
apiKeyPlaceholder : 'sk-...' ,
defaultModel : 'Modele par defaut' ,
2026-04-17 22:05:06 +08:00
selectOrInput : 'Sélectionner ou saisir un modèle...' ,
2026-04-17 09:09:50 +08:00
selectModel : 'Selectionner un modele...' ,
providerAdded : 'Fournisseur ajoute' ,
providerDeleted : 'Fournisseur supprime' ,
deleteProvider : 'Supprimer le fournisseur' ,
deleteConfirm : 'Etes-vous sur de vouloir supprimer "{name}" ?' ,
2026-04-17 23:11:57 +08:00
codexLoginTitle : 'Connexion OpenAI Codex' ,
codexWaiting : 'Entrez ce code sur la page d\'autorisation pour vous connecter :' ,
codexCopyCode : 'Code copié' ,
codexOpenLink : 'Ouvrir la page d\'autorisation' ,
codexApproved : 'Connexion réussie' ,
codexExpired : 'L\'autorisation a expiré. Veuillez réessayer.' ,
2026-04-23 08:39:19 +08:00
nousLoginTitle : 'Connexion Nous Portal' ,
nousWaiting : 'Entrez ce code sur la page d\'autorisation:' ,
nousCopyCode : 'Code copié' ,
nousOpenLink : 'Ouvrir la page d\'autorisation' ,
nousApproved : 'Connexion réussie' ,
nousDenied : 'Autorisation refusée' ,
nousExpired : 'Autorisation expirée' ,
2026-04-26 22:51:35 +08:00
copilotLoginTitle : 'Connexion GitHub Copilot' ,
copilotWaiting : 'Ouvrez GitHub et saisissez le code ci-dessous pour autoriser. La fenêtre se fermera automatiquement après approbation.' ,
copilotCopyCode : 'Code copié' ,
copilotOpenLink : 'Ouvrir la page d\'autorisation GitHub' ,
copilotApproved : 'Connexion réussie !' ,
copilotDenied : 'Autorisation refusée.' ,
copilotExpired : 'Le lien d\'autorisation a expiré. Veuillez réessayer.' ,
copilotAddDetectedTitle : 'GitHub Copilot détecté' ,
copilotAddDetected : 'Un token OAuth GitHub Copilot a été détecté sur cette machine. Cliquez sur Ajouter pour activer Copilot dans Hermes.' ,
copilotAddSourceEnv : 'Source : ~/.hermes/.env (COPILOT_GITHUB_TOKEN)' ,
copilotAddSourceGhCli : 'Source : gh CLI (gh auth token)' ,
copilotAddSourceAppsJson : 'Source : extension Copilot de VS Code (apps.json)' ,
copilotDeleteHintEnv : 'Cela supprimera COPILOT_GITHUB_TOKEN dans ~/.hermes/.env. Les autres outils ne sont pas affectés.' ,
copilotDeleteHintGhCli : 'Copilot sera masqué dans Hermes. Votre connexion gh CLI n\'est pas affectée — `gh auth status` indiquera toujours que vous êtes connecté.' ,
copilotDeleteHintAppsJson : 'Copilot sera masqué dans Hermes. Votre extension Copilot de VS Code reste connectée.' ,
2026-04-24 08:49:45 +08:00
customBadge : 'PERSONNALISÉ' ,
2026-04-26 22:51:35 +08:00
previewBadge : 'APERÇU' ,
disabledBadge : 'INDISPONIBLE' ,
disabledTooltip : "Ce modèle n'est pas disponible pour votre compte." ,
2026-05-11 16:18:13 +02:00
customModelPlaceholder : 'ID de modèle non listé' ,
customModelHint : 'Pour les modèles pris en charge par le fournisseur mais non renvoyés par l’ API ; ce n’ est pas un renommage affiché. Entrée pour charger.' ,
2026-04-17 09:09:50 +08:00
noProviders : 'Aucun fournisseur trouve. Ajoutez un fournisseur personnalise pour commencer.' ,
2026-05-14 23:36:07 +08:00
clearVisibleModels : 'Effacer la sélection' ,
2026-05-19 16:09:59 +08:00
currentDefault : 'Par défaut actuel' ,
defaultShort : 'Défaut' ,
2026-04-17 09:09:50 +08:00
builtIn : 'Integre' ,
customType : 'Personnalise' ,
provider : 'Fournisseur' ,
2026-04-24 11:18:11 +08:00
contextLength : 'Longueur du contexte' ,
contextLengthPlaceholder : 'ex. 200000 (facultatif)' ,
2026-04-17 09:09:50 +08:00
local : 'Local ({host})' ,
selectProviderRequired : 'Veuillez selectionner un fournisseur' ,
baseUrlRequired : 'L\'URL de base est requise' ,
apiKeyRequired : 'La cle API est requise' ,
modelRequired : 'Le modele par defaut est requis' ,
enterBaseUrl : 'Veuillez d\'abord entrer l\'URL de base' ,
unexpectedFormat : 'Format de reponse inattendu' ,
foundModels : '{count} modeles trouves' ,
fetchFailed : 'Echec de la recuperation des modeles' ,
2026-05-20 17:13:32 +08:00
xaiWaiting : 'Terminez l’ autorisation sur la page xAI ouverte. La fenêtre se fermera automatiquement après approbation.' ,
xaiOpenLink : 'Ouvrir la page d’ autorisation xAI' ,
xaiLoginTitle : 'Connexion OAuth xAI Grok' ,
xaiExpired : 'Le lien d’ autorisation a expiré. Veuillez réessayer.' ,
xaiCopyLink : 'Copier le lien d’ autorisation' ,
xaiApproved : 'Connexion réussie !' ,
visibilitySelectOne : 'Conserver au moins un modèle visible' ,
visibilitySaved : 'Modèles visibles enregistrés' ,
visibilitySaveFailed : 'Échec de l’ enregistrement des modèles visibles' ,
visibilityHint : 'Affecte uniquement le sélecteur de modèles et la page Modèles de la Web UI. La configuration provider/model de Hermes CLI n’ est pas modifiée ; les appels utilisent toujours l’ ID de modèle d’ origine.' ,
showAllModels : 'Afficher tous les modèles' ,
searchPlaceholder : 'Rechercher des modèles...' ,
removeCustomModel : 'Retirer ce modèle non listé' ,
more : 'de plus' ,
models : 'Liste des modèles' ,
manageVisibleModelsFor : 'Gérer les modèles visibles de {name}' ,
manageVisibleModels : 'Gérer les modèles visibles' ,
getApiKey : 'Obtenir une API Key' ,
count : 'modèles' ,
aliasUseOriginal : 'Restaurer l’ ID d’ origine' ,
aliasTitleFor : 'Nom affiché pour {model}' ,
aliasTitle : 'Nom affiché du modèle' ,
aliasSaveFailed : 'Échec de l’ enregistrement du nom affiché' ,
aliasPlaceholder : 'Laisser vide pour utiliser l’ ID de modèle d’ origine' ,
aliasManageFor : 'Noms affichés pour {provider}' ,
aliasManage : 'Noms affichés' ,
aliasHint : 'Modifie uniquement le nom affiché dans la Web UI. Hermes reçoit toujours l’ ID de modèle d’ origine.' ,
aliasEdit : 'Renommer' ,
aliasCanonical : 'ID d’ origine : {model}' ,
2026-04-17 09:09:50 +08:00
} ,
// Profiles
profiles : {
title : 'Profils' ,
create : 'Creer un profil' ,
import : 'Importer' ,
export : 'Exporter' ,
rename : 'Renommer' ,
delete : 'Supprimer' ,
switchTo : 'Passer a' ,
switchConfirm : 'Le passage au profil "{name}" redemarrera la passerelle. Continuer ?' ,
switchSuccess : 'Profil "{name}" actif' ,
switchFailed : 'Echec du changement de profil. La passerelle peut necessiter un redemarrage manuel.' ,
createSuccess : 'Profil "{name}" cree' ,
createFailed : 'Echec de la creation du profil' ,
renameSuccess : 'Profil renomme' ,
renameFailed : 'Echec du renommage du profil' ,
deleteConfirm : 'Etes-vous sur de vouloir supprimer le profil "{name}" ?' ,
deleteSuccess : 'Profil supprime' ,
deleteFailed : 'Echec de la suppression du profil' ,
exportSuccess : 'Profil exporte' ,
exportFailed : 'Echec de l\'exportation du profil' ,
importSuccess : 'Profil importe' ,
importFailed : 'Echec de l\'importation du profil' ,
importSelectFile : 'Selectionner un fichier d\'archive' ,
importInvalidFile : 'Veuillez selectionner une archive valide (.tar.gz, .tgz, .gz, .zip)' ,
name : 'Nom du profil' ,
namePlaceholder : 'Lettres, chiffres et tirets uniquement' ,
2026-05-03 22:10:40 +08:00
nameValidation : 'Le nom du profil ne peut contenir que des lettres minuscules, des chiffres, des tirets bas et des tirets' ,
2026-04-17 09:09:50 +08:00
newName : 'Nouveau nom' ,
newNamePlaceholder : 'Entrez un nouveau nom' ,
cloneFromCurrent : 'Cloner depuis le profil actuel' ,
2026-04-29 20:31:24 +08:00
cloneCleanupNotice : 'Lors du clonage, les identifiants de plateformes exclusives (Weixin / Telegram / Slack, etc.) sont automatiquement ignorés pour éviter les conflits avec le profil source' ,
cloneStrippedCredentials : '{count} identifiant(s) exclusif(s) supprimé(s) : {list}' ,
cloneDisabledPlatforms : '{count} plateforme(s) désactivée(s) : {list}' ,
cloneStrippedConfigCredentials : '{count} identifiant(s) intégré(s) supprimé(s) de config.yaml : {list}' ,
2026-04-17 09:09:50 +08:00
archivePath : 'Chemin de l\'archive' ,
archivePathPlaceholder : 'Chemin serveur du fichier d\'archive' ,
importName : 'Nom du profil (facultatif)' ,
importNamePlaceholder : 'Laisser vide pour utiliser le nom de l\'archive' ,
active : 'Actif' ,
model : 'Modele' ,
gateway : 'Passerelle' ,
alias : 'Alias' ,
provider : 'Fournisseur' ,
path : 'Chemin' ,
skills : 'Competences' ,
hasEnv : 'A un .env' ,
hasSoulMd : 'A un soul.md' ,
noProfiles : 'Aucun profil trouve. Creez-en un pour commencer.' ,
2026-05-20 14:15:01 +08:00
avatar : {
2026-05-20 17:13:32 +08:00
title : 'Avatar personnalisé' ,
customize : 'Personnaliser l’ avatar' ,
upload : 'Importer une image' ,
random : 'Générer au hasard' ,
reset : 'Restaurer par défaut' ,
hint : 'PNG, JPEG ou WebP, 1 Mo maximum' ,
invalidType : 'Veuillez choisir une image PNG, JPEG ou WebP' ,
tooLarge : 'L’ image d’ avatar ne doit pas dépasser 1 Mo' ,
saveSuccess : 'Avatar enregistré' ,
saveFailed : 'Échec de l’ enregistrement de l’ avatar' ,
resetSuccess : 'Avatar par défaut restauré' ,
resetFailed : 'Échec de la restauration de l’ avatar par défaut' ,
} ,
runtime : {
activeProfile : 'Actuel : {name}' ,
bridgeWorker : 'État du Bridge' ,
gateway : 'Passerelle' ,
active : 'Actif' ,
activeTag : 'Actuel' ,
idle : 'Inactif' ,
running : 'En cours' ,
stopped : 'Arrêté' ,
restartGateway : 'Redémarrer le gateway' ,
restartProfile : 'Redémarrer le profil' ,
switchProfile : 'Changer de profil' ,
gatewayRestarted : 'Gateway redémarré : {name}' ,
gatewayRestartFailed : 'Échec du redémarrage du gateway' ,
profileRestarted : 'Profil redémarré : {name}' ,
profileRestartFailed : 'Échec du redémarrage du profil' ,
2026-05-20 14:15:01 +08:00
} ,
2026-04-17 09:09:50 +08:00
} ,
// Logs
logs : {
title : 'Journaux' ,
all : 'Tout' ,
searchPlaceholder : 'Rechercher...' ,
refresh : 'Actualiser' ,
noEntries : 'Aucune entree de journal' ,
} ,
// Settings
settings : {
title : 'Parametres' ,
saved : 'Enregistre' ,
saveFailed : 'Echec de l\'enregistrement' ,
tabs : {
display : 'Affichage' ,
2026-04-22 20:27:33 +08:00
account : 'Compte' ,
2026-04-17 09:09:50 +08:00
agent : 'Agent' ,
memory : 'Memoire' ,
2026-05-19 17:58:39 +08:00
compression : 'Compression' ,
2026-04-17 09:09:50 +08:00
session : 'Session' ,
privacy : 'Confidentialite' ,
apiServer : 'Serveur API' ,
2026-05-10 20:08:38 +08:00
models : 'Modèles' ,
voice : 'Voix' ,
2026-04-17 09:09:50 +08:00
} ,
display : {
streaming : 'Reponses en continu' ,
streamingHint : 'Afficher les reponses de l\'IA en temps reel' ,
compact : 'Mode compact' ,
compactHint : 'Reduire l\'espacement des messages' ,
showReasoning : 'Afficher le raisonnement' ,
showReasoningHint : 'Afficher le processus de reflexion du modele' ,
showCost : 'Afficher le cout' ,
showCostHint : 'Afficher l\'utilisation des jetons dans les reponses' ,
inlineDiffs : 'Diffs en ligne' ,
inlineDiffsHint : 'Afficher les changements de code en ligne' ,
bellOnComplete : 'Son de fin' ,
bellOnCompleteHint : 'Jouer un son lorsque l\'IA a termine' ,
busyInputMode : 'Mode saisie active' ,
busyInputModeHint : 'Permettre la saisie pendant le traitement de l\'IA' ,
2026-05-20 17:13:32 +08:00
theme : 'Thème' ,
2026-04-17 09:09:50 +08:00
themeHint : 'Choisir clair, sombre ou suivre les preferences du systeme' ,
themeLight : 'Clair' ,
themeDark : 'Sombre' ,
themeSystem : 'Systeme' ,
} ,
agent : {
maxTurns : 'Tours maximum' ,
maxTurnsHint : 'Nombre maximum de tours d\'interaction par conversation' ,
gatewayTimeout : 'Delai d\'attente de la passerelle' ,
gatewayTimeoutHint : 'Delai d\'attente de la requete en secondes' ,
restartDrainTimeout : 'Delai de vidange au redemarrage' ,
restartDrainTimeoutHint : 'Delai de vidange avant redemarrage en secondes' ,
toolEnforcement : 'Application des outils' ,
toolEnforcementHint : 'Controler le mode d\'execution des appels d\'outils' ,
auto : 'Automatique' ,
always : 'Toujours' ,
never : 'Jamais' ,
} ,
memory : {
enabled : 'Activer la memoire' ,
enabledHint : 'Permettre a l\'IA de memoriser le contexte de conversation' ,
userProfile : 'Profil utilisateur' ,
userProfileHint : 'Permettre a l\'IA de memoriser les preferences utilisateur' ,
charLimit : 'Limite de caracteres de la memoire' ,
charLimitHint : 'Nombre maximum de caracteres pour MEMORY.md' ,
userCharLimit : 'Limite de caracteres du profil utilisateur' ,
userCharLimitHint : 'Nombre maximum de caracteres pour USER.md' ,
} ,
2026-05-19 17:58:39 +08:00
compression : {
enabled : 'Activer la compression' ,
enabledHint : 'Compresser automatiquement un long historique avant de depasser le contexte du modele' ,
threshold : 'Seuil de compression' ,
thresholdHint : 'Demarrer la compression quand les jetons estimes depassent ce ratio de contexte' ,
targetRatio : 'Ratio cible' ,
targetRatioHint : 'Taille cible de l\'historique apres compression comme ratio du contexte' ,
protectLastN : 'Proteger les messages recents' ,
protectLastNHint : 'Garder autant de messages recents non compresses' ,
protectFirstN : 'Proteger les premiers messages' ,
protectFirstNHint : 'Garder autant de premiers messages non compresses' ,
} ,
2026-04-17 09:09:50 +08:00
session : {
mode : 'Mode de reinitialisation' ,
modeHint : 'Condition de declenchement de la reinitialisation de session' ,
modeBoth : 'Inactivite + Planifie' ,
modeIdle : 'Inactivite uniquement' ,
2026-05-16 21:18:59 +08:00
modeDaily : 'Planifie uniquement' ,
modeNone : 'Jamais (manuel uniquement)' ,
2026-04-17 09:09:50 +08:00
idleMinutes : 'Delai d\'inactivite' ,
idleMinutesHint : 'Temps d\'attente avant reinitialisation automatique (minutes)' ,
atHour : 'Heure de reinitialisation planifiee' ,
2026-04-22 02:09:58 +02:00
humanOnly : 'Afficher uniquement les sessions humaines' ,
humanOnlyHint : 'Masquer par défaut le bruit des sous-agents et du moniteur de session' ,
liveMonitorHumanOnly : 'Moniteur live : n’ afficher que les sessions humaines' ,
liveMonitorHumanOnlyHint : 'Masquer par défaut le bruit des sous-agents et du moniteur de session dans le moniteur live' ,
2026-04-17 09:09:50 +08:00
atHourHint : 'Reinitialiser la session a cette heure chaque jour' ,
2026-05-04 21:29:39 +08:00
requireAuth : 'Autorisation de session' ,
requireAuthHint : 'Requiere l\'autorisation pour les operations de session' ,
2026-04-17 09:09:50 +08:00
} ,
privacy : {
redactPii : 'Masquer les DPI' ,
redactPiiHint : 'Detecter et masquer automatiquement les informations sensibles (mots de passe, cles, etc.)' ,
} ,
apiServer : {
enable : 'Activer' ,
enableHint : 'Activer le serveur API' ,
host : 'Hote' ,
hostHint : 'Adresse d\'ecoute' ,
port : 'Port' ,
portHint : 'Port d\'ecoute' ,
key : 'Cle' ,
keyHint : 'Cle d\'acces API' ,
cors : 'Origines CORS' ,
corsHint : 'Sources cross-origin autorisees' ,
} ,
2026-05-10 20:08:38 +08:00
voice : {
ttsProvider : 'Fournisseur TTS' ,
ttsProviderHint : 'Choisir le moteur de synthese vocale pour la lecture des messages' ,
providerWebSpeech : 'WebSpeech API (Navigateur)' ,
providerOpenai : 'OpenAI TTS' ,
providerCustom : "Point d'acces personnalise (compatible OpenAI)" ,
providerEdge : 'Edge TTS (Gratuit, sans cle API)' ,
// WebSpeech
webspeechVoice : 'Voix' ,
webspeechVoiceHint : "Choisir une voix depuis le navigateur ou l'OS" ,
webspeechVoicePlaceholder : 'Auto (voix par defaut)' ,
// OpenAI
openaiKey : 'Cle API' ,
openaiKeyHint : 'Votre cle API OpenAI avec acces TTS' ,
openaiUrl : 'URL de base API' ,
openaiUrlHint : 'ex. https://api.openai.com/v1/audio/speech' ,
openaiModel : 'Modele' ,
openaiModelHint : 'tts-1 (rapide) / tts-1-hd (haute qualite)' ,
openaiVoice : 'Voix' ,
openaiVoiceHint : 'Voix a utiliser pour la synthese' ,
// Custom endpoint
customHint : 'Utilisez toute API TTS compatible OpenAI — fonctionne avec GPT-SoVITS, CosyVoice, etc.' ,
customUrl : 'URL API' ,
customUrlHint : 'URL de base de votre service TTS' ,
customUrlPlaceholder : "Adresse configuree dans l'adaptateur local, ex. http://127.0.0.1:9880" ,
customApiKey : 'Cle API (optionnelle)' ,
customApiKeyHint : "Certains points d'acces personnalises necessitent une authentification" ,
customApiKeyPlaceholder : 'Laisser vide si inutile' ,
// Edge TTS
edgeHint : 'Propulse par Microsoft Edge TTS (node-edge-tts).' ,
edgeUrl : "URL de l'adaptateur" ,
edgeUrlHint : "Adresse de l'adaptateur Edge TTS, ex. http://127.0.0.1:9882" ,
edgeUrlPlaceholder : 'http://127.0.0.1:9882' ,
edgeVoice : 'Voix' ,
edgeVoiceHint : 'Choisir une voix pour la synthese vocale' ,
2026-05-11 21:56:11 +08:00
edgeRate : 'Vitesse' ,
edgeRateHint : "Ajuster la vitesse de la voix (0.5x ~ 2.0x)" ,
edgePitch : 'Hauteur' ,
edgePitchHint : "Ajuster la hauteur de la voix (-20 ~ +20 Hz)" ,
2026-05-10 20:08:38 +08:00
// Test
testTitle : 'Test vocal' ,
testText : 'Texte de test' ,
testTextPlaceholder : 'Entrez le texte a tester...' ,
testTextDefault : 'Bonjour, ceci est un test vocal.' ,
testButton : 'Tester' ,
testButtonPlaying : 'Lecture...' ,
testFailed : 'Echec du test : {error}' ,
2026-05-16 08:55:23 +08:00
// MiMo TTS
providerMimo : 'MiMo TTS' ,
mimoHint : 'Xiaomi MiMo TTS — voices predefinies, conception vocale et clonage vocal' ,
mimoApiKey : 'Cle API' ,
mimoApiKeyHint : 'Obtenez votre cle sur platform.xiaomimimo.com' ,
mimoApiKeyPlaceholder : 'Cle API MiMo' ,
mimoBaseUrl : 'URL de base' ,
mimoBaseUrlHint : 'URL de l\'endpoint API MiMo' ,
mimoModel : 'Modele' ,
mimoModelHint : 'Selectionnez le modele de synthese vocale' ,
mimoModelPreset : 'Voix predefinies' ,
mimoModelVoiceDesign : 'Conception vocale' ,
mimoModelVoiceClone : 'Clonage vocal' ,
mimoVoice : 'Voix' ,
mimoVoiceHint : 'Selectionnez une voix predefinie' ,
mimoVoiceDesignPrompt : 'Description vocale' ,
mimoVoiceDesignPromptHint : 'Decrivez les caracteristiques vocales souhaitees' ,
mimoVoiceDesignPromptPlaceholder : 'Ex : Une voix feminine chaude et jeune, legerement lente, avec un ton magnetique' ,
mimoCloneAudio : 'Televerser un audio' ,
mimoCloneAudioHint : 'Televersez un echantillon audio pour le clonage (mp3/wav, max 10 Mo)' ,
mimoCloneAudioUpload : 'Choisir un fichier' ,
mimoCloneAudioClear : 'Effacer' ,
mimoStylePrompt : 'Invite de style' ,
mimoStylePromptHint : 'Optionnel — decrivez le style de parole en langage naturel' ,
mimoStylePromptPlaceholder : 'Ex : Ton vif et entrain, rythme rapide' ,
2026-05-10 20:08:38 +08:00
} ,
2026-05-08 18:29:43 +08:00
lockedIps : {
title : 'IPs bloquees' ,
count : '{count} bloquees' ,
empty : 'Aucune IP bloquee' ,
unlock : 'Debloquer' ,
unlockAll : 'Tout debloquer' ,
unlockAllConfirm : 'Debloquer toutes les IPs?' ,
unlocked : 'IP debloquee' ,
allUnlocked : '{count} IPs debloquees' ,
} ,
2026-05-20 17:13:32 +08:00
models : {
apiKey : 'API Key' ,
apiKeyPlaceholder : 'Saisir l’ API Key' ,
noProviders : 'Aucun fournisseur configuré' ,
save : 'Enregistrer' ,
saveFailed : 'Échec de l’ enregistrement' ,
saved : 'Enregistré' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
// Platform channel settings
platform : {
requireMention : "Exiger une mention {'@'}" ,
requireMentionGroup : "Exiger une mention {'@'} dans les groupes pour repondre" ,
requireMentionChannel : "Exiger une mention {'@'} dans les canaux pour repondre" ,
requireMentionRoom : "Exiger une mention {'@'} dans les salles pour repondre" ,
2026-05-20 17:13:32 +08:00
reactions : 'Réactions' ,
2026-04-17 09:09:50 +08:00
reactionsHint : 'Reagir aux messages avec des emoji' ,
freeResponseChats : 'Discussions en reponse libre' ,
freeResponseChatsHint : "ID de discussions repondant sans mention {'@'} (separes par des virgules)" ,
freeResponseChannels : 'Canaux en reponse libre' ,
freeResponseChannelsHint : "ID de canaux repondant sans mention {'@'} (separes par des virgules)" ,
freeResponseRooms : 'Salles en reponse libre' ,
freeResponseRoomsHint : "ID de salles repondant sans mention {'@'} (separes par des virgules)" ,
mentionPatterns : 'Motifs de mention personnalises' ,
mentionPatternsHint : 'Motifs de declenchement supplementaires' ,
autoThread : 'Fil automatique' ,
autoThreadHint : "Creer automatiquement des fils de reponse apres une mention {'@'}" ,
autoThreadHintRoom : 'Creer automatiquement des fils de reponse dans les salles' ,
dmMentionThreads : 'Fils de mention en MP' ,
dmMentionThreadsHint : 'Utiliser des fils de reponse pour les mentions en MP' ,
allowBots : 'Autoriser les messages de bots' ,
allowBotsHint : 'Repondre aux messages d\'autres bots' ,
allowedChannels : 'Canaux autorises' ,
allowedChannelsHint : 'Liste blanche des ID de canaux (separes par des virgules)' ,
ignoredChannels : 'Canaux ignores' ,
ignoredChannelsHint : 'Canaux ou le bot ne repond jamais (separes par des virgules)' ,
noThreadChannels : 'Canaux sans fil' ,
noThreadChannelsHint : 'Canaux ou le bot repond sans fil (separes par des virgules)' ,
2026-04-29 20:31:24 +08:00
exclusiveTokenWarning : 'Cette plateforme utilise un verrou de jeton exclusif. Chaque profil doit utiliser un jeton d\'identite different pour eviter les conflits avec les autres profils.' ,
2026-04-17 09:09:50 +08:00
botToken : 'Jeton de bot' ,
botTokenHint : 'Jeton de bot depuis le portail developpeur' ,
accessToken : 'Jeton d\'acces' ,
accessTokenHint : 'Jeton d\'acces Matrix' ,
homeserver : 'URL du serveur domestique' ,
homeserverHint : 'URL du serveur domestique Matrix' ,
appId : 'ID de l\'application' ,
appIdHint : 'ID de l\'application Feishu' ,
appSecret : 'Secret de l\'application' ,
appSecretHint : 'Secret de l\'application Feishu' ,
clientId : 'ID client' ,
clientIdHint : 'ID client DingTalk' ,
clientSecret : 'Secret client' ,
clientSecretHint : 'Secret client DingTalk' ,
botId : 'ID du bot' ,
botIdHint : 'ID du bot WeCom' ,
wecomSecretHint : 'Secret du bot WeCom' ,
waEnabled : 'Activer WhatsApp' ,
waEnabledHint : 'Activer WhatsApp via appairage par code QR' ,
weixinToken : 'Jeton Weixin' ,
weixinTokenHint : 'Depuis la connexion QR de la CLI weixin (hermes weixin)' ,
accountId : 'ID de compte' ,
accountIdHint : 'ID du compte Weixin' ,
qrLogin : 'Connexion QR' ,
qrRelogin : 'Reconnexion' ,
qrFetching : 'Recuperation du code QR...' ,
qrScanHint : 'Scannez avec WeChat pour vous connecter' ,
qrScanedHint : 'Scanne, veuillez confirmer sur le telephone...' ,
2026-05-20 17:13:32 +08:00
qqSandboxHint : 'Activer l’ environnement sandbox (pour les tests)' ,
qqSandbox : 'Mode sandbox' ,
qqQrScanHint : 'Scannez le QR code avec QQ ou ouvrez le lien sur téléphone pour terminer l’ association' ,
qqMarkdownHint : 'Activer les messages au format Markdown (certains clients peuvent ne pas le prendre en charge)' ,
qqMarkdown : 'Support Markdown' ,
qqAppSecretHint : 'App Secret du bot QQ Open Platform' ,
qqAppSecret : 'App Secret' ,
qqAppIdHint : 'App ID du bot QQ Open Platform' ,
qqAppId : 'App ID' ,
allowedUsersHint : 'Liste blanche d’ ID utilisateur ou OpenID, séparés par des virgules' ,
allowedUsers : 'Utilisateurs autorisés' ,
allowAllUsersHint : 'Autoriser les messages de tout utilisateur ; désactivez pour utiliser la liste blanche' ,
allowAllUsers : 'Autoriser tous les utilisateurs' ,
2026-04-17 09:09:50 +08:00
} ,
// Language
language : {
label : 'Langue' ,
zh : '中文' ,
en : 'English' ,
fr : 'Francais' ,
} ,
// Terminal
terminal : {
sessions : 'Sessions' ,
newTab : 'Nouveau terminal' ,
closeSession : 'Fermer cette session ?' ,
sessionExited : 'Terminee' ,
processExited : 'Processus termine avec le code {code}' ,
2026-05-20 17:13:32 +08:00
noSessions : 'Aucune session terminal' ,
connectionFailed : 'Connexion au terminal impossible' ,
connectionError : 'Erreur de connexion' ,
connectionClosed : 'Connexion fermée' ,
2026-04-17 09:09:50 +08:00
} ,
// Usage
usage : {
title : 'Statistiques d\'utilisation' ,
refresh : 'Actualiser' ,
totalTokens : 'Total des jetons' ,
inputTokens : 'Entree' ,
outputTokens : 'Sortie' ,
totalSessions : 'Total des sessions' ,
avgPerDay : '~{n}/jour en moy.' ,
estimatedCost : 'Cout est.' ,
cacheHitRate : 'Taux de succes du cache' ,
modelBreakdown : 'Repartition par modele' ,
2026-05-13 01:41:49 +02:00
dailyTrend : 'Utilisation quotidienne' ,
2026-04-17 09:09:50 +08:00
date : 'Date' ,
tokens : 'Jetons' ,
cache : 'Cache' ,
2026-05-20 17:13:32 +08:00
cacheRead : 'Lecture cache' ,
cacheWrite : 'Écriture cache' ,
2026-04-17 09:09:50 +08:00
sessions : 'Sessions' ,
cost : 'Cout' ,
noData : 'Aucune donnee d\'utilisation' ,
} ,
2026-04-22 20:27:33 +08:00
2026-05-14 09:28:51 +08:00
skillsUsage : {
title : 'Utilisation des compétences' ,
subtitle : 'Suivre les chargements et modifications de compétences dans les sessions Hermes' ,
refresh : 'Actualiser' ,
periodSelector : 'Période d\'utilisation des compétences' ,
periodLabel : '{days} j' ,
summary : 'Résumé' ,
totalActions : 'Act.' ,
loads : 'Charg.' ,
edits : 'Modif.' ,
distinctSkills : 'Comp.' ,
topSkills : 'Top comp.' ,
dailyTrend : 'Tendance' ,
periodSummary : '{days} derniers jours' ,
skill : 'Comp.' ,
share : '%' ,
lastUsed : 'Dern. usage' ,
noData : 'Aucune donnée d\'utilisation des compétences' ,
loadFailed : 'Impossible de charger l\'utilisation des compétences' ,
otherSkills : 'Autres comp.' ,
} ,
2026-04-22 20:27:33 +08:00
// Journal des modifications
changelog : {
2026-05-01 11:27:43 +08:00
2026-05-11 20:08:13 +08:00
new_0_5_17_1 : 'Compatibilité Windows complète : gestion des chemins, des processus, terminal, analyse des logs' ,
new_0_5_17_2 : 'Refonte de la gestion des processus Gateway avec démarrage/arrêt/health-check multiplateforme' ,
new_0_5_17_3 : 'Correction de la découverte des plugins sur Termux en analysant le shebang hermes pour localiser Python' ,
2026-05-11 22:15:41 +08:00
new_0_5_17_4 : 'Tolérer les clés YAML en double lors de l\'analyse de la configuration' ,
2026-05-11 20:08:13 +08:00
new_0_5_17_5 : 'Amélioration de la fenêtre de verrouillage d\'authentification et du processus d\'arrêt en dev' ,
new_0_5_17_6 : 'Thème Comic : polices manuscrites pour chinois (ZCOOL KuaiLe), japonais (Zen Maru Gothic), coréen (Gaegu)' ,
2026-05-11 22:15:41 +08:00
new_0_5_17_7 : 'Ajouter le style de thème Comic/doodle' ,
new_0_5_17_8 : 'Changer la licence en BSL-1.1' ,
new_0_5_17_9 : 'Ajouter une page de plugins Hermes en lecture seule' ,
new_0_5_17_10 : 'Convertir les téléchargements d\'images au format multimodal base64' ,
new_0_5_17_11 : 'Corriger la sélection et l\'isolation du tableau Kanban' ,
new_0_5_17_12 : 'Ajouter les paramètres de lecture vocale avec support TTS de 4 fournisseurs' ,
new_0_5_17_13 : 'Réduire le seuil de compression de contexte de 200 à 150 messages' ,
new_0_5_17_14 : 'Corriger la logique de redémarrage de la mise à jour automatique de la Web UI' ,
new_0_5_17_15 : 'Corriger la variable d\'environnement partagée opencode-zen et opencode-go causant un couplage de configuration' ,
new_0_5_17_16 : 'Ajouter la prise en charge du chinois traditionnel (zh-TW)' ,
new_0_5_17_17 : 'Gérer les modèles visibles dans la Web UI' ,
new_0_5_17_18 : 'Kanban : chaîne d\'action complète des tâches (commentaires, logs, affectation, envoi) avec limites de capacités' ,
new_0_5_17_19 : 'Corriger les entrées d\'authentification fournisseur non effacées lors de la suppression' ,
new_0_5_17_20 : 'Corriger la reconnaissance d\'authentification credential-pool de Codex' ,
new_0_5_17_21 : 'Ajouter les curseurs de vitesse/hauteur Edge TTS aux paramètres vocaux' ,
new_0_5_17_22 : 'Les clés YAML en double dans la configuration ne provoquent plus de crash lors de l\'analyse' ,
new_0_5_17_23 : 'La propriété du port de passerelle est maintenant basée sur un fichier PID, empêchant le détournement de port entre profils' ,
new_0_5_17_24 : 'La page d\'historique affiche désormais les enregistrements de sessions Cron' ,
new_0_5_17_25 : 'Corriger les icônes de changement de langue et de thème écrasées dans la barre latérale réduite' ,
2026-05-14 10:32:24 +08:00
2026-05-20 17:13:32 +08:00
new_0_5_18_1 : 'Page de suivi de l’ utilisation des skills avec graphique de tendance quotidien et statistiques des skills principaux' ,
new_0_5_18_2 : 'Bridge de session de chat CLI avec agent bridge Python pour les sessions WebSocket' ,
new_0_5_18_3 : 'Preset fournisseur Ollama Cloud avec catalogue de modèles dynamique' ,
new_0_5_18_4 : 'Prise en charge du renommage des noms affichés des modèles (alias)' ,
new_0_5_18_5 : 'Gestion de la visibilité des modèles dans la Web UI' ,
new_0_5_18_6 : 'Tableau de bord d’ analytique d’ utilisation amélioré' ,
new_0_5_18_7 : 'Déploiement Docker en conteneur unique avec docker-compose et corrections du démarrage gateway' ,
new_0_5_18_8 : 'Correction de l’ avertissement HERMES_HOME de la page plugins pour les profils non par défaut' ,
new_0_5_18_9 : 'Stabilité gateway corrigée lors des redémarrages dev et compatibilité Windows améliorée' ,
new_0_5_22_1 : 'L’ API de liste des sessions Hermes lit la base du profil au lieu du store local Web UI' ,
new_0_5_23_1 : 'Commandes slash de chat réservées au Bridge avec suggestions localisées' ,
new_0_5_23_2 : 'Historique de commandes persistant pour rejouer les sessions sans polluer le contexte, l’ usage ou la compression' ,
new_0_5_23_3 : 'Variables d’ environnement du profil gateway isolées pour éviter les fuites d’ identifiants entre profils' ,
new_0_5_23_4 : 'Port Web UI réservé pendant l’ allocation gateway pour éviter les conflits de démarrage' ,
new_0_5_23_5 : 'Redémarrage d’ auto-mise à jour corrigé pour ne pas signaler comme échec les sorties réussies du helper' ,
new_0_5_24_1 : 'Chat Bridge aligné sur API Server pour l’ entrée multimodale, le prompt système et le contexte workspace' ,
new_0_5_25_1 : 'Actions de réinitialisation et clonage des salons de chat de groupe' ,
new_0_5_25_2 : 'Répertoire d’état Web UI configurable pour les déploiements personnalisés' ,
new_0_5_25_3 : 'MiMo ajouté comme fournisseur TTS dans les paramètres vocaux' ,
new_0_5_25_4 : 'Listes de modèles des fournisseurs personnalisés chargées via le backend pour éviter les erreurs CORS navigateur' ,
new_0_5_25_5 : 'Flux d’ approbation des outils corrigé pour les sessions Bridge' ,
new_0_5_25_6 : 'Indice de plateforme CLI forcé retiré des prompts Bridge afin de préserver les instructions personnalisées de média/fichier' ,
new_0_5_25_7 : 'Contenu image base64 affiché correctement dans l’ historique des messages utilisateur' ,
new_0_5_25_8 : 'Tests navigateur Playwright, couverture du contrat de streaming chat, couverture des modèles fournisseur et baseline de couverture ajoutés' ,
new_0_5_26_1 : 'Chemins média Markdown Windows et locaux pris en charge dans l’ historique et les messages rendus' ,
new_0_5_26_2 : 'Historique assistant vide filtré et état de compression obsolète nettoyé au démarrage d’ un nouveau run' ,
new_0_5_26_3 : 'Écritures verrouillées pour config et profils afin de réduire la corruption par écritures concurrentes' ,
new_0_5_26_4 : 'Paramètres de canaux QQBot et DingTalk ajoutés' ,
new_0_5_26_5 : 'Détection de port CLI rendue portable et tiroir terminal mobile amélioré' ,
new_0_5_26_6 : 'Environnements de profil Bridge isolés et découverte des plugins Hermes corrigée entre environnements Python' ,
new_0_5_26_7 : 'États gateway arrêtés expliqués avec diagnostics Web UI et état de chargement des logs stabilisé' ,
new_0_5_26_8 : 'Options de réinitialisation de session, base URL fournisseur personnalisé et cibles de livraison dynamiques corrigées' ,
new_0_5_26_9 : 'Bascule locale d’ affichage des traces tool-call ajoutée dans la barre de saisie du chat' ,
new_0_5_26_10 : 'Installations du paquet Hermes Agent prises en charge quand aucun checkout source n’ est disponible' ,
new_0_5_26_11 : 'Connexion OAuth xAI Grok pour les abonnés SuperGrok et presets de modèles Grok mis à jour' ,
new_0_5_26_12 : 'Couverture étendue pour navigateur, streaming chat, fournisseur, gateway, config, plugin et Bridge' ,
new_0_5_27_1 : 'Paramètres de modèle par session pour les chats Bridge, avec fournisseur et modèle indépendants enregistrés par session' ,
new_0_5_27_2 : 'Clic droit sur une session Bridge puis Définir le modèle pour changer le modèle de cette session' ,
new_0_5_27_3 : 'Les runs valident le modèle de session et reviennent au modèle par défaut actuel si le modèle enregistré est indisponible' ,
new_0_5_27_4 : 'La compression de contexte suit par défaut le modèle sélectionné par défaut du profil courant' ,
new_0_5_30_1 : 'Bridge chat conserve l’ historique structuré, corrigeant les absences de réponse et outils ignorés causés par l’ historique d’ outils aplati' ,
new_0_5_30_2 : 'Le routage des mentions en chat de groupe est plus fiable avec plusieurs agents, retire la mention @ de chaque agent avant livraison et garde les noms utilisateur après actualisation' ,
new_0_5_30_3 : 'Pages modèles, menus de modèle chat et sélection de modèle de session sont limités au profil actif avec marqueurs par défaut précis' ,
new_0_5_30_4 : 'Gestion gateway simplifiée : page Gateway autonome retirée, chaque profil vérifie sa configuration plateforme avant démarrage et un runner léger gère démarrages/redémarrages' ,
new_0_5_30_5 : 'Démarrage gateway amélioré sur Docker, Termux et Windows avec gestion runtime-lock, nettoyage des conflits de port, exécution en arrière-plan et support du redémarrage' ,
new_0_5_30_6 : 'Compatibilité Windows renforcée pour détection de chemins, téléchargements et sous-processus job/update sans fenêtres terminal furtives' ,
new_0_5_30_7 : 'Écritures config et presets fournisseur corrigés : validation des clés .env, routage FUN-Codex via Responses API et listes modèles Z.AI/GLM actualisées' ,
new_0_5_30_8 : 'Détails frontend polis : barre latérale repliée, libellés courts de groupe, séparateur latéral et style de plan de conversation' ,
new_0_5_30_9 : 'La compression de contexte suit les paramètres de profil et durcit les snapshots obsolètes en réutilisant les résumés précédents avec une queue sûre' ,
new_0_5_31_1 : 'Redémarrages Bridge broker renforcés, rendu final du flux de chat de groupe corrigé et routage {\'@\'}all ajouté' ,
new_0_5_31_2 : 'Le gestionnaire de fichiers peut copier les chemins absolus et le tiroir mobile des sessions ne passe plus derrière le chat' ,
new_0_5_31_3 : 'Sélecteur de profils avec avatars, upload d’ avatar personnalisé, modal d’état runtime et actions de redémarrage gateway/profil' ,
new_0_5_31_4 : 'Avatars de profil dans chat individuel, chat de groupe et barre latérale repliée, avec métadonnées Web UI et chemins compatibles Windows' ,
new_0_5_31_5 : 'Détection et redémarrage gateway améliorés sur Docker, Termux et Windows via gateway_state/gateway.pid pour la vivacité du gateway géré' ,
new_0_5_31_6 : 'Endpoint média APIKEY.FUN de génération d’ images et skill apikey-image-gen intégré pour texte-image, image-image et édition via le fournisseur fun-codex du profil actif' ,
new_0_4_8_2 : 'Corrige la troncature du rendu des blocs Markdown imbriqués' ,
new_0_4_8_3 : 'Corrige la projection et la recherche de filiation des sessions compressées' ,
new_0_4_8_4 : 'Optimise les requêtes N+1 de la liste des sessions et corrige l’ erreur 500 sur les recherches non CJK' ,
2026-04-26 13:28:08 +08:00
new_0_4_8_5 : 'Fix forced scroll to bottom when switching back from other tabs' ,
new_0_4_8_6 : 'Smooth session switch with loading transition overlay' ,
new_0_4_8_7 : 'Fix login token validation using Hermes session endpoint' ,
new_0_4_8_8 : 'Fix image attachments broken after page refresh (blob URL persistence)' ,
new_0_4_8_9 : 'Click image attachments to preview in fullscreen overlay' ,
new_0_4_8_10 : 'Move upload directory from temp to ~/.hermes-web-ui/upload' ,
2026-04-25 20:39:53 +08:00
new_0_4_7_1 : 'Affichage en streaming en temps reel des blocs de reflexion/raisonnement' ,
new_0_4_7_2 : 'Ignorer le script de preparation lors du build Docker' ,
new_0_4_7_3 : 'Ameliorations UX mobile du chat de groupe et polissage de l\'interface' ,
new_0_4_7_4 : 'Limiter les jetons restants du contexte a 0 au lieu de negatif' ,
new_0_4_7_5 : 'Ajouter le fournisseur integre Alibaba Coding Plan avec remplacement base_url dans .env' ,
new_0_4_7_6 : 'Ignorer les profils distants au demarrage pour eviter le blocage' ,
new_0_4_7_7 : 'Detecter et afficher les erreurs d\'execution silencieusement ignorees' ,
new_0_4_7_8 : 'Recherche de longueur de contexte sensible au fournisseur' ,
new_0_4_7_9 : 'Reinitialiser config.model lors du changement et resoudre le fournisseur personnalise CLI' ,
new_0_4_7_10 : 'Supprimer base_url_env du .env lors de la suppression du fournisseur integre' ,
new_0_4_7_11 : 'Aligner le fond de la barre laterale du chat de groupe avec la liste des sessions' ,
2026-05-06 16:42:29 +08:00
new_0_4_5_1 : 'Add group chat with multi-agent rooms, mention routing, and typing status recovery' ,
2026-05-20 17:13:32 +08:00
new_0_4_5_2 : 'Réécrit la configuration de contexte du modèle en YAML avec le paramètre context_length' ,
new_0_4_5_3 : 'Ajoute gpt-5.5 à la liste des modèles OpenAI Codex' ,
new_0_4_5_4 : 'Remplace le proxy des tâches par un contrôleur local et optimise le chargement des modèles' ,
new_0_4_5_5 : 'Ajoute la prise en charge i18n des modèles personnalisés dans ModelSelector' ,
new_0_4_5_6 : 'Corrige les avertissements de clés i18n manquantes dans la barre latérale' ,
new_0_4_5_7 : 'Efface tout localStorage à la déconnexion' ,
new_0_4_5_8 : 'Ajoute une rotation périodique des journaux pour éviter une croissance illimitée' ,
2026-04-22 20:27:33 +08:00
new_0_4_2_1 : 'Ajouter le suivi de l\'utilisation des tokens et la longueur de contexte dynamique' ,
new_0_4_2_2 : 'Ajouter la modal de recherche de sessions' ,
new_0_4_2_3 : 'Restaurer le systeme de chat de groupe avec Socket.IO et SQLite' ,
new_0_4_2_4 : 'Ajouter les sessions epinglees et le moniteur en direct' ,
new_0_4_2_5 : 'Corriger la detection des fournisseurs integres et l\'appariement des modeles' ,
2026-05-20 17:13:32 +08:00
new_0_4_4_5 : 'Erreur 500 causée par les recherches avec caractères spéciaux corrigée' ,
new_0_4_4_4 : 'Prise en charge des fournisseurs StepFun et Nous Portal ajoutée' ,
new_0_4_4_3 : 'Badge d’état en direct ajouté aux sessions de chat actives' ,
new_0_4_4_2 : 'Téléchargement de fichiers depuis les pièces jointes des messages de chat ajouté' ,
new_0_4_4_1 : 'Navigateur de fichiers ajouté avec prise en charge multi-backend (local/Docker/SSH/Singularity)' ,
2026-04-22 20:27:33 +08:00
} ,
2026-04-23 14:10:14 +08:00
// Fichiers
files : {
title : 'Fichiers' ,
tree : 'Arborescence' ,
list : 'Liste des fichiers' ,
breadcrumbRoot : 'Accueil' ,
newFile : 'Nouveau fichier' ,
newFolder : 'Nouveau dossier' ,
upload : 'Telecharger' ,
refresh : 'Actualiser' ,
open : 'Ouvrir' ,
edit : 'Modifier' ,
preview : 'Apercu' ,
download : 'Telecharger' ,
copyPath : 'Copier le chemin' ,
rename : 'Renommer' ,
delete : 'Supprimer' ,
name : 'Nom' ,
size : 'Taille' ,
modified : 'Modifie' ,
actions : 'Actions' ,
emptyDir : 'Dossier vide' ,
loading : 'Chargement...' ,
confirmDelete : 'Voulez-vous vraiment supprimer "{name}" ?' ,
confirmDeleteDir : 'Voulez-vous vraiment supprimer le dossier "{name}" et tout son contenu ?' ,
deleteFailed : 'Echec de la suppression' ,
deleted : 'Supprime' ,
renameTo : 'Renommer en' ,
newFileName : 'Nom du fichier' ,
newFolderName : 'Nom du dossier' ,
created : 'Cree' ,
createFailed : 'Echec de la creation' ,
renamed : 'Renomme' ,
renameFailed : 'Echec du renommage' ,
uploadSuccess : '{count} fichier(s) televerse(s)' ,
uploadFailed : 'Echec du televersement' ,
saveFailed : 'Echec de l\'enregistrement' ,
saved : 'Enregistre' ,
unsavedChanges : 'Vous avez des modifications non enregistrees. Annuler ?' ,
pathCopied : 'Chemin copie' ,
fileTooLarge : 'Fichier trop volumineux (max 10 Mo)' ,
permissionDenied : 'Impossible de modifier un fichier protege' ,
notFound : 'Fichier ou dossier introuvable' ,
backendError : 'Echec de l\'operation sur le fichier' ,
dragDropHint : 'Glissez des fichiers ici pour les televerser' ,
closeEditor : 'Fermer l\'editeur' ,
closePreview : 'Fermer' ,
saveFile : 'Enregistrer' ,
2026-05-20 17:13:32 +08:00
fileTree : 'Arborescence des fichiers' ,
2026-04-23 14:10:14 +08:00
} ,
2026-04-24 20:41:14 +08:00
// Chat de groupe
groupChat : {
title : 'Chat de groupe' ,
createRoom : 'Creer un salon' ,
joinByCode : 'Rejoindre avec un code' ,
roomName : 'Nom du salon' ,
roomNamePlaceholder : 'Entrez le nom du salon' ,
inviteCode : "Code d'invitation" ,
autoGenerate : 'Generer automatiquement' ,
noRooms : 'Aucun salon pour le moment' ,
selectOrCreate : 'Selectionnez ou creez un salon pour commencer a discuter' ,
agents : 'Agents' ,
addAgent : 'Ajouter un agent' ,
selectProfile : 'Selectionnez un profil' ,
agentAdded : 'Agent ajoute' ,
agentAlreadyInRoom : "L'agent est deja dans ce salon" ,
noAgents : 'Aucun agent dans ce salon' ,
members : 'Membres' ,
roomCreated : 'Salon cree' ,
roomDeleted : 'Salon supprime' ,
2026-05-15 15:52:16 +08:00
roomCloned : 'Salon clone' ,
cloneRoom : 'Cloner le salon' ,
2026-04-24 20:41:14 +08:00
deleteRoomConfirm : 'Supprimer ce salon ?' ,
2026-05-15 15:52:16 +08:00
clearContext : 'Effacer le contexte' ,
clearContextConfirm : 'Effacer le contexte de ce salon ? Les messages et instantanés de compression seront supprimés, les agents et membres restent.' ,
contextCleared : 'Contexte effacé' ,
2026-04-24 20:41:14 +08:00
you : 'Vous' ,
joined : 'Vous avez rejoint le salon' ,
joinFailed : 'Echec de la connexion au salon' ,
inputPlaceholder : 'Tapez un message... (Entree pour envoyer)' ,
enterCode : "Entrez le code d'invitation" ,
yourName : 'Votre nom' ,
yourNamePlaceholder : "Entrez votre nom d'affichage" ,
yourDescription : 'Description (facultatif)' ,
yourDescriptionPlaceholder : 'Decrivez-vous aux autres...' ,
agentName : 'Nom de l\'agent' ,
agentNamePlaceholder : 'Nom personnalise (vide = nom du profil)' ,
agentDesc : 'Description de l\'agent' ,
agentDescPlaceholder : 'Decrivez le role de cet agent...' ,
agentReplying : 'est en train de répondre...' ,
agentCompressing : 'compresse le contexte...' ,
compressionSettings : 'Paramètres de compression' ,
triggerTokens : 'Seuil de tokens' ,
triggerTokensDesc : 'Seuil de tokens pour déclencher la compression' ,
maxHistoryTokens : 'Max tokens historique' ,
maxHistoryTokensDesc : 'Maximum de tokens pour le contexte compressé' ,
tailMessageCount : 'Messages récents' ,
tailMessageCountDesc : 'Nombre de messages récents à conserver' ,
compressionConfig : 'Config. compression' ,
compressNow : 'Comprimer maintenant' ,
compressingInProgress : 'Compression en cours' ,
compressionSaved : 'Configuration enregistrée' ,
} ,
2026-04-23 14:10:14 +08:00
// Telechargement
download : {
downloading : 'Telechargement...' ,
downloadFailed : 'Echec du telechargement' ,
fileNotFound : 'Fichier introuvable ou supprime' ,
fileTooLarge : 'Fichier trop volumineux (limite depassee)' ,
backendError : 'Echec de la lecture du fichier, l\'environnement distant est peut-etre indisponible' ,
backendTimeout : 'Delai de lecture du fichier depasse' ,
unsupportedBackend : 'Le backend de terminal actuel ne prend pas en charge le telechargement de fichiers' ,
invalidPath : 'Chemin de fichier invalide' ,
download : 'Telecharger' ,
2026-04-24 02:31:42 +02:00
downloadFile : 'Telecharger le fichier' ,
2026-04-23 14:10:14 +08:00
} ,
2026-05-20 17:13:32 +08:00
gateways : {
title : 'Passerelles' ,
running : 'En cours' ,
stopped : 'Arrêté' ,
started : 'Démarré' ,
startFailed : 'Échec du démarrage du gateway' ,
stopFailed : 'Échec de l’ arrêt du gateway' ,
} ,
kanban : {
title : 'Tableau Kanban' ,
createTask : 'Nouvelle tâche' ,
noTasks : 'Aucune tâche' ,
allStatuses : 'Tous les statuts' ,
allAssignees : 'Tous les responsables' ,
columns : {
triage : 'Triage' ,
todo : 'À faire' ,
ready : 'Prêt' ,
running : 'En cours' ,
blocked : 'Bloqué' ,
done : 'Terminé' ,
archived : 'Archivé' ,
} ,
card : {
assigneeTooltip : 'Responsable' ,
priority : {
low : 'Basse' ,
medium : 'Moyenne' ,
high : 'Haute' ,
} ,
timeAgo : {
justNow : 'à l’ instant' ,
minutes : 'il y a {count} min' ,
hours : 'il y a {count} h' ,
days : 'il y a {count} j' ,
} ,
} ,
board : {
create : 'Nouveau tableau' ,
archive : 'Archiver le tableau' ,
archiveConfirm : 'Archiver le tableau actuel ?' ,
archived : 'Tableau archivé' ,
created : 'Tableau créé' ,
slugPlaceholder : 'Identifiant du tableau, ex. project-a' ,
namePlaceholder : 'Nom affiché (facultatif)' ,
slugRequired : 'L’ identifiant du tableau est requis' ,
} ,
form : {
title : 'Titre' ,
titlePlaceholder : 'Titre de la tâche' ,
titleRequired : 'Le titre est requis' ,
body : 'Description' ,
bodyPlaceholder : 'Description de la tâche (facultatif)' ,
assignee : 'Responsable' ,
selectAssignee : 'Choisir un responsable...' ,
priority : 'Priorité' ,
selectPriority : 'Choisir une priorité...' ,
} ,
detail : {
status : 'Statut' ,
priority : 'Priorité' ,
assignee : 'Responsable' ,
tenant : 'Locataire' ,
createdAt : 'Créé' ,
startedAt : 'Démarré' ,
completedAt : 'Terminé' ,
comments : 'Commentaires' ,
events : 'Événements' ,
runs : 'Exécutions' ,
artifacts : 'Fichiers produits' ,
result : 'Résultat' ,
highlights : 'Informations clés' ,
sources : 'Sources de données' ,
sessions : 'Sessions liées' ,
sessionMessages : 'Messages de session' ,
noSessions : 'Aucune session liée trouvée.' ,
} ,
action : {
title : 'Actions' ,
assign : 'Assigner' ,
assignTo : 'Assigner à...' ,
block : 'Bloquer' ,
blockReason : 'Raison du blocage' ,
unblock : 'Débloquer' ,
complete : 'Terminer' ,
completeSummary : 'Résumé de fin (facultatif)' ,
} ,
message : {
loadFailed : 'Échec du chargement de la tâche' ,
taskCreated : 'Tâche créée' ,
taskAssigned : 'Tâche assignée' ,
taskBlocked : 'Tâche bloquée' ,
taskUnblocked : 'Tâche débloquée' ,
taskCompleted : 'Tâche terminée' ,
} ,
stats : {
total : 'Total' ,
tasks : 'Tâches' ,
} ,
} ,
2026-04-17 09:09:50 +08:00
}