mirror of
https://github.com/danielmiessler/fabric.git
synced 2026-09-10 07:36:44 -04:00
This commit addresses all review feedback from PR #2014 and adds configurable API version support for Azure OpenAI backend. PR Review Fixes: - Add URL validation with HTTPS enforcement (ISC-C7) - Implement cancellable context in SendStream with 300s timeout (ISC-C6) - Add response body size limit (10MB) using io.LimitReader (ISC-C12) - Update error body truncation from 200 to 500 characters (ISC-C13) - Lowercase error messages per Go convention (ISC-C15) - Add file-level documentation to all backend files (ISC-C14) - Fix Bedrock max_tokens to respect opts.MaxTokens with fallback (ISC-C5) - Document temperature/top_p mutual exclusivity in Bedrock (ISC-C11) - Add debug logging when empty messages are skipped (ISC-C16) - Add error check for empty message lists across all backends - Verify and document Vertex AI endpoint path for APIM routing (ISC-C9) - Update Azure OpenAI API version to 2025-04-01-preview (ISC-C10) New Feature - Configurable API Version: - Add APIVersion field to Client struct for Azure OpenAI backend - Add optional setup question for API version (default: 2025-04-01-preview) - Update AzureOpenAIBackend to accept and use configurable API version - Maintain backward compatibility: empty version defaults to 2025-04-01-preview - Add test coverage for custom API version and backward compatibility - Update all existing tests to work with new backend signature Test Coverage: 89.1% (maintained from 89.0%) All 52 tests passing (49 existing + 3 new API version tests) Internationalization polish: add AzureAIGateway locale strings across all 10 languages - Add `azureaigateway_*` i18n keys to all 10 locale files - Replace hardcoded error strings with `i18n.T()` calls - Internationalize setup question prompts for gateway configuration - Add `errors.New` in place of `fmt.Errorf` for static error strings - Fix `url.QueryEscape` for API version query parameter encoding - Correct `claude-opus-4-6-v1` model ID to include `:0` suffix - Add error case for empty Bedrock text content blocks in `ParseResponse` - Add test for Bedrock `ParseResponse` with no text content blocks - Add `SendStream` context limitation note as inline code comment - Truncate debug error body log output at 2000 characters
682 lines
59 KiB
JSON
682 lines
59 KiB
JSON
{
|
|
"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_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_aws_region_label": "Région AWS",
|
|
"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_invalid_aws_region": "région AWS invalide : %s",
|
|
"bedrock_panic_sendstream": "panique dans SendStream : %v",
|
|
"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",
|
|
"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",
|
|
"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)",
|
|
"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_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",
|
|
"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_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_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_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_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",
|
|
"stream_help": "Streaming",
|
|
"suppress_thinking_tags": "Supprimer le texte encadré par les balises de réflexion",
|
|
"template_datetime_error_invalid_number": "invalid number in relative time: %q",
|
|
"template_datetime_error_invalid_relative_format": "invalid relative time format",
|
|
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
|
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
|
"template_datetime_error_unknown_operation": "datetime: unknown operation %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: variable name required",
|
|
"template_sys_error_home": "failed to get home directory: %v",
|
|
"template_sys_error_hostname": "failed to get hostname: %v",
|
|
"template_sys_error_pwd": "failed to get working directory: %v",
|
|
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
|
"template_sys_error_user": "failed to get current user: %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_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_walk_directory": "échec du parcours du répertoire : %v",
|
|
"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_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_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_ytdlp_not_found": "yt-dlp introuvable dans PATH. Veuillez installer yt-dlp pour utiliser la fonctionnalité de transcription YouTube",
|
|
"youtube_ytdlp_stderr_error": "erreur lors de la lecture du stderr de yt-dlp"
|
|
}
|