Merge pull request #2142 into stage-344

i18n: add French (fr) locale (938 keys, alphabetical en→fr→it position)
This commit is contained in:
Hermes Agent
2026-05-12 16:13:48 +00:00
+941
View File
@@ -10646,6 +10646,947 @@ const LOCALES = {
voice_mode_toggle_active: 'Exit voice mode', // TODO: translate
subagent_children: 'Subagent sessions', // TODO: translate
},
fr: {
offline_title: 'Connexion perdue',
offline_browser_detail: 'Votre navigateur signale que cet appareil est hors ligne.',
offline_network_detail: 'Hermes est actuellement inaccessible depuis ce navigateur.',
offline_autorefresh: 'J\'actualiserai automatiquement cette page lorsqu\'Hermès sera à nouveau joignable.',
offline_check_now: 'Vérifiez maintenant',
offline_checking: 'Vérification…',
offline_stream_waiting: 'Connexion perdue. En attendant de rafraîchir…',
_lang: 'fr',
_label: 'Français',
_speech: 'fr-FR',
cancelling: 'Annulation\u2026',
cancel_failed: 'Échec de l\'annulation :',
mic_denied: 'Accès au microphone refusé. Vérifiez les autorisations du navigateur.',
mic_no_speech: 'Aucune parole détectée. Essayer à nouveau.',
mic_network: 'Reconnaissance vocale indisponible.',
mic_error: 'Erreur de saisie vocale :',
voice_dictate: 'Dicter',
voice_dictate_active: 'Arrêter la dictée',
voice_mode_toggle: 'Mode vocal',
voice_mode_toggle_active: 'Quitter le mode vocal',
voice_listening: 'Écoute…',
voice_speaking: 'Parlant…',
voice_thinking: 'Pensée…',
voice_error: 'Voix non prise en charge dans ce navigateur',
voice_mode_active: 'Mode vocal activé',
voice_mode_off: 'Mode vocal désactivé',
session_imported: 'Session importée',
import_failed: 'Échec de l\'importation :',
import_invalid_json: 'JSON invalide',
image_pasted: 'Image collée :',
edit_message: 'Modifier le message',
regenerate: 'Régénérer la réponse',
copy: 'Copie',
copied: 'Copié!',
copy_failed: 'Échec de la copie',
diff_loading: 'Chargement des différences',
diff_error: 'Impossible de charger le fichier de correctif',
diff_too_large: 'Fichier de correctif trop volumineux pour être affiché en ligne',
tree_view: 'Arbre',
raw_view: 'Brut',
parse_failed_note: 'l\'analyse a échoué',
you: 'Toi',
mcp_servers_title: 'Serveurs MCP',
mcp_servers_desc: 'Affichez les serveurs MCP configurés dans config.yaml.',
mcp_no_servers: 'Aucun serveur MCP configuré.',
mcp_add_server: '+ Ajouter un serveur',
mcp_field_name: 'Nom du serveur',
mcp_transport_label: 'Type de transport',
mcp_field_command: 'Commande',
mcp_field_args: 'Arguments (séparés par des virgules)',
mcp_field_url: 'URL',
mcp_field_timeout: 'Délai d\'expiration (secondes)',
mcp_save: 'Sauvegarder',
mcp_cancel: 'Annuler',
mcp_name_required: 'Le nom du serveur est requis.',
mcp_url_required: 'L\'URL est requise pour le transport HTTP.',
mcp_command_required: 'La commande est requise pour le transport stdio.',
mcp_saved: 'Serveur MCP enregistré.',
mcp_save_failed: 'Échec de l\'enregistrement du serveur MCP.',
mcp_delete_confirm_title: 'Supprimer le serveur MCP',
mcp_delete_confirm_message: 'Supprimer le serveur MCP "{0}" ? Cette action ne peut pas être annulée.',
mcp_deleted: 'Serveur MCP supprimé.',
mcp_delete_failed: 'Échec de la suppression du serveur MCP.',
mcp_load_failed: 'Échec du chargement des serveurs MCP.',
mcp_restart_hint: 'Les modifications apportées au serveur sont en lecture seule ici pour le moment. Modifiez config.yaml et redémarrez Hermes pour que les modifications prennent effet.',
mcp_toggle_followup: 'Les contrôles d\'activation/désactivation sont intentionnellement différés jusqu\'à ce que la sémantique de rechargement MCP soit explicite.',
mcp_status_active: 'Actif',
mcp_status_configured: 'Configuré',
mcp_status_disabled: 'Désactivé',
mcp_status_invalid_config: 'Configuration invalide',
mcp_status_unknown: 'Inconnu',
mcp_tool_count: '{0} outils',
mcp_enabled_yes: 'Activé',
mcp_enabled_no: 'Désactivé',
mcp_tools_title: 'Outils MCP',
mcp_tools_desc: 'Recherchez des outils connus sur les serveurs MCP actifs.',
mcp_tools_search_placeholder: 'Outils de recherche par nom, serveur ou description…',
mcp_tools_no_tools: 'Aucun outil MCP n\'est disponible dans l\'inventaire d\'exécution actif.',
mcp_tools_no_matches: 'Aucun outil MCP ne correspond à votre recherche.',
mcp_tools_load_failed: 'Échec du chargement des outils MCP.',
mcp_tools_schema_empty: 'Aucun paramètre de schéma.',
mcp_tools_runtime_note: 'L\'inventaire des outils utilise uniquement les données d\'exécution MCP actives déjà connues ; le WebUI ne démarre pas et ne sonde pas les serveurs.',
pdf_loading: 'Chargement du PDF {0}…',
pdf_too_large: 'PDF trop volumineux pour un aperçu en ligne',
pdf_no_pages: 'Le PDF n\'a pas de pages',
pdf_error: 'Échec de l\'affichage de l\'aperçu PDF',
pdf_download: 'Télécharger le PDF',
html_loading: 'Chargement de l\'aperçu HTML…',
html_too_large: 'HTML trop volumineux pour l\'aperçu en ligne',
html_error: 'Échec de l\'affichage de l\'aperçu HTML',
html_open_full: 'Ouvrir la page entière',
html_sandbox_label: 'Aperçu HTML (en bac à sable)',
thinking: 'Pensée',
expand_all: 'Tout développer',
collapse_all: 'Tout réduire',
edit_failed: 'Échec de la modification :',
regen_failed: 'Échec de la régénération :',
reconnect_active: 'Une réponse est toujours en cours de génération. Recharger quand vous êtes prêt ?',
reconnect_finished: 'Une réponse était en cours lors de votre dernier départ. Les messages ont peut-être été mis à jour.',
approval_heading: 'Approbation requise',
approval_desc_prefix: 'Commande dangereuse détectée',
approval_btn_once: 'Autoriser une fois',
approval_btn_once_title: 'Autoriser cette commande (Entrée)',
approval_btn_session: 'Autoriser la session',
approval_btn_session_title: 'Autoriser cette session de conversation',
approval_btn_always: 'Toujours autoriser',
approval_btn_always_title: 'Toujours autoriser ce modèle de commande',
approval_btn_deny: 'Refuser',
approval_btn_deny_title: 'Refuser - n\'exécutez pas cette commande',
approval_responding: 'Répondre\u2026',
clarify_heading: 'Des éclaircissements sont nécessaires',
clarify_hint: 'Choisissez un choix ou saisissez votre propre réponse ci-dessous.',
clarify_other: 'Autre',
clarify_send: 'Envoyer',
clarify_input_placeholder: 'Tapez votre réponse…',
clarify_responding: 'Répondre\u2026',
untitled: 'Sans titre',
load_older_messages: '↑ Faites défiler vers le haut ou cliquez pour charger les anciens messages',
session_jump_start: 'Commencer',
session_jump_start_label: 'Aller au début de la session',
session_jump_end: 'Fin',
session_jump_end_label: 'Aller à la fin de la session',
queued_label: 'Envoie après réponse',
queued_cancel: 'Annuler le message en file d\'attente',
model_unavailable: '(indisponible)',
model_unavailable_title: 'Ce modèle ne figure plus dans votre liste de fournisseurs actuelle',
provider_mismatch_label: 'Inadéquation des fournisseurs',
model_not_found_label: 'Modèle introuvable',
model_custom_label: 'ID de modèle personnalisé',
model_custom_placeholder: 'par ex. openai/gpt-5.4',
model_search_placeholder: 'Rechercher des modèles…',
model_search_no_results: 'Aucun modèle trouvé',
model_group_configured: 'Configuré',
ws_search_placeholder: 'Rechercher des espaces de travail…',
ws_no_results: 'Aucun espace de travail trouvé',
workspace_new_worktree_conversation: 'Nouvelle conversation dans l\'arbre de travail',
workspace_new_worktree_conversation_meta: 'Créez un arbre de travail git isolé pour cet espace de travail.',
workspace_worktree_created: 'Conversation Worktree créée',
workspace_worktree_failed: 'La création de l\'arbre de travail a échoué :',
session_worktree_badge: 'Arbre de travail',
model_scope_advisory: 'S\'applique à cette conversation à partir de votre prochain message.',
model_scope_toast: 'S\'applique à cette conversation à partir de votre prochain message.',
cmd_clear: 'Messages de conversation clairs',
cmd_compress: 'Compresser manuellement le contexte de conversation (utilisation : /compress [thème principal])',
ctx_compress_hint: 'Compresser le contexte pour libérer de l\'espace →',
ctx_compress_action: '⚠ Compressez maintenant pour libérer le contexte',
cmd_compact_alias: 'Alias hérité pour /compress',
cmd_model: 'Changer de modèle (par exemple /model gpt-4o)',
cmd_workspace: 'Changer d\'espace de travail par nom',
cmd_terminal: 'Ouvrez le terminal de l\'espace de travail',
cmd_new: 'Démarrer une nouvelle session de discussion',
cmd_usage: 'Activer/désactiver l\'affichage de l\'utilisation du jeton',
cmd_theme: 'Changer d\'apparence (thème : système/dark/light, skin : default/ares/mono/slate/poseidon/sisyphus/charizard)',
cmd_personality: 'Personnalité de l\'agent de commutation',
cmd_skills: 'Lister les compétences Hermès disponibles',
available_commands: 'Commandes disponibles :',
type_slash: 'Tapez / pour voir les commandes',
conversation_cleared: 'Conversation effacée',
command_label: 'Commande',
context_compaction_label: 'Compactage du contexte',
preserved_task_list_label: 'Liste de tâches préservée',
reference_only_label: 'Référence seulement',
model_usage: 'Utilisation : /model <nom>',
no_model_match: 'Aucun modèle correspondant "',
switched_to: 'Passé à',
workspace_usage: 'Utilisation : /espace de travail <nom>',
no_workspace_match: 'Aucun espace de travail correspondant "',
switched_workspace: 'Passé à l\'espace de travail :',
workspace_switch_failed: 'Échec du changement d\'espace de travail :',
new_session: 'Nouvelle session créée',
compressing: 'Demande de compression de contexte...',
compress_running_label: 'Compression',
compress_complete_label: 'Compression terminée',
auto_compress_label: 'Compression automatique',
compress_failed_label: 'Échec de la compression',
focus_label: 'Se concentrer',
token_usage_on: 'Utilisation du jeton sur',
token_usage_off: 'Utilisation des jetons désactivée',
theme_usage: 'Utilisation : /thème',
theme_set: 'Thème:',
no_active_session: 'Aucune session active',
cmd_queue: 'Mettre un message en file d\'attente pour le prochain tour',
cmd_goal: 'Définir ou inspecter un objectif persistant',
goal_evaluating_progress: 'Évaluer la progression des objectifs…',
goal_working_toward: 'Travailler vers lobjectif…',
goal_continuing_toast: 'Continuer vers lobjectif…',
goal_status_none: 'Aucun objectif actif. Définissez-en un avec /goal <text>.',
goal_cleared: 'But dégagé.',
goal_no_goal: 'Aucun objectif actif.',
cmd_interrupt: 'Annuler le tour en cours et envoyer un nouveau message',
cmd_steer: 'Injecter une correction à mi-tour sans interrompre l\'agent',
cmd_queue_no_msg: 'Utilisation : /queue <message>',
cmd_queue_not_busy: 'Aucune tâche active - envoyez simplement normalement',
cmd_queue_confirm: 'Message en file d\'attente',
cmd_interrupt_no_msg: 'Utilisation : /interruption <message>',
cmd_interrupt_confirm: 'Interrompu — envoi d\'un nouveau message',
cmd_steer_no_msg: 'Utilisation : /steer <message>',
cmd_steer_fallback: 'Steer indisponible mis en file dattente pour le prochain tour à la place',
cmd_steer_delivered: 'Steer livré - l\'agent le verra sur son prochain résultat d\'outil',
steer_leftover_queued: 'Bœuf en attente pour le prochain tour',
busy_steer_fallback: 'Steer indisponible en file dattente pour le prochain tour',
busy_interrupt_confirm: 'Interrompu — envoi d\'un nouveau message',
settings_label_busy_input_mode: 'Mode de saisie occupé',
settings_desc_busy_input_mode: 'Contrôle ce qui se passe lorsque vous envoyez un message pendant l\'exécution de l\'agent. La file d\'attente attend ; L\'interruption s\'annule et recommence ; Steer injecte une correction à mi-tour sans interrompre (revient en file d\'attente lorsque l\'agent ou le flux est indisponible).',
settings_busy_input_mode_queue: 'Suivi de file d\'attente',
settings_busy_input_mode_interrupt: 'Interrompre le tour en cours',
settings_busy_input_mode_steer: 'Direction (correction à mi-virage)',
status_profile: 'Profil',
status_hermes_home: 'Maison Hermès',
status_started: 'Commencé',
status_updated: 'Mis à jour',
status_tokens: 'Jetons',
status_ephemeral: 'Instantané éphémère non enregistré dans lhistorique des transcriptions.',
status_no_tokens: 'Aucun jeton utilisé',
status_unknown: 'Inconnu',
usage_personality_none: 'aucun',
session_toolsets: 'Ensembles d\'outils de session',
session_toolsets_desc: 'Restreindre les outils disponibles pour cette session (vide = utiliser la configuration globale)',
session_toolsets_global: 'Global (par défaut)',
session_toolsets_custom: 'Coutume',
session_toolsets_placeholder: 'outil1, outil2, …',
session_toolsets_apply: 'Appliquer',
session_toolsets_clear: 'Effacer (utiliser global)',
session_toolsets_applied: 'Ensembles d\'outils mis à jour',
session_toolsets_cleared: 'Ensembles d\'outils effacés - à l\'aide de la configuration globale',
session_toolsets_failed: 'Échec de la mise à jour des ensembles d\'outils :',
no_personalities: 'Aucune personnalité trouvée (ajoutez-les à ~/.hermes/personalities/)',
available_personalities: 'Personnalités disponibles :',
personality_switch_hint: '\\n\\nUtilisez `/personality <name>` pour changer, ou `/personality none` pour effacer.',
personalities_load_failed: 'Échec du chargement des personnalités',
personality_cleared: 'Personnalité effacée',
personality_set: 'Personnalité:',
failed_colon: 'Échoué:',
no_workspace: 'Pas d\'espace de travail',
terminal_open_title: 'Terminal d\'espace de travail ouvert',
terminal_no_workspace_title: 'Sélectionnez un espace de travail pour ouvrir le terminal',
terminal_title: 'Terminal',
terminal_clear: 'Clair',
terminal_copy_output: 'Copier la sortie',
terminal_restart: 'Redémarrage',
terminal_collapse: 'Effondrement',
terminal_expand: 'Développer',
terminal_close: 'Fermer',
terminal_input_placeholder: 'Exécutez une commande...',
terminal_start_failed: 'Échec du démarrage du terminal :',
terminal_input_failed: 'L\'entrée du terminal a échoué :',
terminal_copy_failed: 'Échec de la copie :',
terminal_error: 'Erreur de terminal',
workspace_empty_no_path: 'Aucun espace de travail sélectionné. Définissez un espace de travail dans Paramètres \u2192 Espace de travail pour parcourir les fichiers.',
workspace_empty_dir: 'Cet espace de travail est vide.',
workspace_show_hidden_files: 'Afficher les fichiers cachés',
workspace_show_hidden_files_desc: 'Incluez .DS_Store, .git, node_modules et d\'autres fichiers cachés/système dans l\'arborescence des fichiers.',
workspace_hidden_files_visible: 'caché visible',
workspace_hidden_files_visible_title: 'Les fichiers cachés sont visibles cliquez pour les options',
workspace_options: 'Options de l\'espace de travail',
dialog_confirm_title: 'Confirmer l\'action',
dialog_prompt_title: 'Entrez une valeur',
dialog_confirm_btn: 'Confirmer',
unsaved_confirm: 'Vous avez des modifications non enregistrées dans l\'aperçu. Supprimer et naviguer ?',
discard: 'Jeter',
save: 'Sauvegarder',
edit: 'Modifier',
clear: 'Clair',
create: 'Créer',
remove: 'Retirer',
save_title: 'Enregistrer les modifications',
edit_title: 'Modifier ce fichier',
saved: 'Enregistré',
save_failed: 'Échec de l\'enregistrement :',
image_load_failed: 'Impossible de charger l\'image',
file_open_failed: 'Impossible d\'ouvrir le fichier',
double_click_rename: 'Double-cliquez pour renommer',
renamed_to: 'Renommé en',
rename_failed: 'Échec du changement de nom :',
delete_title: 'Supprimer',
rename_title: 'Rebaptiser',
rename_prompt: 'Nouveau nom :',
deleted: 'Supprimé',
delete_failed: 'Échec de la suppression :',
reveal_in_finder: 'Révéler dans le gestionnaire de fichiers',
reveal_failed: 'Échec de la révélation :',
copy_file_path: 'Copier le chemin du fichier',
path_copied: 'Chemin du fichier copié dans le presse-papiers',
path_copy_failed: 'Échec de la copie du chemin :',
session_rename: 'Renommer la conversation',
session_rename_desc: 'Modifier le titre de cette conversation',
new_file_prompt: 'Nouveau nom de fichier (par exemple notes.md) :',
project_name_prompt: 'Nom du projet :',
created: 'Créé',
create_failed: 'Échec de la création :',
new_folder_prompt: 'Nouveau nom de dossier :',
folder_created: 'Dossier créé',
folder_create_failed: 'Échec de la création du dossier :',
remove_title: 'Retirer',
empty_dir: '(vide)',
upload_failed: 'Échec du téléchargement :',
session_pin: 'Épingler la conversation',
session_unpin: 'Désépingler la conversation',
session_pin_desc: 'Gardez cette conversation en haut',
session_unpin_desc: 'Supprimer de l\'épinglé',
session_pin_failed: 'Échec de la broche :',
session_move_project: 'Passer au projet',
session_move_project_desc_has: 'Changer le projet pour cette conversation',
session_move_project_desc_none: 'Attribuer un projet à cette conversation',
session_archive: 'Archiver une conversation',
session_restore: 'Restaurer la conversation',
session_archive_desc: 'Masquer cette conversation jusqu\'à ce que l\'archive soit affichée',
session_archive_worktree_desc: 'Cachez cette conversation ; garder son arbre de travail sur le disque',
session_restore_desc: 'Ramenez cette conversation dans la liste principale',
session_archived: 'Séance archivée',
session_archived_worktree: 'Séance archivée. Worktree reste sur le disque.',
session_restored: 'Session restaurée',
session_archive_failed: 'Échec de l\'archivage :',
session_duplicate: 'Conversation en double',
session_duplicate_desc: 'Créer une copie avec le même espace de travail et le même modèle',
session_duplicated: 'Session dupliquée',
session_duplicate_failed: 'Échec de la duplication :',
session_stop_response: 'Arrêter la réponse',
session_stop_response_desc: 'Annuler la réponse en cours pour cette conversation',
session_delete: 'Supprimer la conversation',
session_delete_desc: 'Supprimer définitivement cette conversation',
session_delete_confirm: 'Supprimer cette conversation ?',
session_delete_worktree_desc: 'Supprimez uniquement la conversation WebUI ; garder l\'arbre de travail sur le disque',
session_deleted: 'Conversation supprimée',
session_deleted_worktree: 'Conversation supprimée. Worktree reste sur le disque.',
session_select_mode: 'Sélectionner',
session_select_mode_desc: 'Sélectionnez les conversations à gérer par lots',
session_select_all: 'Tout sélectionner',
session_deselect_all: 'Tout désélectionner',
session_selected_count: '{0} sélectionné',
session_batch_archive: 'Archive',
session_batch_delete: 'Supprimer',
session_batch_move: 'Passer au projet',
session_batch_delete_confirm: 'Supprimer {0} conversations ?',
session_batch_archive_confirm: 'Archiver {0} conversations ?',
session_batch_delete_worktree_confirm: 'Supprimer {0} conversations ? {1} conversations basées sur Worktree laisseront leurs répertoires Worktree sur le disque.',
session_batch_archive_worktree_confirm: 'Archiver {0} conversations ? {1} conversations basées sur un arbre de travail conserveront leurs répertoires d\'arbre de travail sur le disque.',
session_no_selection: 'Aucune conversation sélectionnée',
settings_heading_title: 'Centre de contrôle',
settings_heading_subtitle: 'Préférences, outils de conversation et contrôles système.',
settings_section_conversation_title: 'Conversation',
settings_section_appearance_title: 'Apparence',
settings_section_appearance_meta: 'Thème, couleurs d\'accent et style visuel.',
settings_section_preferences_title: 'Préférences',
settings_section_preferences_meta: 'Paramètres par défaut et comportement de l\'interface utilisateur pour Hermes Web UI.',
settings_section_system_title: 'Système',
settings_section_system_meta: 'Version de l\'instance et contrôles d\'accès.',
settings_check_now: 'Vérifiez maintenant',
settings_checking: 'Vérification\u2026',
settings_up_to_date: 'À jour \u2713',
settings_updates_available: '{count} mises à jour disponibles',
settings_updates_disabled: 'Vérifications de mise à jour désactivées',
settings_update_check_failed: 'La vérification de la mise à jour a échoué',
settings_label_workspace_panel_open: 'Garder le panneau de l\'espace de travail ouvert par défaut',
settings_desc_workspace_panel_open: 'Lorsqu\'il est activé, le panneau de l\'espace de travail/navigateur de fichiers s\'ouvre automatiquement à chaque nouvelle session. Vous pouvez toujours le fermer manuellement à tout moment.',
settings_label_session_jump_buttons: 'Afficher les boutons de saut de session',
settings_desc_session_jump_buttons: 'Affichez les boutons flottants de début et de fin lors de la lecture de longs historiques de session.',
settings_label_session_endless_scroll: 'Charger les anciens messages en faisant défiler vers le haut',
settings_desc_session_endless_scroll: 'Lorsqu\'ils sont activés, les anciens messages se chargent automatiquement lorsque vous faites défiler vers le haut. Lorsqu\'il est désactivé, utilisez le bouton des messages plus anciens.',
open_in_browser: 'Ouvrir dans le navigateur',
settings_dropdown_conversation: 'Conversation',
settings_dropdown_appearance: 'Apparence',
settings_dropdown_preferences: 'Préférences',
settings_dropdown_providers: 'Fournisseurs',
settings_dropdown_system: 'Système',
settings_tab_conversation: 'Conversation',
settings_tab_appearance: 'Apparence',
settings_tab_preferences: 'Préférences',
settings_tab_system: 'Système',
settings_title: 'Paramètres',
settings_save_btn: 'Enregistrer les paramètres',
settings_label_model: 'Modèle par défaut',
settings_desc_model: 'Utilisé pour les nouvelles conversations. Les conversations existantes conservent leur modèle sélectionné.',
settings_label_send_key: 'Envoyer la clé',
settings_label_theme: 'Thème',
settings_label_skin: 'Peau',
settings_label_font_size: 'Taille de la police',
font_size_small: 'Petit',
font_size_default: 'Défaut',
font_size_large: 'Grand',
settings_autosave_saving: 'Économie…',
settings_autosave_saved: 'Enregistré',
settings_autosave_failed: 'Échec de l\'enregistrement',
settings_autosave_retry: 'Réessayer',
settings_label_language: 'Langue',
settings_label_token_usage: 'Afficher l\'utilisation du jeton',
settings_label_sidebar_density: 'Densité de la barre latérale',
cmd_reasoning: 'Basculez la visibilité de la réflexion (afficher/masquer), définir le niveau d\'effort ou vérifier l\'état actuel',
settings_label_external_sessions: 'Afficher les sessions non-WebUI',
settings_label_sync_insights: 'Synchroniser avec les insights',
settings_label_check_updates: 'Vérifier les mises à jour',
settings_label_bot_name: 'Nom de l\'assistant',
settings_label_password: 'Mot de passe d\'accès',
settings_saved: 'Paramètres enregistrés',
settings_save_failed: 'Échec de l\'enregistrement :',
settings_load_failed: 'Échec du chargement des paramètres :',
settings_saved_pw: 'Paramètres enregistrés : protection par mot de passe activée et ce navigateur reste connecté',
settings_saved_pw_updated: 'Paramètres enregistrés  mot de passe mis à jour',
login_title: 'Se connecter',
login_subtitle: 'Entrez votre mot de passe pour continuer',
login_placeholder: 'Mot de passe',
login_btn: 'Se connecter',
login_invalid_pw: 'Mot de passe invalide',
login_conn_failed: 'La connexion a échoué',
dialog_confirm_title: 'Confirmer l\'action',
dialog_prompt_title: 'Entrez une valeur',
dialog_confirm_btn: 'Confirmer',
discard: 'Jeter',
clear: 'Clair',
create: 'Créer',
remove: 'Retirer',
project_name_prompt: 'Nom du projet :',
tab_chat: 'Chat',
tab_tasks: 'Tâches',
tab_skills: 'Compétences',
tab_memory: 'Mémoire',
tab_workspaces: 'Espaces',
tab_profiles: 'Profils',
tab_kanban: 'Kanban',
kanban_board: 'Conseil',
kanban_visible_tasks: '{0} tâches visibles',
kanban_search_tasks: 'Tâches de recherche',
kanban_all_assignees: 'Tous les assignés',
kanban_all_tenants: 'Tous les locataires',
kanban_include_archived: 'Inclure archivé',
kanban_no_matching_tasks: 'Aucune tâche correspondante',
kanban_no_data: 'Aucune donnée Kanban',
kanban_work_queue_hint: 'Il s\'agit de la file d\'attente de travail de l\'agent Hermes. Créez ou triez une tâche, attribuez-la, déplacez-la vers Prêt, puis laissez le répartiteur la réclamer.',
kanban_unavailable: 'Kanban indisponible',
kanban_read_only: 'Vue en lecture seule',
kanban_empty: 'Vide',
kanban_task: 'Tâche',
kanban_no_description: 'Pas de description',
kanban_refresh: 'Rafraîchir',
kanban_status_triage: 'Triage',
kanban_status_todo: 'Faire',
kanban_status_ready: 'Prêt',
kanban_status_running: 'En cours d\'exécution',
kanban_status_blocked: 'Bloqué',
kanban_status_done: 'Fait',
kanban_comments_count: 'Commentaires ({0})',
kanban_events_count: 'Événements ({0})',
kanban_links: 'Links',
kanban_parents: 'Parents',
kanban_children: 'Enfants',
kanban_runs_count: 'Exécutions ({0})',
kanban_no_comments: 'Sans commentaires',
kanban_no_events: 'Aucun événement',
kanban_no_runs: 'Aucune course',
kanban_title: 'Titre',
kanban_description: 'Description',
kanban_description_placeholder: 'Facultatif : ce qui doit se passer, les critères d\'acceptation, les liens',
kanban_status: 'Statut',
kanban_assignee: 'Cessionnaire',
kanban_assignee_placeholder: 'Facultatif  laisser vide pour tout travailleur',
kanban_tenant: 'Locataire',
kanban_tenant_placeholder: 'Facultatif  slug de projet ou d\'équipe',
kanban_priority: 'Priorité',
kanban_priority_hint: 'Les nombres plus élevés sont exécutés en premier. Par défaut 0.',
kanban_title_required: 'Le titre est requis.',
kanban_new_task: 'Nouvelle tâche',
kanban_edit_task: 'Modifier la tâche',
kanban_status_original_hint: 'Statut actuel : {0}. Cette boîte de dialogue prend uniquement en charge les modifications Triage/Todo/Ready.',
kanban_run_dispatcher: 'Exécuter le répartiteur',
kanban_run_dispatcher_confirm: 'Cela réclamera des tâches prêtes sur ce tableau et générera des sous-processus de travail (un par tâche, jusqu\'à 8 par clic). Continuer?',
kanban_assignee_profiles_label: 'Profils Hermès',
kanban_assignee_other_label: 'Autre (voies CLI / profils supprimés)',
kanban_assignee_unassigned: '— Non attribué (ne s\'exécutera pas automatiquement) —',
kanban_ready_needs_assignee: 'Vous avez sélectionné Non attribué + Prêt. Le répartiteur ignorera cette tâche. Soumettez à nouveau pour confirmer ou choisissez un profil.',
kanban_dispatch_preview_prefix: 'Aperçu :',
kanban_dispatch_run_prefix: 'Expédié :',
kanban_dispatch_spawned: 'engendré',
kanban_dispatch_promoted: 'promu',
kanban_dispatch_reclaimed: 'récupéré',
kanban_dispatch_skipped_unassigned: 'ignoré (pas de destinataire)',
kanban_dispatch_skipped_nonspawnable: 'ignoré (profil inconnu)',
kanban_dispatch_auto_blocked: 'auto-bloqué',
kanban_dispatch_timed_out: 'expiré',
kanban_dispatch_crashed: 's\'est écrasé',
kanban_add_comment: 'Ajouter un commentaire',
kanban_status_archived: 'Archivé',
tab_todos: 'Toutes les tâches',
tab_insights: 'Connaissances',
tab_dashboard: 'Tableau de bord Hermès',
dashboard_loopback_warning: 'Le tableau de bord est en boucle uniquement sur le serveur. Naviguez depuis le serveur lui-même ou redémarrez-le avec --host 0.0.0.0 (non sécurisé).',
tab_logs: 'Journaux',
tab_settings: 'Paramètres',
new_conversation: 'Nouvelle conversation',
filter_conversations: 'Filtrer les conversations...',
session_time_unknown: 'Inconnu',
session_time_last_week: '1w',
session_time_bucket_today: 'Aujourd\'hui',
session_time_bucket_yesterday: 'Hier',
session_time_bucket_this_week: 'Cette semaine',
session_time_bucket_last_week: 'La semaine dernière',
session_time_bucket_older: 'Plus vieux',
scheduled_jobs: 'Travaux planifiés',
new_job: 'Nouvel emploi',
loading: 'Chargement...',
search_skills: 'Compétences de recherche...',
new_skill: 'Nouvelle compétence',
personal_memory: 'Mémoire personnelle',
current_task_list: 'Liste de tâches actuelle',
logs_title: 'Journaux',
logs_file: 'Déposer',
logs_tail: 'Queue',
logs_auto_refresh: 'Actualisation automatique (5s)',
logs_wrap: 'Enrouler les lignes',
logs_copy_all: 'Copier tout',
logs_empty: 'Aucune ligne de journal pour l\'instant.',
logs_loading: 'Chargement des journaux…',
logs_load_failed: 'Les journaux n\'ont pas pu être chargés',
logs_status_idle: 'Choisissez un fichier journal pour afficher les lignes récentes.',
logs_no_mtime: 'pas encore écrit',
logs_truncated_hint: 'Afficher la fin d\'un gros fichier journal ; les octets plus anciens ont été ignorés pour limiter la mémoire.',
logs_copied: 'Journaux copiés',
logs_severity: 'Gravité',
logs_severity_all: 'Tous',
logs_severity_errors: 'Erreurs',
logs_severity_warnings: 'Avertissements+',
logs_filter_active: 'affiché (filtre actif)',
insights_title: 'Analyse d\'utilisation',
insights_sessions: 'Séances',
insights_messages: 'Messages',
insights_tokens: 'Jetons',
insights_cost: 'Coût estimé',
insights_no_cost: 'N / A',
insights_models: 'Modèles',
insights_activity_by_day: 'Activité par jour',
insights_activity_by_hour: 'Activité par heure',
insights_peak_hour: 'Pic : {heure}',
insights_token_breakdown: 'Répartition des jetons',
insights_input_tokens: 'Saisir',
insights_output_tokens: 'Sortir',
insights_total: 'Total',
insights_daily_tokens: 'Jetons quotidiens',
insights_model_name: 'Modèle',
insights_model_sessions: 'Séances',
insights_model_tokens: 'Jetons',
insights_model_cost: 'Coût',
insights_model_share: 'Partager',
insights_no_usage_data: 'Aucune donnée d\'utilisation pour l\'instant',
insights_footer: 'Affichage des données des {days} derniers jours',
workspace_desc: 'Ajoutez et changez d\'espace de travail pour vos sessions.',
session_lineage_segment_untitled: 'Segment sans titre',
session_lineage_segment_open: 'Segment de lignée ouverte',
new_profile: 'Nouveau profil',
transcript: 'Transcription',
download_transcript: 'Télécharger en Markdown',
import: 'Importer',
settings_label_sound: 'Son de notification',
settings_desc_sound: 'Jouez un son lorsque l\'assistant termine une réponse.',
tts_listen: 'Écouter',
tts_not_supported: 'La synthèse vocale n\'est pas prise en charge dans ce navigateur.',
settings_label_tts: 'Text-to-Speech pour les réponses',
settings_desc_tts: 'Affichez un bouton haut-parleur sur chaque message de l\'assistant pour le lire à haute voix à l\'aide de la synthèse vocale de votre navigateur.',
settings_label_tts_auto_read: 'Lecture automatique des réponses à haute voix',
settings_desc_tts_auto_read: 'Prononcez automatiquement chaque nouvelle réponse de l\'assistant lorsqu\'elle est terminée. S\'arrête lorsque vous commencez à taper.',
settings_label_voice_mode: 'Bouton du mode vocal mains libres',
settings_desc_voice_mode: 'Affichez le bouton du mode vocal (forme d\'onde audio) à côté du micro de dictée. Vous permet de parler naturellement : Hermes envoie automatiquement après une pause et lit les réponses à haute voix. Nécessite un navigateur prenant en charge à la fois la reconnaissance vocale et TTS.',
settings_label_tts_voice: 'Voix',
settings_desc_tts_voice: 'Voix préférée. Rempli à partir des voix disponibles dans votre navigateur.',
settings_label_tts_rate: 'Taux de parole',
settings_label_tts_pitch: 'Emplacement du discours',
settings_label_notifications: 'Notifications du navigateur',
settings_desc_notifications: 'Afficher une notification système lorsqu\'une réponse est terminée alors que l\'application est en arrière-plan.',
settings_desc_token_usage: 'Affiche le nombre de jetons dentrée/sortie sous chaque réponse de lassistant. Également basculé avec /usage.',
settings_label_api_redact: 'Expurger les données sensibles dans les réponses API',
settings_desc_api_redact: 'Les utilisateurs auto-hébergés peuvent désactiver pour des raisons de transparence (non recommandé pour les instances partagées).',
settings_sidebar_density_compact: 'Compact',
settings_sidebar_density_detailed: 'Détaillé',
settings_desc_sidebar_density: 'Contrôle la quantité de métadonnées que la liste des sessions affiche dans la barre latérale gauche.',
settings_label_auto_title_refresh: 'Actualisation adaptative du titre',
settings_auto_title_refresh_off: 'Désactivé',
settings_auto_title_refresh_5: 'Tous les 5 échanges',
settings_auto_title_refresh_10: 'Tous les 10 échanges',
settings_auto_title_refresh_20: 'Tous les 20 échanges',
settings_desc_auto_title_refresh: 'Régénère automatiquement le titre de la session en fonction du dernier échange, le gardant ainsi pertinent à mesure que la conversation évolue. Nécessite la configuration dun modèle de génération de titres LLM.',
settings_desc_external_sessions: 'Affichez les conversations de CLI, Telegram, Discord, Slack et d\'autres chaînes dans la liste des sessions. Cliquez pour importer et continuer.',
settings_desc_sync_insights: 'Met en miroir l\'utilisation du jeton WebUI dans state.db afin que Hermes /insights inclut les données de session du navigateur. Désactivé par défaut.',
settings_desc_check_updates: 'Afficher une bannière lorsque des versions plus récentes de WebUI ou de l\'agent sont disponibles. Exécute périodiquement une récupération git en arrière-plan.',
settings_desc_bot_name: 'Nom daffichage de lassistant dans linterface utilisateur. Par défaut, Hermès.',
settings_desc_password: 'Saisissez un nouveau mot de passe pour le définir ou le modifier. Laissez vide pour conserver le paramètre actuel.',
password_placeholder: 'Entrez le nouveau mot de passe…',
password_env_var_locked: 'La variable d\'environnement HERMES_WEBUI_PASSWORD est actuellement définie et est prioritaire. Désactivez-le et redémarrez le serveur pour gérer le mot de passe à partir d\'ici.',
password_env_var_locked_placeholder: 'Verrouillé : la variable d\'environnement HERMES_WEBUI_PASSWORD est définie',
disable_auth: 'Désactiver l\'authentification',
sign_out: 'Se déconnecter',
providers_tab_title: 'Fournisseurs',
providers_section_title: 'Fournisseurs',
providers_section_meta: 'Gérez les clés API pour les fournisseurs d\'IA. Les modifications prennent effet immédiatement.',
providers_status_configured: 'Clé API configurée',
providers_status_not_configured: 'Aucune clé API',
providers_status_oauth: 'OAuth',
providers_status_api_key: 'Clé API',
providers_status_not_configured_label: 'Non configuré',
providers_oauth_hint: 'Authentifié via OAuth. Aucune clé API nécessaire.',
providers_oauth_config_yaml_hint: 'Jeton configuré via config.yaml. Pour mettre à jour, modifiez la section des fournisseurs dans votre config.yaml ou exécutez Hermes Auth.',
providers_oauth_not_configured_hint: 'Non authentifié. Exécutez Hermes Auth dans le terminal pour configurer ce fournisseur.',
providers_save: 'Sauvegarder',
providers_remove: 'Retirer',
providers_saving: 'Économie…',
providers_removing: 'Suppression…',
providers_enter_key: 'Veuillez saisir une clé API',
providers_empty: 'Aucun fournisseur configurable trouvé.',
providers_key_updated: 'Clé API enregistrée',
providers_key_removed: 'Clé API supprimée',
providers_key_placeholder_new: 'sk-...',
providers_key_placeholder_replace: 'Entrez une nouvelle clé à remplacer…',
cancel: 'Annuler',
create_job: 'Créer un emploi',
save_skill: 'Enregistrer la compétence',
editing: 'Édition',
empty_title: 'En quoi puis-je aider ?',
empty_subtitle: 'Demandez n\'importe quoi, exécutez des commandes, explorez des fichiers ou gérez vos tâches planifiées.',
suggest_files: 'Quels fichiers se trouvent dans cet espace de travail ?',
suggest_schedule: 'Quel est mon programme aujourd\'hui ?',
suggest_plan: 'Aide-moi à planifier un petit projet.',
onboarding_badge: 'PREMIÈRE EXÉCUTION',
onboarding_title: 'Bienvenue dans l\'interface utilisateur Web Hermès',
onboarding_lead: 'Une configuration guidée rapide vérifiera Hermes, enregistrera une configuration réelle du fournisseur, choisira un espace de travail et un modèle et protégera éventuellement l\'application avec un mot de passe.',
onboarding_back: 'Dos',
onboarding_continue: 'Continuer',
onboarding_skip: 'Ignorer la configuration',
onboarding_skipped: 'Configuration ignorée  en utilisant la configuration existante.',
onboarding_open: 'Hermès ouvert',
onboarding_step_system_title: 'Vérification du système',
onboarding_step_system_desc: 'Vérifiez la visibilité de l\'agent Hermes et de la configuration.',
onboarding_step_setup_title: 'Configuration du fournisseur',
onboarding_step_setup_desc: 'Enregistrez la configuration minimale du fournisseur Hermes.',
onboarding_step_workspace_title: 'Espace de travail + modèle',
onboarding_step_workspace_desc: 'Choisissez les valeurs par défaut pour les nouvelles sessions et le chat.',
onboarding_step_password_title: 'Mot de passe facultatif',
onboarding_step_password_desc: 'Protégez linterface utilisateur Web avant de la partager.',
onboarding_step_finish_title: 'Finition',
onboarding_step_finish_desc: 'Vérifiez et entrez dans l\'application.',
onboarding_notice_system_ready: 'L\'agent Hermes semble accessible depuis l\'interface utilisateur Web.',
onboarding_notice_system_unavailable: 'Hermes Agent nest pas encore entièrement disponible. Bootstrap peut l\'installer, mais la configuration du fournisseur peut toujours nécessiter un terminal.',
onboarding_check_agent: 'Agent Hermès',
onboarding_check_agent_ready: 'Détecté et importable',
onboarding_check_agent_missing: 'Manquant ou partiellement importable',
onboarding_check_password: 'Mot de passe',
onboarding_check_password_enabled: 'Déjà activé',
onboarding_check_password_disabled: 'Pas encore activé',
onboarding_check_provider: 'Configuration du fournisseur',
onboarding_check_provider_ready: 'Prêt à discuter',
onboarding_check_provider_partial: 'Enregistré mais incomplet',
onboarding_check_provider_pending: 'Vérification nécessaire',
onboarding_config_file: 'Fichier de configuration :',
onboarding_env_file: 'Fichier .env :',
onboarding_unknown: 'Inconnu',
onboarding_current_provider: 'Configuration actuelle :',
onboarding_missing_imports: 'Importations manquantes :',
onboarding_notice_setup_required: 'Choisissez ici un chemin de fournisseur simple. Les flux OAuth avancés appartiennent toujours à la CLI Hermes pour le moment.',
onboarding_notice_setup_already_ready: 'Une configuration de fournisseur Hermes fonctionnelle est déjà détectée. Vous pouvez le conserver ou le remplacer ici.',
onboarding_oauth_provider_ready_title: 'Fournisseur déjà authentifié',
onboarding_oauth_provider_ready_body: 'Cette instance est configurée pour utiliser un fournisseur OAuth (<strong>{provider}</strong>) configuré via la CLI Hermes. Aucune clé API n\'est nécessaire ici - cliquez sur Continuer pour terminer la configuration.',
onboarding_oauth_provider_not_ready_title: 'Fournisseur OAuth pas encore authentifié',
onboarding_oauth_provider_not_ready_body: 'Cette instance est configurée pour utiliser <strong>{provider}</strong>, qui utilise OAuth plutôt qu\'une clé API. Exécutez <code>hermes auth</code> ou <code>hermes model</code> dans un terminal pour vous authentifier, puis rechargez l\'interface utilisateur Web.',
onboarding_oauth_switch_hint: 'Ou choisissez un autre fournisseur ci-dessous pour passer à une configuration par clé API :',
oauth_login_codex: 'Connectez-vous avec Codex (ChatGPT)',
oauth_codex_step1: 'Étape 1 : Visitez cette URL et entrez le code',
oauth_codex_step2: 'Étape 2 : Saisissez ce code sur la page',
oauth_codex_polling: 'En attente d\'autorisation...',
oauth_codex_success: 'Connexion au Codex OAuth réussie !',
oauth_codex_error: 'Échec de la connexion OAuth',
oauth_codex_expired: 'Code expiré, veuillez réessayer',
onboarding_notice_workspace: 'Ces valeurs réutilisent les mêmes API de paramètres que l\'application normale.',
onboarding_workspace_label: 'Espace de travail',
onboarding_workspace_or_path: 'Ou entrez un chemin d\'espace de travail',
onboarding_workspace_placeholder: '/accueil/vous/espace de travail',
onboarding_provider_label: 'Mode configuration',
onboarding_quick_setup_badge: 'configuration rapide',
provider_category_easy_start: 'Démarrage facile',
provider_category_self_hosted: 'Ouvert / auto-hébergé',
provider_category_specialized: 'Spécialisé',
onboarding_api_key_label: 'Clé API',
onboarding_api_key_placeholder: 'Laisser vide pour conserver une clé enregistrée existante',
onboarding_api_key_label_optional: 'Clé API (facultatif)',
onboarding_api_key_placeholder_optional: 'Laisser vide pour les serveurs sans clé',
onboarding_api_key_help_keyless: 'La plupart des installations LM Studio / Ollama / vLLM s\'exécutent sans clé — laissez ce champ vide si votre serveur ne nécessite pas d\'authentification. Utilisez le bouton Tester la connexion pour vérifier.',
onboarding_api_key_help_prefix: 'Enregistré comme secret dans votre fichier Hermes .env en utilisant',
onboarding_base_url_label: 'URL de base',
onboarding_base_url_placeholder: 'https://votre-endpoint.example/v1',
onboarding_base_url_help: 'Utilisez-le pour les routeurs compatibles OpenAI, les serveurs auto-hébergés, LiteLLM, Ollama, LM Studio, vLLM ou des points de terminaison similaires.',
onboarding_model_label: 'Modèle par défaut',
onboarding_workspace_help: 'Choisissez le modèle qu\'Hermes doit utiliser pour les nouvelles discussions une fois la configuration terminée.',
onboarding_custom_model_placeholder: 'votre-nom-de-modèle',
onboarding_custom_model_help: 'Pour les points de terminaison personnalisés, entrez lID de modèle exact attendu par votre serveur.',
onboarding_notice_password_enabled: 'Un mot de passe est déjà configuré. Saisissez-en un nouveau uniquement si vous souhaitez le remplacer.',
onboarding_notice_password_recommended: 'Facultatif mais recommandé si vous exposez l\'interface utilisateur au-delà de localhost.',
onboarding_password_label: 'Mot de passe (facultatif)',
onboarding_password_placeholder: 'Laisser vide pour sauter',
onboarding_password_help: 'Les mots de passe sont stockés via l\'API des paramètres existants et hachés côté serveur.',
onboarding_notice_finish: 'Vous pouvez rouvrir les paramètres plus tard pour modifier tout cela.',
onboarding_not_set: 'Non défini',
onboarding_password_will_enable: 'Sera activé',
onboarding_password_will_replace: 'Sera remplacé',
onboarding_password_keep_existing: 'Conserver le mot de passe actuel',
onboarding_password_remains_disabled: 'Restera invalide',
onboarding_password_skipped: 'Ignoré pour l\'instant',
onboarding_finish_help: 'La finition stocke <code>onboarding_completed</code> dans les paramètres et vous amène dans l\'application normale.',
onboarding_error_choose_workspace: 'Choisissez un espace de travail avant de continuer.',
onboarding_error_choose_model: 'Choisissez un modèle avant de continuer.',
onboarding_error_provider_required: 'Choisissez un mode de configuration avant de continuer.',
onboarding_error_base_url_required: 'L\'URL de base est requise pour les points de terminaison personnalisés.',
onboarding_probe_test_button: 'Tester la connexion',
onboarding_probe_probing: 'Test de connexion…',
onboarding_probe_ok: 'Connecté. {n} modèle(s) disponible(s).',
onboarding_probe_error_generic: 'Impossible d\'atteindre l\'URL de base configurée.',
onboarding_probe_error_invalid_url: 'L\'URL de base doit commencer par http:// ou https://.',
onboarding_probe_error_dns: 'Impossible de résoudre l\'hôte. Vérifiez l\'URL ou utilisez l\'adresse IP de l\'hôte.',
onboarding_probe_error_connect_refused: 'Connexion refusée : le serveur ne fonctionne peut-être pas à cette adresse. Depuis Docker, essayez ladresse IP de lhôte au lieu de localhost.',
onboarding_probe_error_timeout: 'Le point final na pas répondu à temps. Vérifiez que le serveur est en cours d\'exécution et que l\'URL est correcte.',
onboarding_probe_error_http_4xx: 'Le point de terminaison a renvoyé une erreur client. Vérifiez l\'authentification et le chemin de l\'URL (se termine généralement par /v1).',
onboarding_probe_error_http_5xx: 'Le point de terminaison a renvoyé une erreur de serveur. Vérifiez les journaux du serveur LM Studio / Ollama.',
onboarding_probe_error_parse: 'Le point de terminaison na pas renvoyé une liste de modèles sous la forme attendue. Vérifiez que l\'URL pointe vers la racine de l\'API compatible OpenAI.',
onboarding_probe_error_unreachable: 'Impossible d\'atteindre l\'URL de base configurée.',
onboarding_error_probe_failed: 'Impossible de valider l\'URL de base configurée.',
onboarding_error_workspace_required: 'Un espace de travail est requis.',
onboarding_error_model_required: 'Un modèle est requis.',
onboarding_complete: 'Intégration terminée',
error_prefix: 'Erreur:',
not_available: 'N / A',
never: 'jamais',
add: 'Ajouter',
add_failed: 'Échec de l\'ajout :',
remove_failed: 'Échec de la suppression :',
switch_failed: 'Échec du changement :',
name_required: 'Le nom est requis',
content_required: 'Le contenu est requis',
view: 'Voir',
dismiss: 'Rejeter',
disable: 'Désactiver',
cron_no_jobs: 'Aucune tâche planifiée trouvée.',
cron_status_off: 'désactivé',
cron_status_paused: 'en pause',
cron_status_error: 'erreur',
cron_status_active: 'actif',
cron_status_running: 'courir\u2026',
cron_status_needs_attention: 'a besoin d\'attention',
cron_attention_desc: 'Cette tâche récurrente n\'a pas de prochaine exécution. Le planificateur n\'a peut-être pas réussi à calculer sa prochaine exécution.',
cron_attention_croniter_hint: 'Il se peut que le package croniter soit manquant dans le runtime Gateway. Redémarrez la passerelle avec la prise en charge de cron, puis reprenez ce travail.',
cron_attention_resume: 'Reprendre et recalculer',
cron_jobs_project: 'Emplois Cron',
cron_attention_run_once: 'Cours une fois maintenant',
cron_attention_copy_diagnostics: 'Copier les diagnostics',
cron_diagnostics_copied: 'Diagnostics Cron copiés',
cron_next: 'Suivant',
cron_last: 'Dernier',
cron_run_now: 'Courez maintenant',
cron_pause: 'Pause',
cron_resume: 'CV',
cron_job_name_placeholder: 'Nom du travail',
cron_schedule_placeholder: 'Calendrier',
cron_prompt_placeholder: 'Rapide',
cron_last_output: 'Dernière sortie',
cron_all_runs: 'Toutes les courses',
cron_hide_runs: 'Masquer les courses',
cron_no_runs_yet: '(pas encore de courses)',
cron_schedule_required_example: 'Un horaire est requis (par exemple "0 9 * * *" ou "toutes les 1h")',
cron_schedule_required: 'Un horaire est requis',
cron_prompt_required: 'Une invite est requise',
cron_job_created: 'Emploi créé',
cron_duplicate: 'Double',
cron_duplicated: 'Tâche dupliquée (en pause)',
cron_job_triggered: 'Tâche déclenchée',
cron_job_paused: 'Tâche suspendue',
cron_job_resumed: 'Travail repris',
cron_job_updated: 'Emploi mis à jour',
cron_delete_confirm_title: 'Supprimer la tâche cron',
cron_delete_confirm_message: 'Cela ne peut pas être annulé.',
cron_job_deleted: 'Travail supprimé',
status_failed: 'échoué',
status_completed: 'complété',
todos_no_active: 'Aucune liste de tâches active dans cette session.',
clear_conversation_title: 'Conversation claire',
clear_conversation_message: 'Effacer tous les messages ? Cela ne peut pas être annulé.',
clear_failed: 'Échec de la suppression :',
skills_no_match: 'Aucune compétence ne correspond.',
linked_files: 'Fichiers liés',
skill_load_failed: 'Impossible de charger la compétence :',
skill_file_load_failed: 'Impossible de charger le fichier :',
skill_name_required: 'Le nom de la compétence est requis',
skill_updated: 'Compétence mise à jour',
skill_created: 'Compétence créée',
skill_deleted: 'Compétence supprimée',
skill_delete_confirm: 'Supprimer la compétence "{0}" ?',
skills_empty_title: 'Sélectionnez une compétence',
skills_empty_sub: 'Choisissez une compétence dans la barre latérale pour afficher son contenu ou créez-en une nouvelle.',
skills_edit: 'Modifier',
skills_delete: 'Supprimer',
skills_back_to: 'Retour à {0}',
tasks_empty_title: 'Sélectionnez une tâche planifiée',
tasks_empty_sub: 'Choisissez une tâche dans la barre latérale pour afficher ses détails et ses exécutions, ou créez-en une nouvelle.',
workspaces_empty_title: 'Sélectionnez un espace',
workspaces_empty_sub: 'Choisissez un espace dans la barre latérale pour afficher ses fichiers et paramètres, ou ajoutez-en un nouveau.',
profiles_empty_title: 'Sélectionnez un profil',
profiles_empty_sub: 'Choisissez un profil d\'agent dans la barre latérale pour afficher et modifier ses paramètres, ou créez-en un nouveau.',
memory_notes_label: 'mémoire (notes)',
memory_saved: 'Mémoire sauvegardée',
my_notes: 'Mes notes',
user_profile: 'Profil utilisateur',
no_notes_yet: 'Aucune note pour l\'instant.',
no_profile_yet: 'Pas encore de profil.',
workspace_choose_path: 'Choisir le chemin de l\'espace de travail',
workspace_choose_path_meta: 'Ajoutez un chemin validé et changez cette conversation',
workspace_manage: 'Gérer les espaces de travail',
workspace_manage_meta: 'Ouvrez le panneau Espaces',
workspace_use_title: 'Utiliser dans la session en cours',
workspace_use: 'Utiliser',
workspace_add_path_placeholder: 'Ajouter un chemin d\'accès à l\'espace de travail (par exemple /home/user/my-project)',
workspace_paths_validated_hint: 'Les chemins sont validés en tant que répertoires existants avant d\'être enregistrés.',
workspace_drag_hint: 'Faites glisser pour réorganiser',
workspace_reorder_failed: 'Échec de la réorganisation',
workspace_added: 'Espace de travail ajouté',
workspace_renamed: 'Espace de travail renommé',
workspace_remove_confirm_title: 'Supprimer l\'espace de travail',
workspace_removed: 'Espace de travail supprimé',
workspace_switch_prompt_title: 'Changer d\'espace de travail',
workspace_switch_prompt_message: 'Entrez un chemin daccès absolu à lespace de travail vers lequel ajouter et basculer cette conversation.',
workspace_switch_prompt_confirm: 'Changer',
workspace_switch_prompt_placeholder: '/Utilisateurs/vous/projet',
workspace_not_added: 'L\'espace de travail n\'a pas été ajouté',
workspace_already_saved: 'Espace de travail déjà enregistré : choisissez-le dans la liste',
workspace_busy_switch: 'Impossible de changer d\'espace de travail pendant que l\'agent est en cours d\'exécution',
discard_file_edits_title: 'Supprimer les modifications du fichier ?',
discard_file_edits_message: 'Changer despace de travail supprimera les modifications de fichiers non enregistrées dans laperçu.',
profiles_no_profiles: 'Aucun profil trouvé.',
profile_api_keys_configured: 'Clés API configurées',
profile_gateway_running: 'Passerelle en cours d\'exécution',
profile_gateway_stopped: 'Passerelle arrêtée',
profile_active: 'ACTIF',
profile_no_configuration: 'Aucune configuration',
profile_use: 'Utiliser',
profile_switch_title: 'Passer à ce profil',
profile_delete_title: 'Supprimer ce profil',
profile_default_label: '(défaut)',
profile_name_placeholder: 'Nom du profil (minuscules, a-z 0-9 tirets)',
profile_clone_label: 'Cloner la configuration du profil actif',
profile_base_url_placeholder: 'URL de base (facultatif, par exemple http://localhost:11434)',
profile_api_key_placeholder: 'Clé API (facultatif)',
manage_profiles: 'Gérer les profils',
profiles_load_failed: 'Échec du chargement des profils',
profile_name_rule: 'Lettres minuscules, chiffres, traits d\'union et traits de soulignement uniquement',
profile_base_url_rule: 'L\'URL de base doit commencer par http:// ou https://',
profile_delete_confirm_message: 'Toutes les sessions, configurations, compétences et mémoire de ce profil seront définitivement supprimées. Cela ne peut pas être annulé.',
active_conversation_none: 'Aucune conversation active sélectionnée.',
settings_unsaved_changes: 'Vous avez des modifications non enregistrées.',
sign_out_failed: 'Échec de la déconnexion :',
disable_auth_confirm_title: 'Désactiver la protection par mot de passe',
disable_auth_confirm_message: 'Tout le monde pourra accéder à cette instance.',
auth_disabled: 'Authentification désactivée  protection par mot de passe supprimée',
disable_auth_failed: 'Échec de la désactivation de l\'authentification :',
skill_name: 'Nom',
skill_category: 'Catégorie',
skill_category_placeholder: 'Facultatif, par ex. développeurs',
skill_content: 'Contenu SKILL.md',
skill_content_placeholder: 'Frontmatter YAML + corps de démarque',
skill_rename_not_supported: 'Renommer une compétence n\'est pas pris en charge. Créez une nouvelle compétence et supprimez l\'ancienne pour la renommer.',
skill_metadata: 'Métadonnées',
cron_name_label: 'Nom',
cron_name_placeholder: 'Facultatif',
cron_schedule_label: 'Calendrier',
cron_schedule_hint: 'Utilisez « toutes les heures » ou une expression cron pour les tâches récurrentes. Les durées nues comme « 30 m » s\'exécutent une fois.',
cron_schedule_once_warning: 'Les formulaires de durée tels que « 30 m » s\'exécutent une fois et sont supprimés après l\'exécution. Utilisez « tous les 30 mois » pour conserver une tâche récurrente.',
cron_prompt_label: 'Rapide',
cron_deliver_label: 'Livrer la sortie à',
cron_deliver_local: 'Local (enregistrer la sortie uniquement)',
cron_profile_label: 'Profil',
cron_profile_server_default: 'serveur par défaut',
cron_profile_server_default_hint: 'Utilise le profil par défaut du serveur WebUI au moment de l\'exécution. Les tâches existantes sans profil conservent ce comportement hérité.',
cron_toast_notifications_label: 'Toasts dachèvement',
cron_toast_notifications_hint: 'Montrez un toast lorsque ce cron se termine. Le badge Tâches et le marqueur de nouvelle exécution sont toujours mis à jour lorsque cette option est désactivée.',
cron_toast_notifications_enabled: 'Activé',
cron_toast_notifications_disabled: 'Désactivé',
cron_skills_label: 'Compétences',
cron_skills_placeholder: 'Ajouter des compétences (facultatif)…',
cron_skills_edit_hint: 'La liste de compétences n\'est pas modifiable après la création.',
workspace_name_label: 'Nom',
workspace_name_placeholder: 'Nom convivial facultatif',
workspace_path_label: 'Chemin',
workspace_path_required: 'Le chemin est obligatoire',
workspace_path_readonly: 'Le chemin ne peut pas être modifié. Renommer uniquement.',
workspace_new_title: 'Nouvel espace',
profile_name_label: 'Nom',
profile_base_url_label: 'URL de base',
profile_api_key_label: 'Clé API',
cmd_yolo: 'Basculer le mode YOLO (ignorer les approbations)',
yolo_no_session: 'Aucune session active',
yolo_enabled: '⚡ Mode YOLO activé  les approbations ont ignoré cette session',
yolo_disabled: 'Mode YOLO désactivé',
yolo_pill_label: 'YOLO',
yolo_pill_title_active: 'Mode YOLO actif — cliquez pour désactiver',
approval_skip_all: '⚡ Passer toute cette session',
approval_skip_all_title: 'Ignorer toutes les invites d\'approbation pour cette session',
composer_send: 'Envoyer un message',
composer_queue: 'Message de file d\'attente',
composer_interrupt: 'Interrompre et envoyer',
composer_steer: 'Piloter la réponse actuelle',
composer_stop: 'Arrêter la génération',
composer_disabled_clarify: 'Répondre à la demande de précisions',
composer_disabled_compression: 'En attendant la fin de la compression',
composer_disabled_empty: 'Tapez un message à envoyer',
composer_mobile_workspace: 'Espace de travail',
composer_mobile_model: 'Modèle',
composer_mobile_reasoning: 'Raisonnement',
composer_mobile_context: 'Contexte',
media_audio_label: 'Audio',
media_svg_label: 'Diagramme',
media_video_label: 'Vidéo',
csv_loading: 'Chargement du fichier CSV',
csv_too_large: 'Fichier CSV trop volumineux pour le rendu en ligne',
csv_no_data: 'Le fichier CSV ne contient pas suffisamment de données pour être affiché sous forme de tableau',
csv_error: 'Échec du chargement du fichier CSV',
csv_header_note: 'Première ligne affichée comme en-tête du tableau',
excalidraw_loading: 'Diagramme de chargement',
excalidraw_too_large: 'Fichier Excalidraw trop volumineux pour le rendu en ligne',
excalidraw_invalid: 'Format de fichier Excalidraw invalide',
excalidraw_error: 'Échec du chargement du fichier Excalidraw',
excalidraw_label: 'Diagramme',
excalidraw_download: 'Télécharger',
excalidraw_empty: 'Diagramme vide',
excalidraw_render_error: 'Échec du rendu du diagramme',
excalidraw_simplified: 'Aperçu SVG simplifié — pas identique au pixel au canevas Excalidraw',
checkpoint_title: 'Points de contrôle',
checkpoint_empty: 'Aucun point de contrôle trouvé pour cet espace de travail.',
checkpoint_loading: 'Chargement des points de contrôle…',
checkpoint_error: 'Échec du chargement des points de contrôle',
checkpoint_date: 'Date',
checkpoint_message: 'Message',
checkpoint_files: 'Fichiers',
checkpoint_view_diff: 'Voir la différence',
checkpoint_restore: 'Restaurer',
checkpoint_restore_confirm_title: 'Restaurer le point de contrôle ?',
checkpoint_restored: 'Point de contrôle restauré',
checkpoint_diff_title: 'Changements au point de contrôle',
checkpoint_diff_no_changes: 'Aucune différence trouvée entre ce point de contrôle et l\'espace de travail actuel.',
}
};
// Active locale — defaults to English; overridden by loadLocale() at boot.