{
  "header": {
    "title": "AISBF Dashboard",
    "help": "Aide",
    "docs": "Docs",
    "about": "À propos",
    "license": "Licence",
    "restart_server": "Redémarrer le serveur",
    "logout": "Déconnexion"
  },
  "nav": {
    "overview": "Vue d'ensemble",
    "providers": "Fournisseurs",
    "rotations": "Rotations",
    "autoselect": "Sélection auto",
    "prompts": "Invites",
    "analytics": "Analytique",
    "api_tokens": "Jetons API",
    "wallet": "Portefeuille",
    "usage": "Utilisation",
    "users": "Utilisateurs",
    "settings": "Paramètres",
    "tiers": "Niveaux",
    "payment_settings": "Paiements",
    "upgrade": "✨ Mettre à niveau ! ✨",
    "notifications": "Notifications",
    "account": "Compte"
  },
  "account_menu": {
    "edit_profile": "Modifier le profil",
    "api_tokens": "Jetons API",
    "cache_settings": "Paramètres du cache",
    "subscription": "Abonnement",
    "wallet": "Portefeuille",
    "billing": "Facturation",
    "usage_quotas": "Utilisation & Quotas",
    "change_password": "Changer le mot de passe"
  },
  "notifications": {
    "title": "Notifications",
    "mark_all_read": "Tout marquer comme lu",
    "refresh": "Actualiser",
    "no_notifications": "Aucune notification",
    "just_now": "à l'instant",
    "minutes_ago": "il y a {n}min",
    "hours_ago": "il y a {n}h",
    "days_ago": "il y a {n}j"
  },
  "footer": {
    "support_development": "Soutenir le développement d'AISBF",
    "privacy_policy": "Politique de confidentialité",
    "terms_of_service": "Conditions d'utilisation",
    "contact": "Contact"
  },
  "donate": {
    "title": "Soutenir AISBF",
    "thank_you": "Merci de considérer un don. Votre soutien aide à maintenir AISBF comme logiciel libre et gratuit.",
    "bitcoin": "Bitcoin (BTC)",
    "ethereum": "Ethereum (ETH), USDC, USDT (ERC20, Mainnet)",
    "click_to_copy": "Cliquez sur une adresse pour la copier",
    "copied": "Copié !"
  },
  "welcome": {
    "title": "Bienvenue sur AISBF !",
    "early_adopter": "Merci d'être un utilisateur précoce ! Nous sommes en phase de développement intensif.",
    "may_encounter": "Vous pourriez rencontrer des bugs ou des interruptions de service.",
    "feedback": "Vos retours nous aident à améliorer AISBF. N'hésitez pas à nous contacter !",
    "send_feedback": "Envoyer un retour",
    "got_it": "Compris !"
  },
  "contact": {
    "title": "Nous contacter",
    "your_email": "Votre e-mail",
    "type": "Type",
    "select_type": "Sélectionner un type...",
    "bug_report": "Rapport de bug",
    "feature_request": "Demande de fonctionnalité",
    "feedback": "Retour",
    "question": "Question",
    "help": "Aide",
    "title_field": "Titre",
    "title_placeholder": "Bref résumé de votre message",
    "message": "Message",
    "message_placeholder": "Décrivez votre problème ou demande en détail...",
    "send_message": "Envoyer le message",
    "cancel": "Annuler",
    "sending": "Envoi...",
    "success": "Message envoyé avec succès ! Merci pour votre retour.",
    "error": "Erreur : {error}",
    "network_error": "Erreur réseau. Veuillez réessayer plus tard."
  },
  "modal": {
    "notice": "Avis",
    "confirm": "Confirmer",
    "warning": "Avertissement",
    "ok": "OK",
    "cancel": "Annuler",
    "delete": "Supprimer"
  },
  "common": {
    "save": "Enregistrer",
    "loading": "Chargement...",
    "error": "Erreur",
    "success": "Succès",
    "close": "Fermer",
    "yes": "Oui",
    "no": "Non"
  },
  "providers": {
    "no_providers": "Aucun fournisseur trouvé.",
    "copy": "Copier",
    "remove": "Supprimer",
    "save_this": "Enregistrer ce fournisseur",
    "saved": "Enregistré !",
    "saving": "Enregistrement...",
    "models_section": "Modèles",
    "add_model": "Ajouter un modèle manuellement",
    "no_models": "Aucun modèle configuré",
    "model_label": "Modèle",
    "fetch_models": "Obtenir les modèles du fournisseur",
    "search": "Rechercher",
    "filter": "Filtrer",
    "cancel": "Annuler",
    "filter_results": "Filtrer les résultats...",
    "loading": "Chargement...",
    "no_results": "Aucun résultat.",
    "searching": "Recherche...",
    "models_found_filter": "Utilisez le filtre pour affiner les résultats.",
    "no_models_found": "Aucun modèle trouvé pour ce fournisseur.",
    "checking_models": "Vérification des modèles du fournisseur...",
    "fetching_from_api": "Pas de liste locale - récupération depuis l'API du fournisseur...",
    "failed_load": "Échec du chargement des modèles.",
    "optional": "Optionnel",
    "credentials_file": "Chemin du fichier de credentials",
    "credentials_file_desc": "Chemin où les credentials OAuth2 seront stockés",
    "authenticate_claude": "Authentifier avec Claude",
    "check_status": "Vérifier le statut",
    "upload_credentials_title": "Ou télécharger le fichier de credentials",
    "upload_credentials_label": "Télécharger le fichier de credentials OAuth2",
    "upload_credentials_desc": "Télécharger le fichier JSON de credentials Claude OAuth2",
    "cli_mode_active": "Mode Claude CLI actif",
    "use_cli_mode": "Utiliser le mode Claude CLI",
    "upload_cli_creds": "Remplacer : Télécharger le fichier de credentials CLI",
    "provider_label": "Fournisseur",
    "model_name": "Nom du modèle",
    "weight": "Poids",
    "rate_limit": "Limite de débit (secondes)",
    "context_size": "Taille du contexte",
    "max_tokens": "Max tokens de requête",
    "api_key": "Clé API",
    "api_base": "URL de base API",
    "enabled": "Activé",
    "provider_type": "Type de fournisseur",
    "provider_name": "Nom du fournisseur",
    "provider_key_label": "Clé du fournisseur (identifiant unique, par ex. : \"gemini\", \"openai\", \"kiro\")",
    "provider_key_hint": "This will be used as the provider ID in the configuration and API endpoints",
    "provider_count_singular": "{n} fournisseur",
    "provider_count_plural": "{n} fournisseurs",
    "search_models_title": "Rechercher des modèles — {provider}",
    "result_count": "{n} résultat(s).",
    "kiro_auth_title": "Authentification Kiro",
    "kiro_auth_hint": "Choose one authentication method: Kiro IDE credentials (creds_file), kiro-cli database (sqlite_db), or direct credentials (refresh_token + client_id/secret).",
    "kiro_opt1": "Option 1 : Identifiants Kiro IDE",
    "kiro_opt2": "Option 2 : Base de données kiro-cli",
    "kiro_opt3": "Option 3 : Identifiants directs",
    "kiro_opt4": "Option 4 : Téléverser des fichiers",
    "kiro_aws_region": "Région AWS",
    "kiro_aws_region_hint": "AWS region for Kiro API (default: us-east-1)",
    "kiro_sqlite_path": "Chemin de la base de données SQLite",
    "kiro_sqlite_hint": "Path to kiro-cli SQLite database",
    "kiro_refresh_token": "Jeton de rafraîchissement",
    "kiro_refresh_hint": "Kiro refresh token for direct authentication",
    "kiro_profile_arn": "ARN du profil",
    "kiro_profile_arn_hint": "AWS CodeWhisperer profile ARN (optional)",
    "kiro_client_id": "ID client (pour AWS SSO OIDC)",
    "kiro_client_id_hint": "OAuth client ID for AWS SSO OIDC authentication",
    "kiro_client_secret": "Secret client (pour AWS SSO OIDC)",
    "kiro_client_secret_hint": "OAuth client secret for AWS SSO OIDC authentication",
    "kiro_upload_creds": "Téléverser le fichier d'identifiants",
    "kiro_upload_creds_hint": "Upload Kiro IDE credentials JSON file",
    "kiro_upload_sqlite": "Téléverser la base de données SQLite",
    "kiro_upload_sqlite_hint": "Upload kiro-cli SQLite database file",
    "kilo_opt1": "Option 1 : Clé API (recommandée)",
    "kilo_opt2": "Option 2 : Authentification OAuth2",
    "qwen_opt2_discontinued": "Option 2 : Authentification OAuth2 (ABANDONNÉE - NE FONCTIONNE PAS)",
    "kiro_auth_section": "Authentification Kiro",
    "kilo_auth_section": "Authentification Kilocode",
    "kilo_auth_hint": "Choose your authentication method: API Key (recommended for simplicity) or OAuth2 Device Authorization Grant.",
    "workspace_id": "ID de l'espace de travail",
    "workspace_id_hint": "Workspace ID for Germany region (default: \"Default Workspace\")",
    "oauth2_issuer_url": "URL de l'émetteur OAuth2",
    "pricing_section": "Configuration des prix",
    "subscription_based": "Fournisseur par abonnement (gratuit)",
    "subscription_based_hint": "If checked, this provider is subscription-based and costs will be calculated as $0. Usage is still tracked for analytics.",
    "price_prompt": "Prix par million de tokens de prompt (USD)",
    "price_prompt_hint": "Leave empty to use default pricing. Examples: OpenAI GPT-4: $10, Anthropic Claude: $15, Google Gemini: $1.25",
    "price_completion": "Prix par million de tokens de complétion (USD)",
    "price_completion_hint": "Leave empty to use default pricing. Examples: OpenAI GPT-4: $30, Anthropic Claude: $75, Google Gemini: $5.00",
    "rate_limit_hint": "Time delay between requests to this provider",
    "default_rate_limit_tpm": "Limite de débit par défaut TPM (tokens/minute)",
    "default_rate_limit_tpm_hint": "Default token limit per minute for models in this provider",
    "default_rate_limit_tph": "Limite de débit par défaut TPH (tokens/heure)",
    "default_rate_limit_tph_hint": "Default token limit per hour for models in this provider",
    "default_rate_limit_tpd": "Limite de débit par défaut TPD (tokens/jour)",
    "default_rate_limit_tpd_hint": "Default token limit per day for models in this provider",
    "default_condense_context": "Contexte de condensation par défaut (%)",
    "default_condense_method": "Méthode de condensation par défaut (conversationnel, sémantique, hiérarchique, algorithmique)",
    "nsfw": "NSFW",
    "privacy": "Confidentialité",
    "native_caching_section": "Mise en cache native",
    "native_caching_hint": "Provider-native caching features (Anthropic cache_control, Google Context Caching, OpenAI and Kilo-compatible APIs) for cost reduction.",
    "enable_native_caching": "Activer la mise en cache native",
    "enable_native_caching_hint": "Enable provider-native caching for cost reduction (50-70% savings for supported providers)",
    "cache_ttl": "TTL du cache (secondes)",
    "cache_ttl_hint": "Cache time-to-live in seconds (Google Context Caching only)",
    "min_cacheable_tokens": "Tokens minimum pour la mise en cache",
    "min_cacheable_tokens_hint": "Minimum token count for content to be cacheable (default: 1000)",
    "prompt_cache_key": "Clé de cache de prompt (OpenAI/Kilo)",
    "prompt_cache_key_hint": "Optional cache key for OpenAI/Kilo load balancer routing optimization",
    "models_section_hint": "Configure specific models for this provider, or leave empty to automatically fetch all available models from the provider's API.",
    "model_filter": "Filtre de modèles (pour les modèles récupérés automatiquement)",
    "model_filter_hint": "When no models are manually configured, only expose models whose ID contains this filter word (case-insensitive wildcard matching).",
    "model_rate_limit_tpm": "Limite de débit TPM (tokens/minute)",
    "model_rate_limit_tph": "Limite de débit TPH (tokens/heure)",
    "model_rate_limit_tpd": "Limite de débit TPD (tokens/jour)",
    "model_condense_context": "Contexte de condensation (%)",
    "model_condense_method": "Méthode de condensation (conversationnel, sémantique, hiérarchique, algorithmique)",
    "standard_config": "Configuration standard du fournisseur.",
    "uploading_file": "Téléchargement du fichier : {pct}%",
    "uploading_cli": "Téléchargement des identifiants CLI : {pct}%",
    "cli_creds_saved": "Identifiants CLI enregistrés : {name}",
    "upload_failed": "Échec du téléchargement : {error}",
    "fetching_models": "Récupération des modèles...",
    "checking_auth": "Vérification du statut d'authentification {provider}...",
    "auth_valid": "✅ Authentification {provider} valide. Expire dans : {expiry}",
    "auth_failed": "❌ Échec de l'authentification {provider} : {error}",
    "auth_error": "❌ Erreur lors de la vérification de l'authentification {provider} : {error}",
    "auth_success": "✓ Authentification {provider} réussie ! Identifiants enregistrés.",
    "auth_timeout": "✗ Délai d'authentification expiré. Veuillez réessayer.",
    "auth_denied": "✗ Autorisation refusée par l'utilisateur.",
    "auth_expired": "✗ Code d'autorisation expiré. Veuillez réessayer.",
    "auth_start_failed": "✗ Échec du démarrage de l'authentification : {error}",
    "auth_error_completing": "✗ Erreur lors de la finalisation de l'authentification : {error}",
    "auth_generic_error": "✗ Erreur : {error}",
    "remove_provider_confirm": "Supprimer le fournisseur \"{key}\" ?",
    "remove_provider_title": "Supprimer le fournisseur",
    "remove_model_confirm": "Supprimer ce modèle ?",
    "remove_model_title": "Supprimer le modèle",
    "missing_key": "Veuillez saisir une clé de fournisseur",
    "missing_key_title": "Clé manquante",
    "duplicate_key": "La clé du fournisseur existe déjà",
    "duplicate_key_title": "Clé en double",
    "error_saving": "Erreur lors de l'enregistrement de la configuration",
    "models_found": "✅ {n} modèles trouvés",
    "models_fetch_error": "❌ Erreur : {error}",
    "not_authenticated": "Non authentifié"
  },
  "rotations": {
    "model_name": "Nom du modèle",
    "notify_errors": "Notifier les erreurs",
    "notify_errors_desc": "retourner les erreurs comme messages quand tous les fournisseurs échouent",
    "capabilities": "Capacités (séparées par virgule)",
    "capabilities_placeholder": "ex. code_generation, t2t, reasoning",
    "default_rate_limit": "Limite de débit par défaut (secondes)",
    "default_context_size": "Taille de contexte par défaut",
    "nsfw": "NSFW",
    "privacy": "Confidentialité",
    "providers_section": "Fournisseurs",
    "add_provider": "Ajouter un fournisseur",
    "no_providers": "Aucun fournisseur configuré",
    "provider_id": "ID du fournisseur",
    "weight_optional": "Poids (optionnel)",
    "models_section": "Modèles",
    "add_model": "Ajouter un modèle",
    "no_models": "Aucun modèle spécifié",
    "leave_empty": "Laisser les modèles vides pour utiliser tous ceux du fournisseur",
    "rate_limit": "Limite de débit (secondes)",
    "max_request_tokens": "Max tokens de requête",
    "context_size": "Taille du contexte",
    "condense_context_pct": "Condenser le contexte (%)",
    "condense_method": "Méthode de condensation",
    "condense_method_placeholder": "ex. semantic, conversational, hierarchical",
    "save_this": "Enregistrer cette rotation",
    "remove": "Supprimer",
    "copy": "Copier",
    "search": "Rechercher",
    "optional": "Optionnel",
    "no_rotations": "Aucune rotation configurée",
    "filter_results": "Filtrer les résultats...",
    "loading": "Chargement...",
    "no_results": "Aucun résultat.",
    "searching": "Recherche...",
    "cancel": "Annuler",
    "filter": "Filtrer",
    "saved": "Enregistré !",
    "saving": "Enregistrement...",
    "select_provider": "Sélectionner un fournisseur...",
    "type_search_provider": "Tapez pour rechercher un fournisseur...",
    "weight": "Poids",
    "providers_singular": "fournisseur",
    "providers_plural": "fournisseurs",
    "provider_label": "Fournisseur",
    "model_label": "Modèle",
    "failed_load": "Échec du chargement des modèles.",
    "checking_models": "Vérification des modèles du fournisseur...",
    "fetching_from_api": "Pas de liste locale - récupération depuis l'API...",
    "no_models_found": "Aucun modèle trouvé.",
    "models_found_filter": "Utilisez le filtre pour affiner les résultats.",
    "search_models_title": "Rechercher des modèles — {provider}",
    "result_count": "{n} résultat(s).",
    "copy_prompt": "Copier \"{key}\" — saisissez une nouvelle clé de rotation :",
    "copy_title": "Copier la rotation",
    "add_prompt": "Saisissez une clé de rotation (par ex. : \"coding\", \"general\") :",
    "add_title": "Ajouter une rotation",
    "key_different": "La nouvelle clé doit être différente de la clé source.",
    "key_exists": "La clé de rotation existe déjà.",
    "key_exists_title": "Clé en double",
    "invalid_key_title": "Clé invalide",
    "remove_confirm": "Supprimer la rotation \"{key}\" ?",
    "remove_title": "Supprimer la rotation",
    "remove_provider_confirm": "Supprimer ce fournisseur ?",
    "remove_provider_title": "Supprimer le fournisseur",
    "remove_model_confirm": "Supprimer ce modèle ?",
    "remove_model_title": "Supprimer le modèle",
    "error_saving": "Erreur lors de l'enregistrement de la configuration"
  },
  "autoselect": {
    "model_name": "Nom du modèle",
    "capabilities": "Capacités (séparées par virgule)",
    "capabilities_placeholder": "ex. t2t, reasoning, multimodal",
    "nsfw": "NSFW",
    "privacy": "Confidentialité",
    "classify_nsfw": "Classer NSFW",
    "classify_nsfw_desc": "Remplacer le paramètre global classify_nsfw",
    "classify_privacy": "Classer la confidentialité",
    "classify_privacy_desc": "Remplacer le paramètre global classify_privacy",
    "classify_semantic": "Classer sémantiquement",
    "classify_semantic_desc": "Remplacer le paramètre global classify_semantic",
    "description": "Description",
    "selection_model": "Modèle de sélection",
    "selection_model_desc": "Choisir \"internal\" pour utiliser le modèle interne configuré",
    "internal_model": "internal (Utiliser le modèle interne configuré)",
    "fallback_model": "Modèle de secours",
    "fallback_model_desc": "Choisir parmi les rotations ou les modèles du fournisseur",
    "default_settings": "Paramètres par défaut",
    "default_settings_desc": "Valeurs par défaut pour les modèles dans cette sélection automatique",
    "default_rate_limit": "Limite de débit par défaut (secondes)",
    "default_max_request_tokens": "Max tokens de requête par défaut",
    "default_context_size": "Taille de contexte par défaut",
    "default_rate_limit_tpm": "Limite de débit par défaut TPM",
    "default_rate_limit_tpm_desc": "Limite de tokens par minute",
    "default_rate_limit_tph": "Limite de débit par défaut TPH",
    "default_rate_limit_tph_desc": "Limite de tokens par heure",
    "default_rate_limit_tpd": "Limite de débit par défaut TPD",
    "default_rate_limit_tpd_desc": "Limite de tokens par jour",
    "default_condense_context": "Condensation de contexte par défaut",
    "default_condense_context_desc": "Déclencher la condensation du contexte à ce nombre de tokens",
    "available_models": "Modèles disponibles",
    "available_models_desc": "Définir quels modèles peuvent être sélectionnés",
    "add_model": "Ajouter un modèle",
    "no_models": "Aucun modèle configuré",
    "model_label": "Modèle",
    "model_id": "ID du modèle",
    "model_id_desc": "Choisir parmi les rotations ou les modèles du fournisseur",
    "model_description": "Description",
    "model_description_hint": "Soyez précis sur quand ce modèle doit être utilisé",
    "save_this": "Enregistrer cette sélection automatique",
    "remove": "Supprimer",
    "copy": "Copier",
    "search": "Rechercher",
    "optional": "Optionnel",
    "no_autoselects": "Aucune configuration de sélection automatique définie",
    "models_singular": "modèle disponible",
    "models_plural": "modèles disponibles",
    "select_model": "Sélectionner un modèle...",
    "rotations_group": "Rotations",
    "provider_models_group": "Modèles du fournisseur",
    "filter_results": "Filtrer les résultats...",
    "loading": "Chargement...",
    "no_results": "Aucun résultat.",
    "searching": "Recherche...",
    "cancel": "Annuler",
    "filter": "Filtrer",
    "saved": "Enregistré !",
    "saving": "Enregistrement...",
    "error_prefix": "Erreur :",
    "search_models_title": "Rechercher des modèles",
    "no_models_loaded": "Aucun modèle chargé - récupération depuis les API des fournisseurs...",
    "failed_load": "Échec du chargement.",
    "copy_prompt": "Copier \"{key}\" — saisissez une nouvelle clé de sélection automatique :",
    "copy_title": "Copier la sélection automatique",
    "add_prompt": "Saisissez une clé de sélection automatique (par ex. : \"autoselect\", \"smart-select\") :",
    "add_title": "Ajouter une sélection automatique",
    "key_different": "La nouvelle clé doit être différente de la clé source.",
    "key_exists": "La clé de sélection automatique existe déjà.",
    "key_exists_title": "Clé en double",
    "invalid_key_title": "Clé invalide",
    "remove_confirm": "Supprimer la sélection automatique \"{key}\" ?",
    "remove_title": "Supprimer la sélection automatique",
    "remove_model_confirm": "Supprimer ce modèle ?",
    "remove_model_title": "Supprimer le modèle",
    "error_saving": "Erreur lors de l'enregistrement de la configuration",
    "result_count": "{n} résultat(s).",
    "models_found": "{n} modèle(s) trouvé(s)."
  },
  "users": {
    "loading": "Chargement...",
    "error_loading": "Erreur lors du chargement des utilisateurs",
    "processing": "Traitement...",
    "tier_updated": "Niveau mis à jour avec succès",
    "tier_update_failed": "Échec de la mise à jour du niveau",
    "network_error": "Erreur réseau",
    "send_failed": "Échec de l'envoi."
  },
  "wallet": {
    "loading_transactions": "Chargement des transactions...",
    "no_transactions": "Aucune transaction pour l'instant.",
    "failed_transactions": "Échec du chargement des transactions.",
    "credit": "Crédit",
    "debit": "Débit",
    "refund": "Remboursement",
    "topup": "Recharge",
    "payment": "Paiement",
    "copy_address": "Copier l'adresse",
    "copied": "Copié !",
    "loading_address": "Chargement...",
    "address_unavailable": "Adresse indisponible",
    "qr_unavailable": "QR indisponible",
    "no_address": "Pas d'adresse",
    "error": "Erreur",
    "balance_credited": "Solde crédité après confirmation on-chain.",
    "send_to_address": "Envoyer à cette adresse :",
    "processing": "Traitement...",
    "network_error": "Erreur réseau. Veuillez réessayer.",
    "failed_checkout": "Échec du démarrage du paiement.",
    "save_failed": "Échec de l'enregistrement des paramètres.",
    "saved": "✓ Enregistré",
    "address_copied": "Adresse copiée dans le presse-papiers !",
    "copy_failed": "Échec de la copie — veuillez copier manuellement.",
    "copy_failed_title": "Échec de la copie"
  },
  "analytics": {
    "no_users_found": "Aucun utilisateur trouvé",
    "all_users": "Tous les utilisateurs"
  },
  "rate_limits": {
    "loading": "Chargement des données de limite de débit...",
    "no_data": "Aucun limiteur de débit actif. Les données apparaîtront quand les fournisseurs reçoivent des réponses 429."
  },
  "billing": {
    "processing": "Traitement...",
    "add_card": "Ajouter une carte"
  },
  "payments": {
    "disabled": "Désactivé",
    "no_sources": "Aucune source",
    "not_initialized": "Non initialisé",
    "keys_active": "Clés actives",
    "error": "Erreur",
    "error_loading_status": "Erreur lors du chargement du statut"
  },
  "overview": {
    "title": "Vue d'ensemble",
    "server": "Serveur",
    "host": "Hôte",
    "port": "Port",
    "protocol": "Protocole",
    "auth": "Auth",
    "enabled": "Activé",
    "disabled": "Désactivé",
    "quick_actions": "Actions rapides",
    "rate_limits": "Limites de débit",
    "cache": "Cache"
  },
  "users_page": {
    "title": "Gestion des utilisateurs",
    "add_user": "Ajouter un utilisateur",
    "username": "Nom d'utilisateur",
    "email": "E-mail",
    "password": "Mot de passe",
    "role": "Rôle",
    "role_user": "Utilisateur",
    "role_admin": "Admin",
    "add_btn": "Ajouter",
    "search_users": "Rechercher des utilisateurs",
    "search_placeholder": "Rechercher par nom, e-mail...",
    "status": "Statut :",
    "status_all": "Tous",
    "status_active": "Actif",
    "status_inactive": "Inactif",
    "role_filter": "Rôle :",
    "search_btn": "Rechercher",
    "clear_btn": "Effacer",
    "all_users": "Tous les utilisateurs",
    "enable_selected": "Activer la sélection",
    "disable_selected": "Désactiver la sélection",
    "delete_selected": "Supprimer la sélection",
    "clear_selection": "Effacer la sélection",
    "col_email": "E-mail",
    "col_role": "Rôle",
    "col_tier": "Niveau",
    "col_created_by": "Créé par",
    "col_active": "Actif",
    "col_actions": "Actions",
    "role_admin_label": "Admin",
    "role_user_label": "Utilisateur",
    "active_yes": "Oui",
    "active_no": "Non",
    "edit_btn": "Modifier",
    "delete_btn": "Supprimer",
    "no_users": "Aucun utilisateur trouvé",
    "show": "Afficher :",
    "edit_title": "Modifier l'utilisateur",
    "new_password": "Nouveau mot de passe (laisser vide pour conserver)",
    "save_changes": "Enregistrer",
    "send_notification": "Envoyer une notification",
    "notify_title": "Titre",
    "notify_message": "Message",
    "send_btn": "Envoyer",
    "prev": "← Précédent",
    "next": "Suivant →",
    "notify_title_placeholder": "Notification title",
    "notify_message_placeholder": "Notification message…"
  },
  "wallet_page": {
    "title": "Wallet",
    "available_balance": "Available Balance",
    "auto_topup_active": "Auto Top-Up Active",
    "auto_topup_off": "Auto Top-Up Off",
    "topup_title": "Top Up Wallet",
    "quick_amounts": "Quick amounts",
    "custom_amount": "Custom amount",
    "topup_stripe": "Top Up with Stripe",
    "topup_paypal": "Top Up with PayPal",
    "crypto_deposit": "Crypto deposit",
    "auto_topup_title": "Auto Top-Up Settings",
    "enable_auto_topup": "Enable Auto Top-Up",
    "topup_amount": "Top-up amount",
    "trigger_below": "Trigger when balance falls below",
    "save_settings": "Save Settings",
    "no_card": "Auto top-up charges your saved credit card automatically. You don't have a credit card on file yet.",
    "add_credit_card": "Add Credit Card",
    "auto_topup_desc": "Enable auto top-up to automatically reload your wallet when the balance drops below a threshold.",
    "tx_history": "Transaction History",
    "col_date": "Date",
    "col_type": "Type",
    "col_description": "Description",
    "col_amount": "Amount",
    "col_status": "Status",
    "deposit": "Deposit",
    "no_payment_methods": "No payment methods are currently enabled.",
    "contact_admin": "Please contact the administrator to enable a payment gateway.",
    "did_you_know": "Did you know?",
    "wallet_upgrade_hint": "You can use your wallet balance to subscribe to a paid plan and unlock higher limits.",
    "view_plans": "View Plans",
    "currency": "Devise",
    "wallet_id": "ID du portefeuille",
    "charged_to_card": "Facturé sur votre carte bancaire par défaut :",
    "invalid_amount": "Veuillez sélectionner ou saisir un montant compris entre {min} et {max}.",
    "invalid_amount_title": "Montant invalide"
  },
  "analytics_page": {
    "title": "Analytics",
    "cost_today": "Today's Estimated Cost",
    "estimated_savings": "Estimated Savings",
    "savings_desc": "From cache hits & optimization",
    "all_providers": "Tous les fournisseurs",
    "all_models": "Tous les modèles",
    "all_users": "Tous les utilisateurs",
    "export": "Export CSV",
    "selected_period": "Selected Period Cost",
    "all_rotations": "Toutes les rotations",
    "all_autoselects": "Toutes les autosélections",
    "search_users_placeholder": "Rechercher des utilisateurs...",
    "col_provider": "Fournisseur",
    "col_total_requests": "Requêtes totales",
    "col_success": "Succès",
    "col_errors": "Erreurs",
    "col_error_rate": "Taux d'erreur",
    "col_avg_latency": "Latence moy.",
    "col_input_tokens": "Tokens d'entrée",
    "col_output_tokens": "Tokens de sortie",
    "col_total_tokens": "Tokens totaux",
    "col_tpm": "Tokens/Min",
    "col_tph": "Tokens/Heure",
    "col_tpd": "Tokens/Jour",
    "col_opt_type": "Type d'optimisation",
    "col_count": "Nombre",
    "col_tokens_saved": "Tokens économisés",
    "col_cost_saved": "Coût économisé",
    "col_avg_tokens_opt": "Moy. tokens/optimisation",
    "col_max_tokens_saved": "Max tokens économisés",
    "col_model": "Modèle",
    "col_type": "Type",
    "col_context_size": "Taille du contexte",
    "col_condense_method": "Méthode de condensation",
    "total": "Total",
    "back": "Retour au tableau de bord"
  },
  "rate_limits_page": {
    "title": "Rate Limits",
    "desc": "Adaptive rate limiting — learns from 429 responses",
    "reset_all": "Reset All",
    "col_provider": "Provider",
    "col_model": "Model",
    "col_delay": "Current Delay",
    "col_hits": "429 Hits",
    "col_last_hit": "Last Hit",
    "col_actions": "Actions",
    "reset": "Reset",
    "refresh": "Actualiser",
    "provider_label": "Fournisseur :",
    "enabled": "Activé :",
    "current_rate_limit": "Limite de débit actuelle :",
    "base_rate_limit": "Limite de débit de base :",
    "total_429": "Total des 429 :",
    "total_requests": "Total des requêtes :",
    "consecutive_429": "429 consécutifs :",
    "consecutive_success": "Consecutive Successes:",
    "recent_429": "429 récents :",
    "last_429": "Dernier 429 :",
    "never": "Jamais",
    "seconds": "{n} secondes",
    "yes": "Oui",
    "no": "Non",
    "reset_confirm": "Réinitialiser le limiteur de débit pour {provider} ?",
    "reset_confirm_title": "Réinitialiser le limiteur de débit",
    "reset_all_confirm": "Réinitialiser tous les limiteurs de débit ? Cela effacera toutes les limites apprises.",
    "reset_all_title": "Réinitialiser tout",
    "reset_all_success": "Tous les limiteurs de débit ont été réinitialisés avec succès",
    "analytics": "Analytiques",
    "response_cache": "Cache de réponse",
    "rate_limits": "Limites de débit"
  },
  "login_page": {
    "title": "Connexion",
    "username": "Nom d'utilisateur",
    "password": "Mot de passe",
    "submit": "Se connecter",
    "forgot_password": "Mot de passe oublié ?",
    "no_account": "Pas encore de compte ?",
    "sign_up": "S'inscrire",
    "or_login_with": "Ou se connecter avec",
    "remember_me": "Se souvenir de moi"
  },
  "signup_page": {
    "title": "Créer un compte",
    "username": "Nom d'utilisateur",
    "email": "Adresse e-mail",
    "password": "Mot de passe",
    "confirm_password": "Confirmer le mot de passe",
    "submit": "Créer un compte",
    "have_account": "Déjà un compte ?",
    "login": "Se connecter",
    "username_hint": "3-50 characters, letters, numbers, underscores, hyphens, and dots only",
    "email_hint": "You will receive a verification email at this address",
    "password_hint": "At least 8 characters with uppercase, lowercase, and numbers"
  },
  "forgot_page": {
    "title": "Réinitialiser le mot de passe",
    "email": "Adresse e-mail",
    "submit": "Envoyer le lien",
    "back_to_login": "Retour à la connexion",
    "intro": "Enter your email address and we'll send you a link to reset your password.",
    "sent": "If an account exists with that email address, we have sent a password reset link. The link will expire in 24 hours. Please check your inbox and spam folder."
  },
  "reset_page": {
    "title": "Nouveau mot de passe",
    "password": "Nouveau mot de passe",
    "confirm": "Confirmer",
    "submit": "Réinitialiser",
    "intro": "Please enter your new password below.",
    "password_hint": "Must be at least 8 characters long",
    "success": "Your password has been successfully reset. You can now login with your new password.",
    "go_to_login": "Go to Login",
    "invalid_token": "This password reset link is invalid or has expired. Please request a new password reset link.",
    "request_new": "Request New Reset Link"
  },
  "profile_page": {
    "title": "Modifier le profil",
    "subtitle": "Mettre à jour les informations du compte",
    "account_info": "Informations du compte",
    "username": "Nom d'utilisateur",
    "display_name": "Nom d'affichage",
    "email": "Adresse e-mail",
    "profile_picture": "Photo de profil",
    "save": "Enregistrer",
    "display_name_hint": "This is how your name will be displayed throughout the application",
    "no_email": "Aucune adresse e-mail définie.",
    "add_email": "Ajouter un e-mail",
    "change_email": "Changer l'e-mail",
    "email_requires_verify": "(requires verification)",
    "upload_image": "Téléverser une image",
    "upload_hint": "Max 5 MB. JPG, PNG, GIF, WebP.",
    "danger_zone": "Zone dangereuse",
    "danger_zone_desc": "Permanently delete your account and all associated data.",
    "delete_account": "Supprimer le compte",
    "uploading": "Téléversement…",
    "upload_pct": "Téléversement… {pct}%",
    "upload_success": "Profile picture updated!",
    "upload_too_large": "Image is too large. Maximum size is 5 MB.",
    "upload_invalid_type": "Invalid file type. Please upload JPG, PNG, GIF or WebP.",
    "upload_failed": "Upload failed: {error}"
  },
  "password_page": {
    "title": "Changer le mot de passe",
    "subtitle": "Mettre à jour le mot de passe",
    "section": "Paramètres du mot de passe",
    "current": "Mot de passe actuel",
    "new": "Nouveau mot de passe",
    "confirm": "Confirmer",
    "submit": "Changer"
  },
  "email_page": {
    "title": "Changer l'adresse e-mail",
    "subtitle": "Mettre à jour l'adresse e-mail. La nouvelle adresse devra être vérifiée.",
    "current": "E-mail actuel",
    "new": "Nouvelle adresse e-mail",
    "password": "Mot de passe actuel",
    "submit": "Envoyer l'e-mail de vérification",
    "cancel": "Annuler",
    "password_hint": "Confirm your password to proceed"
  },
  "delete_page": {
    "title": "Supprimer le compte",
    "warning": "Cette action est irréversible. Toutes vos données seront supprimées définitivement.",
    "confirm_title": "Confirmer la suppression",
    "password": "Entrez votre mot de passe pour confirmer",
    "type_delete": "Tapez \"SUPPRIMER\" pour confirmer",
    "submit": "Supprimer définitivement mon compte",
    "cancel": "Annuler",
    "danger_zone": "Zone dangereuse",
    "danger_zone_desc": "Permanently delete your account and all associated data.",
    "will_delete": "⚠️ Ceci supprimera définitivement :",
    "item_account": "Votre compte et vos informations de profil",
    "item_providers": "Tous vos fournisseurs API et configurations",
    "item_rotations": "Tous vos paramètres de rotation et de sélection automatique",
    "item_history": "Tout votre historique d'utilisation et analyses",
    "item_tokens": "Tous vos tokens API",
    "sub_warning_title": "⚠️ Avertissement : Abonnement actif détecté",
    "sub_warning_desc": "You have an active paid subscription ({tier}). Deleting your account will:",
    "sub_item_cancel": "Annuler votre abonnement immédiatement",
    "sub_item_access": "Vous perdrez l'accès à toutes les fonctionnalités premium",
    "sub_item_refund": "Aucun remboursement ne sera émis pour le temps d'abonnement restant",
    "sub_consider": "Pensez à annuler d'abord votre abonnement si vous souhaitez l'utiliser jusqu'à la fin de la période de facturation.",
    "type_delete_confirm": "Veuillez taper exactement \"DELETE\" pour confirmer la suppression du compte.",
    "final_confirm": "Êtes-vous absolument sûr ? Cette action est irréversible et toutes vos données seront supprimées définitivement."
  },
  "tokens_page": {
    "title": "API Tokens",
    "desc": "Generate tokens to authenticate requests to your personal API endpoints.",
    "create": "Create Token",
    "scope": "Scope",
    "no_tokens": "No API tokens yet.",
    "no_tokens_hint": "Create one to start using the API.",
    "copy": "Copy",
    "copy_full": "Copy full",
    "revoke": "Revoke",
    "cancel": "Cancel",
    "new_token": "Nouveau token",
    "your_tokens": "Vos tokens",
    "description": "Descriptif",
    "description_optional": "Description (optionnelle)",
    "description_placeholder": "par ex. Mon appli, serveur domestique…",
    "scope_api": "API uniquement",
    "scope_api_hint": "(proxy requests)",
    "scope_mcp": "MCP uniquement",
    "scope_mcp_hint": "(agent tools)",
    "scope_both": "Les deux",
    "create_btn": "Créer",
    "token_created": "Token créé avec succès",
    "copy_now_warn": "Copiez ce token maintenant — il ne sera plus affiché.",
    "done": "Terminé",
    "how_to_use": "Comment utiliser votre token",
    "auth_header_desc": "Add the token to every request in the {header} header:",
    "token_scopes": "Portées du token :",
    "scope_api_access": "Uniquement les endpoints API proxy ({path})",
    "scope_mcp_access": "Uniquement les endpoints d'outils MCP ({path})",
    "scope_both_access": "Les endpoints API et MCP",
    "available_endpoints": "Endpoints disponibles :",
    "col_method": "Méthode",
    "col_endpoint": "Point de terminaison",
    "col_scope": "Portée",
    "col_description": "Description",
    "ep_list_models": "Lister vos modèles",
    "ep_list_providers": "Lister vos fournisseurs",
    "ep_list_rotations": "Lister vos rotations",
    "ep_list_autoselects": "Lister vos sélections automatiques",
    "ep_chat": "Chat avec vos configs",
    "ep_mcp_list": "Lister les outils MCP",
    "ep_mcp_call": "Appeler les outils MCP",
    "example_commands": "Exemples de commandes curl :",
    "active": "Actif",
    "inactive": "Inactif",
    "created": "Créé",
    "last_used": "Dernière utilisation",
    "unnamed_token": "Token sans nom",
    "delete_confirm": "Supprimer ce token API ? L'accès sera révoqué immédiatement et cette action est irréversible.",
    "delete_token": "Supprimer le token"
  },
  "billing_page": {
    "title": "Billing",
    "payment_methods": "Payment Methods",
    "paypal": "PayPal",
    "credit_card": "Credit Card",
    "bitcoin": "Bitcoin",
    "ethereum": "Ethereum",
    "usdt": "USDT",
    "usdc": "USDC",
    "add_card": "Add Card",
    "cancel": "Cancel",
    "wallet_balance": "Solde du portefeuille",
    "wallet_desc": "All subscription renewals and payments are automatically charged from your wallet first.",
    "manage_wallet": "Gérer le portefeuille",
    "no_payment_methods": "Aucun moyen de paiement configuré",
    "no_payment_methods_desc": "Add a credit card to enable automatic subscription renewals.",
    "add_credit_card": "Ajouter une carte de crédit",
    "top_up_wallet": "Recharger le portefeuille",
    "set_default": "Définir par défaut",
    "default_label": "Par défaut",
    "billing_history": "Historique de facturation",
    "no_history": "Aucun historique de facturation",
    "no_history_desc": "You don't have any payment transactions on your account.",
    "no_history_upgrade": "Mettez votre plan à niveau pour commencer !",
    "view_plans": "Voir les plans et tarifs",
    "plan_payment": "Paiement du plan",
    "col_date": "Date de facturation",
    "col_description": "Description",
    "col_amount": "Montant",
    "col_method": "Méthode",
    "col_status": "Statut",
    "col_actions": "Actions disponibles",
    "status_completed": "✓ Terminé",
    "status_pending": "⏳ En attente",
    "status_failed": "✗ Échoué",
    "status_refunded": "↩ Remboursé",
    "invoice": "Facture",
    "prev": "Précédent",
    "next": "Suivant"
  },
  "user_overview": {
    "subtitle": "Manage your AI configurations, track usage, and access your personal API endpoints.",
    "free_tier": "Free Tier",
    "col_timestamp": "Timestamp",
    "col_provider": "Provider",
    "col_model": "Model",
    "col_tokens": "Tokens",
    "recent_activity": "Recent Activity",
    "no_activity": "No recent activity",
    "stat_total_tokens": "Total des tokens",
    "stat_requests_today": "Requêtes aujourd'hui",
    "stat_active_providers": "Fournisseurs actifs",
    "stat_active_rotations": "Rotations actives",
    "quick_actions": "Actions rapides",
    "subscription": "Abonnement",
    "manage": "Gérer",
    "add_payment_method": "Ajouter un moyen de paiement",
    "unlock_more_power": "Débloquer plus de puissance",
    "upgrade_plan": "Mettre à niveau le plan",
    "higher_plans": "{n} plans supérieurs disponibles — plus de requêtes, plus de fournisseurs",
    "upgrade_to": "Passez à {name} pour {price}/mois",
    "api_endpoints": "Vos endpoints API",
    "show_hide": "Afficher / Masquer",
    "auth_header_desc": "Include your API token in the {header} header:",
    "ep_models": "Modèles",
    "ep_list_models": "Lister tous vos modèles",
    "ep_providers": "Fournisseurs",
    "ep_list_providers": "Lister vos fournisseurs configurés",
    "ep_rotations_autoselect": "Rotations & Sélection automatique",
    "ep_list_rotations": "Lister vos rotations",
    "ep_list_autoselects": "Lister vos sélections automatiques",
    "ep_chat": "Complétions de chat",
    "ep_chat_desc": "Send chat requests using your configs",
    "ep_mcp": "Outils MCP",
    "ep_mcp_list": "Lister les outils MCP",
    "ep_mcp_call": "Appeler les outils MCP",
    "ep_model_formats": "Exemples de formats de modèles",
    "admin_access": "Accès administrateur",
    "admin_access_desc": "As an admin you also access global configurations via shorter model formats:",
    "token_required": "Your API token is required for all endpoints.",
    "manage_tokens": "Gérer vos tokens →"
  },
  "usage_page": {
    "title": "Usage & Quotas",
    "upgrade": "Upgrade plan",
    "near_limit": "Near limit",
    "getting_close": "Getting close",
    "no_daily_cap": "No daily cap",
    "no_monthly_cap": "No monthly cap",
    "no_token_cap": "No token cap on this plan",
    "manage_subscription": "Gérer l'abonnement",
    "current_plan": "Plan actuel",
    "activity_quotas": "Quotas d'activité",
    "activity_quotas_desc": "Time-based limits that reset automatically",
    "config_limits": "Limites de configuration",
    "config_limits_desc": "Persistent resource allocations for your account",
    "requests_today": "Requêtes aujourd'hui",
    "resets_midnight": "Resets at midnight UTC",
    "resets_in": "Resets in {h}h {m}m",
    "requests_month": "Requêtes ce mois",
    "resets_on_1st": "Resets on the 1st",
    "resets_in_days": "Resets in {n} day",
    "resets_in_days_plural": "Resets in {n} days",
    "tokens_24h": "Tokens (dernières 24h)",
    "tokens_combined": "Input + output combined",
    "tokens_used": "tokens utilisés",
    "unlimited": "illimité",
    "quota_reached": "Quota atteint",
    "remaining": "{n} remaining",
    "ai_providers": "Fournisseurs IA",
    "ai_providers_desc": "Configured provider integrations",
    "rotations": "Rotations",
    "rotations_desc": "Load balancing configurations",
    "autoselections": "Sélections automatiques",
    "autoselections_desc": "Smart routing configurations",
    "unlimited_slots": "Unlimited slots available",
    "pct_used_slots_free": "{pct}% used · {n} slot free",
    "pct_used_slots_free_plural": "{pct}% used · {n} slots free",
    "need_higher_limits": "Besoin de limites plus élevées ?",
    "upgrade_desc": "Upgrade your plan to unlock more requests, providers, and autoselections.",
    "view_plans": "Voir les plans"
  },
  "prompts_page": {
    "title": "Prompts système",
    "content": "Contenu du prompt :",
    "save": "Enregistrer",
    "reset": "Réinitialiser",
    "cancel": "Annuler",
    "select_file": "Sélectionner le fichier de prompt :",
    "content_hint": "Edit the prompt template. Use markdown formatting as needed.",
    "reset_confirm": "Are you sure you want to reset this prompt to the default admin configuration?",
    "reset_confirm_title": "Reset Prompt"
  },
  "config_page": {
    "title": "Modifier la configuration",
    "label": "Configuration (JSON)",
    "save": "Enregistrer",
    "cancel": "Annuler",
    "hint_json": "Vérifier la syntaxe JSON",
    "hint_restart": "Les modifications prennent effet après redémarrage",
    "hint_backup": "Sauvegarder avant de modifier"
  },
  "error_page": {
    "title": "Erreur",
    "go_dashboard": "Tableau de bord",
    "go_back": "Retour"
  },
  "tiers_page": {
    "title": "Gestion des niveaux de compte",
    "add_tier": "Add Tier",
    "col_name": "Nom du niveau",
    "col_price": "Price",
    "col_visible": "Visible",
    "col_actions": "Actions",
    "edit": "Modifier",
    "delete": "Supprimer",
    "save": "Save",
    "cancel": "Cancel",
    "tier_name": "Tier Name",
    "monthly_price": "Monthly Price",
    "is_visible": "Visible to users",
    "subtitle": "Configurer les niveaux, tarifs et limites d'utilisation",
    "available_tiers": "Niveaux disponibles",
    "create_new": "Créer un nouveau niveau",
    "col_price_monthly": "Prix (Mensuel)",
    "col_price_yearly": "Prix (Annuel)",
    "col_max_req_day": "Max requêtes / Jour",
    "col_max_req_month": "Max requêtes / Mois",
    "col_max_providers": "Max fournisseurs",
    "col_max_rotations": "Max rotations",
    "col_max_autoselections": "Max autosélections",
    "col_max_models_rotation": "Max modèles / Rotation",
    "col_max_models_autoselect": "Max modèles / Autosélection",
    "col_status": "Statut",
    "unlimited": "Illimité",
    "blocked": "Bloqué",
    "active": "Actif",
    "inactive": "Inactif",
    "default": "Défaut",
    "default_label": "(défaut)"
  },
  "cache_page": {
    "title": "Cache Settings",
    "save": "Save"
  },
  "response_cache_page": {
    "title": "Response Cache",
    "clear": "Clear Cache",
    "stats": "Cache Statistics",
    "hits": "Hits",
    "misses": "Misses",
    "size": "Size"
  },
  "settings_page": {
    "title": "Settings",
    "save": "Save Settings",
    "general": "General",
    "security": "Security",
    "server": "Server",
    "ssl": "SSL/TLS",
    "tor": "TOR",
    "oauth2": "OAuth2",
    "condensation": "Condensation",
    "internal_model": "Internal Model",
    "currency": "Currency",
    "host": "Host",
    "port": "Port",
    "auth_enabled": "Authentication Enabled",
    "admin_username": "Admin Username",
    "admin_password": "Admin Password",
    "change_password": "Change Password",
    "current_password": "Current Password",
    "new_password": "New Password",
    "confirm_password": "Confirm Password",
    "https_enabled": "HTTPS Enabled",
    "domain": "Domain",
    "email": "Email (for Let's Encrypt)",
    "tor_enabled": "TOR Hidden Service Enabled",
    "tor_address": "TOR Address",
    "google_oauth2": "Google OAuth2",
    "github_oauth2": "GitHub OAuth2",
    "client_id": "Client ID",
    "client_secret": "Client Secret",
    "enabled": "Enabled",
    "condensation_method": "Condensation Method",
    "condensation_threshold": "Condensation Threshold (%)",
    "model_id": "Model ID",
    "currency_code": "Currency Code",
    "currency_symbol": "Currency Symbol",
    "tab_server": "Serveur",
    "tab_auth": "Auth & MCP",
    "tab_models": "Modèles",
    "tab_database": "Base de données",
    "tab_cache": "Cache",
    "tab_classification": "Classification",
    "tab_tor": "TOR",
    "tab_signup": "Inscription",
    "tab_oauth2": "OAuth2",
    "tab_smtp": "SMTP",
    "tab_batching": "Traitement par lots",
    "tab_ratelimit": "Limite de débit",
    "tab_admin": "Admin",
    "section_server": "Configuration du serveur",
    "section_auth": "Authentification",
    "section_mcp": "Serveur MCP",
    "section_models": "Modèles internes",
    "section_database": "Configuration de la base de données",
    "section_cache": "Configuration du cache",
    "section_classification": "Classification",
    "section_tor": "Service caché TOR",
    "section_signup": "Paramètres d'inscription",
    "section_oauth2": "Authentification OAuth2",
    "section_google_oauth2": "Google OAuth2",
    "section_github_oauth2": "GitHub OAuth2",
    "section_smtp": "Configuration SMTP",
    "section_batching": "Traitement par lots",
    "section_ratelimit": "Limitation de débit",
    "section_admin": "Paramètres admin",
    "section_currency": "Paramètres de devise",
    "section_condensation": "Paramètres de condensation",
    "lbl_host": "Hôte",
    "lbl_port": "Port",
    "lbl_protocol": "Protocole",
    "lbl_public_domain": "Domaine public (pour Let's Encrypt)",
    "lbl_ssl_cert": "Chemin du certificat SSL",
    "lbl_ssl_key": "Chemin de la clé SSL",
    "lbl_auth_tokens": "Tokens d'auth (un par ligne)",
    "lbl_autoselect_tokens": "Tokens d'autosélection (un par ligne)",
    "lbl_fullconfig_tokens": "Tokens de config complète (un par ligne)",
    "lbl_condensation_model": "ID du modèle de condensation",
    "lbl_autoselect_model": "ID du modèle d'autosélection",
    "lbl_nsfw_classifier": "ID du modèle classificateur NSFW",
    "lbl_privacy_classifier": "ID du modèle classificateur de confidentialité",
    "lbl_semantic_vectorization": "ID du modèle de vectorisation sémantique",
    "lbl_database_type": "Type de base de données",
    "lbl_sqlite_path": "Chemin de la base SQLite",
    "lbl_mysql_host": "Hôte MySQL",
    "lbl_mysql_port": "Port MySQL",
    "lbl_mysql_user": "Nom d'utilisateur MySQL",
    "lbl_mysql_password": "Mot de passe MySQL",
    "lbl_mysql_database": "Nom de la base MySQL",
    "lbl_cache_type": "Type de cache",
    "lbl_cache_sqlite_path": "Chemin du cache SQLite",
    "lbl_redis_host": "Hôte Redis",
    "lbl_redis_port": "Port Redis",
    "lbl_redis_db": "Base Redis",
    "lbl_redis_password": "Mot de passe Redis",
    "lbl_redis_key_prefix": "Préfixe de clé Redis",
    "lbl_enable_auth": "Activer l'authentification API",
    "lbl_enable_mcp": "Activer le serveur MCP",
    "lbl_enable_tor": "Activer le service caché TOR",
    "lbl_allow_signup": "Autoriser l'inscription",
    "lbl_require_email": "Exiger la vérification par e-mail",
    "lbl_enable_batching": "Activer le traitement par lots",
    "lbl_enable_ratelimit": "Activer la limitation de débit",
    "lbl_enable_smtp": "Activer SMTP",
    "lbl_enable_google": "Activer Google OAuth2",
    "lbl_enable_github": "Activer GitHub OAuth2",
    "save_btn": "Enregistrer les paramètres",
    "lbl_response_cache_backend": "Response Cache Backend",
    "lbl_cache_ttl": "Cache TTL (seconds)",
    "lbl_cache_max_memory": "Max Memory Cache Size",
    "lbl_tor_control_host": "TOR Control Host",
    "lbl_tor_control_port": "TOR Control Port",
    "lbl_tor_control_password": "TOR Control Password",
    "lbl_tor_service_dir": "Hidden Service Directory",
    "lbl_tor_service_port": "Hidden Service Port",
    "lbl_socks_host": "SOCKS Proxy Host",
    "lbl_socks_port": "SOCKS Proxy Port",
    "lbl_token_expiry": "Verification Token Expiry (hours)",
    "lbl_google_client_id": "Google Client ID",
    "lbl_google_client_secret": "Google Client Secret",
    "lbl_github_client_id": "GitHub Client ID",
    "lbl_github_client_secret": "GitHub Client Secret",
    "lbl_smtp_host": "SMTP Host",
    "lbl_smtp_port": "SMTP Port",
    "lbl_smtp_username": "SMTP Username",
    "lbl_smtp_password": "SMTP Password",
    "lbl_smtp_from_email": "From Email Address",
    "lbl_smtp_from_name": "From Name",
    "lbl_batching_window": "Batching Window (milliseconds)",
    "lbl_max_batch_size": "Max Batch Size",
    "lbl_openai_batch_size": "OpenAI Max Batch Size",
    "lbl_anthropic_batch_size": "Anthropic Max Batch Size",
    "lbl_initial_rate_limit": "Initial Rate Limit (requests/second)",
    "lbl_learning_rate": "Learning Rate",
    "lbl_headroom_percent": "Headroom Percent",
    "lbl_recovery_rate": "Recovery Rate",
    "lbl_max_rate_limit": "Max Rate Limit (requests/second)",
    "lbl_min_rate_limit": "Min Rate Limit (requests/second)",
    "lbl_backoff_base": "Backoff Base",
    "lbl_jitter_factor": "Jitter Factor",
    "lbl_history_window": "History Window (seconds)",
    "lbl_consecutive_successes": "Consecutive Successes for Recovery",
    "lbl_admin_username": "Admin Username",
    "lbl_new_password": "New Password",
    "lbl_confirm_password": "Confirm New Password",
    "lbl_admin_email": "Admin Email Address"
  },
  "payments_page": {
    "title": "Paramètres du système de paiement",
    "currency_note_title": "Note importante sur la sélection de devise",
    "currency_settings": "Paramètres de devise globaux",
    "currency_code": "Code de devise",
    "currency_symbol": "Symbole de devise",
    "decimal_places": "Décimales",
    "save_currency": "Enregistrer les paramètres de devise",
    "encryption_title": "Configuration de la clé de chiffrement",
    "critical_security": "Paramètre de sécurité critique",
    "stripe_config": "Configuration Stripe",
    "paypal_config": "Configuration PayPal",
    "bitcoin_config": "Configuration Bitcoin",
    "ethereum_config": "Configuration Ethereum",
    "usdt_config": "Configuration USDT",
    "usdc_config": "Configuration USDC",
    "coinbase_config": "Configuration Coinbase Commerce",
    "crypto_prices": "Sources de prix crypto",
    "payment_stats": "Statistiques de paiement",
    "master_keys": "Gestion des clés maîtresses",
    "subscription_settings": "Paramètres d'abonnement",
    "lbl_enabled": "Activé",
    "lbl_api_key": "Clé API",
    "lbl_secret_key": "Clé secrète",
    "lbl_webhook_secret": "Secret webhook",
    "lbl_client_id": "ID client",
    "lbl_client_secret": "Secret client",
    "lbl_wallet_address": "Adresse du portefeuille",
    "lbl_min_confirmations": "Confirmations minimales",
    "lbl_network": "Réseau",
    "lbl_contract_address": "Adresse du contrat",
    "lbl_threshold": "Montant seuil",
    "lbl_admin_address": "Adresse admin",
    "lbl_monitoring": "Méthode de surveillance",
    "lbl_webhook_url": "URL webhook",
    "lbl_total_balance": "Solde total",
    "lbl_pending": "Paiements en attente",
    "lbl_failed": "Paiements échoués"
  },
  "subscription_page": {
    "title": "Gestion de l'abonnement",
    "current_plan": "Plan actuel",
    "free_tier": "Niveau gratuit",
    "no_description": "No description available",
    "per_month": "/mois",
    "per_year": "/an",
    "or_yearly": "ou {price}/an",
    "change_plan": "Changer de plan",
    "requests_per_day": "Requêtes par jour",
    "requests_per_month": "Requêtes par mois",
    "providers": "Fournisseurs",
    "rotations": "Rotations IA",
    "subscription_status": "Statut de l'abonnement",
    "renews": "Renouvellement :",
    "cancel_subscription": "Annuler l'abonnement",
    "quick_actions": "Actions rapides",
    "billing_payments": "Facturation & Paiements",
    "billing_payments_desc": "Manage payment methods and view history",
    "upgrade_plan": "Mettre à niveau le plan",
    "upgrade_plan_desc": "View all available plans",
    "edit_profile": "Modifier le profil",
    "edit_profile_desc": "Update account settings",
    "change_password": "Changer le mot de passe",
    "change_password_desc": "Update security settings",
    "no_payment_methods": "Aucun moyen de paiement",
    "no_payment_methods_desc": "Add a payment method to upgrade your plan and manage subscriptions",
    "go_to_billing": "Aller à la facturation et aux moyens de paiement"
  },
  "user_providers_page": {
    "title": "Mes fournisseurs",
    "add_new": "Ajouter un nouveau fournisseur"
  },
  "user_rotations_page": {
    "title": "Ma configuration de rotations",
    "add_rotation": "Ajouter une rotation",
    "save_config": "Enregistrer la configuration",
    "cancel": "Annuler"
  },
  "user_autoselects_page": {
    "title": "Ma configuration de sélection automatique",
    "add_autoselect": "Ajouter une sélection automatique",
    "save_config": "Enregistrer la configuration",
    "cancel": "Annuler"
  }
}
