danielmiessler.fabric/internal/i18n/locales/fr.json
Kayvan Sylvan 9b724f8cec fix: persist refreshed Codex tokens and reactivate configured vendors
- Persist rotated Codex OAuth tokens after every successful refresh.
- Reload stored credentials under cross-process locks before refreshing.
- Write environment updates atomically with secret-only file permissions.
- Preserve existing environment values while skipping empty replacements.
- Activate configured vendors lazily and surface configuration failures immediately.
- Reuse valid refresh tokens before starting interactive authentication.
- Localize Codex setup, provider, request, and persistence errors.
- Upgrade AI, cloud, telemetry, and supporting Go dependencies.
- Set Claude Opus 5 as default changelog summarizer.
- Document `.env` token sensitivity and rewrite behavior.
2026-08-27 18:12:08 -07:00

766 lines
67 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"abacus_models_endpoint_status": "Le point de terminaison des modèles Abacus a renvoyé le statut %d",
"additional_yt_dlp_args": "Arguments supplémentaires à passer à yt-dlp (ex. '--cookies-from-browser brave')",
"address_to_bind_rest_api": "Adresse pour lier l'API REST",
"anthropic_stream_error": "Erreur de flux : %v",
"api_key_secure_server_routes": "Clé API utilisée pour sécuriser les routes du serveur",
"application_options_header": "Options de l'application :",
"apply_variables_to_input": "Appliquer les variables à l'entrée utilisateur",
"attachment_could_not_determine_mimetype": "Impossible de déterminer le type MIME de l'URL",
"attachment_file_not_exist": "Le fichier %s n'existe pas",
"attachment_no_content_available": "Aucun contenu disponible",
"attachment_no_type_no_content": "La pièce jointe n'a ni type ni contenu pour le déduire",
"attachment_path_or_url_help": "Chemin de pièce jointe ou URL (ex. pour les messages de reconnaissance d'image OpenAI)",
"audio_output_file_specified_but_not_tts_model": "fichier de sortie audio '%s' spécifié mais le modèle '%s' n'est pas un modèle TTS. Veuillez utiliser un modèle TTS comme gemini-2.5-flash-preview-tts",
"audio_video_file_transcribe": "Fichier audio ou vidéo à transcrire",
"available_models_header": "Modèles disponibles",
"available_transcription_models": "Modèles de transcription disponibles :",
"available_vendors_header": "Fournisseurs disponibles :",
"azure_api_key_required": "la clé API Azure est requise",
"azure_api_version_question": "Entrez la version de l'API Azure (laissez vide pour la valeur par défaut)",
"azure_base_url_question": "URL de base de l'API",
"azure_base_url_required": "l'URL de base Azure est requise",
"azure_credential_failure": "échec de la création des identifiants Azure",
"azure_deployments_question": "Entrez les noms de vos déploiements Azure (séparés par des virgules)",
"azure_deployments_required": "au moins un nom de déploiement Azure est requis",
"azure_failed_extract_deployment": "échec de l'extraction du nom de déploiement de la requête",
"azure_model_field_empty": "le champ modèle est vide dans le corps de la requête",
"azure_request_body_nil": "le corps de la requête est nil",
"azureaigateway_aoai_no_choices": "aucun choix dans la réponse Azure OpenAI",
"azureaigateway_aoai_parse_response_failed": "échec de l'analyse de la réponse Azure OpenAI : %w",
"azureaigateway_api_version_question": "Version de l'API Azure OpenAI (par défaut : 2025-04-01-preview, laisser vide pour la valeur par défaut)",
"azureaigateway_backend_not_initialized": "backend non initialisé - exécutez 'fabric --setup' pour configurer",
"azureaigateway_backend_type_question": "Sélectionnez le type de backend (bedrock, azure-openai, vertex-ai)",
"azureaigateway_bedrock_no_text_blocks": "aucun bloc de contenu texte dans la réponse Bedrock",
"azureaigateway_bedrock_parse_response_failed": "échec de l'analyse de la réponse Bedrock : %w",
"azureaigateway_failed_create_request": "AzureAIGateway : échec de la création de la requête : %w",
"azureaigateway_failed_read_response": "AzureAIGateway : échec de la lecture de la réponse : %w",
"azureaigateway_gateway_url_https_required": "l'URL du gateway doit utiliser le schéma HTTPS",
"azureaigateway_gateway_url_question": "Entrez l'URL de base de votre Azure APIM Gateway (ex. https://gateway.entreprise.com)",
"azureaigateway_gateway_url_required": "l'URL du Azure APIM Gateway est requise",
"azureaigateway_http_error": "AzureAIGateway : HTTP %d : %s",
"azureaigateway_http_request_failed": "AzureAIGateway : échec de la requête HTTP : %w",
"azureaigateway_invalid_gateway_url": "URL du gateway invalide : %w",
"azureaigateway_no_valid_messages": "aucun message valide après filtrage du contenu vide",
"azureaigateway_prepare_request_failed": "AzureAIGateway : %w",
"azureaigateway_response_too_large": "AzureAIGateway : réponse trop volumineuse (>%d octets)",
"azureaigateway_subscription_key_question": "Entrez votre clé d'abonnement Azure APIM",
"azureaigateway_subscription_key_required": "la clé d'abonnement Azure APIM est requise",
"azureaigateway_unsupported_backend": "backend non pris en charge : %s (options valides : bedrock, azure-openai, vertex-ai)",
"azureaigateway_vertexai_no_content": "aucun contenu dans la réponse Vertex AI",
"azureaigateway_vertexai_parse_response_failed": "échec de l'analyse de la réponse Vertex AI : %w",
"background_type_help": "Type d'arrière-plan : opaque, transparent (par défaut : opaque, seulement pour PNG/WebP)",
"bedrock_api_key_label": "Entrez votre clé API Bedrock / jeton ABSK (laissez vide pour utiliser les identifiants AWS)",
"bedrock_aws_access_key_label": "Entrez votre AWS Access Key ID (laissez vide pour utiliser la chaîne d'authentification AWS)",
"bedrock_aws_region_label": "Région AWS",
"bedrock_aws_secret_key_label": "Entrez votre AWS Secret Access Key (laissez vide pour utiliser la chaîne d'authentification AWS)",
"bedrock_client_not_initialized": "client Bedrock non initialisé — exécutez 'fabric --setup' pour configurer",
"bedrock_converse_failed": "bedrock converse a échoué pour le modèle %s : %w",
"bedrock_conversestream_failed": "bedrock conversestream a échoué pour le modèle %s : %w",
"bedrock_empty_response_content": "contenu de réponse vide",
"bedrock_failed_list_foundation_models": "échec de la liste des modèles de fondation : %w",
"bedrock_failed_list_inference_profiles": "échec de la liste des profils d'inférence : %w",
"bedrock_fetch_regions_bad_status": "les endpoints botocore ont renvoyé un statut inattendu",
"bedrock_fetch_regions_failed": "échec de la récupération des régions Bedrock depuis botocore",
"bedrock_fetch_regions_parse_failed": "échec de l analyse du fichier endpoints.json de botocore",
"bedrock_invalid_aws_region": "région AWS invalide : %s",
"bedrock_listmodels_fallback": "API ListModels Bedrock échouée, utilisation de la liste statique de secours",
"bedrock_panic_sendstream": "panique dans SendStream : %v",
"bedrock_setup_auth_option_accesskey": " [2] AWS Access Key + Secret Key",
"bedrock_setup_auth_option_apikey": " [1] Clé API Bedrock / jeton ABSK (recommandé — identique à Claude Code)",
"bedrock_setup_auth_prompt": "Entrez 1 ou 2",
"bedrock_setup_choose_auth_method": " Choisissez la méthode d'authentification :",
"bedrock_setup_choose_model": " Choisissez le modèle par défaut (les ID sans préfixe fonctionnent dans toutes les régions ; us./eu./ap. sont spécifiques à une région) :",
"bedrock_setup_choose_region": " Choisissez la région AWS :",
"bedrock_setup_header": "[Bedrock]",
"bedrock_setup_invalid_auth_selection": "sélection invalide : %s (entrez 1 ou 2)",
"bedrock_setup_model_custom_prompt": "Entrez l'ID du modèle (par ex. anthropic.claude-opus-4-6-v1)",
"bedrock_setup_model_option_custom": " [0] Entrer un autre ID de modèle",
"bedrock_setup_model_prompt": "Entrez le numéro du modèle ou 0 pour saisir le vôtre",
"bedrock_setup_region_custom_prompt": "Entrez une région AWS personnalisée (par ex. us-east-1)",
"bedrock_setup_region_option_custom": " [0] Entrer une autre région",
"bedrock_setup_region_prompt": "Entrez le numéro de la région ou 0 pour une région personnalisée",
"bedrock_setup_selected_model": " ✓ Modèle sélectionné : %s",
"bedrock_setup_use_with": " Utilisation : fabric -m %s -V Bedrock",
"bedrock_unable_load_aws_config": "impossible de charger la configuration AWS : %w",
"bedrock_unable_load_aws_config_with_region": "impossible de charger la configuration AWS avec la région %s : %w",
"bedrock_unexpected_content_block_type": "type de bloc de contenu inattendu : %T",
"bedrock_unexpected_response_type": "type de réponse inattendu : %T",
"bedrock_unknown_stream_event_type": "type d'événement de flux inconnu : %T",
"cannot_convert_string": "impossible de convertir la chaîne %q en %v",
"change_default_model": "Changer le modèle par défaut",
"chat_error_content_fields_misused": "Impossible d'utiliser Content et MultiContent simultanément",
"chatter_error_empty_response": "réponse vide",
"chatter_error_find_context": "impossible de trouver le contexte %s : %v",
"chatter_error_find_session": "impossible de trouver la session %s : %v",
"chatter_error_get_pattern": "impossible d'obtenir le modele %s : %v",
"chatter_error_load_strategy": "impossible de charger la strategie %s : %v",
"chatter_error_no_messages_provided": "aucun message fourni",
"chatter_error_no_session_pattern_user_messages": "aucune session, aucun modèle ni message utilisateur fourni",
"chatter_error_stream_update": "Erreur : %s",
"chatter_help_review_changes_with_git_diff": "Vous pouvez verifier les modifications avec 'git diff' si vous utilisez git.",
"chatter_info_file_changes_applied_successfully": "Les modifications de fichiers ont ete appliquees avec succes.",
"chatter_log_stream_usage_metadata": "[Métadonnées] Entrée : %d | Sortie : %d | Total : %d",
"chatter_prompt_enforce_response_language": "%s\n\nIMPORTANT : D'abord, executez les instructions fournies dans ce prompt en utilisant l'entree de l'utilisateur. Ensuite, assurez-vous que l'integralite de votre reponse finale, y compris tous les en-tetes de section ou titres generes lors de l'execution des instructions, soit redigee UNIQUEMENT en langue %s.",
"chatter_warning_apply_file_changes_failed": "Avertissement : echec de l'application des modifications de fichiers : %v",
"chatter_warning_get_current_directory_failed": "Avertissement : echec de l'obtention du repertoire courant : %v",
"chatter_warning_parse_file_changes_failed": "Avertissement : echec de l'analyse des modifications de fichiers : %v",
"choose_context_from_available": "Choisissez un contexte parmi les contextes disponibles",
"choose_model": "Choisir le modèle",
"choose_pattern_from_available": "Choisissez un motif parmi les motifs disponibles",
"choose_session_from_available": "Choisissez une session parmi les sessions disponibles",
"choose_strategy_from_available": "Choisir une stratégie parmi les stratégies disponibles",
"codex_api_base_url_question": "Entrez l'URL de base de l'API Codex",
"codex_auth_base_url_invalid": "URL de base d'authentification Codex invalide : %w",
"codex_auth_base_url_question": "Entrez l'URL de base OAuth de Codex",
"codex_browser_open_fallback": "Si votre navigateur ne s'est pas ouvert, accédez à cette URL pour vous authentifier :",
"codex_decode_models_response_failed": "Échec du décodage de la réponse des modèles Codex : %w",
"codex_decode_refresh_response_failed": "Échec du décodage de la réponse du jeton Codex rafraîchi : %w",
"codex_decode_token_response_failed": "Échec du décodage de la réponse d'échange de jeton Codex : %w",
"codex_image_file_not_supported": "Le fournisseur Codex ne prend pas en charge --image-file. Utilisez une pièce jointe image à la place.",
"codex_login_account_changed": "La connexion Codex est liée à un compte ChatGPT différent de la configuration enregistrée. Veuillez relancer 'fabric --setup'.",
"codex_login_completed": "Connexion Codex terminée",
"codex_login_failed": "Échec de la connexion Codex : %s",
"codex_login_invalid": "Votre connexion Codex n'est plus valide. Veuillez relancer 'fabric --setup'.",
"codex_login_missing_account_claim": "La connexion Codex n'a pas inclus d'identifiant de compte ChatGPT. Cet état de connexion n'est pas pris en charge.",
"codex_login_missing_auth_code": "La connexion Codex n'a pas renvoyé de code d'autorisation.",
"codex_login_missing_tokens": "La connexion Codex n'a pas renvoyé les jetons d'accès et de rafraîchissement requis.",
"codex_login_refresh_failed": "Le rafraîchissement de la connexion Codex a échoué. Veuillez relancer 'fabric --setup'.",
"codex_login_return_to_fabric": "Retourner à Fabric.",
"codex_login_revoked": "La connexion Codex a expiré ou a été révoquée. Veuillez relancer 'fabric --setup'.",
"codex_login_server_stopped": "Le serveur de rappel de connexion Codex s'est arrêté avant la fin de l'authentification.",
"codex_login_state_mismatch": "La connexion Codex n'a pas pu être vérifiée car l'état OAuth ne correspondait pas.",
"codex_login_timed_out": "La connexion Codex a expiré avant la fin de l'authentification.",
"codex_oauth_missing_auth_code": "Code d'autorisation manquant",
"codex_oauth_random_state_failed": "Échec de la génération d'un état OAuth aléatoire sécurisé : %w",
"codex_oauth_server_start_failed": "Échec du démarrage du serveur local de rappel OAuth : %w",
"codex_oauth_state_mismatch": "L'état ne correspond pas",
"codex_provider_error": "erreur du fournisseur Codex (statut %d) : %s",
"codex_refresh_failed_status": "Échec du rafraîchissement de la connexion Codex (statut %d)",
"codex_refresh_login_failed": "Échec du rafraîchissement de la connexion Codex : %w",
"codex_refresh_token_required": "Le jeton de rafraîchissement Codex est requis. Veuillez relancer 'fabric --setup'.",
"codex_replay_body_unavailable": "Le corps de la requête ne peut pas être rejoué pour la tentative de réauthentification Codex",
"codex_request_failed": "La requête Codex a échoué : %w",
"codex_request_failed_status": "La requête Codex a échoué avec le statut %d",
"codex_starting_browser_login": "Démarrage de la connexion OpenAI par navigateur pour Codex.",
"codex_token_exchange_failed": "L'échange de jeton Codex a échoué : %w",
"codex_token_persist_failed": "échec de l'enregistrement de la connexion Codex : %w",
"codex_token_refresh_missing_access_token": "Le rafraîchissement du jeton Codex n'a pas renvoyé de jeton d'accès.",
"codex_usage_limit_reached": "Limite d'utilisation Codex atteinte",
"command_completed_successfully": "Commande terminée avec succès",
"compression_level_jpeg_webp": "Niveau de compression 0-100 pour les formats JPEG/WebP (par défaut : non défini)",
"config_file_not_found": "fichier de configuration non trouvé : %s",
"convert_html_readability": "Convertir l'entrée HTML en vue propre et lisible",
"copilot_debug_created_conversation": "Conversation Copilot créée: %s",
"copilot_debug_failed_parse_sse_event": "Échec de l'analyse de l'événement SSE: %v",
"copilot_error_chat_request": "échec de la requête de chat: %s - %s",
"copilot_error_create_conversation": "échec de la création de la conversation: %s - %s",
"copilot_error_reading_stream": "erreur lors de la lecture du flux: %w",
"copilot_error_stream_request": "échec de la demande de flux: %s - %s",
"copilot_failed_create_conversation": "échec de la création de la conversation: %w",
"copilot_failed_send_message": "échec de l'envoi du message: %w",
"copilot_failed_stream_message": "échec du streaming du message: %w",
"copilot_tenant_client_id_required": "l'ID de locataire et l'ID client sont requis",
"copy_to_clipboard": "Copier dans le presse-papiers",
"could_not_copy_to_clipboard": "impossible de copier dans le presse-papiers : %v",
"could_not_create_config_dir": "impossible de créer le répertoire de configuration : %w",
"could_not_create_env_file": "impossible de créer le fichier .env : %w",
"could_not_determine_home_dir": "impossible de déterminer le répertoire home de l'utilisateur : %w",
"could_not_stat_env_file": "impossible de vérifier le fichier .env : %w",
"custom_notification_command": "Commande personnalisée à exécuter pour les notifications (remplace les notifications intégrées)",
"custom_patterns_directory_question": "Saisissez le chemin vers votre répertoire de patrons personnalisés",
"custom_patterns_label": "Patrons personnalisés",
"custom_patterns_setup_description": "Patrons personnalisés - Définir le répertoire pour vos patrons personnalisés",
"custom_patterns_warning_create_directory": "Avertissement : Impossible de créer le répertoire de modèles personnalisés %s : %v\n",
"db_error_loading_env_file": "erreur lors du chargement du fichier .env : %w",
"db_error_updating_env_file": "erreur lors de la mise à jour du fichier .env : %w",
"defaults_model_context_length_question": "Saisissez la longueur du contexte du modèle",
"defaults_model_question": "Saisissez l'index ou le nom de votre modèle par défaut",
"defaults_setup_description": "Fournisseur et modèle d'IA par défaut",
"digitalocean_failed_parse_control_plane_url": "Impossible d'analyser l'URL du plan de contrôle DigitalOcean : %w",
"digitalocean_model_list_unavailable": "liste des modèles DigitalOcean non disponible. Définissez DIGITALOCEAN_TOKEN pour récupérer les modèles depuis le plan de contrôle",
"digitalocean_model_list_unavailable_with_error": "liste des modèles DigitalOcean non disponible : %w. Définissez DIGITALOCEAN_TOKEN pour récupérer les modèles depuis le plan de contrôle",
"digitalocean_models_request_failed_read_error": "échec de la requête de modèles DigitalOcean avec le statut %d : %w",
"digitalocean_models_request_failed_with_status": "échec de la requête de modèles DigitalOcean avec le statut %d : %s",
"disable_openai_responses_api": "Désactiver l'API OpenAI Responses (par défaut : false)",
"disable_pattern_variable_replacement": "Désactiver le remplacement des variables de motif",
"enable_web_search_tool": "Activer l'outil de recherche web pour les modèles pris en charge (Anthropic, OpenAI, Gemini, Grok)",
"end_tag_thinking_sections": "Balise de fin pour les sections de réflexion",
"error_creating_audio_file": "erreur lors de la création du fichier audio : %v",
"error_creating_file": "erreur lors de la création du fichier : %v",
"error_fetching_playlist_videos": "erreur lors de la récupération des vidéos de la liste de lecture : %w",
"error_parsing_config_file": "erreur lors de l'analyse du fichier de configuration : %w",
"error_reading_config_file": "erreur lors de la lecture du fichier de configuration : %w",
"error_reading_piped_message": "erreur lors de la lecture du message redirigé depuis stdin : %w",
"error_writing_audio_data": "erreur lors de l'écriture des données audio dans le fichier : %v",
"error_writing_to_file": "erreur lors de l'écriture dans le fichier : %v",
"extension_cmd_template_required": "le modèle de commande est requis pour l'opération %s",
"extension_command_template_label": " Modèle de commande : %s\n",
"extension_config_hash_mismatch": "discordance de hash du fichier de configuration pour %s",
"extension_config_path_label": " Chemin de configuration : %s\n\n",
"extension_description_label": " Description : %s\n",
"extension_empty_command": "commande vide après le formatage",
"extension_executable_hash_mismatch": "discordance de hash de l'exécutable pour %s",
"extension_executable_label": " Exécutable : %s\n",
"extension_executable_not_found": "exécutable introuvable : %w",
"extension_executable_required": "le chemin de l'exécutable est requis",
"extension_executing_command": "Exécution de la commande : %s\n",
"extension_execution_failed_err": "l'exécution a échoué : %w\nerr : %s",
"extension_execution_failed_stderr": "l'exécution a échoué : %w\nstderr : %s",
"extension_execution_timed_out": "l'exécution a expiré après %v",
"extension_failed_format_command": "impossible de formater la commande : %w",
"extension_failed_get_absolute_path": "impossible d'obtenir le chemin absolu : %w",
"extension_failed_get_extension": "impossible d'obtenir l'extension : %w",
"extension_failed_get_output_path": "impossible d'obtenir le chemin de sortie : %w\nerr : %s",
"extension_failed_hash_executable": "impossible de calculer le hash de l'exécutable : %w",
"extension_failed_marshal_registry": "impossible de sérialiser le registre d'extensions : %w",
"extension_failed_parse_config": "échec de l'analyse du fichier de configuration : %w",
"extension_failed_parse_registry": "impossible d'analyser le registre d'extensions : %w",
"extension_failed_read_config": "échec de lecture du fichier de configuration : %w",
"extension_failed_read_output_file": "impossible de lire le fichier de sortie : %w",
"extension_failed_read_registry": "impossible de lire le registre d'extensions : %w",
"extension_failed_register": "échec de l'enregistrement de l'extension : %w",
"extension_failed_remove": "échec de la suppression de l'extension : %w",
"extension_failed_verify_executable": "impossible de vérifier l'exécutable : %w",
"extension_file_config_label": " Configuration de fichier :\n",
"extension_invalid_config_path": "chemin de configuration invalide : %w",
"extension_invalid_definition": "définition d'extension invalide : %w",
"extension_invalid_timeout": "valeur de délai invalide '%s' : doit être une durée comme '30s' ou '1m' : %w",
"extension_invalid_timeout_format": "format de délai invalide : %w",
"extension_name_contains_spaces": "le nom de l'extension '%s' contient des espaces - les noms ne doivent pas contenir d'espaces",
"extension_name_detail_label": "Nom : %s\n",
"extension_name_empty": "le nom de l'extension ne peut pas être vide",
"extension_name_label": "Extension : %s\n",
"extension_name_required": "le nom de l'extension est requis",
"extension_no_file_config": "aucune configuration de fichier trouvée",
"extension_no_output_file": "aucun fichier de sortie spécifié dans la configuration",
"extension_not_found": "extension %s introuvable",
"extension_operation_not_found": "opération %s introuvable pour l'extension %s",
"extension_operation_required": "au moins une opération doit être définie",
"extension_operations_label": " Opérations :\n",
"extension_registered_success": "Extension enregistrée avec succès :\n",
"extension_registry_not_initialized": "registre d'extensions non initialisé",
"extension_status_disabled": " Statut : DÉSACTIVÉE - Vérification du hash échouée : %v\n",
"extension_status_enabled": " Statut : ACTIVÉE\n",
"extension_timeout_label": " Délai d'expiration : %s\n",
"extension_type_label": " Type : %s\n",
"extension_type_required": "le type d'extension est requis",
"extension_version_label": " Version : %s\n",
"extension_warning_load_registry": "Attention : impossible de charger le registre d'extensions : %v\n",
"fabric_command_complete": "Commande Fabric terminée",
"fabric_command_complete_with_pattern": "Fabric : %s terminé",
"fetch_content_exceeds_limit": "fetch: contenu trop volumineux: dépasse %d octets",
"fetch_content_not_utf8": "fetch: le contenu n'est pas un texte UTF-8 valide",
"fetch_content_null_bytes": "fetch: le contenu contient des octets nuls",
"fetch_content_too_large": "fetch: contenu trop volumineux: %d octets (max %d octets)",
"fetch_error_create_request": "fetch: erreur lors de la création de la requête: %v",
"fetch_error_fetching_url": "fetch: erreur lors de la récupération de l'URL: %v",
"fetch_error_reading_response": "fetch: erreur lors de la lecture de la réponse: %v",
"fetch_http_error": "fetch: erreur HTTP: %d - %s",
"fetch_unknown_operation": "fetch: opération inconnue %q (prise en charge: get)",
"fetch_unsupported_content_type": "fetch: type de contenu non pris en charge %q - seul le contenu texte est autorisé",
"file_already_exists_choose_different": "le fichier %s existe déjà. Veuillez choisir un nom de fichier différent ou supprimer le fichier existant",
"file_already_exists_not_overwriting": "le fichier %s existe déjà, ne sera pas écrasé. Renommez le fichier existant ou choisissez un nom différent",
"file_manager_applied_operation": "Opération %s appliquée à %s",
"file_manager_empty_path": "chemin vide pour la modification de fichier %d",
"file_manager_failed_create_directory": "échec de la création du répertoire %s pour la modification de fichier %d: %w",
"file_manager_failed_parse_json": "échec de l'analyse %s JSON: %w",
"file_manager_failed_write_file": "échec de l'écriture du fichier %s pour la modification de fichier %d: %w",
"file_manager_file_content_too_large": "contenu du fichier trop volumineux pour la modification de fichier %d: %d octets",
"file_manager_invalid_format_no_json_array": "format %s non valide: aucun tableau JSON trouvé",
"file_manager_invalid_format_unbalanced_brackets": "format %s non valide: crochets déséquilibrés",
"file_manager_invalid_operation": "opération non valide pour la modification de fichier %d: %s",
"file_manager_suspicious_path": "chemin suspect pour la modification de fichier %d: %s",
"gemini_audio_data_too_small": "données audio trop petites : %d octets, minimum requis : %d",
"gemini_empty_pcm_data": "données PCM vides fournies",
"gemini_invalid_location_format": "format d'emplacement de recherche invalide %q : doit être un fuseau horaire (ex. 'America/Los_Angeles') ou un code de langue (ex. 'en-US')",
"gemini_invalid_voice": "voix invalide '%s'. Les voix valides sont : %v",
"gemini_no_audio_data": "aucune donnée audio reçue du modèle TTS",
"gemini_no_text_for_tts": "aucun contenu textuel trouvé pour la génération TTS",
"gemini_pcm_data_too_large": "données PCM trop volumineuses : %d octets, maximum autorisé : %d",
"gemini_stream_error": "Erreur : %v",
"gemini_tts_failed": "échec de la génération TTS : %w",
"gemini_unexpected_data_type": "type de données inattendu : %s, données audio attendues",
"gemini_voice_not_found": "Voix '%s' non trouvée",
"gemini_wav_data_invalid": "données WAV générées invalides : %d octets, minimum requis : %d",
"gemini_wav_generation_failed": "échec de la génération du fichier WAV : %w",
"githelper_failed_clone_repository": "Échec du clonage du dépôt : %w",
"githelper_failed_create_dest_directory": "Échec de la création du répertoire de destination : %w",
"githelper_failed_create_temp_directory": "Échec de la création du répertoire temporaire : %w",
"githelper_failed_get_commit": "Échec de la récupération du commit : %w",
"githelper_failed_get_head": "Échec de la récupération du HEAD du dépôt : %w",
"githelper_failed_get_tree": "Échec de la récupération de l'arborescence : %w",
"githelper_failed_git_cli_clone": "Échec du clonage git : %w : %s",
"githelper_failed_git_cli_fallback": "%w ; le repli sur git CLI a également échoué : %v",
"grab_comments_from_youtube": "Récupérer les commentaires de la vidéo YouTube et envoyer au chat",
"grab_transcript_from_youtube": "Récupérer la transcription de la vidéo YouTube et envoyer au chat (utilisé par défaut).",
"grab_transcript_with_timestamps": "Récupérer la transcription de la vidéo YouTube avec horodatage et envoyer au chat",
"groups_items_number_out_of_range": "le numéro %d est hors de portée",
"help_message": "Afficher ce message d'aide",
"help_options_header": "Options d'aide :",
"html_readability_error": "utilise l'entrée originale, car la lisibilité HTML ne peut pas être appliquée",
"i18n_download_failed": "Échec du téléchargement de la traduction pour la langue '%s' : %v",
"i18n_load_failed": "Échec du chargement du fichier de traduction : %v",
"image_compression_jpeg_webp_only": "la compression d'image ne peut être utilisée qu'avec les formats JPEG et WebP, pas %s",
"image_compression_range_error": "la compression d'image doit être entre 0 et 100, reçu %d",
"image_dimensions_help": "Dimensions de l'image : 1024x1024, 1536x1024, 1024x1536, auto (par défaut : auto)",
"image_file_already_exists": "le fichier image existe déjà : %s",
"image_parameters_require_image_file": "les paramètres d'image (--image-size, --image-quality, --image-background, --image-compression) ne peuvent être utilisés qu'avec --image-file",
"image_quality_help": "Qualité de l'image : low, medium, high, auto (par défaut : auto)",
"invalid_config_path": "chemin de configuration invalide : %w",
"invalid_image_background": "arrière-plan d'image invalide '%s'. Arrière-plans pris en charge : opaque, transparent",
"invalid_image_file_extension": "extension de fichier image invalide '%s'. Formats pris en charge : .png, .jpeg, .jpg, .webp",
"invalid_image_quality": "qualité d'image invalide '%s'. Qualités prises en charge : low, medium, high, auto",
"invalid_image_size": "taille d'image invalide '%s'. Tailles prises en charge : 1024x1024, 1536x1024, 1024x1536, auto",
"jina_error_creating_request": "erreur lors de la création de la requête : %v",
"jina_error_reading_response_body": "erreur lors de la lecture du corps de la réponse : %v",
"jina_error_sending_request": "erreur lors de l'envoi de la requête : %v",
"jina_label": "Jina AI",
"jina_setup_description": "Service Jina AI - pour récupérer une page web sous forme de texte propre et compatible LLM",
"language_label": "Langue",
"language_output_question": "Entrez votre langue de sortie par défaut (par exemple : zh_CN)",
"language_setup_description": "Langue - Langue de sortie par défaut du fournisseur d'IA",
"list_all_available_models": "Lister tous les modèles disponibles",
"list_all_contexts": "Lister tous les contextes",
"list_all_patterns": "Lister tous les motifs",
"list_all_registered_extensions": "Lister toutes les extensions enregistrées",
"list_all_sessions": "Lister toutes les sessions",
"list_all_strategies": "Lister toutes les stratégies",
"list_all_vendors": "Lister tous les fournisseurs",
"list_gemini_tts_voices": "Lister toutes les voix TTS Gemini disponibles",
"list_transcription_models": "Lister tous les modèles de transcription disponibles",
"lmstudio_api_url_question": "Entrez votre URL %v (pour rappel, elle est généralement %v)",
"lmstudio_error_reading_response": "erreur lors de la lecture de la réponse : %w",
"lmstudio_failed_create_request": "échec de la création de la requête : %w",
"lmstudio_failed_decode_response": "échec du décodage de la réponse : %w",
"lmstudio_failed_marshal_payload": "échec de la sérialisation des données : %w",
"lmstudio_failed_send_request": "échec de l'envoi de la requête : %w",
"lmstudio_invalid_response_missing_choices": "format de réponse invalide : choix manquants ou vides",
"lmstudio_invalid_response_missing_content": "format de réponse invalide : contenu manquant ou non-chaîne dans le message",
"lmstudio_invalid_response_missing_message": "format de réponse invalide : message manquant dans le premier choix",
"lmstudio_invalid_response_missing_text": "format de réponse invalide : texte manquant ou non-chaîne dans le premier choix",
"lmstudio_no_embeddings_returned": "aucun embedding retourné",
"lmstudio_unexpected_status_code": "code de statut inattendu : %d",
"model_context_length_ollama": "Longueur de contexte du modèle (affecte seulement ollama)",
"model_for_transcription": "Modèle à utiliser pour la transcription (séparé du modèle de chat)",
"no_description_available": "Aucune description disponible",
"no_items_found": "Aucun %s",
"no_notification_system_available": "aucun système de notification disponible",
"notifications_no_provider_available": "Aucun fournisseur de notifications disponible",
"number_of_latest_patterns": "Nombre des motifs les plus récents à lister",
"ollama_cannot_parse_url": "Impossible d'analyser l'URL '%s' : %v",
"ollama_chat_request_failed": "Requête de chat échouée : %v",
"ollama_empty_address": "adresse vide",
"ollama_error_building_chat_url": "erreur lors de la construction de l'URL /chat : %v",
"ollama_error_creating_chat_request": "erreur lors de la création de la requête /chat : %v",
"ollama_error_endpoint": "test du point de terminaison",
"ollama_error_getting_chat_body": "erreur lors de l'obtention du corps /chat : %v",
"ollama_error_marshalling_body": "erreur lors de l'encodage du corps : %v",
"ollama_error_parse_upstream_response": "Erreur : échec de l'analyse de la réponse en amont",
"ollama_error_prefix": "Erreur : %s",
"ollama_error_reading_body": "erreur lors de la lecture du corps : %v",
"ollama_error_scanning_body": "erreur lors de l'analyse du corps : %v",
"ollama_error_unmarshalling_body": "erreur lors du décodage du corps : %v",
"ollama_error_writing_response": "erreur lors de l'écriture de la réponse : %v",
"ollama_failed_create_request": "échec de création de la requête",
"ollama_failed_decode_data_url": "échec du décodage de l'URL de données : %v",
"ollama_failed_fetch_image": "échec de la récupération de l'image depuis %s : %s",
"ollama_failed_scan_sse_stream": "échec de l'analyse du flux de réponse SSE : %v",
"ollama_failed_unmarshal_fabric_response": "échec du décodage de la réponse Fabric",
"ollama_http_timeout_question": "Entrez le délai d'expiration HTTP (par exemple, 20m, 60s)",
"ollama_invalid_address": "adresse invalide : %w",
"ollama_invalid_address_missing_host": "adresse invalide : hôte manquant",
"ollama_invalid_address_missing_hostname": "adresse invalide : nom d'hôte manquant",
"ollama_invalid_address_path_not_allowed": "adresse invalide : composant de chemin non autorisé dans l'adresse simple",
"ollama_invalid_data_url_format": "format d'URL de données invalide",
"ollama_invalid_http_timeout_using_default": "Délai d'expiration HTTP invalide '%s' : %v, utilisation de la valeur par défaut",
"ollama_invalid_num_ctx_in_request": "num_ctx invalide dans la requête : %v",
"ollama_no_content_from_upstream": "aucun contenu reçu du serveur Fabric en amont",
"ollama_num_ctx_exceeds_maximum": "num_ctx dépasse la valeur maximale autorisée de %d",
"ollama_num_ctx_invalid_type": "num_ctx doit être un nombre, type invalide reçu",
"ollama_num_ctx_must_be_finite": "num_ctx doit être un nombre fini",
"ollama_num_ctx_must_be_integer": "num_ctx doit être un entier, float avec partie fractionnaire reçu",
"ollama_num_ctx_must_be_positive": "num_ctx doit être positif, reçu : %d",
"ollama_num_ctx_must_be_valid_number": "num_ctx doit être un nombre valide",
"ollama_num_ctx_must_be_valid_number_got": "num_ctx doit être un nombre valide, reçu : %s",
"ollama_num_ctx_value_out_of_range": "valeur num_ctx hors limites",
"ollama_num_ctx_value_too_large": "valeur num_ctx trop grande : %d",
"ollama_sse_buffer_limit": "La ligne SSE dépasse la limite de tampon de 1 Mo - ligne de données trop grande",
"ollama_upstream_non_2xx": "Le serveur Fabric en amont a renvoyé un statut non-2xx %d : %s",
"ollama_upstream_non_2xx_body_unreadable": "Le serveur Fabric en amont a renvoyé un statut non-2xx %d et le corps n'a pas pu être lu : %v",
"ollama_upstream_returned_status": "le serveur Fabric en amont a renvoyé le statut %d",
"ollama_warning_no_content": "Attention : aucun contenu reçu du serveur Fabric en amont",
"ollama_warning_parse_variables": "Attention : échec de l'analyse de options.variables en JSON : %v",
"openai_api_base_url_not_configured": "URL de base de l'API non configurée pour le fournisseur %s",
"openai_audio_ffmpeg_failed": "ffmpeg a échoué : %v : %s",
"openai_audio_ffmpeg_not_found_install": "ffmpeg non trouvé : veuillez l'installer",
"openai_audio_file_exceeds_limit_enable_split": "Le fichier %s dépasse la limite de 25 Mo ; utilisez --split-media-file pour activer le découpage automatique",
"openai_audio_file_exceeds_limit_splitting": "Le fichier %s est plus grand que la limite... découpage en morceaux...",
"openai_audio_model_not_supported_for_transcription": "le modèle '%s' n'est pas pris en charge pour la transcription",
"openai_audio_running_ffmpeg_split_chunks": "Exécution de ffmpeg pour découper l'audio en morceaux de %d secondes...",
"openai_audio_unable_to_split_acceptable_size_chunks": "impossible de découper le fichier en morceaux de taille acceptable",
"openai_audio_unsupported_audio_format": "format audio non pris en charge '%s'",
"openai_audio_using_model_to_transcribe_part": "Utilisation du modèle %s pour transcrire la partie %d (fichier : %s)...",
"openai_compatible_unknown_static_model_list": "Liste de modèles statique inconnue : %s",
"openai_failed_to_create_models_url": "échec de création de l'URL des modèles : %w",
"openai_image_failed_to_create_directory": "échec de la création du répertoire %s : %w",
"openai_image_failed_to_decode_image_data": "échec du décodage des données d'image : %w",
"openai_image_failed_to_save_image": "échec de l'enregistrement de l'image dans %s : %w",
"openai_image_saved_to": "Image enregistrée dans : %s",
"openai_model_no_image_generation": "le modèle '%s' ne prend pas en charge la génération d'images. Modèles pris en charge : %s",
"openai_models_rate_limited": "limite de débit dépassée lors de la récupération des modèles du fournisseur %s ; réessayer après %s secondes",
"openai_models_response_too_large": "réponse des modèles trop volumineuse du fournisseur %s (>%d octets)",
"openai_unable_to_parse_models_response": "impossible d'analyser la réponse des modèles ; réponse brute : %s",
"openai_unexpected_status_code_read_error": "code d'état inattendu : %d du fournisseur %s (échec de lecture du corps de réponse : %v)",
"openai_unexpected_status_code_with_body": "code d'état inattendu : %d du fournisseur %s, corps de réponse : %s",
"openai_warning_model_no_image_generation": "Avertissement : Le modèle '%s' ne prend pas en charge la génération d'images. Modèles pris en charge : %s. Envisagez d'utiliser -m gpt-5.2 pour la génération d'images.\n",
"optional_marker": "(optionnel)",
"options_placeholder": "[OPTIONS]",
"output_entire_session": "Sortie de toute la session (même temporaire) vers le fichier de sortie",
"output_full": "Sortie : %s",
"output_raw_list_shell_completion": "Sortie de liste brute sans en-têtes/formatage (pour la complétion shell)",
"output_to_file": "Sortie vers fichier",
"output_truncated": "Sortie : %s...",
"output_video_metadata": "Afficher les métadonnées de la vidéo",
"path_to_yaml_config": "Chemin vers le fichier de configuration YAML",
"pattern_not_found_list_available": "modèle '%s' non trouvé. Exécutez 'fabric -l' pour voir les modèles disponibles",
"pattern_invalid_name": "nom de modèle invalide : %q",
"pattern_not_found_no_patterns": "modèle '%s' non trouvé.\n\nAucun modèle n'est installé ! Pour résoudre ce problème :\n • Exécutez 'fabric --setup' pour configurer et télécharger les modèles\n • Ou exécutez 'fabric -U' pour télécharger/mettre à jour les modèles directement",
"pattern_variables_help": "Valeurs pour les variables de motif, ex. -v=#role:expert -v=#points:30",
"patterns_cloning_repository": "Clonage du dépôt %s (chemin : %s)...\\n",
"patterns_debug_included_custom_directory": "📂 Patrons du répertoire personnalisé également inclus : %s\\n",
"patterns_detected_old_path": "🔄 Ancien chemin 'patterns' détecté, tentative de migration vers 'data/patterns'...",
"patterns_download_success": "✅ Patrons téléchargés et installés avec succès dans %s\\n",
"patterns_downloaded_temp": "%d patrons téléchargés dans le répertoire temporaire\\n",
"patterns_downloading": "Téléchargement des patrons et remplissage de %s...\\n",
"patterns_error_create_directory": "Impossible de créer le répertoire de modèles : %v",
"patterns_error_get_home_directory": "Impossible d'obtenir le répertoire personnel : %v",
"patterns_error_load_from_file": "Impossible de charger le modèle depuis le fichier %s : %w",
"patterns_error_read_pattern_file": "Impossible de lire le fichier de modèle %s : %v",
"patterns_error_read_unique_file": "Impossible de lire le fichier de modèles uniques. Veuillez exécuter --updatepatterns (%s)",
"patterns_error_resolve_file_path": "Impossible de résoudre le chemin du fichier : %v",
"patterns_error_save_pattern": "Impossible de sauvegarder le modèle : %v",
"patterns_failed_access_directory": "impossible d'accéder au répertoire des patrons '%s' : %w",
"patterns_failed_create_temp_dir": "impossible de créer le répertoire temporaire : %w",
"patterns_failed_create_temp_folder": "impossible de créer le dossier temporaire des patrons : %w",
"patterns_failed_download_from_git": "échec du téléchargement des patrons depuis le dépôt Git : %w",
"patterns_failed_download_from_repo": "échec du téléchargement des patrons depuis %s : %w",
"patterns_failed_loaded_marker": "impossible de créer le fichier indicateur '%s' : %w",
"patterns_failed_move_patterns": "échec du déplacement des patrons vers le répertoire de configuration : %w",
"patterns_failed_move_test_patterns": "échec du déplacement des patrons de test vers le dossier temporaire : %w",
"patterns_failed_read_directory": "échec de lecture du répertoire des patrons : %w",
"patterns_failed_read_temp_directory": "échec de lecture du répertoire temporaire des patrons : %w",
"patterns_failed_unique_file": "échec de création du fichier de patrons uniques : %w",
"patterns_failed_write_unique_file": "échec d'écriture du fichier de patrons uniques : %w",
"patterns_found_new_path": "✅ %d patrons trouvés au nouveau chemin '%s', mise à jour de la configuration...\\n",
"patterns_git_repo_folder_question": "Saisissez le dossier par défaut du dépôt Git où sont stockés les patrons",
"patterns_git_repo_url_question": "Saisissez l'URL du dépôt Git par défaut pour les patrons",
"patterns_loader_label": "Chargeur de patrons",
"patterns_no_patterns_copied": "aucun patron n'a été copié avec succès vers %s",
"patterns_no_patterns_found_in_directories": "aucun patron trouvé dans les répertoires %s et %s",
"patterns_no_patterns_found_in_directory": "aucun patron trouvé dans le répertoire %s",
"patterns_no_patterns_migration_failed": "aucun patron trouvé dans le dépôt au chemin %s et la migration a échoué : %w",
"patterns_not_found_header": "⚠️ Aucun modèle trouvé !",
"patterns_option_run_setup": "Option 1 (Recommandée) : Exécuter la configuration pour télécharger les modèles",
"patterns_option_run_setup_command": "fabric --setup",
"patterns_option_run_update": "Option 2 : Télécharger/mettre à jour les modèles directement",
"patterns_option_run_update_command": "fabric -U",
"patterns_preserve_warning": "Avertissement : impossible de conserver le patron personnalisé '%s' : %v\\n",
"patterns_preserved_custom_pattern": "Patron personnalisé conservé : %s\\n",
"patterns_required_to_work": "Les modèles sont requis pour le fonctionnement de Fabric. Pour résoudre ce problème :",
"patterns_saving_updated_configuration": "💾 Enregistrement de la configuration mise à jour (chemin changé de '%s' à '%s')...\\n",
"patterns_setup_description": "Patrons - Télécharge les patrons",
"patterns_unable_to_find_or_migrate": "impossible de trouver des patrons au chemin actuel '%s' ou de migrer vers la nouvelle structure",
"patterns_unique_file_created": "📝 Fichier de patrons uniques créé avec %d patrons\\n",
"patterns_warning_custom_directory": "Avertissement : impossible de lire le répertoire de patrons personnalisé %s : %v\\n",
"patterns_warning_remove_test_folder": "Avertissement : impossible de supprimer le dossier temporaire de test '%s' : %v\\n",
"perplexity_api_key_not_configured": "clé API non configurée pour %s. Définissez la variable d'environnement %s ou exécutez 'fabric --setup' pour configurer %s",
"perplexity_api_request_failed": "requête API Perplexity échouée : %w",
"perplexity_citations_header": "\n\n**Citations :**\n",
"perplexity_failed_configure": "échec de la configuration de Perplexity : %w",
"perplexity_streaming_error": "erreur de streaming Perplexity : %v",
"plugin_configured": " ✓",
"plugin_enable_bool_question": "Activer %v %v (true/false)",
"plugin_enter_value": "Saisissez votre %v %v",
"plugin_invalid_bool": "booléen invalide : %q",
"plugin_invalid_boolean_value": "valeur booléenne invalide : %v",
"plugin_not_configured": " ⚠️ NON CONFIGURÉ",
"plugin_question_bool": "%v%v (true/false, laissez vide pour '%s' ou tapez '%v' pour supprimer la valeur) :",
"plugin_question_optional": "%v%v (laissez vide pour passer) :",
"plugin_question_with_default": "%v%v (laissez vide pour '%s' ou tapez '%v' pour supprimer la valeur) :",
"plugin_registry_could_not_find_vendor": "fournisseur introuvable",
"plugin_registry_error_configuring_custom_patterns": "Erreur lors de la configuration de CustomPatterns : %w",
"plugin_registry_model_not_available_for_vendor": "Modèle %s non disponible pour le fournisseur %s",
"plugin_registry_run_setup_select_defaults": "veuillez exécuter 'fabric --setup' et sélectionner le modèle et le fournisseur par défaut",
"plugin_setting_not_valid": "%v=%v n'est pas valide",
"plugin_setup_configured": "[%v] configuré",
"plugin_setup_skipped": "[%v] ignoré\\n",
"prefer_playlist_over_video": "Préférer la liste de lecture à la vidéo si les deux IDs sont présents dans l'URL",
"print_context": "Afficher le contexte",
"print_current_version": "Afficher la version actuelle",
"print_metadata_to_stderr": "Afficher les métadonnées (jetons d'entrée/sortie) sur stderr",
"print_pattern_contents": "Afficher le contenu du motif indiqué dans le terminal",
"print_session": "Afficher la session",
"register_new_extension": "Enregistrer une nouvelle extension depuis le chemin du fichier de configuration",
"remove_registered_extension": "Supprimer une extension enregistrée par nom",
"required_marker": "[obligatoire]",
"run_setup_for_reconfigurable_parts": "Exécuter la configuration pour toutes les parties reconfigurables de fabric",
"save_generated_image_to_file": "Sauvegarder l'image générée dans le chemin de fichier spécifié (ex. 'output.png')",
"scrape_website_url": "Scraper l'URL du site web en markdown en utilisant Jina AI",
"scraping_not_configured": "la fonctionnalité de scraping n'est pas configurée. Veuillez configurer Jina pour activer le scraping",
"search_question_jina": "Question de recherche en utilisant Jina AI",
"seed_for_lmm_generation": "Graine à utiliser pour la génération LMM",
"send_desktop_notification": "Envoyer une notification de bureau quand la commande se termine",
"serve_fabric_api_ollama_endpoints": "Servir l'API REST Fabric avec les endpoints ollama",
"serve_fabric_rest_api": "Servir l'API REST Fabric",
"server_chat_error": "Erreur : %v",
"server_error_marshaling_response": "erreur de sérialisation de la réponse : %v",
"server_error_writing_response": "erreur d'écriture de la réponse : %v",
"server_invalid_request_format": "format de requête invalide : %v",
"sessions_creating_new": "Création d'une nouvelle session : %s\n",
"set_debug_level": "Définir le niveau de débogage (0=désactivé, 1=basique, 2=détaillé, 3=trace, 4=wire)",
"set_frequency_penalty": "Définir la pénalité de fréquence",
"set_location_web_search": "Définir l'emplacement pour les résultats de recherche web (ex. 'America/Los_Angeles')",
"set_presence_penalty": "Définir la pénalité de présence",
"set_reasoning_thinking_level": "Définir le niveau de raisonnement/réflexion (ex. off, low, medium, high, ou tokens numériques pour Anthropic ou Google Gemini)",
"set_temperature": "Définir la température",
"set_top_p": "Définir le top P",
"setup_add_more_providers_later": "Vous pourrez ajouter d'autres fournisseurs plus tard avec 'fabric --setup'",
"setup_ai_provider_required": "Fabric a besoin d'au moins un fournisseur d'IA pour fonctionner.",
"setup_available_ai_providers": "Fournisseurs d'IA disponibles :",
"setup_available_plugins": "Plugins disponibles :",
"setup_complete_header": "✅ Configuration terminée ! Vous pouvez maintenant utiliser Fabric.",
"setup_configure_more": "• Configurer plus de paramètres : fabric --setup",
"setup_enter_ai_provider_number": "Numéro du fournisseur d'IA",
"setup_failed_download_patterns": "échec du téléchargement des modèles : %w",
"setup_failed_download_strategies": "échec du téléchargement des stratégies : %w",
"setup_failed_set_defaults": "échec de la configuration du fournisseur et du modèle par défaut : %w",
"setup_invalid_selection": "sélection invalide : %s",
"setup_list_patterns": "• Lister les modèles disponibles : fabric -l",
"setup_next_steps": "Prochaines étapes :",
"setup_no_ai_provider_selected": "aucun fournisseur d'IA sélectionné - au moins un est requis",
"setup_optional_configuration_header": "━━━ CONFIGURATION OPTIONNELLE ━━━\n\nOutils optionnels",
"setup_plugin_number": "Numéro du plugin",
"setup_plugin_prompt": "Entrez le numéro du plugin à configurer",
"setup_required_configuration_header": "━━━ CONFIGURATION REQUISE ━━━\n\nFournisseurs d'IA [au moins un requis]",
"setup_required_tools": "Outils requis",
"setup_step_configure_ai_provider": "🤖 Étape 3 : Configurer un fournisseur d'IA",
"setup_step_downloading_patterns": "📥 Étape 1 : Téléchargement des modèles (requis pour le fonctionnement de Fabric)...",
"setup_step_downloading_strategies": "📥 Étape 2 : Téléchargement des stratégies (requis pour le fonctionnement de Fabric)...",
"setup_step_setting_defaults": "⚙️ Étape 4 : Configuration du fournisseur et du modèle par défaut...",
"setup_try_pattern": "• Essayer un modèle : echo 'votre texte' | fabric --pattern summarize",
"setup_validation_ai_provider_configured": "✓ Fournisseur d'IA configuré",
"setup_validation_ai_provider_missing": "✗ Fournisseur d'IA non configuré - Requis pour le fonctionnement de Fabric",
"setup_validation_complete": "✓ Tous les composants requis sont configurés !",
"setup_validation_defaults_configured": "✓ Fournisseur/modèle par défaut défini : %s/%s",
"setup_validation_defaults_missing": "✗ Fournisseur/modèle par défaut non défini - Requis pour le fonctionnement de Fabric",
"setup_validation_header": "État de la configuration :",
"setup_validation_incomplete_help": "Exécutez à nouveau 'fabric --setup' pour configurer les éléments manquants,\nou exécutez 'fabric -U' pour télécharger les modèles et stratégies.",
"setup_validation_incomplete_warning": "⚠️ Configuration incomplète ! Composants requis manquants.",
"setup_validation_patterns_configured": "✓ Modèles téléchargés",
"setup_validation_patterns_missing": "✗ Modèles non trouvés - Requis pour le fonctionnement de Fabric",
"setup_validation_strategies_configured": "✓ Stratégies téléchargées",
"setup_validation_strategies_missing": "✗ Stratégies non trouvées - Requises pour le fonctionnement de Fabric",
"setup_welcome_header": "🎉 Bienvenue sur Fabric ! Configurons votre installation.",
"show_dry_run": "Montrer ce qui serait envoyé au modèle sans l'envoyer réellement",
"specify_language_code": "Spécifier le code de langue pour le chat, ex. -g=en -g=zh -g=pt-BR -g=pt-PT",
"specify_vendor_for_model": "Spécifier le fournisseur pour le modèle sélectionné (ex. -V \"LM Studio\" -m openai/gpt-oss-20b)",
"split_media_files_ffmpeg": "Diviser les fichiers audio/vidéo de plus de 25MB en utilisant ffmpeg",
"spotify_api_request_failed": "la requête API a échoué : statut %d, réponse : %s",
"spotify_audio_preview_label": "**Aperçu audio** : %s",
"spotify_client_id_question": "Entrez votre CLIENT ID Spotify",
"spotify_client_secret_question": "Entrez votre CLIENT SECRET Spotify",
"spotify_description_header": "## Description",
"spotify_duration_label": "**Durée** : %d minutes",
"spotify_episode_header": "# Épisode Spotify",
"spotify_error_getting_metadata": "erreur lors de la récupération des métadonnées Spotify : %v",
"spotify_explicit_label": "**Explicite** : %v",
"spotify_failed_create_request": "impossible de créer la requête : %w",
"spotify_failed_create_token_request": "impossible de créer la requête de token : %w",
"spotify_failed_decode_token_response": "impossible de décoder la réponse du token : %w",
"spotify_failed_execute_request": "impossible d'exécuter la requête : %w",
"spotify_failed_get_access_token": "impossible d'obtenir le jeton d'accès : statut %d, réponse : %s",
"spotify_failed_get_show_episodes": "impossible de récupérer les épisodes de l'émission : %w",
"spotify_failed_parse_episode_metadata": "impossible d'analyser les métadonnées de l'épisode : %w",
"spotify_failed_parse_episodes": "impossible d'analyser les épisodes : %w",
"spotify_failed_parse_search_results": "impossible d'analyser les résultats de recherche : %w",
"spotify_failed_parse_show_metadata": "impossible d'analyser les métadonnées de l'émission : %w",
"spotify_failed_read_response_body": "impossible de lire le corps de la réponse : %w",
"spotify_failed_request_access_token": "impossible de demander le jeton d'accès : %w",
"spotify_invalid_url": "URL Spotify invalide, impossible d'obtenir l'ID de l'émission ou de l'épisode : '%s'",
"spotify_label": "Spotify",
"spotify_language_field_label": "**Langue** : %s",
"spotify_languages_label": "**Langues** : %s",
"spotify_media_type_label": "**Type de média** : %s",
"spotify_no_episode_found": "aucun épisode trouvé avec l'ID : %s",
"spotify_no_show_found": "aucune émission trouvée avec l'ID : %s",
"spotify_not_configured": "Spotify n'est pas configuré, veuillez exécuter la procédure de configuration",
"spotify_publisher_label": "**Éditeur** : %s",
"spotify_release_date_label": "**Date de sortie** : %s",
"spotify_search_description_label": "- **Description** : %s",
"spotify_search_episodes_label": "- **Épisodes** : %d",
"spotify_search_failed": "la recherche a échoué : %w",
"spotify_search_publisher_label": "- **Éditeur** : %s",
"spotify_search_results_header": "# Résultats de recherche Spotify",
"spotify_search_url_label": "- **URL** : %s",
"spotify_setup_description": "Spotify - pour récupérer les métadonnées de podcasts/émissions depuis Spotify",
"spotify_show_header": "# Podcast/Émission Spotify",
"spotify_show_name_label": "**Émission** : %s",
"spotify_title_label": "**Titre** : %s",
"spotify_total_episodes_label": "**Épisodes au total** : %d",
"spotify_url_help": "URL de podcast ou d'épisode Spotify pour récupérer les métadonnées et les envoyer au chat",
"spotify_url_label": "**URL** : %s",
"start_tag_thinking_sections": "Balise de début pour les sections de réflexion",
"storage_error_delete": "Impossible de supprimer %s : %v",
"storage_error_load": "Impossible de charger %s : %v",
"storage_error_marshal": "Impossible de sérialiser %s : %s",
"storage_error_read_directory": "Impossible de lire les éléments du répertoire : %v",
"storage_error_rename": "Impossible de renommer %s en %s : %v",
"storage_error_resolve_directory": "Impossible de résoudre le chemin du répertoire : %v",
"storage_error_save": "Impossible de sauvegarder %s : %v",
"storage_error_stat_entry": "Impossible d'obtenir les informations de l'entrée %s : %v",
"storage_error_unmarshal": "Impossible de désérialiser %s : %s",
"strategies_available_header": "Stratégies disponibles :",
"strategies_cloning_repository": "Clonage du dépôt %s (chemin : %s)...\\n",
"strategies_download_success": "✅ Stratégies téléchargées et installées avec succès dans %s\\n",
"strategies_downloaded_count": "%d stratégies téléchargées\\n",
"strategies_downloading": "Téléchargement des stratégies et remplissage de %s...\\n",
"strategies_failed_create_directory": "échec de création du répertoire des stratégies : %w",
"strategies_failed_download": "échec du téléchargement des stratégies : %w",
"strategies_git_repo_folder_question": "Saisissez le dossier par défaut du dépôt Git où sont stockées les stratégies",
"strategies_git_repo_url_question": "Saisissez l'URL du dépôt Git par défaut pour les stratégies",
"strategies_home_dir_error": "impossible d'obtenir le répertoire personnel : %v",
"strategies_home_dir_fallback": "impossible d'obtenir le répertoire personnel : %v, utilisation du répertoire courant à la place",
"strategies_label": "Stratégies de prompt",
"strategies_none_found": "aucune stratégie trouvée. Exécutez 'fabric --setup' pour télécharger les stratégies",
"strategies_setup_description": "Stratégies - Télécharge des stratégies de prompting (comme chain of thought)",
"strategy_not_found": "stratégie %s introuvable. Exécutez 'fabric --liststrategies' pour voir la liste",
"strategy_path_traversal": "le nom de stratégie %q se résout en dehors du répertoire des stratégies",
"stream_help": "Streaming",
"suppress_thinking_tags": "Supprimer le texte encadré par les balises de réflexion",
"template_datetime_error_invalid_number": "nombre invalide dans le temps relatif : %q",
"template_datetime_error_invalid_relative_format": "format de temps relatif invalide",
"template_datetime_error_invalid_unit": "unité de temps invalide : %q",
"template_datetime_error_relative_requires_value": "le temps relatif nécessite une valeur",
"template_datetime_error_unknown_operation": "datetime: opération inconnue %q",
"template_extension_error": "Erreur d'extension %s : %v",
"template_file_error_expand_home_dir": "fichier : impossible d'étendre le répertoire personnel : %v",
"template_file_error_invalid_line_count": "fichier : nombre de lignes invalide %q",
"template_file_error_line_count_positive": "fichier : le nombre de lignes doit être positif",
"template_file_error_open_file": "fichier : ouverture impossible : %v",
"template_file_error_path_contains_parent_ref": "fichier : le chemin ne peut pas contenir '..'",
"template_file_error_read_file": "fichier : lecture impossible : %v",
"template_file_error_scanner_read": "fichier : erreur de lecture : %v",
"template_file_error_size_exceeds_limit": "fichier : la taille %d dépasse la limite de %d octets",
"template_file_error_stat_file": "fichier : impossible d'obtenir l'état du fichier : %v",
"template_file_error_stat_open_file": "fichier : impossible d'obtenir l'état : %v",
"template_file_error_tail_requires_path_lines": "fichier : tail nécessite le format chemin|lignes",
"template_file_error_unknown_operation": "fichier : opération inconnue %q (prises en charge : read, tail, exists, size, modified)",
"template_file_log_cleaned_path": "Fichier : chemin nettoyé %q",
"template_file_log_exists_for_path": "Fichier : exists=%v pour le chemin %q",
"template_file_log_modified_for_path": "Fichier : modifié=%q pour le chemin %q",
"template_file_log_operation_value": "Fichier : opération=%q valeur=%q",
"template_file_log_read_bytes": "Fichier : %d octets lus",
"template_file_log_read_total_return_last": "Fichier : %d lignes lues au total, retour des %d dernières",
"template_file_log_reading_last_lines": "Fichier : lecture des %d dernières lignes depuis %q",
"template_file_log_size_for_path": "Fichier : taille=%d pour le chemin %q",
"template_file_log_tail_returning_lines": "Fichier : tail renvoie %d lignes",
"template_file_log_validating_path": "Fichier : validation du chemin %q",
"template_hash_open_file": "Ouverture du fichier : %w",
"template_hash_read_file": "Lecture du fichier : %w",
"template_missing_required_variable": "Variable requise manquante : %s",
"template_plugin_error": "Erreur du plugin %s : %v",
"template_processing_stuck": "Traitement du modèle bloqué - boucle infinie potentielle",
"template_sys_error_env_requires_var": "env: nom de variable requis",
"template_sys_error_home": "impossible d'obtenir le répertoire personnel : %v",
"template_sys_error_hostname": "impossible d'obtenir le nom d'hôte : %v",
"template_sys_error_pwd": "impossible d'obtenir le répertoire de travail : %v",
"template_sys_error_unknown_operation": "sys: opération inconnue %q",
"template_sys_error_user": "impossible d'obtenir l'utilisateur actuel : %v",
"template_text_empty_input": "Texte : entrée vide pour l'opération %q",
"template_text_unknown_operation": "Texte : opération de texte inconnue %q (supportées : upper, lower, title, trim)",
"template_unknown_plugin_namespace": "Espace de noms de plugin inconnu : %s",
"template_utils_failed_get_absolute_path": "Impossible d'obtenir le chemin absolu : %w",
"template_utils_failed_get_home_dir": "Impossible d'obtenir le répertoire personnel de l'utilisateur : %w",
"template_utils_path_not_exist": "Le chemin n'existe pas : %w",
"transcription_model_required": "un modèle de transcription est requis (utilisez --transcribe-model)",
"transparent_background_png_webp_only": "l'arrière-plan transparent ne peut être utilisé qu'avec les formats PNG et WebP, pas %s",
"tts_audio_generated_successfully": "Audio TTS généré avec succès et sauvegardé dans : %s\n",
"tts_model_requires_audio_output": "le modèle TTS '%s' nécessite une sortie audio. Veuillez spécifier un fichier de sortie audio avec le flag -o (ex. -o output.wav)",
"tts_voice_name": "Nom de voix TTS pour les modèles pris en charge (ex. Kore, Charon, Puck)",
"unsupported_conversion": "conversion non prise en charge de %v vers %v",
"update_patterns": "Mettre à jour les motifs",
"usage_header": "Utilisation :",
"use_model_defaults_raw_help": "Utilise les valeurs par défaut du modèle sans envoyer d'options de discussion (temperature, top_p, etc.). N'affecte que les fournisseurs compatibles avec OpenAI. Les modèles Anthropic utilisent toujours une sélection intelligente des paramètres pour respecter les exigences propres à chaque modèle.",
"util_error_accessing_config_path": "Erreur d'accès au chemin de configuration par défaut : %w",
"util_error_determine_home_directory": "Impossible de déterminer le répertoire personnel de l'utilisateur : %w",
"util_error_get_absolute_path": "Impossible d'obtenir le chemin absolu",
"util_error_path_is_empty": "Le chemin est vide",
"util_error_resolve_home_directory": "Impossible de résoudre le répertoire personnel",
"util_error_resolve_symlinks": "Impossible de résoudre les liens symboliques : %w",
"vendor_no_transcription_support": "le fournisseur %s ne prend pas en charge la transcription audio",
"vendor_not_configured": "le fournisseur %s n'est pas configuré",
"vendor_not_found": "fournisseur %s introuvable",
"vendors_no_ai_vendors_configured_read_models": "aucun fournisseur d'IA configuré pour lire les modèles",
"vertexai_client_not_initialized": "client VertexAI non initialise",
"vertexai_error_api_status": "l'API a retourné le statut %d: %s",
"vertexai_error_create_request": "échec de la création de la requête: %w",
"vertexai_error_parse_response": "échec de l'analyse de la réponse: %w",
"vertexai_error_read_response": "échec de la lecture de la réponse: %w",
"vertexai_error_request_failed": "échec de la requête: %w",
"vertexai_error_response_too_large": "réponse trop volumineuse (>%d octets)",
"vertexai_failed_gemini_client": "impossible de creer le client Gemini : %w",
"vertexai_failed_google_credentials": "impossible d'obtenir les identifiants Google (assurez-vous que ADC est configure) : %w",
"vertexai_no_content_in_response": "aucun contenu dans la reponse",
"vertexai_no_conversational_models": "aucun modele conversationnel trouve",
"vertexai_no_models_found": "aucun modele trouve chez aucun editeur",
"vertexai_no_valid_messages": "aucun message valide a envoyer",
"vertexai_stream_error": "Erreur : %v",
"wipe_context": "Effacer le contexte",
"wipe_session": "Effacer la session",
"youtube_api_key_required": "clé API YouTube requise pour les commentaires et métadonnées. Exécutez 'fabric --setup' pour configurer",
"youtube_auth_required_bot_detection": "YouTube nécessite une authentification (détection de bot). Utilisez --yt-dlp-args='--cookies-from-browser BROWSER' où BROWSER peut être chrome, firefox, brave, etc.",
"youtube_empty_seconds_string": "chaîne de secondes vide",
"youtube_error_getting_comments": "erreur lors de l'obtention des commentaires : %v",
"youtube_error_getting_metadata": "erreur lors de l'obtention des métadonnées de la vidéo : %v",
"youtube_error_getting_video_details": "erreur lors de l'obtention des détails de la vidéo : %v",
"youtube_error_parsing_duration": "erreur lors de l'analyse de la durée de la vidéo : %v",
"youtube_error_saving_csv": "erreur lors de l'enregistrement des vidéos en CSV : %v",
"youtube_extract_visual_data_help": "Extraire les données visuelles de la vidéo avec OCR et FFmpeg",
"youtube_failed_create_temp_dir": "échec de création du répertoire temporaire : %v",
"youtube_failed_fetch_comments": "Échec de la récupération des commentaires : %v",
"youtube_failed_get_stream_url": "échec de récupération de lURL du flux via yt-dlp : %v",
"youtube_failed_parse_http_stream_url": "échec de lanalyse dune URL HTTP de flux valide depuis la sortie de yt-dlp",
"youtube_failed_walk_directory": "échec du parcours du répertoire : %v",
"youtube_ffmpeg_frame_extraction_failed": "extraction des images avec ffmpeg échouée : %v, sortie : %s",
"youtube_ffmpeg_required_visual_extraction": "ffmpeg est requis pour lextraction visuelle mais est introuvable dans PATH",
"youtube_invalid_duration_string": "chaîne de durée invalide : %s",
"youtube_invalid_seconds_format": "format de secondes invalide %q : %w",
"youtube_invalid_timestamp_format": "format d'horodatage invalide : %s",
"youtube_invalid_url": "URL YouTube invalide, impossible d'obtenir l'ID de vidéo ou de liste de lecture : '%s'",
"youtube_invalid_ytdlp_arguments": "arguments yt-dlp invalides : %v",
"youtube_label": "YouTube",
"youtube_no_clear_text_visual_frames": "aucun texte lisible trouvé dans les images visuelles de la vidéo",
"youtube_no_transcript_content": "aucun contenu de transcription trouvé dans le fichier VTT",
"youtube_no_url_provided": "Aucune URL YouTube fournie",
"youtube_no_video_found_with_id": "aucune vidéo trouvée avec l'ID : %s",
"youtube_no_video_id_found": "aucun ID de vidéo trouvé dans l'URL",
"youtube_no_vtt_files_found": "aucun fichier VTT trouvé dans le répertoire",
"youtube_not_configured": "YouTube n'est pas configuré, veuillez exécuter la procédure de configuration",
"youtube_playlist_header": "Liste de lecture : %s",
"youtube_playlist_saved_to": "Liste de lecture enregistrée dans %s",
"youtube_rate_limit_exceeded": "Limite de taux YouTube dépassée. Réessayez plus tard ou utilisez différents arguments yt-dlp comme '--sleep-requests 1' pour ralentir les requêtes.",
"youtube_setup_description": "YouTube - pour récupérer les transcriptions vidéo (via yt-dlp) et les commentaires/métadonnées (via l'API YouTube)",
"youtube_tesseract_frame_failed": "tesseract a échoué sur limage %d : %v, stderr : %s",
"youtube_tesseract_required_visual_extraction": "tesseract est requis pour lextraction visuelle mais est introuvable dans PATH",
"youtube_url_help": "Vidéo YouTube ou \"URL\" de liste de lecture pour récupérer la transcription, les commentaires et envoyer au chat ou afficher dans la console et stocker dans le fichier de sortie",
"youtube_url_is_playlist_not_video": "l'URL est une liste de lecture, pas une vidéo",
"youtube_video_id_title_header": "VideoID : Titre",
"youtube_visual_fps_help": "Extraire un nombre précis dimages par seconde au lieu dutiliser la détection de scènes",
"youtube_visual_frame_cue": "[REPÈRE DIMAGE VISUELLE]",
"youtube_visual_sensitivity_help": "Tolérance pour la détection de scènes FFmpeg (0.0 - 1.0)",
"youtube_ytdlp_not_found": "yt-dlp introuvable dans PATH. Veuillez installer yt-dlp pour utiliser la fonctionnalité de transcription YouTube",
"youtube_ytdlp_required_visual_extraction": "yt-dlp est requis pour lextraction visuelle mais est introuvable dans PATH",
"youtube_ytdlp_stderr_error": "erreur lors de la lecture du stderr de yt-dlp"
}