{
    "errors": {
        "default_api": "Une erreur est survenue, veuillez réessayer."
    },
    "contact": {
        "seo_title": "Contacter le Support | BotChain",
        "seo_description": "Contactez l'équipe BotChain pour toute demande de support ou d'information.",
        "title": "Contacter le Support",
        "subtitle": "Comment pouvons-nous vous aider aujourd'hui ?",
        "form": {
            "name_label": "Nom complet",
            "name_placeholder": "Jean Dupont",
            "email_label": "Adresse e-mail",
            "email_placeholder": "jean@exemple.com",
            "subject_label": "Sujet",
            "subject_placeholder": "Comment pouvons-nous vous aider ?",
            "message_label": "Message",
            "message_placeholder": "Votre message ici...",
            "submit_button": "Envoyer le message",
            "sending": "Envoi en cours...",
            "success": "Message envoyé avec succès !",
            "success_with_name": "Merci {{name}}. Nous vous répondrons prochainement.",
            "error": "Échec de l'envoi du message. Veuillez réessayer.",
            "mailto_cta": "Vous préférez utiliser votre propre application de messagerie ?"
        },
        "info": {
            "title": "Autres moyens de nous contacter",
            "desc": "Rejoignez notre communauté ou consultez notre documentation pour des réponses rapides.",
            "telegram": "Communauté Telegram",
            "email": "E-mail direct"
        },
        "status_online": "Statut : En ligne",
        "direct_line": "Ligne directe",
        "transmission_received": "Transmission reçue",
        "error_detected": "Erreur détectée",
        "support_inquiry_fallback": "Demande d'assistance"
    },
    "common": {
        "na": "N/A",
        "menu": "Ouvrir le menu",
        "none": "Aucun",
        "loading": "Chargement...",
        "initializing": "Initialisation du Cockpit...",
        "processing": "Traitement...",
        "error_occurred": "Erreur lors du traitement (probablement une alerte non archivable).",
        "error": "Une erreur est survenue, veuillez réessayer.",
        "error_loading": "Erreur lors du chargement des données.",
        "confirm": "Confirmer",
        "cancel": "Annuler",
        "back": "Retour",
        "dismiss": "Ignorer",
        "got_it": "Compris",
        "no_data": "Aucune donnée disponible",
        "no_results": "Aucun résultat trouvé",
        "search": "Rechercher...",
        "clear_search": "Effacer la recherche",
        "network": {
            "internet_lost": "Connexion Internet perdue. Veuillez vérifier votre connexion.",
            "connection_restored": "Connexion réseau rétablie.",
            "error_occurred": "Une erreur est survenue, veuillez réessayer."
        },
        "errors": {
            "default": "Une erreur est survenue, veuillez réessayer.",
            "unexpected": "Une erreur inattendue est survenue. Veuillez réessayer plus tard.",
            "invalid_date_range": "Plage de dates invalide.",
            "id_required": "L'identifiant est requis.",
            "not_found": "Ressource non trouvée.",
            "missing_parameters": "Paramètres requis manquants."
        },
        "messages": {
            "success": "Succès",
            "deleted": "Supprimé"
        },
        "close": "Fermer",
        "close_sidebar": "Fermer la barre latérale",
        "search_stats": "Affichage de <countSpan>{{count}}</countSpan> sur <totalSpan>{{total}}</totalSpan> enregistrements",
        "not_found": {
            "title": "Perdu dans la Blockchain ?",
            "desc": "La page que vous recherchez n'a pas encore été minée ou n'existe pas. Revenons sur BotChain.",
            "cta_home": "Retour à l'accueil",
            "error_code": "ERR_ROUTE_NOT_FOUND",
            "seo_title": "Page non trouvée",
            "seo_desc": "La page BotChain demandée est introuvable."
        },
        "pagination": {
            "showing": "Affichage de",
            "to": "à",
            "of": "sur",
            "page": "Page",
            "first": "Première page",
            "prev": "Page précédente",
            "next": "Page suivante",
            "last": "Dernière page"
        },
        "used": "utilisé",
        "unknown": "Inconnu",
        "loading_screen": {
            "loading_alt": "Chargement de BotChain",
            "initializing": "Initialisation du système"
        }
    },
    "nav": {
        "home": "Accueil",
        "overview": "Aperçu",
        "my_bots": "Mes Bots",
        "strategies": "Stratégies",
        "analytics": "Analyses",
        "settings": "Paramètres",
        "sign_out": "Déconnexion",
        "pricing": "Tarifs",
        "strategy": "Stratégie",
        "website": "Site Web",
        "docs": "Docs",
        "launch": "Lancer un Bot",
        "dashboard": "Tableau de Bord",
        "logout": "Déconnexion",
        "language": "Langue",
        "contact": "Contact",
        "sign_out_mobile": "Déconnexion"
    },
    "auth": {
        "errors": {
            "password_mismatch": "Les deux mots de passe ne correspondent pas.",
            "incorrect_password": "Mot de passe incorrect.",
            "email_not_found": "E-mail non enregistré, veuillez créer un compte.",
            "email_exists": "Cet e-mail est déjà enregistré.",
            "email_already_verified": "E-mail déjà vérifié.",
            "code_expired": "Code expiré, veuillez en demander un nouveau.",
            "incorrect_code": "Code incorrect."
        },
        "login": {
            "seo_title": "Connexion",
            "seo_description": "Connectez-vous à votre compte BotChain.",
            "title": "Bon retour parmi nous",
            "subtitle": "Là où les Traders et les Bots convergent",
            "email_label": "Adresse e-mail",
            "email_placeholder": "nom@exemple.com",
            "password_label": "Mot de passe",
            "password_placeholder": "••••••••",
            "forgot_password": "Mot de passe oublié ?",
            "submit_button": "Se connecter",
            "no_account": "Vous n'avez pas de compte ?",
            "create_account": "En créer un"
        },
        "forgot_password": {
            "seo_title": "Mot de passe oublié",
            "seo_description": "Récupérez le mot de passe de votre compte BotChain.",
            "title": "Récupérer le mot de passe",
            "subtitle": "Entrez votre e-mail pour recevoir un nouveau mot de passe",
            "email_label": "Adresse e-mail",
            "email_placeholder": "nom@exemple.com",
            "submit_button": "Récupérer",
            "success_message": "Le mot de passe de récupération a été envoyé par e-mail. Veuillez vérifier votre boîte de réception.",
            "back_to_login": "Retour à la connexion"
        },
        "register": {
            "seo_title": "Créer un compte",
            "seo_desc": "Créez un compte BotChain pour déployer des bots de trading crypto.",
            "title": "Créer un compte",
            "subtitle": "Commencez à automatiser votre trading de cryptomonnaies",
            "name_label": "Nom complet",
            "name_placeholder": "Jean Dupont",
            "email_label": "Adresse e-mail",
            "email_placeholder": "nom@exemple.com",
            "password_label": "Mot de passe",
            "password_placeholder": "••••••••",
            "confirm_password_label": "Confirmer le mot de passe",
            "agree_disclaimer": "En créant un compte, j'accepte les <terms>Conditions d'utilisation</terms> et la <privacy>Politique de confidentialité</privacy>.",
            "submit_button": "Créer un compte",
            "already_have_account": "Vous avez déjà un compte ?",
            "sign_in": "Se connecter"
        },
        "verification": {
            "seo_title_required": "Authentification requise",
            "seo_desc_required": "Connectez-vous pour vérifier votre compte BotChain.",
            "title_required": "Authentification requise",
            "return_to_login": "Retour à la connexion",
            "seo_title_verify": "Vérifier l'e-mail",
            "seo_desc_verify": "Vérifiez votre adresse e-mail pour accéder à BotChain.",
            "title_check_inbox": "Vérifiez votre boîte de réception",
            "subtitle_sent_code": "Nous avons envoyé un code de vérification à <email>{{email}}</email>",
            "code_label": "Code de vérification",
            "code_placeholder": "123456",
            "submit_button": "Vérifier l'e-mail",
            "no_code": "Vous n'avez pas reçu le code ?",
            "resending": "Envoi en cours...",
            "resend_cta": "Cliquez pour renvoyer",
            "session_expired": "Session expirée. Veuillez vous reconnecter.",
            "success": "E-mail vérifié avec succès !",
            "code_sent": "Code de vérification envoyé à votre adresse e-mail."
        }
    },
    "exchange": {
        "connected": "Plateforme connectée",
        "not_linked": "Plateforme non liée"
    },
    "dashboard": {
        "overview": {
            "title": "Cockpit Live",
            "description": "Centre de commande opérationnel en temps réel. Surveillance de <countSpan>{{count}} bots actifs</countSpan> et de l'exposition actuelle au marché.",
            "server_time": "Heure Serveur",
            "utc": "UTC",
            "launch_bot": "Lancer un Bot",
            "metrics": {
                "active_sessions": "Sessions Actives",
                "open_trades": "{{count}} Trades Ouverts",
                "realized_profit": "Profit Réalisé",
                "fees": "Frais : {{amount}}",
                "todays_result": "Résultat du jour",
                "performance_24h": "Performance 24h",
                "unrealized_pl": "P/L Latent",
                "open_positions": "Positions ouvertes"
            },
            "widgets": {
                "portfolio_exposure": {
                    "title": "Exposition Live",
                    "invested_principal": "Principal Investi",
                    "invested_principal_formula": "Total des fonds engagés",
                    "net_equity": "Valeur Nette",
                    "net_equity_formula": "Principal + P/L Latent",
                    "unrealized_pl": "P/L Latent",
                    "deployed": "{{pct}}% Déployé",
                    "total_available": "Total Disponible",
                    "assets_allocation": "Allocation des Actifs",
                    "allocation_label": "Allocation",
                    "no_data": "Aucune donnée d'allocation",
                    "exposure_label": "Exposition",
                    "assets_count_one": "{{count}} Actif",
                    "assets_count_other": "{{count}} Actifs",
                    "assets_count": "Assets Count"
                },
                "tax_summary": {
                    "title": "Rapport Fiscal",
                    "loading": "Chargement des données {{year}}...",
                    "no_data": "Aucune donnée disponible",
                    "realized_profit": "Profit Réalisé",
                    "trades_summary": "Sur {{sellCount}} transactions de vente terminées • {{totalCount}} ordres au total",
                    "exchange_fees": "Frais de Plateforme",
                    "fees_desc": "Total des commissions exchange payées en {{year}}",
                    "tax_report_title": "Résumé Fiscal",
                    "net_taxable_profit": "Profit Net Imposable",
                    "net_taxable_desc": "Profit Réalisé − Frais",
                    "total_pl": "P/L Total",
                    "total_pl_desc": "Réalisé + Latent − Frais",
                    "unrealized_breakdown": "↳ Latent (Positions Ouvertes)",
                    "total_volume": "Volume Total",
                    "prev_year": "Année précédente",
                    "next_year": "Année suivante"
                },
                "system_health": {
                    "title": "Notifications Système",
                    "types": {
                        "error": "Erreur",
                        "warning": "Avertissement",
                        "mismatch": "Incohérence de données",
                        "log": "Journal Sécurité",
                        "optimizer": "Mise à jour de l'optimiseur",
                        "optimizer_active": "Stratégie mise à jour",
                        "optimizer_waiting": "Optimiseur en attente sécurisée",
                        "optimizer_attention": "L'optimiseur requiert votre attention"
                    },
                    "archive": {
                        "title": "Archiver la notification",
                        "subtitle": "Retirer de la visibilité du tableau de bord",
                        "message": "Êtes-vous sûr de vouloir archiver ce(tte) {{type}} pour {{bot}} ? Cette action est permanente et utile pour garder votre cockpit propre une fois la situation comprise.",
                        "confirm_btn": "Archiver",
                        "hint": "Cliquez sur une notification pour l'archiver.",
                        "success": "Notification pour {{bot}} archivée avec succès.",
                        "all_cleared": "Toutes les notifications ont été effacées avec succès."
                    },
                    "review_optimizer": "Examiner ce déploiement de l'optimiseur",
                    "archive_notice": "Archiver la notification pour {{bot}}",
                    "clear_all": "Tout effacer"
                },
                "live_feed": {
                    "title": "Flux en Direct",
                    "latest_trades": "Derniers Trades",
                    "no_activity": "Aucune activité récente",
                    "empty_desc": "Les trades apparaîtront ici lors de leur exécution"
                }
            }
        },
        "alerts": {
            "no_alerts": "Systèmes OK",
            "no_alerts_desc": "Aucune notification active ou alerte système pour le moment.",
            "qty_mismatch": "Écart de quantité détecté entre le Bot et l'Exchange",
            "security_login": "Connexion détectée depuis {{location}} ({{ip}})",
            "security_password_update": "Mise à jour du mot de passe détectée depuis {{location}} ({{ip}})"
        },
        "session": {
            "index": "Session #{{index}}",
            "status": {
                "live": "Live",
                "open": "OUVERT"
            },
            "summary": {
                "started": "Lancée",
                "closed": "Fermée"
            },
            "metrics": {
                "volume": "Volume",
                "volume_short": "Vol",
                "trades": "Trades",
                "floating": "Flottant",
                "profit": "Profit",
                "profit_short": "PnL",
                "floating_pl": "PnL Latent",
                "realized_profit": "PnL Réalisé"
            },
            "details": {
                "quantity_label": "Quantité",
                "fees_label": "Frais de Plateforme",
                "empty": "Aucun trade exécuté dans cette session."
            },
            "strategy": {
                "cover": "Cover {{index}}",
                "session": "Session"
            },
            "export": {
                "csv": "CSV",
                "pdf": "PDF",
                "pdf_report_title": "Rapport Session de Trading #{{index}}",
                "pdf_bot_asset": "Actif du Bot",
                "pdf_generated": "Généré le",
                "pdf_profit": "Profit Session",
                "pdf_volume": "Volume Total"
            },
            "table": {
                "cols": {
                    "id": "ID",
                    "side": "Type",
                    "date_time": "Date & Heure",
                    "price": "Prix",
                    "qty": "Qté",
                    "amount": "Montant",
                    "profit": "Profit",
                    "info": "Infos",
                    "trade_info": "Info Trade",
                    "fee_label": "Frais",
                    "time": "Heure",
                    "trade": "Trade",
                    "profit_short": "PnL"
                },
                "tooltips": {
                    "platform_fee": "Frais de plateforme",
                    "gross_profit": "Brut : {{amount}}"
                }
            }
        },
        "risk": {
            "title": "Analyse du Risque",
            "level": "Risque : {{level}}",
            "emergency_stop": {
                "section_label": "Contrôles d'Urgence",
                "title": "Arrêt d'Urgence",
                "desc": "Désactive immédiatement tous les bots en cours et vend toutes les positions actives au prix du marché. Vous ne pourrez pas récupérer les positions une fois vendues.",
                "button": "ACTIVER L'ARRÊT D'URGENCE",
                "confirm": "ÊTES-VOUS SÛR ? TOUS LES BOTS SERONT ARRÊTÉS ET LES POSITIONS OUVERTES VENDUES.",
                "confirm_btn": "Confirmer l'Arrêt d'Urgence (Tout Vendre)",
                "success": "Arrêt d'urgence déclenché avec succès",
                "modal_title": "Paramètres de l'Arrêt d'Urgence",
                "modal_subtitle": "{{count}} bots actifs seront arrêtés",
                "warning_sell_title": "Tout Vendre (Positions Ouvertes)",
                "warning_sell_desc": "Cette action mettra en pause tous les bots actifs immédiatement et vendra toutes les positions ouvertes au prix du marché. Vous ne pourrez pas récupérer les positions une fois vendues.",
                "loading_positions": "Chargement des détails des positions...",
                "aggregated_position": "Positions Agrégées",
                "sell_subtitle": "Réaliser <diffSpan>{{diff}}</diffSpan> {{type}}",
                "warning_sell_single_desc": "This action will pause this specific bot immediately and sell all its open positions at market price. You cannot retrieve the positions once sold."
            },
            "metrics": {
                "unrealized_pl": "P/L Latent",
                "total_pl": "P/L Total",
                "avg_hold_time": "Temps de détention moyen",
                "avg_profit_trade": "Profit moyen / Trade",
                "best_trade": "Meilleur Trade",
                "active_capital": "Capital Actif",
                "bot_concentration": "Concentration par Bot",
                "grid_depth": "Profondeur de Grille (Active)",
                "reserved_capital": "Capital Réservé (Risque futur)",
                "distance_next_cover": "Distance Prochain Achat"
            },
            "explanations": {
                "unrealized_pl": {
                    "title": "P/L Latent",
                    "text": "Profit ou perte en temps réel sur les positions ouvertes. Calculé à partir des prix actuels du marché par rapport au prix d'entrée moyen de chaque bot actif."
                },
                "total_pl": {
                    "title": "P/L Total",
                    "text": "Profits réalisés (issus des ventes clôturées) + P/L Latent (valeur des positions en direct) - Frais de plateforme. Représente la performance réelle de votre compte à cet instant."
                },
                "avg_hold_time": {
                    "title": "Temps de Détention Moyen",
                    "text": "Durée moyenne entre l'exécution d'un ordre d'achat et la vente correspondante. Mesuré sur les achats clôturés. Un temps court = meilleure rotation du capital."
                },
                "avg_profit_trade": {
                    "title": "Profit moyen / Trade",
                    "text": "Profit moyen par transaction de vente complétée. Calculé à partir de toutes les ventes clôturées. Représente l'efficacité de la stratégie de grille."
                },
                "active_capital": {
                    "title": "Capital Actif",
                    "text": "Pourcentage du capital total alloué actuellement déployé dans des positions ouvertes. En stratégie grid/DCA, des valeurs élevées indiquent une baisse importante du marché avec de nombreuses couvertures remplies - un signal de risque, pas d'efficacité."
                },
                "best_trade": {
                    "title": "Meilleur Trade",
                    "text": "Plus haut profit réalisé en une seule vente. Représente la performance de pointe de votre stratégie."
                },
                "concentration": {
                    "title": "Concentration par Bot",
                    "text": "Part du capital total alloué engagée dans le bot le plus important. Une forte concentration signifie que le risque de votre portefeuille est fortement lié à un seul actif."
                },
                "grid_depth": {
                    "title": "Profondeur de Grille",
                    "text": "Pourcentage moyen de covers remplies sur les bots actifs. Ne compte que les ordres d'achat ouverts distincts avec un index de cover valide. Une profondeur élevée = le marché a chuté de manière significative."
                },
                "reserved_capital": {
                    "title": "Capital Réservé",
                    "text": "Capital réservé pour les covers de grille non exécutées. Indique combien de capital supplémentaire serait déployé si le marché continue de baisser. Un pourcentage supérieur à 100 % signifie que vous devrez déployer plus de capital que ce que vous avez initialement alloué."
                },
                "cover_gap": {
                    "title": "Distance Prochaine Cover",
                    "text": "Pourcentage moyen nécessaire pour atteindre la prochaine cover non exécutée sur les bots actifs. Il s'agit de la baisse (%) définie par la stratégie nécessaire pour déclencher le prochain achat."
                }
            },
            "helpers": {
                "based_on_sells": "Basé sur {{count}} ventes",
                "no_completed_trades": "Pas encore de trades terminés",
                "deep_market_exposure": "Forte exposition au marché",
                "moderate_exposure": "Exposition modérée",
                "healthy_reserve": "Réserve saine",
                "in_largest_bot": "{{pct}} dans le bot principal",
                "covers_triggered": "{{pct}} covers déclenchées",
                "lightly_invested": "Faiblement investi",
                "moderately_deep": "Moyennement profond",
                "heavily_invested": "Fortement investi",
                "reserved_for_covers": "{{pct}} réservé pour les covers non exécutées",
                "covers_remaining": "{{count}} covers restantes",
                "drop_to_trigger": "{{pct}} de baisse pour déclencher",
                "no_active_positions": "Aucune position active",
                "next_buy_close": "⚠ Le prochain achat est très proche",
                "strategy_defined_drop": "Baisse en % définie par la stratégie pour déclencher le prochain achat"
            },
            "warning": "AVERTISSEMENT : Le trading de crypto-actifs comporte un haut niveau de risque et peut entraîner la perte de votre capital investi. Les performances passées ne préjugent pas des résultats futurs. Assurez-vous de bien comprendre les risques avant de trader."
        },
        "prognosis": {
            "index_title": "Indice Fear & Greed",
            "unable_to_load": "Impossible de charger l'indice Fear & Greed",
            "live_data": "Données Live",
            "updated": "Mis à jour : {{time}}",
            "what_is_it": {
                "title": "Qu'est-ce que l'indice Fear & Greed ?",
                "text_1": "L'indice Fear & Greed analyse les émotions et les sentiments provenant de différentes sources pour produire un score compris entre <fear>0 (Peur Extrême)</fear> et <greed>100 (Avidité Extrême)</greed>.",
                "text_2": "Des valeurs basses indiquent de la peur (opportunité d'achat potentielle), tandis que des valeurs élevées indiquent de l'avidité (zone de prudence). L'indice prend en compte la volatilité, le momentum, les réseaux sociaux, la dominance du Bitcoin et les tendances Google."
            },
            "sentiments": {
                "extreme_fear": "Peur Extrême",
                "fear": "Peur",
                "neutral": "Neutre",
                "greed": "Avidité",
                "extreme_greed": "Avidité Extrême"
            }
        },
        "bots": {
            "bot_card": {
                "running": "En cours",
                "paused": "En pause",
                "warning": "Avertissement",
                "error": "Erreur",
                "delete": "Supprimer le Bot",
                "view_details": "Voir Détails",
                "pause_bot": "Mettre en pause",
                "start_bot": "Démarrer le bot",
                "funds": "Fonds",
                "balance": "Solde",
                "quantity": "Quantité",
                "avg_price": "Prix Moyen",
                "avg_price_original": "Prix d'Origine",
                "avg_price_reduced": "Prix Réduit",
                "total_profit": "Profit Total",
                "created_at": "Créé le {{date}}",
                "compound": "Composé",
                "reinvesting_profits": "Réinvestissement des profits",
                "profits_isolated": "Profits isolés",
                "profit_reinjected": "Profits réinjectés",
                "archived": "Archived"
            },
            "delete_modal": {
                "title": "Supprimer le Bot",
                "warning_permanent": "Cette action est permanente",
                "warning_desc": "Ce bot sera <archived>archivé</archived> et <cannotRestore>ne pourra plus être restauré ou réactivé</cannotRestore>. Les bots archivés restent visibles uniquement pour consultation historique.",
                "loading_positions": "Chargement des données de position…",
                "current_position": "Position Actuelle",
                "quantity_held": "Quantité détenue",
                "none": "Aucune",
                "invested_amount": "Montant Investi",
                "open_trades": "Trades Ouverts",
                "avg_entry_price": "Prix d'Entrée Moyen",
                "pending_profit": "Profit latent si vendu maintenant",
                "pending_loss": "Perte latente si vendu maintenant",
                "what_happens_next": "Ce qui va se passer",
                "step_1": "Le bot sera <deactivated>immédiatement désactivé</deactivated> et cessera de trader.",
                "step_2": "Tout l'historique des transactions et les données de session sont <preserved>conservés de manière permanente</preserved> pour consultation.",
                "step_3": "Le bot archivé <cannotRestore>ne pourra pas être restauré ou réactivé</cannotRestore>.",
                "delete_sell_title": "Supprimer et tout vendre",
                "delete_sell_subtitle": "Vente au marché {{qty}} {{currency}} • <diffSpan>{{diff}}</diffSpan> {{type}} estimé",
                "profit": "profit",
                "loss": "perte",
                "delete_no_sell_title": "Supprimer sans vendre",
                "delete_no_sell_subtitle": "Conserver {{qty}} {{currency}} sur votre portefeuille exchange",
                "tax_disclaimer": "Ce bot ne sera plus suivi. Le profit/perte latent actuel sera figé et utilisé pour le rapport fiscal, même si sa valeur varie ultérieurement sur l'exchange. Cela limite le suivi de BotChain aux seules monnaies gérées activement.",
                "no_positions_desc": "Aucune position ouverte - archiver ce bot directement",
                "cancel_keep": "Annuler - Garder le bot actif"
            },
            "details": {
                "close_price": "Prix de clôture",
                "bot_buys": "Achats Bot",
                "bot_sells": "Ventes Bot",
                "avg_price": "AVG",
                "actions_paused_desc": "Les cibles apparaissent lorsque le bot a des positions ouvertes",
                "bot_not_running": "Le bot ne tourne pas",
                "waiting_for_position": "En attente d'une position ouverte",
                "created": "Créé le {{date}}",
                "loading": "Chargement des détails du bot...",
                "not_found": "Bot non trouvé",
                "running": "En cours",
                "paused": "En pause",
                "configuration": "Configuration",
                "pause_bot": "Mettre en pause",
                "start_bot": "Démarrer le bot",
                "sell_all": "Tout vendre",
                "total_profit": "Profit Total",
                "invested": "Investi",
                "sessions": "Sessions",
                "uptime": "Uptime",
                "capital": "Capital",
                "break_even": "Prix Moyens",
                "active_entry": "Prix Actif",
                "scalp_reduction": "Réduction Scalp",
                "live_tracking": "Suivi en Direct",
                "break_even_info": "Le prix moyen est le point mort de la session (ni profit ni perte).",
                "price_saved": "Valeur Sauvée",
                "available": "Disponible",
                "in_positions": "En positions",
                "next_actions": "Prochaines actions du Bot",
                "session_sell": "TP Session",
                "scalp_sell": "TP Scalp",
                "no_active_positions": "Aucune position active",
                "since_creation": "Depuis création",
                "no_profit_data": "Pas encore de données de profit",
                "no_profit_desc": "Effectuez des trades pour voir vos performances",
                "recent_activity": "Activité Récente",
                "no_recent_activity": "Aucune activité récente",
                "trades_appear_here": "Les trades apparaîtront ici",
                "status_success": "Bot {{status}} avec succès",
                "started": "démarré",
                "paused_msg": "en pause",
                "status_error": "Échec de la mise à jour du statut du bot",
                "sell_all_success_msg": "Vente totale initiée avec succès. Arrêt du bot...",
                "sell_all_error": "Échec de l'initiation de la vente totale",
                "market_chart": "Graphique des Trades",
                "fetching_data": "Synchronisation des données exchange...",
                "no_chart_data": "Aucune donnée de marché trouvée",
                "try_diff_dates": "Essayez d'élargir la période ou de changer l'échelle de temps.",
                "reset_7_days": "Réinitialiser aux 7 derniers jours",
                "invalid_dates": "La date de début doit être antérieure à la date de fin",
                "chart_fetch_error": "Échec du chargement des données du graphique",
                "autonomous_grid": "Grille Autonome",
                "buy_order": "ORDRE ACHAT",
                "sell_order": "ORDRE VENTE",
                "price": "Prix",
                "quantity": "Quantité",
                "cover": "Cover",
                "profit": "Profit",
                "market_price": "Prix du Marché",
                "history": {
                    "title": "Historique de Trading",
                    "title_combined": "Historique de Trading",
                    "desc_combined": "Aperçu historique des exécutions récentes et des sessions de trading.",
                    "desc": "Détails des sessions du bot",
                    "error": "Impossible de charger l'historique de trading.",
                    "no_history": "Aucun historique",
                    "no_history_desc": "Aucun historique de trading disponible pour le moment."
                },
                "capital_deployed": "{{percent}} déployé",
                "all_time_profit": "Bénéfice net réalisé cumulé",
                "equity": "Valeur nette en direct",
                "capital_deployment": "Déploiement du capital",
                "available_cash": "Trésorerie disponible",
                "cumulative_curve": "Courbe de profit cumulé",
                "current_position": "Position Actuelle",
                "open_trades_count": "{{count}} positions ouvertes",
                "distance_to_target": "Distance du seuil de rentabilité",
                "trading_activity_desc": "Ordres exécutés pour ce bot",
                "session_state": "État de la session",
                "session_mode": "Mode {{mode}}",
                "action_distance_desc": "Distance par rapport au prix actuel",
                "next_buy_helper": "Prochain achat",
                "session_target": "Session complète",
                "scalp_target": "Independent scalp",
                "pullback_awaited": "Attente du pullback",
                "retracement_awaited": "Attente du retracement",
                "sell_only_helper": "Achats désactivés",
                "no_next_cover": "Plafond d'achats atteint",
                "risk_guard": {
                    "title": "Protection anti-crash",
                    "buying_paused": "Achats en pause — protection anti-crash active",
                    "crash_detected_shadow": "Crash détecté — mode surveillance",
                    "crash_detected_off": "Crash détecté — protection désactivée",
                    "desc_on": "Met en pause les nouveaux ordres d'achat pendant les crashs éclair. Les ventes et prises de profit continuent toujours. Les achats reprennent automatiquement quand le marché se stabilise.",
                    "desc_off": "Désactivée — le bot continue d'acheter pendant les crashs, exactement comme configuré.",
                    "trip_details": "{{symbol}} a chuté de {{drop}}% en {{minutes}} min (seuil de sécurité : {{threshold}}%).",
                    "explain_blocked": "Les nouveaux achats de la grille (covers) sont suspendus, même quand leur baisse cible est atteinte. Les ordres de vente et de prise de profit continuent normalement.",
                    "explain_resume": "Les achats reprennent automatiquement dès que le marché reste calme (~{{minutes}} min).",
                    "explain_shadow": "Le crash a été détecté mais aucun ordre n'est bloqué : la protection se calibre en mode surveillance. Le bot trade exactement comme configuré.",
                    "explain_disabled": "La protection est désactivée pour ce bot : il continue d'acheter dans la baisse, exactement comme configuré.",
                    "state_on": "Protégé",
                    "state_off": "Non protégé",
                    "paused": "En pause",
                    "paused_helper": "Protection anti-crash — reprise automatique",
                    "toggle_on_success": "Protection anti-crash activée",
                    "toggle_off_success": "Protection anti-crash désactivée — le bot achètera pendant les crashs",
                    "toggle_error": "Échec de la mise à jour de la protection anti-crash"
                },
                "optimizer_fetch_error": "Échec du chargement des données de l'optimiseur",
                "win_rate": "Taux de réussite",
                "high": "Haut",
                "low": "Bas",
                "buys": "Achats",
                "sells": "Ventes",
                "grid": "Grille",
                "avg": "Moyenne",
                "drag_to_scale": "Glisser pour zoomer / Double-cliquer pour réinitialiser",
                "drag_to_pan": "Glisser pour déplacer le graphique verticalement",
                "execution_inspector": "Inspecteur d'exécution",
                "latest_trade": "Dernier trade",
                "no_execution_selected": "Aucune exécution sélectionnée",
                "select_marker": "Sélectionnez un marqueur d'achat ou de vente pour inspecter le trade.",
                "cover_grid": "Grille de couvertures",
                "range_context": "Contexte de la période",
                "provider": "Fournisseur",
                "interval": "Intervalle",
                "candles": "Bougies",
                "visible_fills": "Trades visibles",
                "data_start": "Début des données",
                "data_end": "Fin des données",
                "market": "Marché",
                "range": "Période",
                "close": "Fermer",
                "reset_view": "Réinitialiser la vue",
                "update": "Mettre à jour",
                "fills": "Exécutions",
                "realized_pl": "P&L réalisé",
                "trade_volume": "Volume de trade",
                "no_grid_data": "Aucune donnée de grille",
                "archived": "Archived",
                "avg_reduced": "AVG Reduced",
                "change": "Change",
                "chart_fetch_error_copy": "The market data provider did not return data for this selection.",
                "chart_fetch_error_title": "Chart unavailable",
                "market_candle": "MARKET CANDLE",
                "market_ohlc": "Market OHLC",
                "optimizer_action_error": "Failed to apply recommendation",
                "optimizer_manual_only_warning": "Recommendations are available for manual review, but none currently qualify for automatic deployment.",
                "optimizer_no_run_warning": "No recent successful optimization run was found. Run a fresh study before relying on these parameters.",
                "optimizer_run_error": "Failed to start optimization run",
                "optimizer_stale_days_warning": "Optimizer Stale Days Warning",
                "optimizer_stale_warning_title": "Optimizer output may be stale",
                "quantity_mismatch": "Quantity mismatch",
                "readonly_history": "Read-only history",
                "selected_buy": "Selected buy",
                "selected_sell": "Selected sell",
                "selected_trade": "Selected Trade",
                "session": "Session",
                "session_sell_order": "SESSION SELL",
                "type": "Type",
                "volume": "Volume",
                "optimizer_rate_limited": "Limite de requêtes d'optimisation atteinte. Veuillez patienter avant de faire une nouvelle demande.",
                "back_to_bots": "Retour aux bots",
                "try_again": "Réessayer",
                "load_failed": "Les détails du bot sont indisponibles",
                "load_failed_desc": "Le dernier état du bot n'a pas pu être chargé. Vérifiez la connexion et réessayez.",
                "status_error_label": "Erreur",
                "status_protected_pause": "Achats protégés",
                "status_attention": "Attention requise",
                "updating_status": "Mise à jour…",
                "archived_desc": "Ce bot est archivé. Les données de suivi sont conservées, mais les commandes opérationnelles sont indisponibles.",
                "execution_error": "L'exécution du bot nécessite votre attention",
                "execution_error_desc": "Le bot a signalé une erreur d'exécution. Vérifiez sa configuration et la connexion à l'exchange avant de le redémarrer.",
                "quantity_mismatch_desc": "BotChain et l'exchange indiquent des quantités de position différentes. Évitez les ordres manuels jusqu'à la réconciliation.",
                "bot_warning": "Avertissement du bot",
                "bot_warning_desc": "Certaines opérations peuvent être retardées. Consultez l'activité récente et la connexion à l'exchange.",
                "refresh_delayed": "Actualisation en direct retardée",
                "refresh_delayed_desc": "Le dernier état confirmé reste affiché pendant la reconnexion de BotChain.",
                "exchange_data_partial": "Données de position indisponibles",
                "exchange_data_partial_desc": "Les données principales sont disponibles, mais le P&L en direct peut être incomplet.",
                "attention": "Attention",
                "last_update": "Mis à jour à {{time}}",
                "performance": "Performance",
                "performance_since_start": "Performance du capital depuis le lancement",
                "allocated_capital": "Alloué",
                "estimated_value": "Valeur estimée du bot",
                "performance_chart_accessible": "Graphique du profit réalisé cumulé",
                "buy_sell_split": "Achats / ventes",
                "position_open": "Position ouverte",
                "scanning_market": "Analyse du marché",
                "session_paused": "Session en pause",
                "session_number": "Session {{number}}",
                "current_session": "Session actuelle",
                "live": "En direct",
                "next_cover": "Prochain cover",
                "average_entry": "Prix d'entrée moyen",
                "position_size": "Taille de position",
                "scalp_available": "Cible scalp également active",
                "next_scalp_trigger": "Scalp TP : {{price}}",
                "next_scalp_pct": "Scalp TP : {{pct}}",
                "scalp_tp_distance": "Scalp TP : {{pct}}",
                "target_price": "Cible : {{price}}",
                "price_range": "Fourchette de prix de la session",
                "to_target": "vers l'objectif",
                "tooltip_unrealized_pl": "Gain ou perte latente sur les positions ouvertes selon le prix du marché.",
                "tooltip_today_profit": "Profit net réalisé généré par les transactions clôturées aujourd'hui.",
                "tooltip_allocated_capital": "Capital total alloué à ce bot pour sa stratégie DCA et de scalp.",
                "tooltip_estimated_value": "Valeur totale estimée du bot combinant solde disponible et valeur des positions.",
                "tooltip_position_size": "Quantité totale d'actif de base actuellement détenue dans cette session.",
                "tooltip_in_positions": "Valeur marchande actuelle de l'actif détenu dans les ordres ouverts de la session.",
                "tooltip_distance_from_breakeven": "Variation de prix requise en pourcentage pour atteindre le prix d'entrée moyen.",
                "tooltip_current_cover": "Niveau de cover DCA le plus élevé atteint dans la session active.",
                "tooltip_total_trades": "Nombre cumulé d'ordres d'achat et de vente exécutés depuis le lancement.",
                "tooltip_buy_sell_split": "Répartition entre ordres d'achat exécutés et ordres de vente exécutés.",
                "cover_number": "Cover C{{number}}",
                "running_strategy": "Stratégie active",
                "strategy_grid_title": "Stratégie & cibles d'exécution",
                "strategy_grid_desc": "Objectifs de gain automatisés, pullbacks suiveurs et grille de sécurité régissant les ordres en direct.",
                "edit_strategy_action": "Modifier la stratégie",
                "pillar_session_dca": "DCA de session",
                "pillar_session_dca_desc": "Sortie globale de position",
                "pillar_scalp_engine": "Moteur de scalp",
                "pillar_scalp_engine_desc": "Gains sur oscillations",
                "pillar_order_allocation": "Allocation d'ordres",
                "pillar_order_allocation_desc": "Répartition du capital",
                "tooltip_session_tp": "Hausse requise au-dessus du prix d'entrée moyen pour déclencher la prise de profit globale.",
                "tooltip_session_retracement": "Pullback suiveur depuis le point haut requis pour exécuter la vente finale de prise de profit.",
                "tooltip_scalp_tp": "Objectif de gain requis pour clôturer les ordres de scalping individuels lors des rebonds.",
                "tooltip_scalp_retracement": "Pullback suiveur requis pour sécuriser les profits des ordres de scalping.",
                "tooltip_initial_order": "Pourcentage du capital de session alloué à l'ordre d'entrée initial.",
                "tooltip_grid_capacity": "Capital total et nombre de paliers configurés réservés aux ordres de sécurité DCA.",
                "tooltip_compounding_active": "Les bénéfices sont automatiquement réinvestis dans le capital pour les sessions suivantes.",
                "tooltip_compounding_isolated": "Les bénéfices restent isolés et ne sont pas réinvestis dans de nouvelles sessions.",
                "tooltip_session_mode_cycle": "Mode continu : démarre automatiquement une nouvelle session après chaque clôture.",
                "tooltip_session_mode_single": "Session unique : met le bot en pause une fois la session terminée.",
                "cover_triggered": "Déclenché",
                "cover_current": "Actuel",
                "cover_next": "Suivant",
                "cover_queued": "En attente",
                "cover_levels": "{{count}} niveaux",
                "cover_reached": "{{count}} atteints",
                "cover_up_next": "C{{number}} ensuite",
                "drop": "Baisse du prix",
                "order_size": "Taille de l'ordre",
                "pullback": "Pullback",
                "behavior": "Comportement",
                "keep_profit": "Conserver {{percent}} % du profit",
                "show_relevant_covers": "Afficher les niveaux pertinents",
                "show_all_covers": "Afficher les {{count}} niveaux",
                "session_tp": "Cible DCA",
                "session_retracement": "Retracement DCA",
                "scalp_tp": "Cible scalp",
                "scalp_retracement": "Retracement scalp",
                "initial_allocation": "Ordre initial",
                "grid_allocation": "Capacité des covers",
                "take_profit": "Prise de profit",
                "optimizer_automatic": "Automatique",
                "optimizer_observe": "Observation",
                "optimizer_manual": "Manuel",
                "optimizer_eyebrow": "Intelligence de stratégie",
                "optimizer_title": "Recommandations de l'optimiseur",
                "optimizer_desc": "Comparez la stratégie active aux recommandations générées par IA lorsque vous en avez besoin.",
                "activity_eyebrow": "Journal d'audit",
                "trade_count_short": "{{count}} trades",
                "distance_from_breakeven": "Prix Neutre",
                "all_bots": "Bots",
                "covers": "Covers",
                "collapse_grid": "Réduire la grille de covers",
                "edit_basics": "Modifier les paramètres de base",
                "edit_strategy_covers": "Modifier la stratégie et les covers",
                "expand_grid": "Développer la grille de covers",
                "active": "actif"
            },
            "title": "Mes Bots",
            "description": "Gérez et surveillez vos stratégies automatisées.",
            "resume_all": "Tout reprendre",
            "pause_all": "Tout mettre en pause",
            "deploy_new_bot": "Déployer un nouveau Bot",
            "empty_state": {
                "title": "Aucun bot déployé",
                "desc": "Commencez votre parcours de trading automatisé en créant votre première stratégie de bot.",
                "action": "Créer mon premier bot"
            },
            "bulk_resume_modal": {
                "title": "Reprendre tous les bots ?",
                "message": "Êtes-vous sûr de vouloir reprendre tous les bots en pause ? Le trading commencera immédiatement selon les paramètres de la stratégie."
            },
            "bulk_pause_modal": {
                "title": "Mettre tous les bots en pause ?",
                "message": "Êtes-vous sûr de vouloir mettre en pause tous les bots actifs ? Cela implique l'arrêt immédiat des activités de trading."
            },
            "snackbars": {
                "bot_started": "Bot démarré avec succès",
                "bot_paused": "Bot mis en pause avec succès",
                "bot_update_failed": "Échec de la mise à jour du statut du bot",
                "bulk_action_success": "Tous les bots ont été {{action}} avec succès",
                "bulk_action_no_change": "Aucun changement nécessaire pour les bots.",
                "bulk_action_failed": "Échec de l'action groupée",
                "delete_selling": "Suppression initiée - vente des positions ouvertes et archivage.",
                "delete_success": "Bot archivé avec succès sans vendre les positions.",
                "delete_failed": "Échec de la suppression du bot. Veuillez réessayer.",
                "paused": "mis en pause",
                "resumed": "repris"
            },
            "errors": {
                "no_bot_found": "Aucun bot trouvé.",
                "symbol_not_found": "Le symbole {{symbol}} n'a pas été trouvé sur l'exchange sélectionné.",
                "missing_currency_data": "Données de devise manquantes.",
                "pair_unavailable_exchange": "La paire {{symbol}} n'est pas disponible sur {{provider}}.",
                "pair_restricted_plan": "La paire {{symbol}} est restreinte par votre forfait.",
                "verify_availability_failed": "Impossible de vérifier la disponibilité de la paire.",
                "permission_denied": "Permission refusée : ce bot ne vous appartient pas.",
                "settings_not_found": "Erreur : aucun paramètre trouvé pour le bot {{bot_id}}."
            },
            "messages": {
                "delete_initiated": "Suppression du bot {{bot_id}} initiée. Vente des positions et archivage en cours.",
                "archived_no_sell": "Le bot {{bot_id}} a été archivé sans vendre les positions ouvertes.",
                "sell_all_triggered": "Bot {{bot_id}} arrêté. Processus de vente déclenché."
            },
            "emergency": {
                "errors": {
                    "fetch_failed": "Échec du chargement des informations de panique.",
                    "sell_trigger_failed": "Échec du déclenchement de la vente. Veuillez réessayer.",
                    "activate_failed": "Échec de l'activation de l'arrêt d'urgence."
                },
                "messages": {
                    "activated_one": "Arrêt d'urgence activé. 1 bot a été mis en pause et les ordres de vente ont été initiés.",
                    "activated_other": "Arrêt d'urgence activé. {{count}} bots ont été mis en pause et les ordres de vente ont été initiés."
                }
            },
            "filter_active": "Actifs",
            "filter_archived": "Archivés",
            "migration": {
                "action_btn": "Migrer d'exchange",
                "title": "Migrer vers un autre exchange",
                "currently_on": "actuellement sur {{exchange}}",
                "transfer_first": "Transférez les fonds de ce bot (solde {{stablecoin}} et position {{currency}} ouverte) vers l'exchange cible AVANT la migration. Les vérifications ci-dessous confirment que les fonds sont bien arrivés.",
                "select_target": "Exchange cible",
                "no_targets": "Aucun autre exchange n'est connecté. Ajoutez-en un d'abord dans Paramètres → Exchange.",
                "checks_title": "Vérifications de sécurité",
                "rerun_checks": "Relancer",
                "confirm_btn": "Confirmer la migration",
                "confirm_subtitle": "Le bot reste en pause ; redémarrez-le après la migration",
                "confirm_with_warnings": "Toutes les vérifications bloquantes sont passées — consultez les avertissements ci-dessus",
                "confirm_blocked": "Toutes les vérifications doivent passer avant de migrer",
                "success": "Bot migré. Vérifiez la configuration puis redémarrez-le quand vous êtes prêt.",
                "detail_funds": "{{available}} disponible / {{required}} requis {{asset}}",
                "detail_dust": "{{dust}} restera en poussière invendable sur l'exchange d'origine",
                "detail_unsellable": "{{count}} trade(s) ouvert(s) seraient trop petits pour être vendus sur la cible",
                "detail_min_notional": "{{count}} trade(s) sous la valeur d'ordre minimale de la cible — ils ne se clôtureront que via une vente de session",
                "detail_inflight": "Attendez une minute que les opérations en cours se terminent, puis relancez les vérifications",
                "checks": {
                    "target_distinct": "La cible diffère de l'exchange actuel",
                    "bot_paused": "Le bot est en pause",
                    "no_inflight_activity": "Aucun ordre en cours",
                    "pair_available": "Paire de trading disponible sur la cible",
                    "credentials_valid": "Identifiants API de la cible valides",
                    "stablecoin_funds": "Fonds en stablecoin présents sur la cible",
                    "base_asset_quantity": "Inventaire des positions ouvertes présent sur la cible",
                    "precision_compat": "Trades ouverts compatibles avec la précision de la cible",
                    "min_notional": "Trades individuels au-dessus de la taille d'ordre minimale de la cible"
                },
                "errors": {
                    "load_exchanges": "Impossible de charger vos exchanges connectés",
                    "preflight_error": "Les vérifications de migration n'ont pas pu s'exécuter",
                    "preflight_failed": "Une vérification de sécurité a échoué — la migration n'a pas été effectuée",
                    "migrate_error": "La migration a échoué — rien n'a été modifié"
                }
            }
        },
        "strategies": {
            "tabs": {
                "templates": "Modèles",
                "learn": "Centre d'Apprentissage"
            },
            "title": "Centre de Stratégies",
            "description": "Comprenez la logique derrière les systèmes de trading de BotChain. Choisissez un modèle préconfiguré ou personnalisez votre propre approche.",
            "risk_disclosure": {
                "title": "Avis de Risque Important",
                "desc": "Le trading de crypto-actifs comporte un risque élevé et est volatile. Les performances passées ne garantissent pas les résultats futurs. BotChain fournit une <layer>couche d'exécution automatisée</layer> et n'offre pas de conseils financiers. Vous restez seul responsable de vos décisions d'investissement et de la configuration de vos stratégies. Assurez-vous de comprendre les risques avant de trader."
            },
            "architecture": {
                "title": "Architecture Non-Custodial",
                "subtitle": "Comment BotChain interagit avec vos fonds",
                "zero_withdrawal": {
                    "title": "Aucun Droit de Retrait",
                    "desc": "Vos clés API sont cryptées et strictement limitées à <readOnly>\"Lecture seule\"</readOnly> et <enableSpot>\"Activer le trading Spot et sur marge\"</enableSpot>. BotChain <cannotWithdraw>ne peut pas retirer</cannotWithdraw> vos fonds, sous aucun prétexte."
                },
                "execution_layer": {
                    "title": "Couche d'Exécution Uniquement",
                    "desc": "BotChain agit comme un pont technique, envoyant des ordres d'achat/vente à votre exchange connecté en votre nom selon <rules>vos règles prédéfinies</rules>. Vos actifs restent toujours sur votre portefeuille exchange."
                }
            },
            "resources": {
                "title": "Ressources Éducatives",
                "desc": "Maîtrisez le trading crypto avec la Binance Academy ou apprenez à gérer vos clés API en toute sécurité.",
                "binance_academy": "Binance Academy",
                "api_management": "Gestion API"
            },
            "mechanics": {
                "title": "Mécaniques de Stratégie",
                "dca": {
                    "title": "DCA (Dollar Cost Averaging)",
                    "desc": "Achète stratégiquement plus d'actifs lorsque le prix baisse pour réduire votre <avgEntry>Prix d'Entrée Moyen</avgEntry>. Cette technique transforme la volatilité du marché en opportunité en abaissant le point mort de votre position."
                },
                "scalping": {
                    "title": "Moteur de Scalping",
                    "desc": "Exécute des trades rapides et de petite taille pour capturer le profit des micro-mouvements de prix. Il agit comme un <generator>générateur de revenus continu</generator> pendant que la position principale mûrit."
                },
                "safety_grid": {
                    "title": "Grille de Sécurité",
                    "desc": "Un réseau prédéfini d'ordres de sécurité (\"Covers\") placés sous le prix actuel. À mesure que le marché baisse, ces couvertures sont remplies automatiquement, augmentant la taille de votre position de manière <math>calculée mathématiquement</math>."
                }
            },
            "reinvestment": {
                "title": "Stratégie de Réinvestissement des Profits",
                "subtitle": "Comment le \"Keep Profit\" accélère la clôture de session et l'efficacité du capital",
                "mechanism_title": "Le Mécanisme",
                "mechanism_desc_1": "Chaque cover de votre stratégie possède un paramètre <keepProfit>keep_profit</keepProfit> (0-100%). Il détermine quel pourcentage des profits de scalping générés à ce niveau de cover doit être <reinvested>réinvesti dans la position</reinvested> au lieu d'être verrouillé comme profit réalisé.",
                "mechanism_desc_2": "Lorsque les profits sont réinvestis, ils sont <injected>injectés dans le calcul du prix moyen</injected>, abaissant ainsi votre point mort. Cela permet à la session de sortir avec profit à un <lowerRecovery>prix de récupération plus bas</lowerRecovery>, libérant votre capital plus rapidement.",
                "initial_investment": "Investissement Initial",
                "scalp_profit": "Profit Scalp",
                "reinvested": "Réinvesti",
                "avg_price_impact": "Impact sur Prix Moyen",
                "impact_none": "Aucun",
                "impact_lower": "{{pct}} plus bas",
                "example_without": {
                    "title": "Sans Réinvestissement",
                    "amount": "1 000 $",
                    "profit": "+50 $",
                    "note": "La position doit remonter au prix d'entrée initial pour sortir avec profit",
                    "reinvested": "Reinvested"
                },
                "example_with": {
                    "title": "Avec 80 % de Réinvestissement",
                    "amount": "1 000 $",
                    "profit": "+50 $",
                    "reinvested": "40 $",
                    "note": "La session peut sortir avec profit avec une récupération de prix moindre"
                },
                "strategic_benefits": "Avantages Stratégiques",
                "benefit_1": {
                    "title": "Sorties plus rapides",
                    "desc": "Un point mort plus bas signifie une fin de session plus rapide"
                },
                "benefit_2": {
                    "title": "Efficacité du Capital",
                    "desc": "Libérez vos fonds plus tôt pour de nouvelles opportunités"
                },
                "benefit_3": {
                    "title": "Effet de Capitalisation",
                    "desc": "Chaque scalp rend la prochaine sortie plus facile à atteindre"
                }
            },
            "pro_tip": {
                "title": "Conseil de Pro",
                "desc": "Des valeurs de <keepProfit>keep_profit</keepProfit> élevées (70-100%) sont idéales pour les covers profondes afin d'accélérer la récupération. Des valeurs faibles (0-30%) sur les premières covers préservent plus de profits réalisés tout en permettant un léger réinvestissement.",
                "ui_vs_exchange_title": "Important : Affichage UI vs Réalité Exchange",
                "ui_vs_exchange_desc": "Lorsqu'un trade de scalping est exécuté, <profit>100% du profit est réalisé sur votre compte exchange</profit>. Cependant, l'interface BotChain n'affiche que la portion définie par <keep>keep_profit</keep> comme \"profit réalisé\". Le pourcentage restant est <hidden>caché de l'interface</hidden> car il est automatiquement réinvesti dans le calcul du prix moyen. Il s'agit d'une pure <accounting>distinction comptable</accounting> - votre solde exchange reflète le profit total, mais la logique interne du bot traite une partie comme un réinvestissement de capital pour abaisser votre point mort."
            },
            "session_works": {
                "title": "Comment fonctionne une Session",
                "step_1": {
                    "title": "Début de Session",
                    "desc": "Le bot entre sur le marché avec un premier ordre d'achat (ou plusieurs ordres de scalping) basé sur l'analyse actuelle."
                },
                "step_2": {
                    "title": "Exécution de Cover (si besoin)",
                    "desc": "Si le prix baisse, le bot exécute des \"Covers\" pour moyenner à la baisse. Si le prix monte, il prend ses profits immédiatement."
                },
                "step_3": {
                    "title": "Take Profit & Sortie",
                    "desc": "Une fois que l'objectif de profit (ex: +1.5%) est atteint sur la position totale, le bot vend tout et ferme la session."
                }
            },
            "card": {
                "active": "ACTIF",
                "risk_level": "Niveau de Risque",
                "grid_levels": "Niveaux de Grille",
                "covers_one": "{{count}} Cover",
                "covers_other": "{{count}} Covers",
                "configure_strategy": "Configurer la Stratégie",
                "view_details": "Voir Détails",
                "configure_grid": "Configurer la Grille",
                "covers": "Covers"
            },
            "editor": {
                "details_title": "Détails de la Stratégie",
                "edit_title": "Modifier la Stratégie",
                "read_only": "Lecture seule",
                "details_desc": "Voir la configuration de cette stratégie.",
                "edit_desc": "Personnalisez vos niveaux de grille. Faites glisser pour réordonner.",
                "add_cover": "Ajouter une Cover",
                "summary": "{{count}} covers • Exposition Totale : {{amount}} $",
                "summary_no_amount_one": "{{count}} cover",
                "summary_no_amount_other": "{{count}} covers",
                "close": "Fermer",
                "cancel": "Annuler",
                "save_changes": "Enregistrer",
                "max_covers_error": "Maximum 100 covers autorisées.",
                "table": {
                    "headers": {
                        "type": "Type",
                        "drop": "Baisse %",
                        "multiplier": "Multiplicateur",
                        "amount": "Montant",
                        "pullback": "Pullback",
                        "keep_profit": "Keep Profit"
                    },
                    "tooltips": {
                        "type": "La stratégie de trading comprend deux types distincts de covers : les ordres DCA et les ordres de scalping. Les ordres DCA abaissent le prix d'achat moyen et sont vendus en totalité à la fin de la session, tandis que les ordres de scalping sont gérés individuellement.",
                        "drop": "Initie l'achat de la cover lorsque le prix subit une baisse de -X% par rapport au prix d'achat de la cover précédente. *L'achat est exécuté après détection d'un pullback.",
                        "multiplier": "Achète un montant équivalent à X fois le montant de référence / cover initiale pour cette cover spécifique.",
                        "amount": "Montant en dollars de la cover, c'est-à-dire 'Montant Cover Initiale' x 'Multiplicateur'. *La taille minimale d'un ordre dépend de l'exchange sélectionné.",
                        "pullback": "PULLBACK : Condition d'achat définie par le pourcentage de hausse du prix par rapport au point le plus bas depuis la cover précédente. Évite d'acheter pendant une chute soudaine.",
                        "keep_profit": "SCALPING : Pourcentage de profit pur sécurisé par l'utilisateur. Le reste du profit sera utilisé pour abaisser le prix d'achat moyen de la session. DCA : Tous les profits des ventes sont pour l'utilisateur car la session se termine dans ce cas.",
                        "limit_funds_reached": "Limite de fonds atteinte"
                    },
                    "empty_state": {
                        "title": "Aucune cover définie.",
                        "desc": "Ajoutez une nouvelle cover pour commencer à construire votre grille."
                    },
                    "next_cover_tip": "La cover surlignée indique la prochaine cover qui sera achetée dans la grille.",
                    "min_warning": "Min Warning"
                },
                "summary_no_amount": "Summary No Amount"
            },
            "templates": {
                "conservative": {
                    "name": "Accumulateur Conservateur",
                    "description": "Risque faible, couverture large. Idéal pour l'accumulation à long terme."
                },
                "balanced": {
                    "name": "Grille Équilibrée",
                    "description": "Risque/récompense modéré. Approche équilibrée pour les marchés en range."
                },
                "aggressive": {
                    "name": "Scalper Agressif",
                    "description": "Haute fréquence, grille serrée. Capture les petits mouvements."
                },
                "custom": {
                    "name": "Stratégie Personnalisée",
                    "description": "Votre stratégie personnelle. Covers entièrement personnalisables."
                }
            },
            "errors": {
                "limit_reached": "Nombre maximum de covers atteint (300)."
            },
            "risks": {
                "low": "Faible",
                "medium": "Moyen",
                "high": "Élevé",
                "variable": "Variable"
            }
        },
        "analytics": {
            "title": "Lab d'Intelligence",
            "description": "Analyse historique des performances et métriques d'efficacité à long terme.<br/>Les données affichées ici représentent les <realized>résultats réalisés</realized> et les sessions clôturées.",
            "account_age": "Âge du compte",
            "days": "{{count}} Jours",
            "export_report": "Exporter Rapport",
            "metrics": {
                "cumulative_profit": "Profit Cumulé",
                "total_trades": "Total Trades",
                "total_volume": "Volume Total",
                "monthly_growth": "Croissance Mensuelle",
                "buys": "Achat",
                "sells": "Ventes",
                "net_realized_gains": "Gains nets réalisés (total)",
                "total_traded_volume": "Volume total échangé",
                "avg_capital_growth": "Croissance moyenne du capital"
            },
            "charts": {
                "cumulative_returns": "Retours Cumulés",
                "realized_profit_progression": "Progression du Profit Réalisé",
                "realized_profit": "Profit Réalisé",
                "net": "NET",
                "performance": "Performance {{period}}",
                "daily": "Journalière",
                "weekly": "Hebdomadaire",
                "monthly": "Mensuelle",
                "net_profit": "Profit Net",
                "trades": "Trades",
                "volume": "Volume"
            },
            "ranking": {
                "title": "Classement Performance",
                "subtitle": "{{count}} bots suivis · Données historiques",
                "sort_by": "Trier par :",
                "cols": {
                    "rank": "#",
                    "bot_pair": "Bot / Paire",
                    "profit_roi": "Profit / ROI",
                    "volume_trades": "Volume / Trades",
                    "per_session": "Trades / Session",
                    "avg_trade": "Moy/Trade"
                },
                "stats": {
                    "roi": "ROI {{roi}}%",
                    "trades": "{{count}} trades",
                    "sessions": "{{count}} sessions",
                    "trades_per_session": "{{count}} trades/session",
                    "per_trade": "par trade"
                },
                "empty": {
                    "title": "Aucun Bot pour le moment",
                    "desc": "Créez votre premier bot pour commencer à suivre le classement des performances et comparer les résultats."
                }
            },
            "intelligence": {
                "title": "Intelligence de Session",
                "hint": "Cliquez sur les métriques pour les détails",
                "footer": "Métriques de profit, durée et efficacité calculées sur {{count}} sessions terminées.",
                "metrics": {
                    "avg_profit": "Profit Net Moyen / Session",
                    "avg_duration": "Durée Moyenne",
                    "sessions": "Sessions",
                    "avg_volume": "Volume Moyen",
                    "trades_session": "Trades/Session",
                    "best_session": "Meilleure Session",
                    "capital_eff": "Eff. Capital",
                    "avg_buy_size": "Taille Achat Moy.",
                    "avg_sell_size": "Taille Vente Moy."
                }
            },
            "explanations": {
                "avgProfit": {
                    "title": "Profit Net Moyen",
                    "text": "Profit réalisé moyen par session terminée. Calculé uniquement sur les sessions dont toutes les positions ont été fermées (vente principale exécutée). Les sessions actives sont exclues pour ne pas diluer la moyenne."
                },
                "duration": {
                    "title": "Durée de Session",
                    "text": "Temps moyen entre le premier achat et la vente finale dans les sessions terminées. Ne mesure que les sessions ayant clôturé leur cycle DCA."
                },
                "sessions": {
                    "title": "Total des Sessions",
                    "text": "Nombre total de sessions uniques sur tous les bots (actifs inclus). Reflète l'activité globale de trading et la fréquence d'exécution de la stratégie."
                },
                "avgVolume": {
                    "title": "Volume Moyen",
                    "text": "Volume total moyen (achats + ventes) par session. Reflète la rotation de capital typique lors de chaque cycle DCA."
                },
                "trades": {
                    "title": "Trades par Session",
                    "text": "Nombre moyen d'ordres (achat + vente) exécutés par session. Des comptes plus élevés indiquent une pénétration DCA plus profonde ou plus d'activité de scalping."
                },
                "bestSession": {
                    "title": "Meilleure Session",
                    "text": "Plus haut profit réalisé sur une seule session terminée. Représente la performance maximale atteinte par une session."
                },
                "capitalEfficiency": {
                    "title": "Efficacité du Capital",
                    "text": "Ratio moyen de (profit de session ÷ volume de session × 100) sur les sessions terminées. Mesure l'efficacité avec laquelle le volume échangé est converti en profit."
                },
                "avgBuy": {
                    "title": "Ordre d'Achat Moyen",
                    "text": "Valeur moyenne en dollars des ordres d'achat individuels. Reflète la taille typique des positions pour les entrées en grille."
                },
                "avgSell": {
                    "title": "Ordre de Vente Moyen",
                    "text": "Valeur moyenne en dollars des ordres de vente individuels. La comparaison avec la taille d'achat moyenne révèle les marges de profit et la croissance du capital par cycle."
                }
            },
            "loading": "Chargement de l'intelligence...",
            "error": "Échec du chargement des analyses. Veuillez réessayer.",
            "retry": "Réessayer"
        }
    },
    "landing": {
        "hero": {
            "badge": "Aucune expérience requise",
            "headline_prefix": "Déployez des",
            "headline_highlight": "Bots qui tradent pour vous.",
            "subheadline": "Déployez des bots de grille de niveau institutionnel en quelques secondes. Accumulez des actifs, gérez le risque et sécurisez vos profits automatiquement pendant que vos fonds restent sur votre compte Spot connecté.",
            "cta_start": "Commencer à trader",
            "cta_demo": "Démo de Stratégie",
            "binance_connection": "Connexion directe exchange",
            "trust_security": "Aucun accès aux retraits",
            "chart": {
                "buy": "Achat",
                "sell": "Vente",
                "net_profit": "Profit Net",
                "status": "Statut",
                "active": "Actif"
            }
        },
        "features": {
            "headline_prefix": "Le moteur Botchain.",
            "headline_suffix": "Logique avancée, simplicité totale.",
            "description": "Un système de trading sophistiqué basé sur les principes de grille, conçu pour maximiser l'efficacité et le contrôle. Surveillance réelle du marché via des tableaux de bord professionnels et des analyses conçues pour la confiance, pas pour le buzz.",
            "cards": {
                "grid_engine": {
                    "title": "Moteur de Grille Avancé",
                    "desc": "Stratégie automatisée achat-bas/vente-haut organisée en sessions pour un engagement continu sur le marché."
                },
                "scalping": {
                    "title": "Scalping Hybride",
                    "desc": "Combine le DCA pour l'accumulation avec des ordres de scalping indépendants pour des profits rapides et réguliers."
                },
                "smart_dca": {
                    "title": "Accumulation Intelligente",
                    "desc": "Dollar-Cost Averaging stratégique pour moyenner les prix d'entrée et réduire le risque pendant la volatilité."
                },
                "customization": {
                    "title": "Personnalisation Totale",
                    "desc": "Préréglages intégrés entièrement modifiables pour un contrôle granulaire sur chaque aspect de votre stratégie."
                }
            }
        },
        "security": {
            "title": "Vos fonds. Vos clés. Votre contrôle.",
            "description": "Botchain communique avec votre exchange connecté via des points de terminaison API cryptés. Nous ne demandons jamais de permission de retrait, et vos actifs restent là où ils doivent être : sur votre compte Spot.",
            "description_2": "Botchain fonctionne strictement comme une couche d'exécution, jamais comme dépositaire. Toute l'activité de trading se déroule au sein de votre compte exchange connecté, garantissant transparence, traçabilité et indépendance."
        },
        "cta": {
            "headline_prefix": "Prêt à automatiser votre",
            "headline_highlight": "trading crypto ?",
            "description": "Une plateforme où traders et bots convergent. Aucune carte de crédit requise pour le premier bot.",
            "button": "Lancer mon premier Bot",
            "footer": "Prend moins de 5 minutes • Annulation à tout moment"
        },
        "pricing": {
            "title": "Une tarification juste et transparente.",
            "subtitle": "Pas de frais cachés, pas de surprises.",
            "most_popular": "Le plus populaire",
            "no_fees": "Jamais de frais supplémentaires",
            "per_year": "/an",
            "get_started": "Commencer",
            "all_plans": "Inclus dans tous les forfaits",
            "elevate": {
                "title": "Élevez votre parcours de Trading",
                "text": "Quel que soit votre forfait actuel ou le nouveau que vous choisissez, toute validité restante s'étend sans effort à votre licence mise à niveau. Nous valorisons votre investissement, et chaque moment payé compte pour votre succès."
            },
            "plans": {
                "free": {
                    "name": "Plan Gratuit",
                    "desc": "Lancez votre premier bot maintenant et découvrez la puissance du trading automatisé gratuitement.",
                    "features": [
                        "Lancement de 1 Bot",
                        "Stablecoin : USDC disponible",
                        "Logique de Grille Standard",
                        "Support E-mail (Réponse sous 24h)",
                        "Paires de trading limitées (Plus populaires)"
                    ]
                },
                "advanced": {
                    "name": "Plan Avancé",
                    "desc": "Passez au niveau supérieur avec des fonctionnalités avancées.",
                    "features": [
                        "Lancement de 3 Bots",
                        "Stablecoins : USDC & TUSD",
                        "Paramètres de Grille Personnalisés",
                        "Ligne de Support Directe",
                        "Paires de trading illimitées"
                    ]
                },
                "pro": {
                    "name": "Plan Pro",
                    "desc": "Libérez toute la puissance de notre offre la plus complète.",
                    "features": [
                        "Bots illimités",
                        "Stablecoins : USDC, TUSD, DAI & EURI",
                        "Paramètres de Grille Personnalisés",
                        "Ligne de Support Directe",
                        "Paires de trading illimitées"
                    ]
                }
            },
            "included_features": [
                "Stratégies prêtes à l'emploi personnalisables",
                "Gestion des risques intégrée",
                "Suivi des profits en temps réel",
                "Tableau de bord d'analyse des performances",
                "Statistiques et analyses approfondies des bots",
                "Prise de position optimisée",
                "Design adaptatif",
                "Surveillance du marché en temps réel",
                "Indicateurs d'ordres de vente à venir",
                "Historique de trading interactif",
                "Suggestions d'aide contextuelle",
                "Représentation visuelle des données",
                "Recherche et filtrage intelligents",
                "Personnalisation sophistiquée",
                "Chiffrement des données et protocoles sécurisés",
                "Renouvellement de licence fluide"
            ]
        },
        "testimonials": {
            "label": "Communauté",
            "headline_prefix": "Là où les traders et les",
            "headline_highlight": "bots",
            "headline_suffix": " convergent.",
            "items": [
                {
                    "quote": "J'ai essayé plusieurs bots de grille. BotChain est l'un des rares outils qui ressemble à un outil professionnel, pas comme un jouet. L'interface est très soignée.",
                    "author": "Alix B.",
                    "role": "Tradeur",
                    "result": "Automatisé"
                },
                {
                    "quote": "L'aspect non-custodial a été l'élément décisif. Je préfère que mes fonds restent sur mon exchange, pas sur le portefeuille d'un tiers.",
                    "author": "Mat F.",
                    "role": "Investisseur Crypto",
                    "result": "Accumulation de BTC"
                },
                {
                    "quote": "Configurer mon premier bot a pris littéralement 2 minutes. Les stratégies prédéfinies sont efficaces.",
                    "author": "Lucas P.",
                    "role": "Ingénieur",
                    "result": "Automatisé"
                }
            ]
        },
        "market_access": {
            "badge": "1500+ Paires",
            "title": "Aucune crypto laissée pour compte",
            "description": "Développez votre potentiel de trading en déployant des bots sur une large gamme de crypto-monnaies. Avec une découverte des symboles adaptée à chaque exchange pris en charge, Botchain vous donne la flexibilité d'exécuter votre stratégie selon vos propres conditions. <br/> Que vous souhaitiez diversifier, explorer des opportunités émergentes ou vous concentrer sur les actifs les plus performants, notre plateforme garantit que vous ne manquerez jamais un mouvement du marché.",
            "more_coins": "+500"
        }
    },
    "strategy_page": {
        "hero": {
            "title": "Stratégie de Trading Avancée,",
            "subtitle": "Simple, Puissante, Automatisée.",
            "description": "Botchain s'appuie sur une stratégie de grid-trading sophistiquée basée sur un principe simple : acheter bas, vendre haut. Vos fonds restent en sécurité sur votre exchange pendant que nous gérons l'automatisation.",
            "cta": "Activer la Stratégie"
        },
        "order_types": {
            "title": "Pourquoi Botchain utilise deux types d'ordres",
            "description": "Botchain combine les ordres DCA et les ordres de scalping au sein de chaque session pour vous offrir le meilleur des deux mondes : accumulation stratégique et prise de profit rapide. Les deux sont importants, mais les ordres de scalping sont le véritable moteur des gains réguliers, surtout sur les marchés dynamiques.",
            "scalping": {
                "title": "1. Ordres de Scalping",
                "subtitle": "Profits rapides et indépendants",
                "desc": "Les ordres de scalping sont conçus pour capturer les opportunités au moment où elles se présentent. Chaque ordre est acheté indépendamment et peut être vendu individuellement, sans fermer la session entière.",
                "benefits": [
                    "Réagir instantanément aux fluctuations du marché — même les petits mouvements de prix génèrent du profit.",
                    "Maintenir la session active en continu, afin de ne pas perdre d'opportunités en attendant que d'autres ordres atteignent leur cible.",
                    "Réinvestir une partie des profits pour réduire le coût moyen des positions ouvertes, capitalisant ainsi vos gains automatiquement."
                ],
                "summary": "En bref, le scalping garantit que vous réalisez des bénéfices même dans des marchés volatils ou latéraux, transformant les petites variations de prix en rendements réguliers. C'est la fonctionnalité qui maintient votre session active, rentable et flexible."
            },
            "dca": {
                "title": "2. Ordres DCA",
                "subtitle": "Accumulation Stratégique",
                "desc": "Les ordres DCA (Dollar-Cost Averaging) complètent le scalping en construisant des positions sur plusieurs niveaux de prix. Achetés individuellement mais vendus ensemble en lot, le DCA vous aide à :",
                "benefits": [
                    "Moyenner votre prix d'entrée, réduisant ainsi l'impact des variations soudaines du marché.",
                    "Vendre stratégiquement lorsque la session atteint les conditions de take-profit et de pullback prédéfinies.",
                    "Ouvrir automatiquement une nouvelle session, garantissant que votre stratégie à long terme se poursuit sans interruption."
                ],
                "summary": "Alors que le DCA fournit une base structurée et gérée par le risque, le scalping est l'endroit où la session réalise véritablement des profits réguliers et actionnables."
            },
            "conclusion": "La combinaison des deux dans la stratégie par défaut vous offre stabilité et rapidité : le DCA accumule intelligemment, et le scalping capture chaque mouvement de marché important.",
            "buy_entry": "Achat d'entrée",
            "sell_target": "Cible de vente"
        },
        "grid": {
            "title": "Contrôle de précision avec les grilles",
            "description_1": "Une <cover>Cover</cover> représente un ordre d'achat unique au sein de la grille d'une session. Chaque session est construite à partir d'un ensemble structuré de couvertures, et chaque couverture définit quand et combien le bot achètera en fonction des mouvements du marché.",
            "description_2": "Dans la stratégie de grille par défaut, chaque cover se voit attribuer un montant d'achat de référence (un pourcentage des fonds alloués au bot). Un multiplicateur est ensuite appliqué sur la grille pour ajuster dynamiquement la taille de chaque ordre d'achat, permettant à la stratégie d'<accumulate>accumuler plus efficacement</accumulate> à mesure que le prix baisse.",
            "execution_logic": {
                "title": "Logique d'exécution intelligente",
                "description": "Un ordre d'achat est déclenché pour une cover spécifique lorsque deux conditions sont remplies :",
                "condition_1": "Le prix du marché a chuté d'un pourcentage prédéfini (ex: -2%) par rapport au niveau d'achat de la cover précédente.",
                "condition_2": "Un <pullback>pullback</pullback> est détecté, confirmant que le prix s'est temporairement retourné à la hausse."
            },
            "quotes": {
                "confirmation": "Cela garantit que le bot ne se contente pas d'acheter pendant la chute, mais cherche plutôt une confirmation avant d'entrer sur le marché. Le résultat est une exécution constante, une exposition au risque contrôlée et une construction de position optimisée.",
                "adaptation": "La grille virtuelle s'adapte en continu au comportement du prix en temps réel, rendant chaque exécution d'achat véritablement intelligente plutôt que mécanique."
            }
        },
        "grid_visualization": {
            "cover_1": "Cover #1 (-2.0%)",
            "cover_2": "Cover #2 (-5.0%)",
            "triggered_1": "Déclenché après -3.7% (pas -2%)",
            "triggered_2": "Déclenché après -9.3% (pas -5%)",
            "pullback_detected": "PULLBACK détecté",
            "smart_entry": "ENTRÉE INTELLIGENTE",
            "market": "MARCHÉ",
            "dumping": "CHUTE",
            "strategy": "STRATÉGIE",
            "active": "ACTIF",
            "dynamic_logic_title": "Logique de Pullback Dynamique",
            "dynamic_logic_desc": "Le bot attend une bougie de confirmation verte (pullback) avant d'exécuter les ordres de cover. Cela évite d'acheter des couteaux qui tombent et optimise le prix d'entrée."
        },
        "session": {
            "tag_session": "Session",
            "tag_active": "ACTIF",
            "title": "Qu'est-ce qu'une Session ?",
            "subtitle": "L'unité opérationnelle centrale",
            "description": "Une Session est l'unité opérationnelle centrale de Botchain. Considérez-la comme un cycle de trading structuré — un ensemble soigneusement organisé d'ordres d'achat et de vente qui travaillent ensemble pour exécuter votre stratégie automatiquement. Chaque session est conçue pour maximiser les opportunités de profit tout en gérant le risque, afin que vous puissiez trader en toute confiance sans supervision constante.",
            "structure": {
                "title": "Ensemble structuré d'ordres",
                "desc": "Une session se compose de plusieurs ordres d'achat placés à différents niveaux de prix selon une grille. Ces achats permettent au bot d'accumuler la crypto-monnaie choisie efficacement, en profitant des fluctuations du marché.",
                "note": "Chaque ordre d'achat est couplé à une logique de vente correspondante, garantissant que les profits sont capturés au moment optimal."
            },
            "lifecycle": {
                "title": "Cycle de vie d'une Session",
                "step1": "Une session commence lorsque le premier ordre d'achat est exécuté.",
                "step2": "Le bot suit tous les ordres de la session, les ajustant et les gérant dynamiquement au fur et à mesure que le marché évolue.",
                "step3": "Une fois que toutes les conditions de vente sont remplies, la session se ferme automatiquement.",
                "step4": "Optionnellement, une nouvelle session peut démarrer immédiatement, poursuivant votre stratégie sans intervention manuelle."
            },
            "benefits": {
                "org_title": "Organisation claire",
                "org_desc": "Tous les ordres sont regroupés dans une session, vous offrant une transparence totale et un contrôle sur ce qui est actif sur le marché.",
                "profit_title": "Optimisation des profits",
                "profit_desc": "La combinaison du DCA et du scalping au sein d'une session garantit que vous pouvez capturer des profits aussi bien dans des marchés en tendance que volatils."
            }
        }
    },
    "footer": {
        "description": "Expérience de trading premium avec une logique d'automatisation de niveau institutionnel. Sécurisé, non-custodial et conçu pour la haute performance.",
        "product": "Produit",
        "strategies": "Stratégies",
        "legal": "Légal",
        "privacy": "Politique de confidentialité",
        "terms": "Conditions d'utilisation",
        "rights": "Tous droits réservés.",
        "risk_warning": {
            "title": "Avertissement de risque :",
            "text": "Le trading de crypto-monnaies est soumis au risque de marché. BotChain fera ses meilleurs efforts pour fournir des services de haute qualité, mais ne sera pas responsable de vos pertes de trading. Veuillez trader avec prudence."
        }
    },
    "payment": {
        "errors": {
            "plan_unavailable": "Le forfait sélectionné n'est pas disponible.",
            "fulfillment_failed": "L'exécution de la commande a échoué."
        }
    },
    "settings": {
        "title": "Compte",
        "description": "Gérez votre identité Botchain et vos préférences.",
        "security_score": "Score de sécurité : {{score}}%",
        "score_breakdown": {
            "title": "Détails du score",
            "base": "Sécurité de base (50%)",
            "email_verified": "E-mail vérifié (+20%)",
            "exchange_connected": "Exchange connecté (+20%)",
            "login_notifications": "Notifications de connexion (+10%)"
        },
        "tabs": {
            "general": "Général",
            "exchange": "Exchange",
            "security": "Sécurité",
            "billing": "Facturation",
            "notifications": "Notifications"
        },
        "tab_descs": {
            "general": "Profil & Préférences",
            "exchange": "Connexions exchange",
            "security": "Mot de passe & 2FA",
            "billing": "Forfait & Factures",
            "notifications": "E-mail & Push"
        },
        "actions": {
            "sign_out": "Se déconnecter",
            "save_changes": "Enregistrer les modifications",
            "cancel": "Annuler",
            "update_keys": "Modifier les clés",
            "connect_exchange": "Connecter l'exchange",
            "send_code": "Envoyer le code de vérification",
            "verify_update": "Vérifier & Mettre à jour l'e-mail",
            "resend_code": "Renvoyer le code",
            "edit": "Modifier les paramètres",
            "sync": "Synchroniser",
            "save": "Save Changes"
        },
        "common": {
            "active": "Actif",
            "inactive": "Inactif"
        },
        "loading": "Chargement des paramètres...",
        "snackbars": {
            "profile_updated": "Profil mis à jour avec succès",
            "profile_update_failed": "Échec de la mise à jour du profil",
            "email_code_sent": "Code de vérification envoyé au nouvel e-mail",
            "email_code_failed": "Échec de l'envoi du code. Vérifiez votre mot de passe.",
            "email_updated": "E-mail mis à jour avec succès",
            "email_invalid_code": "Code de vérification invalide",
            "exchange_updated": "Connexion exchange mise à jour.",
            "exchange_established": "Connexion exchange établie.",
            "exchange_failed": "Échec de la mise à jour des clés API",
            "password_mismatch": "Les nouveaux mots de passe ne correspondent pas",
            "password_updated": "Mot de passe mis à jour avec succès",
            "password_failed": "Échec de la mise à jour du mot de passe",
            "ip_copied": "IP copiée dans le presse-papier",
            "notification_updated": "Paramètres de notification mis à jour",
            "checkout_failed": "Échec du paiement. Veuillez réessayer."
        },
        "general": {
            "personal_info": "Informations Personnelles",
            "personal_info_desc": "Mettez à jour votre profil public et vos préférences.",
            "display_name": "Nom d'affichage",
            "display_name_placeholder": "Entrez votre nom",
            "timezone": "Fuseau horaire",
            "current_password": "Mot de passe actuel (Requis pour enregistrer les modifications)",
            "current_password_placeholder": "Entrez le mot de passe pour confirmer",
            "email_address": "Adresse e-mail",
            "current_email": "E-mail actuel",
            "verified": "VÉRIFIÉ",
            "change_email_desc": "Vous pouvez modifier votre e-mail ci-dessous. Une mise à jour nécessite une vérification de sécurité.",
            "new_email": "Nouvelle adresse e-mail",
            "new_email_placeholder": "nouveau@exemple.com",
            "verification_code": "Code de vérification",
            "code_sent": "Nous avons envoyé un code de vérification à <emailSpan>{{email}}</emailSpan>. Veuillez le saisir ci-dessous."
        },
        "exchange": {
            "connect_title": "Connecter l'Exchange",
            "connect_desc": "Botchain communique avec l'exchange sélectionné via des points de terminaison API cryptés.",
            "update_title": "Mettre à jour la connexion",
            "manage_title": "Connexion Exchange",
            "manage_desc": "Gerez la connexion API de l'exchange sélectionné.",
            "connected": "Connecté",
            "unknown_key": "Clé inconnue",
            "status": "Statut",
            "status_ok": "Opérationnel",
            "permission": "Permission",
            "permission_spot": "Trading Spot",
            "last_sync": "Dernière synchronisation",
            "last_sync_now": "À l'instant",
            "safety_notice": "Avis de sécurité",
            "safety_notice_desc": "Si vous mettez à jour vos clés, les bots actifs sur cet exchange peuvent être mis en pause jusqu'à ce que la connexion soit revérifiée. Assurez-vous que vos nouvelles clés ont les permissions de lecture et de Trading Spot activées.",
            "form": {
                "title": "Connexion Exchange",
                "non_custodial": "Non-Custodial",
                "non_custodial_desc": "Nous ne détenons pas vos fonds. Vos actifs restent sur votre compte exchange.",
                "aes_256": "AES-256",
                "aes_256_desc": "Vos clés sont cryptées avec le chiffrement AES-256 et stockées dans des coffres-forts isolés.",
                "supported": "Supporté",
                "trusted_ip": "IP de confiance",
                "ip_tooltip": "Ouvrez les paramètres API de votre exchange, limitez l'accès aux IP de confiance, puis collez cette IP.",
                "execution_layer_desc": "Botchain fonctionne strictement comme une <layer>couche d'exécution</layer>, jamais comme dépositaire. Toute l'activité de trading se déroule sur votre compte exchange connecté.",
                "api_key": "Clé API",
                "api_key_tooltip": "Créez une nouvelle clé API dans votre compte exchange.",
                "api_key_placeholder": "Coller la clé...",
                "secret_key": "Clé Secrète",
                "secret_key_placeholder": "Coller le secret...",
                "missing_credentials": "Identifiants API manquants",
                "missing_passphrase": "Passphrase API OKX manquante",
                "reenter_secret": "Veuillez ressaisir la Clé Secrète pour mettre à jour.",
                "connection_failed": "Échec de la connexion",
                "permissions_checklist": "Liste de vérification des permissions :",
                "enable_reading": "Activer la lecture",
                "enable_spot": "Activer le trading Spot",
                "enable_withdrawals": "Activer les retraits (OFF)",
                "required_spot": "Requis : <spot>Trading Spot</spot> activé.",
                "okx_passphrase": "Passphrase OKX",
                "okx_passphrase_placeholder": "Passphrase API"
            },
            "errors": {
                "bnb_refill_error": "Erreur de recharge BNB : veuillez contacter le support.",
                "no_active_license": "L'utilisateur n'a pas de licence active.",
                "stablecoin_not_allowed": "Le stablecoin {{stablecoin}} n'est pas autorisé avec la licence {{plan}}.",
                "invalid_binance_symbol": "La paire {{symbol}} n'est pas disponible sur Binance."
            },
            "required_spot": "Requis : <spot>Trading Spot</spot> activé.",
            "bnb_refill_title": "Auto-recharge BNB",
            "bnb_refill_desc": "Achetez automatiquement du BNB lorsque votre solde tombe en dessous d'un seuil pour payer les frais de trading.",
            "bnb_refill_disclaimer": "Gardez suffisamment de BNB sur votre compte pour couvrir les frais. Sinon, les frais seront prélevés sur l'actif échangé, ce qui peut causer des écarts de quantité et affecter votre stratégie.",
            "bnb_refill_benefit": "L'utilisation du BNB pour les frais garantit une exécution précise et réduit les coûts.",
            "bnb_updated_success": "Paramètres BNB mis à jour avec succès",
            "sync_success": "Connexion à l'exchange et cache synchronisés avec succès",
            "sync_tooltip": "Force la synchronisation immédiate des soldes avec l'exchange sélectionné (ex : si des fonds ont été déplacés en externe). N'affecte pas les identifiants de l'API.",
            "update_keys_tooltip": "Permet de mettre à jour la clé API et la clé secrète de votre exchange.",
            "enable_bnb_refill": "Activer l'auto-recharge",
            "enable_bnb_refill_desc": "Une fois actif, nous exécuterons automatiquement un ordre au marché pour du BNB si votre solde Spot est bas.",
            "quantity_trigger": "Seuil de déclenchement (BNB)",
            "quantity_buy": "Quantité à acheter (BNB)",
            "stablecoin_bnb": "Stablecoin de financement",
            "stablecoin_bnb_desc": "Sélectionnez le stablecoin utilisé pour acheter les BNB.",
            "trigger": "Acheter si <",
            "buy_amount": "Quantité achetée",
            "funding": "Source de financement",
            "update_desc": "Update your API keys to restore or change connection."
        },
        "notifications": {
            "title": "Préférences de Notification",
            "desc": "Choisissez comment vous souhaitez être informé des performances de vos bots et de la sécurité de votre compte.",
            "email": "Notifications E-mail",
            "in_app": "Notifications dans l'application",
            "save": "Enregistrer les préférences",
            "critical_alerts": "Alertes critiques uniquement",
            "critical_alerts_desc": "Notifier uniquement pour les erreurs ou les arrêts d'urgence.",
            "categories": {
                "trading": "Activité de Trading",
                "optimizer": "Optimiseur",
                "system": "Alertes Système"
            },
            "channels": {
                "email": {
                    "title": "Alertes E-mail",
                    "desc": "Envoyées directement dans votre boîte de réception pour les événements importants lorsque vous n'êtes pas sur la plateforme."
                },
                "in_app": {
                    "title": "Tableau de Bord En-App",
                    "desc": "Affichées sous forme de bannières, d'entrées d'historique et de journaux d'activité directement dans Botchain."
                }
            },
            "items": {
                "trade_exec": {
                    "label": "Exécution de Trade",
                    "desc": "Soyez notifié lorsqu'un ordre d'achat ou de vente est rempli."
                },
                "session_close": {
                    "label": "Fin de Session",
                    "desc": "Recevez un résumé spécifique lorsqu'une session se termine."
                },
                "profit_milestone": {
                    "label": "Objectifs de Profit",
                    "desc": "Célébrez lorsqu'un bot atteint 10% de profit."
                },
                "optimizer_apply": {
                    "label": "Déploiements Optimiseur",
                    "desc": "Recevez une notification lorsqu'une recommandation est appliquée, différée ou bloquée.",
                    "rate_limit_badge": "Max 1 e-mail de blocage / 24h par bot"
                },
                "risk_guard": {
                    "label": "Protection anti-crash",
                    "desc": "Soyez notifié lorsqu'un crash de marché met les achats de vos bots en pause (les ventes continuent toujours)."
                },
                "errors": {
                    "label": "Erreurs & Avertissements",
                    "desc": "Problèmes critiques avec la connexion exchange ou l'API."
                },
                "login": {
                    "label": "Nouvelle connexion détectée",
                    "desc": "Alerte de sécurité pour les appareils non reconnus."
                }
            }
        },
        "security": {
            "title": "Sécurité & Authentification",
            "desc": "Gérez votre mot de passe et vos préférences de sécurité.",
            "change_password": "Changer le mot de passe",
            "change_password_desc": "Nous recommandons d'utiliser un mot de passe unique que vous n'utilisez nulle part ailleurs.",
            "current_password": "Mot de passe actuel",
            "current_password_placeholder": "Entrez le mot de passe actuel",
            "new_password": "Nouveau mot de passe",
            "new_password_placeholder": "Nouveau mot de passe",
            "confirm_password": "Confirmer le mot de passe",
            "confirm_password_placeholder": "Confirmer le nouveau mot de passe",
            "update_password": "Mettre à jour le mot de passe",
            "password_requirements": "Exigences du mot de passe :",
            "req_length": "Au moins 8 caractères",
            "req_complex": "Inclure des chiffres et des caractères spéciaux",
            "req_unique": "Différent de votre mot de passe actuel",
            "two_factor": "Double Authentification",
            "email_verify": "Vérification E-mail",
            "email_verify_desc": "Activé par défaut pour toutes les actions sensibles.",
            "authenticator": "Authentificateur",
            "authenticator_desc": "Le support de Google Authenticator est en cours de développement.",
            "recent_activity": "Activité Récente",
            "table": {
                "action": "Action",
                "location": "Localisation",
                "ip": "Adresse IP",
                "time": "Heure",
                "loading": "Chargement de l'activité...",
                "no_results": "Aucune activité récente trouvée."
            }
        },
        "billing": {
            "active_bots": "Bots Actifs",
            "stablecoins": "Stablecoins",
            "title": "Facturation & Abonnement",
            "desc": "Gérez votre forfait et consultez votre historique de paiement.",
            "current_plan": "FORFAIT ACTUEL",
            "expires_on": "Expire le {{date}}",
            "interval": {
                "month": "mois",
                "year": "an"
            },
            "actions": {
                "cancel": "Résilier l'abonnement",
                "upgrade": "Changer de forfait",
                "manage_stripe": "Gérer dans le portail Stripe"
            },
            "payment_method": "Moyen de paiement",
            "stripe_secure": "Paiement sécurisé via Stripe",
            "history": "Historique de Facturation",
            "table": {
                "invoice": "Facture",
                "status": "Statut",
                "amount": "Montant",
                "date": "Date",
                "download": "Télécharger"
            },
            "no_history": "Aucun historique de facturation trouvé",
            "no_history_desc": "Une fois abonné à un forfait, vos factures apparaîtront ici pour que vous puissiez les télécharger et suivre vos dépenses."
        }
    },
    "wizard": {
        "nav": {
            "exchange": {
                "label": "Connecter",
                "description": "Lier l'Exchange"
            },
            "basics": {
                "label": "Identité",
                "description": "Bases & Fonds"
            },
            "strategy": {
                "label": "Stratégie",
                "description": "Logique d'exécution"
            },
            "review": {
                "label": "Révision",
                "description": "Vérification finale"
            }
        },
        "create": {
            "loading": "Chargement de la configuration du bot...",
            "back_to_details": "Retour aux détails du bot",
            "back_to_dashboard": "Retour au tableau de bord",
            "editing_bot": "Modification du Bot",
            "capital_at_risk": "Capital à risque",
            "connect_exchange_title": "Connecter l'Exchange",
            "connect_exchange_desc": "Connectez votre compte exchange en toute sécurité. Activez uniquement les permissions de lecture et de Trading Spot.",
            "controls": {
                "back": "Retour",
                "processing": "Traitement...",
                "save": "Enregistrer",
                "deploy": "Déployer",
                "next": "Suivant",
                "save_changes": "Enregistrer",
                "deploy_bot": "Déployer le Bot",
                "continue": "Continuer"
            },
            "alerts": {
                "load_failed": "Échec du chargement des données. Redirection...",
                "assets_failed": "Échec du chargement des actifs disponibles",
                "pair_unavailable": "La paire de trading n'est pas disponible.",
                "pair_verify_failed": "Échec de la vérification de la disponibilité. Veuillez réessayer.",
                "config_saved": "Configuration enregistrée !",
                "draft_saved": "Bot enregistré en brouillon !",
                "bot_updated": "Bot mis à jour avec succès !",
                "bot_deployed": "Bot déployé avec succès !",
                "exchange_success": "Exchange connecté avec succès !",
                "exchange_failed": "Échec de l'enregistrement des identifiants API"
            },
            "verifying": "Verifying..."
        },
        "basics": {
            "title": "Bases & Configuration",
            "subtitle": "Définissez ce que votre bot trade et comment il gère le capital.",
            "edit_title": "Modifier la Configuration",
            "edit_subtitle": "Modifiez les paramètres de votre bot. Note : La paire de trading ne peut pas être changée.",
            "exchange_label": "Exchange lié",
            "exchange_description": "Sélectionnez le compte exchange configuré que ce bot utilisera pour les données de marché, les soldes et les ordres.",
            "exchange_configured": "Configuré",
            "exchange_not_configured": "Non configuré",
            "exchange_unavailable": "Aucun exchange configuré disponible",
            "exchange_change_hint": "Changer d'exchange recharge les paires de trading disponibles pour ce bot.",
            "loading_assets": "Chargement des marchés...",
            "base_label": "Actif de base (Achat)",
            "base_tooltip": "L'actif que vous souhaitez accumuler (ex: BTC)",
            "quote_label": "Actif de cotation (Dépense)",
            "quote_tooltip": "Le stablecoin utilisé pour acheter l'actif de base (ex: USDT)",
            "amount_label": "Montant alloué ({{quote}})",
            "amount_placeholder": "ex: 1000 {{quote}}",
            "amount_description": "Capital alloué à ce bot pour le trading (montant maximum qu'il peut utiliser)",
            "min_amount_error": "Le montant minimum est de 50 {{quote}}.",
            "rec_amount_warning": "Un montant de 600+ {{quote}} est recommandé pour une performance optimale.",
            "bot_name_label": "Identité du Bot",
            "bot_name_placeholder": "ex: Accumulateur BTC",
            "compounding_label": "Capitalisation (Compounding)",
            "compounding_description": "Réinvestir automatiquement les profits réalisés dans le cycle suivant.",
            "cycle_mode_label": "Cycle Continu",
            "cycle_mode_description": "Redémarrer immédiatement une nouvelle session après la fin de la précédente.",
            "sell_only_mode_label": "Mode Vente Uniquement",
            "sell_only_mode_description": "Empêche tout nouvel ordre d'achat. Le bot vendra uniquement les positions existantes lorsque les cibles seront atteintes.",
            "select_asset": "Sélectionner un actif",
            "search_placeholder": "Rechercher...",
            "no_assets_found": "Aucun actif trouvé",
            "locked": "Verrouillé"
        },
        "strategy": {
            "title": "Configuration de la Stratégie",
            "description": "Sélectionnez un modèle ou personnalisez votre logique d'exécution autonome.",
            "default_desc": "Stratégie d'exécution automatisée.",
            "reference_amount": {
                "title": "Montant de Référence",
                "desc": "Pourcentage des fonds alloués",
                "entry_label": "Entrée & Montant de Référence",
                "total": "Total : {{amount}} USDT"
            },
            "session_targets": {
                "title": "Objectifs de Session",
                "desc": "Objectifs pour l'ensemble du cycle de trading.",
                "tp": "Take Profit",
                "retracement": "Retracement"
            },
            "scalp_targets": {
                "title": "Objectifs de Scalping",
                "desc": "Objectifs de take-profit indépendants pour les ordres de scalping individuels.",
                "tp": "Take Profit",
                "retracement": "Retracement"
            },
            "execution_grid": {
                "title": "Grille d'Exécution",
                "levels_configured": "{{count}} Niveaux configurés",
                "min_5": "(Min 5)",
                "prefilled_note": "*Pré-rempli via le modèle de stratégie — les modifications s'appliquent par bot",
                "customize_btn": "Personnaliser la Grille"
            },
            "optimized": {
                "title": "Stratégie optimisée par IA",
                "subtitle": "Grille backtestée pour {{pair}} sur {{provider}}",
                "loading": "Recherche de paramètres optimisés…",
                "confidence": "Confiance",
                "test_roi": "ROI de test",
                "max_drawdown": "Drawdown max",
                "grid": "Grille",
                "levels": "{{count}} niveaux",
                "regime_match": "Optimisée pour la condition de marché actuelle ({{regime}}).",
                "regime_generic": "Meilleur résultat disponible — conçu pour des conditions {{regime}}.",
                "apply": "Utiliser la stratégie optimisée",
                "applied": "Stratégie optimisée appliquée",
                "none": "Aucun paramètre optimisé n'existe encore pour cette paire. Lancez une étude maintenant — elle s'exécute en arrière-plan pendant que vous terminez la configuration.",
                "request": "Générer une recommandation",
                "run_pending": "Une étude d'optimisation est en cours pour cette paire ({{progress}}%). Vous pouvez déployer dès maintenant — appliquez le résultat plus tard depuis l'onglet Optimiseur du bot, ou activez l'application automatique.",
                "rate_limited": "Budget d'optimisation atteint. Réessayez dans environ {{hours}}h.",
                "request_failed": "Impossible de lancer l'optimisation. Veuillez réessayer plus tard."
            }
        },
        "review": {
            "title_editing": "Vérifier les modifications",
            "title_creating": "Prêt pour le lancement",
            "subtitle_editing": "Vérifiez vos modifications avant d'enregistrer.",
            "subtitle_creating": "Vérifiez votre configuration avant le déploiement. Des ajustements pourront être faits plus tard.",
            "bot_identity": "Identité du Bot",
            "linked_exchange": "Exchange lié",
            "trading_pair": "Paire de Trading",
            "total_investment": "Investissement Total",
            "strategy_type": "Type de Stratégie",
            "custom_strategy": "Stratégie Personnalisée",
            "compounding": "Capitalisation",
            "cycle_mode": "Mode Cycle",
            "sell_only_mode": "Mode Vente Uniquement",
            "enabled": "Activé",
            "disabled": "Désactivé",
            "continuous": "Continu",
            "one_time": "Unique",
            "immediate_update_info": "Vos modifications seront appliquées immédiatement. Le bot continuera de fonctionner avec la configuration mise à jour.",
            "launch_info": "Lancer le bot placera immédiatement l'ordre d'achat initial de <amount>{{amount}} $</amount> en <coin>{{coin}}</coin> au prix du marché, établissant la position d'entrée.",
            "delay_info": "Vous pouvez retarder cela en sélectionnant",
            "save_for_later": "Enregistrer pour plus tard",
            "risk_warning_editing": "Les modifications de configuration peuvent affecter les positions de trading actuelles.",
            "risk_warning_creating": "En déployant, vous acceptez les risques associés au trading automatisé."
        }
    },
    "checkout": {
        "success": {
            "title": "Paiement réussi !",
            "subtitle": "Votre licence {{plan}} est maintenant active.",
            "amount": "Montant payé",
            "expiry": "Valide jusqu'au",
            "launch": "Lancer le Cockpit",
            "details": "Voir les détails de facturation",
            "verified": "Vérifié par le registre interne Stripe"
        },
        "error": {
            "title": "Vérification échouée",
            "subtitle": "Nous n'avons pas pu vérifier votre session ou le paiement a été annulé. Si vous pensez qu'il s'agit d'une erreur, veuillez contacter le support.",
            "back": "Retour à la facturation",
            "return": "Retour au tableau de bord"
        }
    },
    "optimizer": {
        "command": {
            "target": "Cible d'optimisation",
            "live_market": "Marché en direct",
            "recommendation": "Recommandation",
            "rollout": "Déploiement du bot",
            "automatic": "Approbation automatique activée",
            "manual": "Approbation manuelle requise"
        },
        "decision_rail": {
            "title": "Comment cette recommandation avance",
            "desc": "BotChain crée une recommandation, vérifie sa sécurité, suit vos préférences d'approbation et met à jour votre bot uniquement lorsque cela peut être fait en toute sécurité.",
            "aria_label": "Étapes d'activation de la recommandation"
        },
        "baseline": {
            "title": "Recommandation vs stratégie active",
            "desc": "Les deux stratégies ont été testées face à face sur les mêmes périodes de marché inédites.",
            "pending_title": "Comparaison directe avec la stratégie active",
            "pending_desc": "Cette recommandation est validée sur des données de marché inédites. Une simulation face à face contre vos réglages actifs est en cours en arrière-plan.",
            "edge_confirmed": "Gain de performance confirmé",
            "edge_unconfirmed": "Gain insuffisant pour une mise à jour automatique",
            "conservative_uplift": "Écart de rendement estimé",
            "lower_bound": "Différence minimale estimée (confiance 95 %, pas une prévision de profit)",
            "outperforms_running": "Surpasse le bot actif",
            "underperforms_running": "Sous-performe le bot actif",
            "equal_performance": "Rendement équivalent",
            "drawdown": "Pire baisse (Perte maximale)",
            "running_label": "Actif",
            "recommended_label": "Recommandé",
            "current_to_recommended": "Actif → recommandé",
            "drawdown_reduced": "Baisse réduite de {{delta}} (plus sûr)",
            "drawdown_increased": "Baisse supérieure de {{delta}}",
            "drawdown_equal": "Niveau de risque identique",
            "drawdown_help": "Baisse maximale simulée sur les mêmes données de marché",
            "evidence_depth": "Périodes testées et coût de changement",
            "windows": "périodes de test",
            "switching_cost": "Coût de changement estimé : {{value}} %",
            "zero_friction": "Aucun coût de changement",
            "same_chronology": "Testé sur les mêmes périodes de marché avec frais de trading inclus",
            "explanation_unconfirmed": "La recommandation n'apporte pas un gain de rendement suffisant par rapport à votre bot actif (écart estimé : {{edge}} %). Votre bot conserve ses réglages actuels.",
            "explanation_confirmed": "La recommandation surpasse votre bot actif avec 95 % de certitude statistique et respecte tous les critères de sécurité."
        },
        "regime_library": {
            "title": "Bibliothèque de stratégies par régime",
            "desc": "La stratégie correspondant au marché actuel est prioritaire. Sélectionnez un autre régime pour examiner sa dernière stratégie validée ou ses versions antérieures.",
            "available": "{{count}} régimes disponibles",
            "updated": "Mis à jour",
            "test_return": "Rendement test",
            "safety": "Sécurité",
            "live_market": "Marché actuel",
            "active_strategy": "Active",
            "saved_strategy": "Stratégie enregistrée",
            "stale_title": "Vérifiez la fraîcheur avant le déploiement",
            "stale_auto": "Ces stratégies restent consultables, mais des preuves obsolètes ne permettent pas un déploiement automatique.",
            "stale_manual": "Ces stratégies reposent sur des données de marché plus anciennes. Demandez une nouvelle étude avant de vous y fier.",
            "versions": "{{count}} versions enregistrées",
            "versions_desc": "La version la plus récente est sélectionnée. Les preuves antérieures restent accessibles pour audit.",
            "latest": "Plus récente",
            "version": "Version {{number}}"
        },
        "strategy_diff": {
            "title": "Ce qui va changer",
            "desc": "Seules les différences significatives sont affichées. Le calendrier suit le dernier plan de déploiement enregistré lorsqu'il existe.",
            "count": "{{count}} changements",
            "dynamic": "Paramètres dynamiques",
            "dynamic_desc": "Règles de sortie et de prise de profit modifiables sans reconstruire la grille de couverture.",
            "structural": "Paramètres structurels",
            "structural_desc": "Changements de taille et de forme de grille pouvant attendre une limite de session sûre.",
            "dca_tp": "Prise de profit DCA",
            "dca_retracement": "Retracement du profit DCA",
            "scalp_tp": "Prise de profit scalping",
            "scalp_retracement": "Retracement du profit scalping",
            "initial_allocation": "Allocation initiale",
            "cover_count": "Échelle de couvertures",
            "cover_depth": "Couverture baissière",
            "no_changes": "Les paramètres recommandés sont déjà actifs",
            "no_changes_desc": "Aucune différence significative n'a été trouvée dans les paramètres comparables.",
            "direction": {
                "increased": "Augmenté",
                "decreased": "Diminué",
                "added": "Ajouté",
                "removed": "Supprimé"
            },
            "timing": {
                "immediate": "Applicable maintenant",
                "guarded_exit": "Après les sorties protégées",
                "future_tail": "Pour les futures couvertures",
                "deferred": "Prochaine session sûre",
                "blocked": "Bloqué",
                "no_change": "Déjà actif",
                "dynamic_preview": "Généralement immédiat",
                "structural_preview": "Généralement à la prochaine session"
            }
        },
        "manual": {
            "review_apply": "Vérifier et appliquer manuellement",
            "auto_blocked": "L'application automatique est bloquée : {{reason}} Examinez les règles de sécurité en échec avant de choisir une action manuelle.",
            "blocked_title": "L'application automatique a été bloquée",
            "blocked_desc": "Examinez chaque règle de sécurité en échec et le risque associé avant de décider de continuer.",
            "risk_label": "Risque :",
            "normally_safe_title": "Ce qui peut normalement être appliqué en sécurité",
            "normally_safe_desc": "Une application partielle revérifie les positions, le capital, les limites de l'exchange et chaque champ. Les paramètres de sortie éligibles peuvent être appliqués, tandis que les changements de taille ou de grille non sûrs restent inchangés et sont signalés avec leur motif.",
            "continue_action": "Continuer après vérification",
            "choose_title": "Choisissez comment continuer",
            "choose_desc": "Choisissez une application partielle adaptée à l'état ou remplacez explicitement toute la stratégie.",
            "partial_title": "Application partielle",
            "partial_desc": "Appliquer uniquement les paramètres actuellement considérés comme sûrs et éligibles. Les autres paramètres et couvertures restent inchangés et sont signalés avec leur motif.",
            "partial_action": "Appliquer uniquement les paramètres sûrs",
            "complete_title": "Remplacement complet de la stratégie",
            "complete_desc": "Remplacer les paramètres du bot et toute sa grille de couvertures par cette recommandation. Les règles de sécurité contournables sont ignorées, mais les données invalides et les ordres impossibles restent bloqués.",
            "complete_confirmation": "Je comprends que les paramètres existants du bot et toutes les couvertures seront remplacés par la recommandation sélectionnée.",
            "complete_action": "Remplacer les paramètres et couvertures",
            "request_deployment": "Request deployment",
            "review_desc": "The execution worker will revalidate live positions, capital, exchange limits, and the active strategy before committing any change.",
            "review_drawdown": "Worst decline",
            "review_evidence": "evidence",
            "review_eyebrow": "Deployment review",
            "review_note": "Requesting deployment does not guarantee every field changes immediately. The persisted deployment result will record what changed, what waited, and why.",
            "review_regime": "Designed for",
            "review_return": "Blind-test return",
            "review_safety": "Strategy safety",
            "review_title": "Review what BotChain will request"
        },
        "experience": {
            "title": "Optimiseur de stratégie",
            "navigation": "Navigation de l'optimiseur",
            "attention_bypass_note": "La revue manuelle peut contourner les règles de sécurité signalées. L'intégrité des données et les contraintes d'ordres de l'exchange restent toujours obligatoires.",
            "review_bypass_note": "La revue manuelle peut contourner les règles de sécurité signalées. L'intégrité des données et les contraintes d'ordres de l'exchange restent toujours obligatoires.",
            "snapshot_market": "Marché en direct",
            "market_confirmed": "Condition confirmée",
            "market_stabilizing": "Confirmation de cette condition en cours",
            "market_safe_wait": "Aucun changement sans lecture confirmée",
            "snapshot_recommendation": "Recommandation",
            "study_in_progress": "Étude en cours",
            "none_yet": "Aucune pour l'instant",
            "recommendation_for": "Pour les conditions {{regime}}",
            "recommendation_waiting": "Les résultats validés apparaîtront ici",
            "snapshot_deployment": "Déploiement du bot",
            "deployment_full": "Pleinement actif",
            "deployment_partial": "Partiellement actif",
            "deployment_waiting": "En attente d'un point sécurisé",
            "deployment_previous_partial": "Stratégie précédente partiellement active",
            "deployment_previous": "Stratégie précédente active",
            "deployment_queued": "Mis en file d'attente automatiquement",
            "deployment_not_applied": "Non appliqué",
            "deployment_none": "Aucun déploiement",
            "deployment_live_detail": "Les paramètres du bot reflètent cette recommandation",
            "deployment_waiting_detail": "Aucun paramètre n'a changé ; le worker réévaluera la demande à son déclencheur enregistré",
            "deployment_previous_detail": "Une recommandation plus récente est en attente",
            "deployment_auto_detail": "Le mode automatique est activé",
            "deployment_manual_detail": "Vous approuvez chaque changement",
            "nav_overview": "Vue d'ensemble",
            "nav_overview_help": "État et action suivante",
            "nav_changes": "Modifications de stratégie",
            "nav_changes_help": "Ce qui changerait",
            "nav_evidence": "Preuves",
            "nav_evidence_help": "Tests et méthodologie",
            "nav_automation": "Déploiement",
            "nav_automation_help": "Règles d'approbation et de sécurité",
            "nav_history_help": "Recommandations passées",
            "nav_engine_help": "Contrôles administrateur",
            "tuned_for": "Optimisé pour",
            "evidence_title": "Les preuves clés",
            "evidence_desc": "Performance mesurée sur des données de marché séparées non utilisées pour créer cette stratégie.",
            "not_forecast": "Simulation historique · pas une prévision de profit",
            "blind_return": "Rendement en test à l'aveugle",
            "blind_return_help": "Performance sur données inédites",
            "worst_decline": "Pire baisse",
            "worst_decline_help": "Drawdown simulé niveau {{level}}",
            "state": {
                "active": "En direct",
                "partial": "Mise à jour planifiée",
                "waiting": "En attente sécurisée",
                "ready": "Prêt pour examen",
                "automatic": "Prêt pour auto-application",
                "deploying": "Déploiement en cours",
                "analyzing": "Analyse en cours",
                "review": "Examen requis",
                "attention": "Attention requise",
                "paused": "En pause sécurisée",
                "empty": "Non configuré"
            },
            "headline": {
                "active": "Votre bot utilise la stratégie recommandée",
                "partial": "Les paramètres optimisés sont actifs",
                "waiting": "La stratégie optimisée attend un point sécurisé",
                "ready": "Une stratégie validée est prête",
                "automatic": "Une stratégie validée est prête",
                "deploying": "La stratégie optimisée est en cours de déploiement",
                "analyzing": "L'optimiseur étudie ce marché",
                "review": "Une recommandation est disponible mais nécessite votre examen",
                "attention": "Le déploiement automatique nécessite votre attention",
                "paused": "L'optimisation automatique est temporairement en pause"
            },
            "description": {
                "active": "Les derniers paramètres validés sont actifs et l'optimiseur surveille les changements de marché.",
                "partial": "Les modifications compatibles sont actives. Les autres attendront de pouvoir être appliquées en toute sécurité.",
                "waiting": "Votre stratégie actuelle reste active jusqu'à ce que la mise à jour puisse être effectuée en toute sécurité.",
                "ready": "Elle correspond au marché actuel et a passé les contrôles de déploiement.",
                "automatic": "Elle respecte vos règles de mise à jour automatique et peut être appliquée en toute sécurité.",
                "deploying": "BotChain applique les paramètres éligibles tout en protégeant les positions ouvertes.",
                "analyzing": "Il valide les conditions de marché et les paramètres. Votre bot actif reste inchangé pendant l'étude.",
                "review": "Certains contrôles nécessitent votre examen avant que la stratégie puisse être appliquée.",
                "attention": "La recommandation n'a pas pu être appliquée automatiquement. Examinez-la avant de décider.",
                "paused": "Le modèle de marché en direct est en récupération, les déploiements sont en pause."
            },
            "header": {
                "active": "Les paramètres recommandés sont en direct et surveillés",
                "partial": "Les modifications sûres sont actives ; chaque champ conservé a un déclencheur",
                "waiting": "Aucun paramètre changé ; la demande attend son déclencheur de sécurité",
                "ready": "Une stratégie validée attend votre décision",
                "automatic": "Une stratégie validée est éligible au déploiement automatique",
                "deploying": "Les paramètres éligibles sont appliqués en toute sécurité",
                "analyzing": "Une étude de marché est en cours ; vos paramètres actuels restent inchangés",
                "review": "Une recommandation est disponible avec des conditions à examiner",
                "attention": "Le dernier déploiement doit être examiné",
                "paused": "Le déploiement est en pause pendant le rétablissement du modèle",
                "empty": "Créer une recommandation de stratégie testée sur le marché"
            },
            "automatic_active_desc": "Le déploiement automatique est actif avec les sécurités de seuil de preuve.",
            "manual_active_desc": "La revue manuelle est active. Les modifications nécessitent une confirmation explicite.",
            "loading_desc": "Vérification des conditions de marché en direct et des dernières recommandations...",
            "loading_detail": "Vérification...",
            "first_study": "Votre première étude de marché",
            "how_it_works": "Comment fonctionne l'optimiseur",
            "how_it_works_desc": "Quatre garde-fous des données de marché à la recommandation",
            "manual_mode": "Examen manuel",
            "manual_mode_desc": "BotChain explique chaque recommandation et attend votre accord. Rien ne change automatiquement.",
            "manual_desc": "Le mode d'examen manuel est activé. Votre bot ne sera pas mis à jour sans votre confirmation explicite.",
            "auto_mode": "Auto-application",
            "auto_desc": "Les mises à jour automatiques s'appliquent lorsque le score de preuve dépasse {{threshold}} % et que tous les critères de sécurité sont validés.",
            "approval_title": "Politique d'approbation",
            "ready_badge": "Prêt",
            "waiting_badge": "En attente",
            "passed": "Réussi(s)",
            "automatic_mode": "Automatique",
            "market_mismatch_desc": "Le marché actuel est {{current}}, alors que cette stratégie cible {{recommended}}. Le déploiement automatique reste bloqué jusqu'à leur alignement.",
            "market_mismatch_title": "Cette stratégie a été conçue pour un état de marché différent",
            "more_responsive": "Plus réactif",
            "more_selective": "Plus sélectif",
            "requirements_ready": "Toutes les conditions de déploiement automatique sont remplies",
            "requirements_review": "Consultez les conditions en attente pour le déploiement automatique",
            "requirements_title": "Critères de déploiement",
            "safety_always_on": "Les contrôles de sécurité restent toujours actifs.",
            "safety_always_on_desc": "Modifier ce seuil ne contourne jamais l'alignement au marché, la fraîcheur, la santé du modèle ou les exigences de validation.",
            "safety_checks": "Contrôles de simulation",
            "safety_title": "Vérifications de sécurité",
            "safety_all_desc": "Chaque test de résistance simulé a réussi sur des scénarios de marché inédits.",
            "safety_review_desc": "Un ou plusieurs tests de résistance nécessitent votre examen avant le déploiement.",
            "safety_passed": "Chaque contrôle de simulation enregistré a réussi",
            "safety_review": "Ouvrir les exigences pour examen",
            "threshold_plain": "Des seuils plus élevés attendent des preuves plus fortes. Les recommandations sous le seuil restent visibles pour examen manuel.",
            "why_desc": "Consultez les signaux derrière le score de fiabilité",
            "why_title": "Pourquoi BotChain recommande ceci",
            "automatic_mode_desc": "Les recommandations éligibles sont déployées lorsque les conditions de marché sont confirmées et que les preuves dépassent votre seuil.",
            "automation_rules_desc": "Règles de calendrier, de confirmation et de protection des positions",
            "automation_rules_title": "Comment le mode automatique décide",
            "automation_title": "Choisissez comment les modifications de stratégie sont approuvées",
            "beginner_friendly": "Idéal pour commencer",
            "decision_candidate": "Candidat",
            "decision_evaluated": "Évalué",
            "decision_evidence": "Preuves : {{value}}",
            "decision_log_desc": "Inspectez les entrées du service derrière l'état d'automatisation actuel",
            "decision_log_title": "Dernière décision de déploiement",
            "decision_model": "Modèle en direct",
            "decision_model_ready": "Prêt",
            "decision_model_waiting": "Pas prêt",
            "decision_no_candidate": "Aucune recommandation correspondante",
            "decision_not_evaluated": "Aucune évaluation enregistrée",
            "decision_service_record": "Rapport du service d'optimisation",
            "deployability": "Score de preuve",
            "deployability_help": "Score d'état de préparation, pas un profit attendu",
            "empty_benefit_control": "Rien ne change sans votre accord",
            "empty_benefit_market": "S'adapte aux conditions actuelles du marché",
            "empty_benefit_validate": "Validé avant que vous ne le voyiez",
            "empty_desc": "BotChain va étudier cette paire de trading, trouver les paramètres de grille adaptés et les tester sur des données inédites avant de faire une recommandation.",
            "empty_title": "Construire une stratégie pour ce marché",
            "broader_split_desc": "Évalué sur les données de sélection de recherche multi-cycles",
            "broader_split_label": "Split de Validation Élargi :",
            "val_return": "ROI Val :"
        },
        "automation_settings": {
            "title": "Sélecteur de stratégie d'auto-application",
            "desc": "L'optimiseur confirme le régime de marché, compare les candidats éligibles à la stratégie active et ne met en attente que le meilleur candidat de la même époque lorsque ses preuves de déploiement dépassent votre seuil.",
            "saving": "Enregistrement...",
            "saved": "Enregistré",
            "save_error": "Le réglage d'approbation n'a pas pu être enregistré. Veuillez réessayer.",
            "cadence_label": "Cadence",
            "cadence_value": "Fenêtre de prédiction 4h",
            "cadence_desc": "La prédiction est mise à jour toute les 5 minutes, mais l'inférence du régime est basée sur des bougies de 4h.",
            "hysteresis_label": "Hystérésis",
            "hysteresis_value": "1 à 3 bougies clôturées",
            "hysteresis_desc": "Les régimes défensifs sont confirmés plus vite ; les autres changements doivent persister plus longtemps pour réduire le bruit passager.",
            "guard_label": "Garde de déploiement",
            "guard_value": "Grilles actives protégées",
            "guard_desc": "Les couvertures ouvertes restent protégées ; la taille des ordres peut se verrouiller en cas de capital insuffisant.",
            "toggle_label": "Activer l'auto-application",
            "confidence_threshold": "Seuil de confiance",
            "evidence_threshold": "Seuil de preuves",
            "current_threshold": "Seuil actuel :",
            "threshold_tooltip": "Niveau minimal de preuves de déploiement requis avant l'application automatique d'une recommandation. La probabilité du régime en direct est validée séparément.",
            "aggressive": "Agressif",
            "conservative": "Conservateur",
            "enabled": "Activé",
            "manual_review": "Revue manuelle",
            "balanced": "Équilibré",
            "active_badge": "Actif",
            "threshold_notice": "Les recommandations sous ce seuil de preuves restent disponibles pour une revue manuelle."
        },
        "adaptive": {
            "title": "Déploiement de la stratégie",
            "operation_mode": "Mode de l'opération",
            "bypassed_gates": "Règles de sécurité contournées : {{gates}}",
            "no_bypassed_gates": "Aucune règle de sécurité n'a été contournée.",
            "loading": "Chargement de l'état du déploiement…",
            "awaiting_title": "L'état du déploiement n'est pas encore disponible",
            "awaiting_desc": "Votre stratégie actuelle reste inchangée pendant la connexion du moteur de déploiement.",
            "updated": "Mis à jour",
            "reason": "Raison",
            "market": "Marché actuel",
            "unconfirmed": "Non confirmé",
            "regime_probability": "Probabilité du régime",
            "stable": "stable",
            "stabilizing": "en cours de stabilisation",
            "market_wait": "Aucun changement sans lecture saine du marché",
            "selected": "Candidat sélectionné",
            "none_selected": "Aucun candidat sélectionné",
            "none_selected_detail": "La stratégie actuelle reste la référence",
            "evidence": "Preuves",
            "effective": "Stratégie active",
            "revision": "Révision {{revision}}",
            "active_baseline": "Configuration actuelle du bot",
            "pending": "Cible en attente",
            "no_pending": "Rien en attente",
            "no_pending_detail": "La stratégie active n'a aucun remplacement en file",
            "next_trigger": "Prochain déclencheur",
            "pending_checks": "En attente de la prochaine évaluation du moteur",
            "review": "Révision",
            "change_summary": "Résumé des changements",
            "applied_count": "{{count}} prêt(s) ou appliqué(s) maintenant",
            "deferred_count": "{{count}} en attente",
            "blocked_count": "{{count}} bloqué(s)",
            "champion_retained": "Le candidat n°{{considered}} a été examiné, mais le n°{{selected}} reste le choix le plus sûr.",
            "plan_title": "Changements de paramètres",
            "plan_summary": "Voyez exactement ce qui change maintenant, ce qui reste inchangé et pourquoi.",
            "gates_title": "Contrôles de sécurité et d'éligibilité",
            "gates_summary": "{{passed}} contrôles réussis sur {{total}}. Ouvrez pour consulter la décision ordonnée.",
            "acknowledged": "règle de sécurité contournée manuellement",
            "hard_gate": "Validation obligatoire des données ou de l'exchange",
            "technical_title": "Révision et provenance",
            "technical_summary": "Empreintes de configuration et origine des paramètres pour le diagnostic avancé.",
            "effective_hash": "Empreinte de la configuration active",
            "target_hash": "Empreinte de la configuration cible",
            "sources_title": "Origine des paramètres actifs",
            "short_hash_hint": "Empreinte active courte {{hash}}",
            "timeline": "Activité récente du déploiement",
            "timeline_summary": "Ouvrez l'historique persistant et l'état de livraison des notifications.",
            "delivery_status": "État de livraison des notifications",
            "delivery_attempts": "{{count}} tentatives",
            "integrity_title": "Les changements automatiques sont suspendus",
            "integrity_desc": "Une incohérence de l'état de trading doit être vérifiée. La stratégie active reste inchangée.",
            "outcome": {
                "reviewed": "Le moteur de déploiement a enregistré sa dernière décision sans modifier la stratégie active.",
                "active": "La stratégie sélectionnée est entièrement active. Aucun paramètre n'attend de changement.",
                "partial": "Les changements sûrs sont actifs. Les positions existantes conservent leur politique d'origine et le reste attend un déclencheur enregistré.",
                "deferred": "Aucun changement de stratégie n'a été effectué. La stratégie actuelle reste active jusqu'au déclencheur enregistré et à une nouvelle validation de tous les contrôles de sécurité.",
                "processing": "La demande est enregistrée et le moteur d'exécution termine ses contrôles de sécurité en direct.",
                "retryable": "Aucun changement de stratégie n'a été effectué. Une condition de sécurité temporaire est surveillée et le moteur réexaminera automatiquement cette demande.",
                "blocked": "Aucun changement n'a été effectué car une règle de sécurité n'a pas été acceptée ou une validation obligatoire des données/de l'exchange a échoué.",
                "adapted": "The complete optimized grid is active with a safety adaptation. This is an intentional effective revision, not configuration drift."
            },
            "actions": {
                "immediate": "Appliquer maintenant",
                "guarded_exit": "Mise à jour de sortie protégée",
                "future_tail": "Futurs niveaux uniquement",
                "deferred": "En attente",
                "blocked": "Bloqué",
                "no_change": "Déjà actif"
            },
            "status": {
                "active": "Actif",
                "no_change": "Déjà actif",
                "partial": "Partiellement actif",
                "deferred": "En attente sécurisée",
                "planned": "Plan prêt",
                "considered": "Examiné",
                "eligible": "Éligible",
                "queued": "En attente",
                "applying": "Application sécurisée",
                "activating": "Activation",
                "retryable": "Suspendu en sécurité",
                "blocked": "Non déployable",
                "retrying": "Nouvelle tentative",
                "failed": "Échec",
                "preview": "Aperçu uniquement",
                "cancelled": "Annulé",
                "superseded": "Remplacé"
            },
            "affected": "Affected",
            "applied_fields_title": "Applied in this deployment",
            "next_action": "Next action",
            "no_fields_applied": "No parameter was applied.",
            "no_fields_pending": "No eligible parameter is waiting.",
            "pending_fields_title": "Not applied",
            "prevented_reasons": "Why the remaining changes were not applied",
            "review_failed_check": "Review the failed safety check before retrying."
        },
        "strategy_tab": {
            "comparison_title": "Détails de la stratégie",
            "comparison_desc": "Comparez la stratégie actuelle du bot avec les paramètres de recommandation actifs.",
            "automation_desc": "Configurez la manière dont les recommandations de l'optimiseur sont déployées. Vous pouvez exiger une revue manuelle ou autoriser l'optimiseur à appliquer automatiquement les changements lorsqu'une condition est remplie."
        },
        "comparison_table": {
            "not_available": "Non disponible",
            "active": "Actif",
            "optimized": "Optimisé",
            "impact_title": "Impact de la grille avant / après",
            "impact_subtitle": "Ce qui changera si vous l'appliquez",
            "impact_desc": "Cette vue compare la configuration active au candidat sélectionné. Le plan persistant de Déploiement décide ce qui peut changer maintenant, plus tard ou pas du tout.",
            "changed_settings": "Différences trouvées",
            "active_grid": "Grille active",
            "optimized_grid": "Grille optimisée",
            "parameter": "Paramètre",
            "active_grid_header": "Grille Active",
            "recommendation_header": "Recommandation",
            "delta_header": "Écart",
            "stat_terminal_depth": "Profondeur terminale",
            "stat_terminal_depth_tooltip": "Distance composée entre le prix d'entrée et le cover le plus profond. Chaque baisse s'enchaîne sur le prix du cover précédent : l'échelle complète descend donc bien plus bas que chaque écart individuel.",
            "stat_buy_weight": "Poids d'achat total",
            "stat_buy_weight_tooltip": "Somme des multiplicateurs d'achat de couverture. Un poids plus élevé peut améliorer la force moyenne mais réserve plus de capital.",
            "stat_mix": "Mix Scalp / DCA",
            "stat_mix_tooltip": "Nombre de couvertures de scalp par rapport aux couvertures de DCA. Les couvertures de scalp visent des sorties indépendantes plus petites ; les couvertures de DCA priorisent le lissage de l'ensemble de la session.",
            "no_change": "Aucun changement",
            "rows": {
                "initial_buy_size": {
                    "label": "Montant de référence",
                    "subLabel": "Montant d'achat de référence (1X) pour la taille des ordres",
                    "tooltip": "Pourcentage des fonds du bot utilisé comme montant d'achat de référence (1X) pour calculer la taille de chaque ordre et grille."
                },
                "dca_tp": {
                    "label": "Take profit DCA",
                    "subLabel": "Objectif de sortie au niveau de la session",
                    "tooltip": "Seuil de profit utilisé pour clôturer l'ensemble de la session DCA après lissage."
                },
                "dca_pb": {
                    "label": "Pullback DCA",
                    "subLabel": "Tampon de sortie suiveur",
                    "tooltip": "Retracement de prix requis après que la cible de take profit DCA est atteinte. Les valeurs plus élevées attendent plus longtemps avant de vendre."
                },
                "scalp_tp": {
                    "label": "Take profit scalp",
                    "subLabel": "Cible de sortie de couverture indépendante",
                    "tooltip": "Objectif de profit utilisé pour les couvertures de scalp qui se ferment indépendamment tant que la session DCA principale reste ouverte."
                },
                "scalp_pb": {
                    "label": "Pullback scalp",
                    "subLabel": "Tampon suiveur scalp",
                    "tooltip": "Retracement suiveur utilisé avant de fermer les couvertures scalp individuelles après que leur cible a été atteinte."
                },
                "grid_levels": {
                    "label": "Niveaux de grille",
                    "subLabel": "Couches d'achat totales",
                    "tooltip": "Nombre de niveaux de couverture disponibles pour les baisses de prix."
                }
            },
            "changed_settings_tooltip": "Différences de configuration uniquement. Ouvrez Déploiement pour connaître l'action et le déclencheur de chaque champ.",
            "levels_differ": "{{count}} niveau(x) de cover diffèrent entre l'échelle active et la recommandation (espacement, poids d'achat, type ou réglages de repli).",
            "sync": {
                "in_sync_applied_title": "Appliquée - votre bot est synchronisé",
                "in_sync_title": "Votre bot correspond déjà à cette recommandation",
                "in_sync_desc": "Tous les réglages et niveaux comparés correspondent déjà. L'appliquer à nouveau ne changerait rien.",
                "drift_title": "Appliquée, mais le bot diffère aujourd'hui",
                "drift_desc": "{{count}} différence(s) subsistent entre le bot et cette recommandation. Ouvrez Déploiement pour voir si chaque champ est actif, conservé, différé ou bloqué.",
                "show_details": "Afficher la comparaison complète",
                "hide_details": "Masquer la comparaison complète"
            }
        },
        "grid_visualizer": {
            "no_levels": "Aucun niveau de grille",
            "levels": "Niveaux",
            "depth": "Profondeur",
            "buy_weight": "Poids d'achat",
            "price_drop": "Écart depuis le précédent :",
            "buy_multiplier": "Multiplicateur d'achat :",
            "pullback": "Pullback :",
            "keep_profit": "Conserver profit :",
            "entry": "Entrée",
            "cover_num": "Couverture #{{index}}",
            "terminal_drop": "Profondeur terminale de {{drop}}",
            "cumulative_depth": "Sous l'entrée :",
            "depth_tooltip": "Profondeur terminale : distance composée entre le prix d'entrée et le cover le plus profond de l'échelle.",
            "buy_weight_tooltip": "Somme des multiplicateurs d'achat des covers. Le capital réservé aux covers vaut ce poids multiplié par le montant de l'achat initial."
        },
        "empty_state": {
            "title": "Aucune donnée d'optimisation pour le moment",
            "desc": "L'optimiseur analyse ce marché et propose des réglages de grille adaptés aux conditions actuelles. Chaque suggestion est testée sur des données inédites avant d'apparaître ici.",
            "waiting": "En attente de la prochaine exécution planifiée de l'optimiseur",
            "admin_hint": "En tant qu'administrateur, vous pouvez lancer une optimisation maintenant pour générer les premières recommandations de cette paire.",
            "configure_run": "Configurer et lancer l'optimisation",
            "hide_form": "Masquer la configuration",
            "steps": {
                "fetch": {
                    "label": "Collecter les données",
                    "text": "Rassembler l'historique récent des prix pour cette paire."
                },
                "classify": {
                    "label": "Lire les conditions",
                    "text": "Détecter si le marché est en tendance, en range ou agité."
                },
                "optimize": {
                    "label": "Chercher les réglages",
                    "text": "Tester de nombreuses configurations de grille pour trouver les meilleures."
                },
                "safety": {
                    "label": "Valider et protéger",
                    "text": "Ne conserver que les réglages qui passent des contrôles stricts sur des données inédites."
                }
            },
            "admin_controls": "Contrôles administrateur"
        },
        "header": {
            "how_it_works": "Comment ça marche"
        },
        "explainer": {
            "tab_overview": "Qu'est-ce que l'Optimiseur ?",
            "badge_ai": "Conseiller IA",
            "tab_generation": "Création des recommandations",
            "badge_backtest": "Walk-Forward",
            "tab_autoapply": "Fonctionnement de l'Auto-Application",
            "badge_automation": "Automatisé",
            "tab_safety": "Protection du capital & des ordres",
            "badge_safety": "Déploiement sécurisé",
            "modal_title": "Comprendre l'Optimiseur de Stratégie",
            "modal_subtitle": "Découvrez comment BotChain utilise les simulations Walk-Forward et les règles de sécurité pour protéger votre capital.",
            "overview_heading": "Un conseiller de trading autonome propulsé par l'IA",
            "overview_desc": "Les marchés crypto alternent constamment entre tendances, ranges et forte volatilité. L'optimiseur analyse en continu les conditions de marché et les données historiques pour recommander la stratégie idéale.",
            "step1_title": "1. Analyse du marché",
            "step1_desc": "Détecte le régime actuel (Haussier, Baisssier, En range, Volatil) avec les données en direct.",
            "step2_title": "2. Simulation & Backtests",
            "step2_desc": "Simule des milliers de configurations sur des fenêtres historiques pour éviter le surapprentissage.",
            "step3_title": "3. Filtres de sécurité",
            "step3_desc": "Vérifie les scores de confiance, le drawdown et la correspondance du régime avant validation.",
            "gen_heading": "Méthodologie Walk-Forward Multi-Phases",
            "gen_desc": "Pour éviter le surapprentissage, BotChain divise les données historiques en 3 fenêtres distinctes :",
            "train_phase_title": "Entraînement initial",
            "train_phase_desc": "L'optimiseur teste des milliers de combinaisons de grilles pour trouver les meilleurs candidats.",
            "val_phase_title": "Phase de validation",
            "val_phase_desc": "Les meilleurs candidats sont validés sur des données séparées pour affiner les paramètres.",
            "test_phase_title": "Test en aveugle hors-échantillon",
            "test_phase_desc": "Le candidat final est testé sur des données récentes cachées. Le rendement obtenu est le véritable indicateur de fiabilité.",
            "auto_heading": "Optimisation automatique avec contrôle de sécurité",
            "auto_desc": "Choisissez entre le mode Manuel ou Automatique. En mode Automatique, BotChain déploie la recommandation dès que les règles de sécurité sont remplies.",
            "auto_rule1_title": "Seuil de confiance",
            "auto_rule1_desc": "Seules les recommandations ayant un score supérieur à votre seuil (ex: 75%) sont éligibles.",
            "auto_rule2_title": "Validation des filtres de sécurité",
            "auto_rule2_desc": "La recommandation doit valider toutes les règles de gestion des risques.",
            "safety_heading": "Zéro liquidation forcée ni position interrompue",
            "safety_desc": "Lorsqu'une stratégie est appliquée, BotChain ne ferme jamais vos ordres en cours. Il utilise le déploiement adaptatif.",
            "protection_1_title": "Positions actives & Objectifs de profit",
            "protection_1_desc": "Les nouveaux objectifs de profit s'appliquent immédiatement aux positions actives, tandis que les prix d'entrée et quantités exécutées restent préservés.",
            "protection_2_title": "Mise à jour des futurs ordres",
            "protection_2_desc": "Les nouveaux ordres et niveaux de grille inutilisés prennent immédiatement les paramètres optimisés.",
            "protection_3_title": "Revérification avant exécution",
            "protection_3_desc": "Avant de soumettre l'ordre à la platforme d'échange, le module d'exécution vérifie le solde du compte et la précision de l'ordre.",
            "footer_note": "Optimiseur de stratégie non-custodial BotChain"
        },
        "pipeline": {
            "header": "Pipeline d'optimisation & sécurité",
            "realtime": "Vérification en temps réel",
            "sensing": "Détection du régime de marché...",
            "running_sim": "Exécution des simulations...",
            "sim_passed": "Validation Walk-Forward confirmée",
            "awaiting_sim": "Aucune étude active",
            "gates_passed": "Tous les filtres de sécurité validés",
            "gates_review": "Exige une révision",
            "awaiting_recommendation": "En attente des résultats",
            "deployed_live": "Actif sur Binance",
            "partially_active": "Mise à jour en cours",
            "ready_to_deploy": "Prêt à appliquer",
            "idle": "Inactif",
            "step1_name": "Analyse marché",
            "step2_name": "Validation",
            "step3_name": "Sécurité",
            "step4_name": "Déploiement",
            "status_complete": "Validé",
            "status_active": "Actif",
            "status_review": "Révision",
            "status_idle": "En attente"
        },
        "overview": {
            "mismatch_title": "Condition de marché modifiée",
            "mismatch_notice": "La condition de marché en direct est actuellement {{current}}, et aucune stratégie récente n'existe encore pour elle. Vous consultez la stratégie disponible la plus proche, construite pour {{rec}}. Elle reste applicable en toute sécurité — le service d'adaptation automatique changera les paramètres dès qu'une stratégie correspondante sera disponible.",
            "mismatch_notice_alternative": "La condition de marché en direct est passée à {{current}}. Vous consultez la stratégie actuellement exécutée sur ce bot, construite pour {{rec}}. Une stratégie adaptée à {{current}} est disponible.",
            "match_unavailable": "no matching recommendation passed the publication requirements"
        },
        "section": {
            "running_bg": "Optimisation en cours en arrière-plan...",
            "tab_overview": "Aperçu & Comparaison",
            "tab_backtest": "Preuves de Backtest",
            "tab_history": "Historique",
            "run_engine": "Lancer le moteur",
            "engine_title": "Moteur de l'optimiseur",
            "recommendation_desc": "Recommandation de {{regime}} | {{confidence}} de confiance",
            "fallback_desc": "Recommandations de grille sensibles au régime et preuves de backtest.",
            "safety_checked": "Contrôle de sécurité",
            "review": "Revue",
            "gmm_hmm": "IA par Apprentissage Automatique",
            "run_status_msg": "Mode : {{mode}} | Statut : {{status}} | Progression : {{progress}}%",
            "tab_recommendation": "Recommandation",
            "tab_analysis": "Analyse",
            "recommendation_ready_desc": "Stratégie prête pour {{regime}} — {{trust}}",
            "analyzing_desc": "Analyse du marché en cours — les recommandations arrivent",
            "working_chip": "En cours",
            "automation_title": "Automatisation",
            "automation_on": "Application auto activée — les stratégies validées se déploient lors des changements de condition confirmés",
            "automation_off": "Application auto désactivée — chaque changement nécessite votre validation",
            "tab_validation": "Validation",
            "tab_strategy": "Stratégie"
        },
        "status": {
            "waiting": "En attente",
            "waiting_match": "En attente de correspondance",
            "health": "Moteur de l'optimiseur",
            "market": "Marché en direct",
            "awaiting_condition": "En attente d'une lecture de marché stable",
            "strategy": "Stratégie active",
            "no_live_regime": "En attente de détection",
            "trigger": "Déclencheur"
        },
        "lifecycle": {
            "waiting": "En attente",
            "unknown_title": "Disponibilité de l'optimiseur inconnue"
        },
        "parameters_preview": {
            "sheet_title": "Fiche de stratégie détaillée",
            "backtest_capital": "Capital de backtest",
            "backtest_capital_tooltip": "Capital simulé initial utilisé pour exécuter le backtest de cette recommandation.",
            "fee_assumption": "Hypothèse de frais",
            "fee_assumption_tooltip": "Taux de frais de trading standard supposé par le simulateur pour les opérations d'achat et de vente sur {{exchange}}.",
            "optimized_grid_shape": "Forme de grille optimisée",
            "grid_levels": "Niveaux de grille",
            "grid_levels_tooltip": "Niveaux de couverture totaux et leur répartition entre l'exécution scalp et DCA.",
            "initial_buy": "Allocation d'achat de référence",
            "initial_buy_helper": "unités 1X en %",
            "initial_buy_tooltip": "Pourcentage d'allocation de référence utilisé pour calculer la taille de position 1X pour les nouveaux covers et l'achat initial de session.",
            "reference_buy": "Allocation d'achat de référence",
            "reference_buy_helper": "unités 1X en %",
            "reference_buy_tooltip": "Pourcentage d'allocation de référence utilisé pour calculer la taille de position 1X pour les nouveaux covers et l'achat initial de session.",
            "progressive_tail": "Grille active progressive",
            "progressive_tail_helper": "niveaux de queue non exécutés mis à jour",
            "progressive_tail_tooltip": "La mise à jour progressive en session active applique les modifications aux niveaux de queue non exécutés tout en conservant intactes les positions exécutées.",
            "terminal_depth": "Profondeur terminale",
            "terminal_depth_helper": "couverture la plus profonde sous l'entrée",
            "terminal_depth_tooltip": "Distance composée entre le prix d'entrée et le cover le plus profond de l'échelle. Chaque baisse est mesurée depuis le cover précédent : les profondeurs se multiplient le long de la grille.",
            "dca_tp": "Take Profit DCA",
            "dca_tp_helper": "cible globale de session",
            "dca_tp_tooltip": "Objectif de profit utilisé lors de la clôture de l'ensemble de la session DCA.",
            "dca_pb": "Pullback DCA",
            "dca_pb_helper": "tampon de vente suiveur",
            "dca_pb_tooltip": "Retracement toléré après l'atteinte de la cible avant l'exécution de la vente de session.",
            "scalp_tp": "Take Profit Scalp",
            "scalp_tp_helper": "cible de couverture indépendante",
            "scalp_tp_tooltip": "Objectif de profit pour les couvertures scalp pouvant se vendre indépendamment de la session DCA principale.",
            "scalp_pb": "Pullback Scalp",
            "scalp_pb_helper": "tampon suiveur scalp",
            "scalp_pb_tooltip": "Retracement toléré après l'atteinte de la cible scalp avant de vendre la couverture scalp.",
            "buy_weight": "Poids d'achat",
            "buy_weight_helper": "somme des multiplicateurs de couverture",
            "buy_weight_tooltip": "Poids total du multiplicateur de couverture après l'ordre initial. Des valeurs plus élevées nécessitent plus de capital réservé.",
            "avg_pb": "Pullback moyen",
            "avg_pb_helper": "à travers les niveaux de couverture",
            "avg_pb_tooltip": "Pullback moyen configuré à travers les niveaux de couverture.",
            "sheet_summary": "{{count}} couvertures | {{depth}} de profondeur terminale | {{weight}}x de poids d'achat",
            "grid_levels_helper": "{{scalp}} scalp / {{dca}} DCA"
        },
        "recommendation_card": {
            "confidence": "Confiance",
            "net_profit": "Rendement du régime actif",
            "legacy_test_return": "Ancien rendement de test",
            "max_dd": "Max DD",
            "safety": "Sécurité",
            "safety_gate": "Barrière de sécurité",
            "applied": "Appliqué",
            "historical": "Historique",
            "apply_desc": "L'application met à jour les paramètres de stratégie du bot et les futurs niveaux de couverture éligibles.",
            "fitness_tooltip": "Validation Fitness (Qualité Stratégie) : Mesure la performance de ces paramètres de grille dans les simulations de backtest, synthétisant le profit net, le ratio de Sharpe et le contrôle du drawdown.",
            "confidence_tooltip": "Regime Confidence (Certitude Marché) : Certitude du modèle de machine learning que le marché en direct correspond à ce régime. Utilisé par Auto-Apply pour déployer les paramètres.",
            "sharpe": "Sharpe",
            "sharpe_tooltip": "Ratio de rendement ajusté au risque.",
            "win_rate": "Taux de réussite",
            "win_rate_tooltip": "Part des sessions simulées terminées qui se sont clôturées avec profit.",
            "sessions": "Sessions",
            "sessions_tooltip": "Sessions terminées dans les métriques de backtest enregistrées.",
            "overfit_gap": "Écart d'overfitting",
            "overfit_gap_tooltip": "Fitness d'entraînement moins fitness de validation, en points sur l'échelle 0-100. Plus c'est bas, mieux c'est ; la garde de sécurité échoue au-delà de 30 points.",
            "expand": "Développer les détails de la recommandation",
            "collapse": "Masquer les détails de la recommandation",
            "applying": "Application...",
            "apply_btn": "Appliquer la recommandation",
            "tooltip_validation_fitness": "Qualité de validation (qualité de la stratégie) : mesure la performance de ces paramètres de grille dans les simulations de backtest, résumant le bénéfice net, le ratio de Sharpe et le contrôle du drawdown.",
            "tooltip_confidence": "Ancien score de preuves de déploiement. La probabilité du régime en direct est affichée séparément.",
            "tooltip_evidence": "Les preuves de déploiement combinent qualité de validation, sécurité, robustesse et aptitude au déploiement. Ce n'est ni la probabilité du régime en direct ni une prévision de profit.",
            "tooltip_sharpe": "Ratio de rendement ajusté au risque.",
            "tooltip_win_rate": "Part des sessions simulées terminées qui se sont clôturées avec profit.",
            "tooltip_sessions": "Sessions terminées dans les métriques de backtest enregistrées.",
            "tooltip_overfit_gap": "Fitness d'entraînement moins fitness de validation, en points sur l'échelle 0-100. Plus c'est bas, mieux c'est ; la garde de sécurité échoue au-delà de 30 points."
        },
        "recommendation_list": {
            "no_history_title": "Aucun historique de recommandation pour le moment",
            "no_history_desc": "Les exécutions terminées de l'optimiseur apparaîtront ici par régime et date de création.",
            "history_title": "Historique des recommandations",
            "last_successful_run": "Dernière exécution réussie",
            "loaded_count_one": "{{count}} recommandation chargée",
            "loaded_count_other": "{{count}} recommandations chargées",
            "latest_output": "Dernier résultat enregistré :",
            "load_more": "Charger plus",
            "loaded_count": "Loaded Count"
        },
        "regime_status": {
            "current_market_regime": "Régime actuel du marché",
            "waiting_data": "En attente de l'optimiseur ou des données du classificateur en direct.",
            "active_market_regime": "Régime de marché actif",
            "matching_recommendation": "Recommandation correspondante",
            "no_matching_recommendation": "Aucune recommandation correspondante exacte",
            "family": "Famille",
            "detected": "Détecté",
            "tooltip_classifier": "Le classificateur de régime de marché associe les conditions actuelles de tendance, volatilité et volume à un état structurel. Les recommandations sont générées par régime car une grille ne se comporte pas aussi bien dans tous les marchés.",
            "confidence_label": "{{confidence}} de confiance",
            "current_regime": "Régime de marché actuel",
            "tooltip": "Le classificateur de régime de marché cartographie la tendance actuelle, la volatilité et les conditions de volume dans un état structurel. Les recommandations sont générées par régime car une grille ne se comporte pas aussi bien sur tous les marchés.",
            "active_regime": "Régime de marché actif",
            "matching_rec": "Recommandation correspondante",
            "no_match": "Aucune recommandation correspondante exacte",
            "warming_title": "Détection de la condition de marché en préparation",
            "warming_desc": "Le classifieur en direct se rafraîchit toutes les 4 heures et publie une condition dès qu'il a analysé ce marché. Les recommandations ci-dessous restent utilisables — chacune indique la condition pour laquelle elle a été construite.",
            "live_market_condition": "Condition de marché en direct",
            "live": "En direct",
            "stabilizing": "Stabilisation",
            "stabilizing_tooltip": "Une condition est confirmée après 3 lectures consécutives de 4 heures concordantes. D'ici là, il s'agit de la dernière lecture brute."
        },
        "run_optimization": {
            "run_in_progress": "Exécution de l'optimisation en cours",
            "progress": "Progression",
            "run_engine": "Lancer le moteur de l'optimiseur",
            "run_engine_desc": "Mettre en file d'attente une étude d'optimisation pour cette paire de bots. Une exécution complète peut prendre des heures et n'enregistre que les recommandations qui passent la validation et les contrôles de sécurité.",
            "start_run": "Lancer",
            "optuna_trials": "Essais Optuna",
            "trials_desc": "Des essais plus élevés peuvent améliorer le raffinement local mais augmentent le temps d'exécution. Fetch-only ignore cette valeur.",
            "walk_forward_title": "Walk-forward",
            "walk_forward_desc": "12m entrainement, 6m validation, 3m test hors échantillon.",
            "search_title": "Recherche",
            "search_desc": "L'évolution différentielle amorce Optuna TPE pour les grilles spécifiques au régime.",
            "saved_output_title": "Résultat enregistré",
            "saved_output_desc": "Seules les recommandations déployables sont enregistrées dans l'historique.",
            "run_failed": "Dernière exécution échouée",
            "run_completed": "Dernière exécution réussie"
        },
        "walk_forward": {
            "title": "Validation Walk-forward",
            "tooltip": "La validation Walk-forward effectue des recherches sur les données d'entraînement, sélectionne les paramètres sur les données de validation, puis vérifie la configuration sélectionnée sur des données de test non observées. Des scores de validation et de test stables sont plus crédibles qu'un score d'entraînement élevé seul.",
            "desc": "La qualité des preuves dépend de la part de performance qui survit en dehors de l'échantillon d'optimisation.",
            "gap_pct": "Δ {{gap}} pts",
            "retained": "{{pct}}% conservé",
            "train": {
                "label": "Entraînement",
                "sub": "échantillon de recherche",
                "tooltip": "Le score d'entraînement est le score de l'échantillon historique utilisé pour rechercher des candidats de paramètres. Il est utile, mais plus facile à sur-ajuster."
            },
            "val": {
                "label": "Validation",
                "sub_fallback": "échantillon de sélection",
                "tooltip": "Le score de validation est mesuré sur des données ultérieures non utilisées pour la recherche initiale. L'optimiseur l'utilise pour choisir un candidat plus robuste."
            },
            "test": {
                "label": "Test",
                "sub_fallback": "échantillon invisible",
                "tooltip": "Le score de test est mesuré sur la dernière tranche invisible. C'est le proxy le plus proche de la façon dont la recommandation s'est généralisée."
            }
        },
        "backtest_tab": {
            "returns_title": "Rendements & Référence",
            "risk_title": "Profil de risque",
            "execution_title": "Dynamique d'exécution",
            "readiness_title": "Validation & Déploiement",
            "sessions_count_helper": "{{count}} sessions clôturées (min {{min}})",
            "capital": "Capital",
            "sharpe": "Sharpe",
            "sessions": "Sessions",
            "stuck_rate": "Taux de blocage",
            "deployability": "Déployabilité",
            "active_exposure": "Exposition active",
            "days_count": "{{count}} jours",
            "occurrences_count": "{{count}} occurrences ({{evaluated}} évaluées)",
            "occurrences_count_short": "{{count}} épisodes",
            "episode_quality": "Qualité des épisodes",
            "median_episode_return": "médiane {{value}} par épisode",
            "median_episode_return_short": "médiane {{value}}",
            "benchmark_excess": "Vs achat-conservation actif",
            "benchmark_helper": "excès en points de pourcentage",
            "no_metrics": "Aucune métrique de backtest trouvée.",
            "phases": {
                "train_desc": "La recherche globale et locale des paramètres s'effectue ici.",
                "val_desc": "Les candidats sont sélectionnés sur des données ultérieures non observées.",
                "test_desc": "Évaluation aveugle finale utilisée pour les preuves de déployabilité."
            },
            "validated_title": "Comment cette recommandation a été validée",
            "validated_desc": "Le moteur optimise sur les épisodes historiques de régime, valide le déclin des paramètres, puis évalue la configuration sélectionnée sur une fenêtre de test aveugle à l'aide du simulateur de grille spot haute fidélité.",
            "exchange": "Plateforme",
            "profile": "Profondeur d'étude",
            "profile_standard": "Standard",
            "profile_advanced": "Validation avancée",
            "search_space": "Espace de recherche",
            "epoch": "Époque",
            "test_budget": "budget de test",
            "test_split": "division de test",
            "risk_adjusted": "ajusté au risque",
            "ceiling_pct": "plafond {{pct}}",
            "closed_sessions": "sessions fermées",
            "minimum_count": "minimum {{count}}",
            "limit_pct": "limite {{pct}}",
            "simulator_score": "score du simulateur",
            "safety_gate_checklist": "Liste de contrôle de la barrière de sécurité",
            "production_checks_desc": "Tous les contrôles de production doivent réussir avant l'enregistrement.",
            "dataset_slices_title": "Tranches de données et conditions de test",
            "historical_range": "Plage historique :",
            "interval": "Intervalle :",
            "mode": "Mode :",
            "grid_structure": "Structure de la grille",
            "scalp": "Scalp",
            "dca": "DCA",
            "optimization_pipeline": "Pipeline d'optimisation",
            "classifier": "Classificateur",
            "classifier_desc": "Caractéristiques de 4h, décodage de Viterbi, alignement stable des étiquettes.",
            "stage1": "Étape 1",
            "de": "Évolution différentielle",
            "de_desc": "{{count}} générations, recherche globale.",
            "stage2": "Étape 2",
            "optuna": "Optuna TPE",
            "optuna_desc_runs": "{{count}} essais de raffinement local.",
            "pchip_desc": "La grille est projetée à partir d'un espace de recherche PCHIP lisse à 18 dimensions au lieu d'optimiser chaque couverture indépendamment, ce qui maintient la cohérence de l'espacement et de l'allocation du capital.",
            "simulator_assumptions": "Hypothèses du simulateur",
            "fee_rate": "Taux de frais",
            "min_notional": "Notionnel min",
            "capital_at_risk": "Capital à risque",
            "ending_dd": "DD flottant de fin",
            "simulation_desc": "La simulation comprend la capitalisation, les frais d'achat/vente, le glissement déterministe défavorable et le suivi de l'exposition pondérée dans le temps.",
            "multifold_robustness": "Robustesse multi-plis",
            "robustness": "Robustness",
            "stability": "Stabilité",
            "folds": "Plis (Folds)",
            "overfit_ratio": "Ratio de sur-ajustement",
            "regime_coverage": "Couverture du régime",
            "deployable_coverage": "Couverture déployable",
            "reduced_coverage": "Couverture réduite",
            "candles_count": "{{count}} bougies",
            "search_diagnostics": "Diagnostics de recherche",
            "unique_candidates": "Candidats uniques",
            "duplicate_collapse": "Affaissement des doublons",
            "best_de_fitness": "Meilleure fitness DE",
            "win_rate": "Taux de réussite",
            "tooltip_capital": "Capital simulé utilisé pour chaque backtest ($). Les profits et rendements sont mesurés sur ce budget - pas sur les fonds réels de votre bot.",
            "tooltip_net_profit": "Rendement valorisé au prix du marché produit uniquement pendant les occurrences évaluées de ce régime cible dans le test aveugle. Les rendements des épisodes sont chaînés sur la totalité du capital simulé alloué ; la ligne inférieure montre le même P&L en dollars.",
            "tooltip_legacy_test_return": "Les anciennes recommandations utilisent l'ancien calcul sur toute la période de test. Régénérez la recommandation pour obtenir les preuves de rendement actif par régime valorisées au prix du marché.",
            "tooltip_active_exposure": "Durée écoulée et nombre d'occurrences pendant lesquelles le régime cible était présent dans le test aveugle. Les intervalles calendaires entre occurrences sont exclus.",
            "tooltip_episode_quality": "Part des épisodes du régime cible avec un rendement valorisé au prix du marché positif. La médiane aide à détecter si une occurrence exceptionnelle domine le total.",
            "tooltip_benchmark_excess": "Rendement de la stratégie moins celui d'un achat-conservation sans friction sur les mêmes épisodes du régime cible. Cette mesure contextuelle ne sert ni au classement ni aux barrières de sécurité.",
            "tooltip_sharpe": "Ratio de rendement ajusté au risque. Des valeurs plus élevées indiquent un meilleur rendement par unité de volatilité.",
            "tooltip_max_dd": "Drawdown maximum observé pendant la fenêtre de test aveugle.",
            "tooltip_win_rate": "Part des sessions terminées qui se sont fermées avec profit.",
            "tooltip_sessions": "Sessions de grille terminées dans la division de test. Trop peu de sessions peuvent rendre les performances peu fiables.",
            "tooltip_stuck": "Ratio de sessions simulées restées non résolues. Plus bas c'est, mieux c'est.",
            "tooltip_score": "Score du simulateur interne représentant le niveau de sécurité avec lequel la configuration peut être déployée.",
            "tooltip_robustness": "Composite calculé par le moteur : fitness moyenne de validation pondérée à 60 %, pénalité de stabilité à 20 % et pénalité de sur-ajustement à 20 %. Affiché en points de score.",
            "tooltip_folds": "Nombre de plis walk-forward terminés utilisés dans l'exécution de validation robuste facultative.",
            "tooltip_stability": "Écart type de la fitness de validation sur les plis terminés, affiché en points de score. Plus bas signifie plus stable.",
            "tooltip_overfit_ratio": "Dégradation moyenne entraînement-vers-validation sur les plis : (fitness d'entraînement - fitness de validation) / fitness d'entraînement. Une valeur négative signifie que la validation a surperformé l'entraînement.",
            "classifier_value": "Edge GMM-HMM",
            "net_profit_usd": "P&L valorisé {{amount}} $ sur {{capital}} $",
            "engine_verdict": "Verdict du moteur",
            "engine_verdict_tooltip": "Ce verdict a été calculé et enregistré par le moteur d'optimisation lui-même à la fin de l'étude — il n'est pas recalculé par le tableau de bord.",
            "robustness_helper": "Score composite 0-100",
            "folds_helper": "Fenêtres validées",
            "stability_helper": "Écart type de la fitness de validation",
            "overfit_ratio_helper": "(entraînement - validation) / entraînement",
            "data_advisory_title": "Historique de chandeliers natif limité sur cet exchange",
            "data_advisory_desc": "Cette étude a été entraînée sur {{months}} mois d'historique {{exchange}} — la fenêtre complète entraînement/validation/test nécessite environ {{required}} mois. Utiliser l'historique plus profond de Binance comme base d'entraînement offrirait une fondation plus fiable, tandis que les frais, les contraintes d'ordres et les recommandations produites restent spécifiques à {{exchange}}.",
            "data_baseline_note": "Entraîné sur la base de données {{dataExchange}} pour un historique plus profond. Les frais, les contraintes d'ordres et cette recommandation restent spécifiques à {{exchange}}.",
            "compact_windows": "Fenêtres compactes",
            "tooltip_compact_windows": "L'historique était trop court pour les fenêtres standards de 12/6/3 mois ; des fenêtres réduites de 6/3/2 mois ont donc été utilisées. Les scores sont de véritables résultats hors échantillon mais reposent sur moins de données.",
            "wf_insufficient_title": "Historique insuffisant pour la validation multi-plis",
            "wf_insufficient_desc": "Aucun pli walk-forward ne contenait assez de données exclusives pour cette condition de marché ({{months}} mois d'historique disponibles). Les scores sont volontairement laissés vides plutôt que d'afficher des zéros trompeurs — la validation holdout ci-dessus reste applicable.",
            "folds_validated": "{{validated}} / {{count}}",
            "folds_validated_helper": "Fenêtres validées / plis",
            "passed": "Passed",
            "performance_safety_desc": "Key metrics, Walk-Forward fitness score & production safety gates",
            "performance_safety_title": "Performance Metrics & Safety Checklist",
            "completed_cycles": "Cycles complétés",
            "max_drawdown_label": "Drawdown Max",
            "scalps_short": "scalps",
            "sess_short": "sess",
            "sharpe_label": "Ratio de Sharpe"
        },
        "overview_tab": {
            "no_params_title": "Aucun paramètre optimisé n'existe pour le régime actuel.",
            "no_params_desc": "Exécutez le moteur pour récupérer les données, entraîner le modèle de régime, optimiser les grilles et enregistrer les recommandations qui passent la validation de sécurité.",
            "run_btn": "Exécuter l'optimiseur maintenant",
            "type_label": "Recommandation spécifique au régime",
            "applied_badge": "Actuellement appliqué",
            "title": "Grille recommandée pour {{regime}}",
            "description": "Généré à partir de la recherche de grille lisse à 18 paramètres de l'optimiseur, réglé pour ce régime de marché et testé sur des données d'entraînement, de validation et de test hors échantillon.",
            "created": "Créé",
            "search_mode": "Mode de recherche",
            "trials": "Essais",
            "interval": "Intervalle",
            "validation_fitness": "Fitness de validation",
            "test_net_profit": "Bénéfice net test",
            "out_of_sample_split": "division hors échantillon",
            "max_drawdown": "Drawdown max",
            "completed_sessions_count": "{{count}} sessions terminées",
            "safety_desc": "Les recommandations enregistrées doivent passer la barrière avant le déploiement. Les anciennes charges utiles peuvent omettre certaines métriques détaillées.",
            "deployment_path": "Chemin de déploiement",
            "est_remaining_capital": "Capital restant estimé : {{remaining}} / {{available}} {{unit}}",
            "execution_model": "Modèle d'exécution",
            "high_fidelity_simulator": "Simulateur haute fidélité",
            "execution_model_desc": "Les mesures de test incluent la capitalisation, les frais d'achat et de vente, le glissement déterministe défavorable et l'utilisation du capital pondérée dans le temps.",
            "execution_details": "Frais : {{fee}} | Utilisation : {{utilization}}",
            "apply_notice": "L'application met à jour la configuration en direct sur {{exchange}}. Les grilles actives sont protégées par des contrôles d'index et de capital restant avant que les tailles de couverture ne soient modifiées.",
            "applying": "Application de la recommandation...",
            "apply_btn": "Appliquer la grille optimisée",
            "applied_label": "Recommandation appliquée",
            "tooltip_created": "Quand cette recommandation optimisée a été générée par le moteur.",
            "tooltip_search_mode": "L'algorithme de stratégie de recherche utilisé pour scanner les paramètres.",
            "tooltip_trials": "Nombre de backtests de stratégie simulés pendant l'exécution de l'optimisation.",
            "tooltip_interval": "Résolution des bougies de données historiques utilisée pour la simulation du backtest.",
            "tooltip_confidence": "Confiance dans le régime (certitude du marché) : certitude du classificateur d'apprentissage automatique que la structure actuelle du marché en direct correspond à ce régime. L'auto-application utilise ce score par rapport au seuil configuré pour activer les paramètres.",
            "tooltip_validation_fitness": "Qualité de validation (qualité de la stratégie) : mesure la performance de ces paramètres de grille dans les backtests de validation, en pondérant les rendements, le ratio de Sharpe, le contrôle du drawdown et l'utilisation du capital.",
            "tooltip_test_net_profit": "Bénéfice net mesuré sur la période de test aveugle finale. Il s'agit de la preuve de rentabilité la plus pertinente.",
            "tooltip_max_drawdown": "Le plus grand drawdown de pic à creux observé pendant la simulation de test.",
            "tooltip_win_rate": "Part des sessions simulées terminées qui se sont clôturées avec profit."
        },
        "run_panel": {
            "modes": {
                "full": {
                    "label": "Pipeline complet",
                    "desc": "Récupérer les données, entraîner le classificateur GMM-HMM, optimiser, valider, appliquer la barrière de sécurité et enregistrer les recommandations."
                },
                "optimize": {
                    "label": "Optimisation uniquement",
                    "desc": "Réutiliser les données de marché et les artefacts de modèle disponibles, et exécuter la recherche de paramètres ainsi que la validation."
                },
                "fetch": {
                    "label": "Récupération de données uniquement",
                    "desc": "Actualiser les bougies sans créer de recommandations."
                }
            },
            "running_title": "Exécution de l'optimisation en cours",
            "started_at": "Démarré",
            "status_label": "Statut {{status}}",
            "progress": "Progression",
            "title": "Exécuter le moteur d'optimisation",
            "desc": "Placer une étude d'optimisation en file d'attente pour cette paire de bot. Une exécution complète peut prendre des heures et n'enregistre que les recommandations qui passent les contrôles de validation et de sécurité.",
            "start_btn": "Démarrer l'exécution",
            "optuna_trials": "Essais Optuna",
            "optuna_desc": "Des essais plus élevés peuvent améliorer le raffinement local mais augmentent le temps d'exécution. Récupération uniquement ignore cette valeur.",
            "walk_forward": "Walk-forward",
            "walk_forward_desc": "12 mois d'entraînement, 6 mois de validation, 3 mois de test hors échantillon.",
            "search": "Recherche",
            "search_desc": "L'évolution différentielle initialise Optuna TPE pour les grilles spécifiques au régime.",
            "saved_output": "Résultat enregistré",
            "saved_output_desc": "Seules les recommandations déployables sont enregistrées dans l'historique.",
            "last_failed": "La dernière exécution a échoué",
            "last_completed": "Dernière exécution terminée",
            "created_count": "Créé {{count}}",
            "rejected_count": "Rejeté {{count}}",
            "mode_label": "Mode du pipeline",
            "profile_label": "Profondeur d'étude",
            "effective_cap": "Plafond effectif sur {{profile}} : ~{{count}} essais",
            "walk_forward_na": "Non applicable à ce mode.",
            "profiles": {
                "standard": {
                    "label": "Standard",
                    "desc": "Étude plus rapide avec validation holdout"
                },
                "advanced": {
                    "label": "Validation avancée",
                    "desc": "Recherche approfondie avec robustesse walk-forward"
                }
            },
            "data_baseline": "Base de données Binance",
            "data_baseline_suggested": "Suggéré",
            "data_baseline_desc": "Entraîner sur l'historique de chandeliers plus profond de Binance plutôt que sur l'archive native de cet exchange. Les frais, les contraintes d'ordres et les recommandations sauvegardées restent spécifiques à cet exchange.",
            "data_baseline_desc_suggested": "Seuls {{months}} mois d'historique natif sont disponibles ici — sous les ~21 mois nécessaires à la fenêtre complète entraînement/validation/test. Entraîner sur l'historique plus profond de Binance donne une base plus fiable ; les frais, contraintes d'ordres et recommandations restent spécifiques à cet exchange.",
            "admin_notice": "Avis administrateur",
            "insufficient_exchange_data_desc": "L'exchange cible ({{exchange}}) ne dispose pas des 2 ans de chandeliers continus requis pour une modélisation fiable des régimes. L'optimiseur utilisera automatiquement la base de chandeliers profonde de Binance pour l'entraînement et la validation walk-forward, tout en préservant les frais taker de {{exchange}}, les contraintes notionnelles minimales et les règles d'exécution en direct.",
            "insufficient_exchange_data_title": "Avis sur l'historique de l'exchange cible"
        },
        "presentation": {
            "unknown_regime": "Régime inconnu",
            "confidence": {
                "high": {
                    "label": "Forte conviction",
                    "desc": "Le classificateur associe fortement les données actuelles du marché à ce régime."
                },
                "moderate": {
                    "label": "Conviction modérée",
                    "desc": "La correspondance de régime est exploitable, mais la structure des prix peut encore tourner."
                },
                "low": {
                    "label": "Faible conviction",
                    "desc": "Traitez le signal de régime comme incertain et préférez un examen manuel."
                }
            },
            "evidence": {
                "high": {
                    "label": "Preuves solides",
                    "desc": "La recommandation dispose de preuves solides sur l'ensemble des contrôles persistés."
                },
                "moderate": {
                    "label": "Preuves modérées",
                    "desc": "La recommandation est exploitable, mais ses preuves de déploiement méritent une revue attentive."
                },
                "low": {
                    "label": "Preuves limitées",
                    "desc": "Privilégiez une revue manuelle jusqu'à disposer de preuves de validation plus solides."
                }
            },
            "fitness": {
                "strong": {
                    "label": "Preuve solide"
                },
                "balanced": {
                    "label": "Preuve équilibrée"
                },
                "thin": {
                    "label": "Preuve mince"
                }
            },
            "drawdown": {
                "controlled": {
                    "label": "Drawdown contrôlé"
                },
                "elevated": {
                    "label": "Drawdown élevé"
                },
                "high": {
                    "label": "Drawdown important"
                }
            },
            "overfitting": {
                "stable": {
                    "label": "Validation stable"
                },
                "warning": {
                    "label": "Alerte surajustement"
                },
                "risk": {
                    "label": "Risque surajustement"
                }
            },
            "regime": {
                "capitulation": {
                    "family": "Capitulation"
                },
                "shock": {
                    "family": "Choc"
                },
                "crash": {
                    "desc": "Pression baissière abrupte. L'optimiseur doit privilégier des espacements plus larges, la préservation du capital et une réentrée plus lente.",
                    "bias": "Couverture baissière plus large, urgence moindre, contrôle plus strict du capital."
                },
                "downtrend": {
                    "family": "Tendance défensive",
                    "desc": "Structure de tendance baissière. Les grilles recommandées évitent généralement de suracheter trop tôt et réservent du capital pour les couvertures plus profondes.",
                    "bias": "Échelle de couverture plus profonde avec plus de prudence avant d'investir."
                },
                "uptrend": {
                    "family": "Tendance de momentum",
                    "desc": "Structure de tendance haussière. L'optimiseur peut maintenir la grille plus proche du prix et donner la priorité à une réalisation plus rapide.",
                    "bias": "Entrées plus proches, capture de profit plus rapide, moins de capital inactif."
                },
                "high_vol_range": {
                    "family": "Plage à forte volatilité"
                },
                "range": {
                    "family": "Marché en range",
                    "desc": "Structure de retour à la moyenne ou latérale. L'optimiseur doit équilibrer les sorties fréquentes de scalping avec une profondeur suffisante pour les fausses cassures.",
                    "bias": "Espacement équilibré avec une plus grande importance accordée au recyclage de scalp."
                },
                "low_vol": {
                    "family": "Accumulation à faible volatilité",
                    "desc": "Structure d'accumulation calme. L'optimiseur peut utiliser des entrées plus serrées et lisses, mais doit éviter de supposer un élan de cassure.",
                    "bias": "Écarts incrémentaux plus serrés avec recyclage mesuré de scalp."
                },
                "mixed": {
                    "family": "Régime mixte",
                    "desc": "Structure de marché mixte. Vérifiez les preuves de déploiement et la stabilité du backtest avant d'appliquer automatiquement.",
                    "bias": "Grille équilibrée sans hypothèse directionnelle unique."
                }
            },
            "safety": {
                "overfitting": {
                    "label": "Écart de surajustement",
                    "desc": "La qualité sur les données d'entraînement ne doit pas trop dépasser celle sur les données de validation."
                },
                "profit": {
                    "label": "P&L du régime actif",
                    "desc": "Les épisodes du régime cible dans le test aveugle doivent produire un P&L valorisé au prix du marché positif sur le capital alloué."
                },
                "drawdown": {
                    "label": "Drawdown max",
                    "desc": "Le drawdown hors échantillon doit rester dans le plafond de risque configuré."
                },
                "sessions": {
                    "label": "Sessions terminées",
                    "desc": "Évite d'enregistrer des stratégies qui n'ont remporté qu'un seul trade surdimensionné ou bloqué."
                },
                "stuck": {
                    "label": "Sessions bloquées",
                    "desc": "Limite les sessions qui restent non résolues à la fin de la simulation."
                },
                "ending_drawdown": {
                    "label": "DD flottant de fin",
                    "desc": "Empêche de masquer une perte latente importante à la fin de la fenêtre de test."
                },
                "roi": {
                    "label": "ROI du régime actif",
                    "desc": "Les épisodes chaînés du régime cible dans le test aveugle doivent dépasser le rendement configuré sur le capital alloué."
                },
                "degradation": {
                    "label": "Dégradation Val-à-Test",
                    "desc": "Vérifie si les performances ont trop diminué entre les données de validation et les données de test aveugle."
                },
                "profit_factor": {
                    "desc": "Les gains économiques doivent dépasser les pertes réalisées, les frais et les pertes latentes finales.",
                    "label": "Facteur de profit"
                },
                "return_over_drawdown": {
                    "desc": "Requires enough return for the drawdown incurred.",
                    "label": "Return / drawdown"
                },
                "sharpe": {
                    "desc": "Requires positive risk-adjusted out-of-sample returns.",
                    "label": "Test Sharpe"
                }
            },
            "deployment": {
                "structural_label": "Mise à jour structurelle probable",
                "dynamic_label": "Repli uniquement dynamique possible",
                "active_desc": "Les positions actives sont protégées. Les niveaux achetés restent intacts ; les couvertures futures peuvent être reconstruites uniquement si les contrôles de solde et d'index réussissent.",
                "inactive_desc": "Aucune exposition active n'est détectée, la recommandation peut donc remplacer toute la structure de la grille."
            },
            "score_points": "{{value}} pts"
        },
        "deployment": {
            "full_badge": "Complet",
            "partial_badge": "Partiel",
            "full_title": "Recommandation entièrement déployée",
            "partial_title": "Réglages dynamiques appliqués ; structure de grille préservée",
            "full_practical": "Le bot utilise maintenant les réglages d'exécution optimisés et les niveaux de grille éligibles de cette recommandation. Les positions déjà ouvertes restent préservées.",
            "partial_practical": "Le bot utilise maintenant les take-profits et retracements optimisés. La taille des ordres et la forme de la grille restent ancrées sur la grille active jusqu'à ce qu'une mise à jour structurelle soit sûre.",
            "reason_label": "Pourquoi partiel :",
            "updated_now": "Mis à jour maintenant",
            "updated_now_tooltip": "Ces paramètres d'exécution (take-profit, pullback) sont dynamiques et s'appliquent immédiatement sans affecter les positions ouvertes.",
            "left_unchanged": "Conservé inchangé",
            "left_unchanged_tooltip": "Ces paramètres structurels (tailles d'ordre, multiplicateurs, covers) sont verrouillés pendant les sessions actives pour protéger les positions.",
            "structural_result": "Résultat structurel",
            "structural_result_tooltip": "Ces paramètres structurels (tailles d'ordre, multiplicateurs, covers) ont été appliqués avec succès à la configuration du bot.",
            "covers_deleted_from_index": "Supprimés depuis l'index",
            "cover_rows_deleted": "Covers supprimés",
            "cover_rows_written": "Covers écrits",
            "cover_rows_updated": "Covers mis à jour sur place",
            "structural_skipped": "Mises à jour structurelles",
            "skipped_status": "Ignorées (positions actives ouvertes)",
            "no_dynamic_details": "Les réglages dynamiques ont été appliqués.",
            "partial_locked_defaults": "La taille initiale, les multiplicateurs d'achat et le nombre de couvertures n'ont pas été réécrits.",
            "full_structural_defaults": "Les couvertures éligibles ont été reconstruites depuis la recommandation.",
            "retry_full_btn": "Réévaluer les changements restants",
            "partial_scheduled_title": "Réglages optimisés actifs — restructuration de la grille planifiée",
            "scheduled_badge": "Planifié",
            "timeline_title": "Chronologie du déploiement",
            "timeline_now": "Appliqué immédiatement",
            "timeline_now_desc": "Take-profit, retracement et ajustements sûrs de la grille — actifs dès le prochain tick de prix.",
            "timeline_pending": "Restructuration de la grille — planifiée",
            "timeline_pending_badge": "Prochaine session",
            "timeline_pending_desc": "La taille de l'ordre initial, les multiplicateurs d'achat et le nombre de covers sont reconstruits automatiquement dès que la session en cours se clôture et qu'une nouvelle démarre — le moment exact où aucune position ouverte ne peut être perturbée. Aucune action n'est requise de votre part.",
            "pending_next_session": "La restructuration de la grille est planifiée automatiquement au démarrage de la prochaine session."
        },
        "advisor": {
            "badge": "Recommandation IA",
            "headline": "Grille optimisée pour un marché {{regime}}",
            "generated": "Générée",
            "aging": "Données vieillissantes",
            "reliability": "Fiabilité",
            "trust_tooltip": "Agrégée à partir du verdict des contrôles de sécurité, de la confiance de déploiement, de la fraîcheur des données et de la correspondance avec la condition de marché en direct.",
            "fact_return": "Rendement backtesté",
            "fact_return_helper": "Test en aveugle sur 3 mois",
            "fact_return_helper_usd": "{{amount}} sur {{capital}} de capital de test",
            "tooltip_return": "Rendement obtenu sur les 3 derniers mois de données, que l'optimiseur n'a jamais vus pendant l'entraînement. Les performances passées ne préjugent pas des résultats futurs.",
            "fact_drawdown": "Pire baisse",
            "tooltip_drawdown": "Perte maximale entre un sommet et un creux pendant le test en aveugle. C'est le type de perte temporaire qu'il faut être prêt à traverser.",
            "fact_safety": "Contrôles de sécurité",
            "fact_safety_ok": "Tous les contrôles de production réussis",
            "fact_safety_warn": "À vérifier avant application",
            "tooltip_safety": "Contrôles indépendants sur données inédites : rentabilité, plafond de drawdown, surapprentissage, sessions terminées, sessions bloquées et dégradation. Le verdict affiché est la décision du moteur au moment de l'optimisation.",
            "fact_confidence": "Confiance",
            "fact_confidence_helper": "Score de déployabilité",
            "tooltip_confidence": "Niveau de confiance du moteur dans le déploiement de cette configuration telle quelle, basé sur la couverture des données, la cohérence de validation et le comportement du simulateur. Ce n'est pas une prédiction de profit.",
            "mismatch_notice": "La condition de marché en direct est actuellement {{current}}, et aucune stratégie récente n'existe encore pour elle. Vous consultez la stratégie disponible la plus proche, construite pour {{rec}}. Elle reste applicable en toute sécurité — le service d'adaptation automatique changera les paramètres dès qu'une stratégie correspondante sera disponible.",
            "how_built": "Comment cela a été construit"
        },
        "trust": {
            "high": "Fiabilité élevée",
            "medium": "Fiabilité modérée",
            "low": "À utiliser avec prudence",
            "reason_gate_ok": "A réussi tous les contrôles de sécurité hors échantillon",
            "reason_gate_fail": "A échoué à {{count}} contrôle(s) de sécurité sur données inédites",
            "reason_confidence_ok": "Confiance de déploiement solide ({{pct}} %)",
            "reason_confidence_low": "Confiance de déploiement modeste ({{pct}} %)",
            "reason_evidence_ok": "Preuves de déploiement solides ({{pct}} %)",
            "reason_evidence_low": "Preuves de déploiement limitées ({{pct}} %)",
            "reason_fresh": "Construite sur des données de marché récentes",
            "reason_aging": "Vieille de {{days}} jours — le marché a évolué depuis",
            "reason_regime_match": "Optimisée pour la condition de marché détectée en ce moment",
            "reason_regime_mismatch": "Optimisée pour une condition de marché différente de l'actuelle",
            "reason_regime_unknown": "Condition de marché en direct pas encore confirmée"
        },
        "gate": {
            "safety_ok": "Tous les contrôles de sécurité de production réussis",
            "safety_fail": "{{count}} contrôle(s) de sécurité a/ont échoué sur données inédites",
            "safety_desc": "La recommandation doit réussir tous les contrôles hors échantillon (rentabilité, drawdown, surapprentissage, sessions bloquées, dégradation).",
            "fresh": "La recommandation est récente",
            "freshness_desc": "Les recommandations de plus de 30 jours sont bloquées jusqu'à ce qu'une nouvelle étude soit générée.",
            "model_fail": "Le modèle de marché en direct est indisponible ou en cours de récupération",
            "model_desc": "Le classifieur de régime en ligne doit signaler un état sain avant qu'une stratégie puisse être déployée.",
            "regime_unconfirmed": "La condition de marché n'est pas encore confirmée",
            "regime_confirmed_desc": "Une condition est confirmée après 3 lectures consécutives de 4 heures concordantes. Cela évite d'agir sur du bruit passager.",
            "epoch_fail": "La recommandation n'est pas synchronisée avec le modèle en direct",
            "epoch_desc": "La recommandation, le classifieur en direct et l'état de l'optimiseur doivent tous partager la même époque de modèle.",
            "regime_unknown": "Condition de marché en direct pas encore confirmée",
            "match_desc": "Le régime cible de la recommandation doit correspondre au régime en direct confirmé pour être déployable.",
            "checklist_title": "Conditions d'application",
            "epoch_ok": "Model generation is synchronized",
            "match": "Strategy matches the live market condition",
            "mismatch": "Strategy does not match the live market condition",
            "model_ok": "Live market model is healthy",
            "regime_confirmed": "Market condition is confirmed",
            "stale": "Recommendation is {{days}} days old"
        },
        "request_panel": {
            "queued_title": "Étude en file d'attente",
            "queued_desc": "Votre demande est en file derrière d'autres études. Elle démarre automatiquement — vous pouvez fermer cette page ; les résultats sont enregistrés pour tous les bots qui tradent cette paire.",
            "running_title": "Analyse de ce marché",
            "running_desc": "Récupération de l'historique, classification des conditions et recherche de paramètres robustes. Une étude complète peut prendre du temps — les résultats apparaissent ici automatiquement.",
            "started": "Démarrée",
            "refresh_title": "Rafraîchir les recommandations",
            "refresh_desc": "Les recommandations se rafraîchissent automatiquement chaque semaine. Un rafraîchissement manuel devient disponible lorsque les recommandations actuelles sont obsolètes.",
            "generate_title": "Générer des recommandations pour cette paire",
            "generate_desc": "Lancez une étude complète de ce marché : environ deux ans d'historique de prix, classification des conditions de marché et recherche de paramètres validée. Les résultats sont partagés avec tous les bots qui tradent cette paire.",
            "last_study": "Dernière étude terminée :",
            "refresh_btn": "Demander un rafraîchissement",
            "generate_btn": "Générer maintenant",
            "reused_msg": "Vos recommandations sont déjà récentes — une nouvelle étude produirait des résultats quasiment identiques. Un rafraîchissement devient disponible lorsqu'elles dépassent 30 jours.",
            "budget_msg": "Le budget quotidien d'études à la demande est épuisé — cela protège la qualité d'exécution des bots en production. Votre paire reste en file pour le balayage automatique quotidien.",
            "cooldown_msg": "Vous avez récemment demandé une étude. Vous pourrez en demander une autre {{delay}}.",
            "failed_msg": "L'étude n'a pas pu être lancée. Veuillez réessayer dans quelques minutes.",
            "retry_soon": "sous peu",
            "retry_hours": "dans environ {{count}} heures",
            "retry_minutes": "dans environ {{count}} minutes"
        },
        "stages": {
            "starting": "Préparation de l'étude",
            "fetching": "Récupération de l'historique du marché",
            "training": "Entraînement du modèle de conditions de marché",
            "preparing": "Découpage des données par condition de marché",
            "optimizing": "Optimisation de la stratégie {{counts}} — {{regime}}",
            "finalizing": "Validation et enregistrement du jeu de recommandations",
            "publishing": "Détection de la condition de marché actuelle",
            "done": "Terminé",
            "failed": "Échec",
            "sub_nsga": "Raffinement",
            "sub_scenarios": "Test de scénarios",
            "sub_sobol": "Exploration",
            "sub_wf": "Pli Walk-Forward{{folds}}"
        },
        "snackbars": {
            "apply_success": "Recommandation appliquée avec succès",
            "apply_partial": "Les changements sûrs sont actifs ; chaque champ restant possède un déclencheur enregistré.",
            "deployment_queued": "La demande de déploiement est en attente d'une évaluation sûre et adaptée à l'état.",
            "partial_queued": "L'application partielle est en attente ; seuls les paramètres actuellement sûrs et éligibles seront modifiés.",
            "complete_queued": "Le remplacement complet de la stratégie est en attente ; les paramètres et toute la grille seront remplacés après les validations obligatoires.",
            "apply_failed": "Échec de l'application de la recommandation"
        },
        "deployment_errors": {
            "general_error": {
                "title": "Échec du déploiement",
                "desc": "Une erreur inattendue s'est produite lors de l'application de la recommandation."
            },
            "regime_mismatch": {
                "title": "Incohérence des conditions de marché",
                "desc": "Cette recommandation cible une condition de marché différente de celle confirmée en direct. Le déploiement automatique est bloqué jusqu'à ce que les conditions correspondent."
            },
            "model_not_ready": {
                "title": "Modèle d'optimisation en chauffe",
                "desc": "Le classificateur de marché en direct est en cours d'initialisation ou de mise à jour. Veuillez patienter quelques minutes avant de demander un déploiement."
            },
            "stale_recommendation": {
                "title": "Recommandation trop ancienne",
                "desc": "Cette recommandation a été générée il y a plus de 30 jours. Le marché a évolué depuis, le déploiement est donc bloqué."
            },
            "strategy_integrity": {
                "title": "Erreur d'intégrité de la stratégie",
                "desc": "La configuration cible a échoué aux contrôles de validation internes ou entre en conflit avec la version d'état actuelle du bot."
            },
            "active_session": {
                "title": "Session en cours",
                "desc": "Le bot exécute actuellement une session de trading active. Les changements perturbateurs sont bloqués pour protéger les positions ouvertes."
            },
            "config_version": {
                "title": "Incohérence de la version de configuration",
                "desc": "La configuration du bot a été mise à jour dans une autre fenêtre depuis le chargement de cette page."
            },
            "deployment_in_progress": {
                "title": "Déploiement déjà en cours",
                "desc": "Un déploiement ou une évaluation est déjà en cours pour ce bot."
            },
            "safety_gate": {
                "title": "Échec des contrôles de sécurité",
                "desc": "Cette recommandation a échoué aux contrôles de sécurité de production et aux tests sur des données de marché inédites."
            },
            "schema_compatibility": {
                "title": "Artéfact incompatible",
                "desc": "Cette recommandation utilise un schéma de paramètres non pris en charge ou un manifeste d'artéfact manquant."
            },
            "exchange_mismatch": {
                "title": "Incohérence d'exchange ou de paire",
                "desc": "Cette recommandation appartient à une paire de trading ou à un exchange différent du bot actuel."
            },
            "action_run_study": "Lancer une nouvelle étude",
            "action_refresh": "Rafraîchir la page",
            "action_retry": "Réessayer le déploiement"
        },
        "application_method": {
            "automatic": "Automatic",
            "manual": "Manual",
            "scheduled": "Scheduled"
        },
        "gates": {
            "active_session_hard_containment": {
                "label": "Session de trading active",
                "message": "Le bot gère actuellement des transactions actives. Les mises à jour de stratégie sont différées jusqu'à ce que la position soit neutre."
            },
            "config_version_mismatch": {
                "label": "Version du tableau de bord mise à jour",
                "message": "Veuillez rafraîchir la page pour vous synchroniser avec la dernière configuration du serveur."
            },
            "configuration_schema_supported": {
                "label": "Format de stratégie compatible",
                "message": "Cette recommandation utilise un format de stratégie ancien ou non pris en charge qui ne peut pas être déployé automatiquement."
            },
            "deployment_in_progress": {
                "label": "Déploiement en cours",
                "message": "Une autre demande de déploiement est actuellement en cours de traitement pour ce bot."
            },
            "deployment_plan_blocked": {
                "label": "Session de trading active",
                "message": "Le bot gère des transactions actives. Les paramètres s'appliqueront automatiquement à la fin de la session."
            },
            "effective_revision_consistent": {
                "label": "Configuration du bot synchronisée",
                "message": "Vos paramètres de bot ont été modifiés directement. Veuillez enregistrer vos réglages actuels avant de déployer une nouvelle recommandation."
            },
            "exchange_match": {
                "label": "Exchange correspondant",
                "message": "L'exchange de la recommandation ne correspond pas à l'exchange configuré pour ce bot."
            },
            "live_regime_confirmed": {
                "label": "Environnement de marché stable",
                "message": "Les conditions de marché évoluent actuellement trop rapidement. Le système nécessite une analyse de marché stable avant d'appliquer des ajustements.",
                "risk": "La recommandation peut ne pas correspondre au régime actif lors du placement des ordres."
            },
            "live_state_in_distribution": {
                "label": "Activité de marché normale",
                "message": "La volatilité actuelle du marché dépasse les limites de sécurité testées par le modèle. Les modifications sont suspendues par mesure de protection.",
                "risk": "Les performances hors de la distribution testée sont inconnues et les pertes peuvent dépasser fortement les simulations."
            },
            "model_artifact_ready": {
                "label": "Fichier d'optimisation prêt",
                "message": "Le système finalise encore le fichier IA d'optimisation nécessaire pour calculer les décisions de recommandation.",
                "risk": "La recommandation ne peut pas être vérifiée avec l'artéfact de modèle actuellement actif."
            },
            "model_epoch_match": {
                "label": "Version de modèle synchronisée",
                "message": "Cette recommandation a été générée avec une version antérieure du modèle IA. Une nouvelle analyse est recommandée.",
                "risk": "Les hypothèses du modèle peuvent avoir changé depuis la génération de cette recommandation."
            },
            "model_ready": {
                "label": "Moteur d'optimisation actif",
                "message": "Le moteur d'optimisation effectue des mises à jour en arrière-plan et sera prêt sous peu.",
                "risk": "L'état de santé actuel du modèle n'a pas été confirmé pour ce déploiement."
            },
            "parameter_integrity": {
                "label": "Paramètres de stratégie valides",
                "message": "Les paramètres de la recommandation ont échoué aux contrôles de plage numérique ou de sécurité."
            },
            "recommendation_artifact_published": {
                "label": "Fichier de recommandation publié",
                "message": "Ce fichier de recommandation de stratégie est absent, expiré ou n'est plus valide.",
                "risk": "La provenance ou l'éligibilité de la publication ne peut pas être vérifiée, même si les paramètres respectent le schéma."
            },
            "recommendation_fresh": {
                "label": "Recommandation récente",
                "message": "Cette recommandation est trop ancienne. Lancez une nouvelle étude d'optimisation pour générer des paramètres récents.",
                "risk": "Les anciennes données peuvent ne plus représenter la volatilité, la liquidité ou la tendance actuelles."
            },
            "regime_match": {
                "label": "Stratégie adaptée au marché",
                "message": "Cette recommandation a été conçue pour des conditions de marché différentes de celles actuellement actives (ex. tendance vs. range).",
                "risk": "Une stratégie adaptée à un autre régime peut entrer trop souvent, manquer des sorties ou augmenter le drawdown."
            },
            "safety_gate": {
                "label": "Contrôles de sécurité et protection",
                "message": "Un ou plusieurs contrôles de validation de l'optimiseur ont échoué.",
                "risk": "La recommandation peut être surajustée, non rentable, insuffisamment testée ou exposer le bot à un drawdown excessif."
            },
            "safety_gate_overfitting": {
                "label": "Contrôle du surajustement",
                "message": "Les performances d'entraînement ne se sont pas maintenues en validation.",
                "risk": "La stratégie peut reproduire le bruit historique et échouer sur le marché réel."
            },
            "safety_gate_profit": {
                "label": "Contrôle du profit hors échantillon",
                "message": "La recommandation n'atteint pas le profit minimal exigé en test.",
                "risk": "La stratégie peut perdre de l'argent sur des données de marché inédites."
            },
            "safety_gate_drawdown": {
                "label": "Contrôle du drawdown maximal",
                "message": "Le drawdown en test dépasse le plafond configuré.",
                "risk": "Les pertes et le délai de récupération peuvent dépasser la limite de risque acceptée."
            },
            "safety_gate_sessions": {
                "label": "Contrôle des sessions terminées",
                "message": "Trop peu de sessions simulées se sont terminées.",
                "risk": "L'échantillon est trop petit pour fournir des conclusions fiables."
            },
            "safety_gate_stuck": {
                "label": "Contrôle des sessions bloquées",
                "message": "Trop de sessions simulées sont restées ouvertes.",
                "risk": "Le capital peut rester immobilisé longtemps dans des positions."
            },
            "safety_gate_ending_drawdown": {
                "label": "Contrôle de l'exposition finale",
                "message": "Le test se termine avec un drawdown latent excessif.",
                "risk": "Les résultats publiés peuvent masquer des positions perdantes non résolues."
            },
            "safety_gate_roi": {
                "label": "Contrôle du retour sur investissement",
                "message": "Le ROI en test n'atteint pas le minimum requis.",
                "risk": "Le rendement attendu peut ne pas compenser l'utilisation du capital et le risque de trading."
            },
            "safety_gate_degradation": {
                "label": "Contrôle de dégradation validation-test",
                "message": "Les performances se dégradent trop fortement sur la période de test inédite.",
                "risk": "La recommandation peut mal se généraliser au-delà des données de validation."
            },
            "search_space_supported": {
                "label": "Version d'optimisation prise en charge",
                "message": "Cette recommandation a été créée avec un espace de recherche d'optimisation obsolète."
            },
            "strategy_integrity_clear": {
                "label": "Paramètres de stratégie valides",
                "message": "Les réglages de la stratégie contiennent des paramètres invalides ou hors limites."
            },
            "symbol_match": {
                "label": "Paire de trading correspondante",
                "message": "La paire de trading de la recommandation ne correspond pas à la paire configurée pour ce bot."
            },
            "auto_apply_disabled": {
                "label": "Statut de l'application automatique",
                "message": "L'application automatique de l'optimiseur est désactivée pour ce bot. Les recommandations sont conservées pour révision manuelle."
            },
            "automatic_candidate_selection": {
                "label": "Évaluation du déploiement automatique",
                "message": "Aucune recommandation n'a été sélectionnée pour le déploiement automatique. Votre stratégie actuelle reste active."
            },
            "evidence_below_threshold": {
                "label": "Seuil de confiance non atteint",
                "message": "Le score de confiance de la recommandation est inférieur au seuil d'application automatique de votre bot."
            },
            "incumbent_evidence_mismatch": {
                "label": "Divergence de la configuration de référence",
                "message": "Divergence d'historique de preuve par rapport à la configuration active de votre bot."
            },
            "evidence_invalid": {
                "label": "Preuves de validation incomplètes",
                "message": "Les preuves de l'optimiseur sont incomplètes ou incohérentes."
            },
            "artifact_identity_mismatch": {
                "label": "Fichier d'optimisation non concordant",
                "message": "Le fichier de l'optimiseur ne correspond pas à la recommandation publiée."
            },
            "regime_not_stable": {
                "label": "Régime de marché instable",
                "message": "Changement de régime de marché détecté ; en attente d'une analyse de marché stable."
            },
            "uplift_not_material": {
                "label": "Gain de profit insuffisant",
                "message": "Le gain estimé de cet ajustement est trop faible pour justifier une modification de stratégie pour le moment."
            },
            "drawdown_regression": {
                "label": "Limite de drawdown dépassée",
                "message": "Le drawdown de la recommandation dépasse les limites de sécurité autorisées."
            },
            "cooldown_active": {
                "label": "Délai d'attente actif",
                "message": "Pour éviter des changements trop fréquents, le système impose un court délai d'attente entre deux mises à jour de stratégie."
            },
            "change_budget_exhausted": {
                "label": "Quota quotidien de changements atteint",
                "message": "La limite quotidienne d'ajustements de stratégie a été atteinte."
            },
            "automatic_change_already_selected_this_candle": {
                "label": "Limite d'ajustement par bougie",
                "message": "Un ajustement de stratégie a déjà été appliqué dans la bougie actuelle de 4 heures."
            },
            "bot_paused": {
                "label": "Statut d'exécution du bot",
                "message": "Le bot est actuellement en pause et réévaluera les recommandations lors de sa reprise."
            },
            "confidence_threshold": {
                "label": "Seuil de confiance",
                "message": "Le score de preuves de la recommandation n'atteint pas le seuil de confiance minimal configuré."
            },
            "recommendation_available": {
                "label": "Recommandation disponible",
                "message": "Une recommandation de stratégie est disponible et analysée pour le régime de marché actif."
            },
            "paired_evidence_unavailable": {
                "label": "Comparaison de référence en attente",
                "message": "Une comparaison appariée avec la stratégie de référence active de ce bot n'est pas encore disponible."
            }
        },
        "sample_context": {
            "avg": "moy.",
            "card_subtitle": "Taille d'échantillon contextuelle et comparaison de validation multi-phases",
            "card_title": "Occurrences du régime & Répartition des splits",
            "edu_desc": "Un ROI modeste en période de test s'explique souvent par le fait que cette condition de marché n'est apparue que brièvement pendant la période de test aveugle, limitant le nombre de cycles de trading complétés. Comparez avec le split de validation ci-dessous pour évaluer les performances sur des cycles de marché plus larges.",
            "edu_title": "Comprendre la taille de l'échantillon & le ROI",
            "episode": "épisode",
            "episodes": "épisodes",
            "header_tooltip": "Occurrences et durée moyenne de ce régime dans le split de test. Les régimes de marché brefs peuvent compléter moins de cycles en test ; consultez les détails du split de validation ci-dessous.",
            "test_share_badge": "Présence dans la fenêtre de test :",
            "test_split_title": "Split de Test (Holdout Aveugle)",
            "val_roi": "ROI de Validation",
            "val_split_title": "Split de Validation (Sélection)"
        },
        "brief": {
            "autoApply": "Application automatique",
            "autoEnabled": "Les recommandations admissibles peuvent mettre à jour ce bot automatiquement.",
            "autoDisabled": "Vous examinez et approuvez chaque recommandation.",
            "on": "Activée",
            "off": "Désactivée",
            "minimumConfidence": "Confiance minimale",
            "save": "Enregistrer",
            "autoChecks": "Seules les recommandations qui passent aussi les contrôles de marché, de test et de sécurité du bot peuvent être appliquées automatiquement. Certaines modifications peuvent attendre la fermeture de positions.",
            "integrityBlocked": "Les mises à jour automatiques sont suspendues car l’état de la stratégie doit être réconcilié. Consultez les alertes du bot avant de réessayer.",
            "marketData": "Données de marché",
            "testPeriod": "Période du test final",
            "notRecorded": "Non renseigné",
            "dataSource": "Source des données",
            "testCapital": "Capital simulé",
            "quoteCurrency": "dans la devise de cotation de la paire",
            "fees": "Frais de négociation par ordre",
            "testEpisodes": "Épisodes de marché testés",
            "methodology": "Les configurations sont sélectionnées sur des données anciennes, puis vérifiées sur des périodes historiques ultérieures. Le rendement inclut la valeur des positions ouvertes et les frais simulés. Il s’agit de simulations, pas de résultats de trading réel.",
            "historical": "Résultats des tests historiques",
            "historicalHelp": "Performance simulée de ces paramètres dans les conditions de marché passées.",
            "return": "Rendement",
            "drawdown": "Baisse maximale",
            "sessions": "Sessions terminées",
            "stuck": "Sessions bloquées",
            "simulationRisk": "Les performances historiques ne sont pas une prévision. Du capital peut rester immobilisé dans des positions ouvertes.",
            "missingTest": "Aucun test final enregistré n’est disponible pour ce résultat.",
            "status": {
                "loading": "Vérification de l’optimiseur",
                "loadingHelp": "Chargement des conditions de marché et des recommandations.",
                "unavailable": "Mises à jour indisponibles",
                "queued": "Mise à jour en attente",
                "applying": "Application en cours",
                "partial": "Application partielle",
                "deferred": "Mise à jour différée",
                "waitingHelp": "Le serveur vérifie quand ces paramètres peuvent prendre effet.",
                "applied": "Recommandation appliquée",
                "appliedHelp": "Votre bot utilise ces paramètres. Vous pouvez rechercher une mise à jour quand le marché évolue.",
                "stale": "Recommandation à actualiser",
                "staleHelp": "L’étude disponible ne reflète plus la dernière analyse du marché. Demandez une recommandation actualisée.",
                "blocked": "Mise à jour non appliquée",
                "available": "Recommandation disponible",
                "availableHelp": "Une stratégie a été testée pour ce marché. Comparez-la à vos paramètres actuels avant de décider.",
                "analyzing": "Analyse de votre marché",
                "analyzingHelp": "Nous comparons les paramètres aux conditions de marché passées. Votre bot conserve ses paramètres actuels.",
                "failed": "L’analyse n’a pas abouti",
                "noHistory": "L’historique de marché est encore insuffisant pour réaliser cette étude.",
                "failedHelp": "L’étude n’a pas abouti et aucun nouveau résultat n’est prêt. Réessayez de demander une recommandation.",
                "waiting": "En attente de confirmation du marché",
                "waitingMarket": "Aucune condition de marché récente n’est disponible. Les recommandations enregistrées figurent ci-dessous.",
                "insufficient": "Aucune recommandation actuelle",
                "insufficientHelp": "Vérifiez si une autre stratégie convient à ce marché. Demander une analyse ne modifie pas les paramètres de votre bot."
            },
            "applyBlocked": "La dernière mise à jour n’a pas pu aboutir. Examinez-la à nouveau pour connaître la raison actuelle.",
            "marketUnknown": "En attente d’analyse du marché",
            "marketUnknownHelp": "Les conditions actuelles du marché ne sont pas encore confirmées.",
            "stage": {
                "queued": "En attente de démarrage",
                "market": "Analyse du marché",
                "validation": "Validation des configurations",
                "testing": "Test des configurations adaptées",
                "publishing": "Préparation des recommandations",
                "running": "Analyse en cours"
            },
            "field": {
                "takeProfit": "Objectif de profit de session",
                "retracement": "Retracement du profit de session",
                "scalpProfit": "Objectif de profit du scalping",
                "scalpRetracement": "Retracement du profit de scalping",
                "initialBuy": "Achat initial",
                "grid": "Ordres de couverture"
            },
            "timing": {
                "immediate": "Application immédiate",
                "guarded": "Après les sorties protégées",
                "future": "Futurs ordres de couverture",
                "deferred": "En attente d’une mise à jour sûre",
                "blocked": "Application impossible",
                "unchanged": "Déjà conforme",
                "pending": "En attente d’évaluation"
            },
            "title": "Optimiseur de stratégie",
            "yourBot": "Votre bot",
            "collapse": "Réduire",
            "expand": "Ouvrir l’optimiseur",
            "currentMarket": "Marché actuel",
            "marketSettling": "Cette condition est encore en cours de confirmation.",
            "lastAnalysis": "Dernière analyse",
            "recommendation": "Recommandation",
            "confidence": "Confiance",
            "confidenceHelp": "Solidité des résultats historiques, pas une probabilité de profit.",
            "retry": "Réessayer la connexion",
            "cached": "Réutilisée d’une étude précédente",
            "generated": "Générée le",
            "dataThrough": "Données jusqu’au",
            "appliedStale": "Vos paramètres restent appliqués, mais l’étude doit être actualisée avant d’évaluer une nouvelle modification.",
            "why": "Pourquoi cette recommandation",
            "marketMatch": "Sélectionnée pour des conditions de {{regime}} par la dernière analyse du marché.",
            "validationPassed": "La configuration a satisfait aux contrôles historiques de sécurité de l’optimiseur.",
            "validationLimited": "Les contrôles historiques sont incomplets ou présentent des limites. Consultez les détails avant l’application.",
            "autoEligible": "Elle satisfait aux exigences de l’étude pour l’utilisation automatique. Votre bot doit encore être vérifié en direct.",
            "manualOnly": "Ce résultat ne remplit pas toutes les exigences d’utilisation automatique. Un examen manuel peut être nécessaire.",
            "limitedHistory": "Certaines périodes de test contiennent trop peu d’historique pour ces conditions de marché, ce qui limite la confiance.",
            "confidenceUnavailable": "Aucun score de confiance actuel n’a été enregistré pour ce résultat.",
            "applyHelp": "Examinez les modifications exactes avant de confirmer. Des positions ouvertes peuvent retarder certains paramètres.",
            "details": "Détails des paramètres et de la validation",
            "previousPublication": "Publication précédente",
            "cacheDateHelp": "Ce résultat est réutilisé ; sa nouvelle publication ne constitue pas un nouveau test historique.",
            "limitations": "Limites enregistrées",
            "refreshHelp": "La demande réutilise une étude adaptée ou en lance une nouvelle. Les conditions actuelles du marché sont prioritaires.",
            "requesting": "Demande en cours…",
            "checkRecommendation": "Rechercher une mise à jour",
            "generate": "Demander une recommandation",
            "backgroundFailed": "La dernière étude n’a pas abouti. Le résultat publié précédemment reste disponible avec les dates de ses données.",
            "how": "Fonctionnement de l’optimiseur",
            "explanation": "BotChain analyse le marché, identifie sa condition actuelle, teste des configurations adaptées et valide les candidates sur des données historiques. Le marché actuel est prioritaire ; les résultats enregistrés pour d’autres conditions peuvent être réutilisés. Une recommandation publiée peut encore nécessiter des vérifications avant de modifier votre bot.",
            "savedResults": "Recommandations de marché enregistrées",
            "savedHelp": "Ces stratégies ont été enregistrées pour d’autres conditions de marché. Comparez leurs paramètres et les dates des tests avant de les envisager pour votre bot. Chaque mise à jour est vérifiée avant de prendre effet.",
            "published": "Étude publiée précédemment",
            "usedByBot": "Utilisée par ce bot",
            "viewSaved": "Voir les paramètres et résultats enregistrés",
            "settings": "Paramètres de stratégie",
            "current": "Actuels",
            "recommended": "Recommandés",
            "initialBuyHelp": "Part du capital alloué",
            "coverPlan": "Ordres de couverture recommandés",
            "order": "Ordre",
            "priceDrop": "Baisse du prix",
            "buySize": "Multiplicateur d’achat",
            "pullback": "Rebond",
            "type": "Type",
            "keepProfit": "Profit conservé",
            "updateRequested": "Mise à jour demandée. En attente de confirmation d’activation par le bot.",
            "reviewApply": "Examiner et appliquer",
            "reviewTitle": "Examiner la mise à jour du bot",
            "close": "Fermer",
            "reviewHelp": "Examinez les paramètres recommandés et le moment où le serveur peut les appliquer. Votre bot sera vérifié à nouveau lors de la confirmation.",
            "checkingPlan": "Vérification de la mise à jour avec votre bot…",
            "planReady": "Voici les changements prévus pour votre bot.",
            "changeTiming": "Modifications prévues",
            "manualReview": "Cette mise à jour nécessite votre accord",
            "manualReviewHelp": "Certains contrôles nécessitent votre attention. Lisez chaque avertissement avant de choisir comment appliquer.",
            "warningFallback": "Cette exigence n’est pas satisfaite.",
            "partialOption": "Appliquer uniquement les paramètres modifiables en toute sécurité maintenant",
            "completeOption": "Remplacer tous les paramètres et ordres de couverture",
            "completeRisk": "Cette action déroge aux avertissements de sécurité. Les contrôles obligatoires de capital et de plateforme restent applicables.",
            "typeConfirmation": "Saisissez {{phrase}} pour confirmer le remplacement complet.",
            "cancel": "Annuler",
            "confirmApply": "Confirmer et appliquer",
            "backgroundRun": "Vous pouvez consulter la recommandation existante pendant la nouvelle analyse.",
            "runHelp": "Vous pouvez quitter cette page. Les résultats seront disponibles ici une fois prêts.",
            "refreshError": "Les mises à jour de l’optimiseur n’ont pas pu être chargées. Rétablissez la connexion avant d’appliquer des paramètres.",
            "reused": "Une étude existante est encore disponible. Ses données de marché d’origine figurent ci-dessous.",
            "requestError": "L’étude n’a pas pu démarrer. Veuillez réessayer plus tard.",
            "applyError": "La mise à jour n’a pas pu être vérifiée. Actualisez l’optimiseur et réessayez.",
            "settingsError": "Les paramètres n’ont pas pu être enregistrés. Veuillez réessayer.",
            "previewError": "Les recommandations n’ont pas pu être chargées. Réessayez avant de choisir une stratégie.",
            "requestAccepted": "Demande de recommandation acceptée.",
            "savedMismatch": "Enregistrée pour des conditions de {{regime}} ; la correspondance avec le marché actuel n’est pas confirmée.",
            "strategySelected": "Stratégie sélectionnée",
            "useStrategy": "Utiliser ces paramètres",
            "wizardApplyHelp": "Cette action remplit les paramètres du bot. Examinez-les avant de créer le bot.",
            "regime": {
                "STRONG_UPTREND": {
                    "label": "Forte tendance haussière",
                    "description": "Les prix montent avec une forte dynamique directionnelle."
                },
                "WEAK_UPTREND": {
                    "label": "Légère tendance haussière",
                    "description": "Les prix progressent avec une dynamique moins régulière."
                },
                "RANGE_MARKET": {
                    "label": "Marché latéral",
                    "description": "Les prix évoluent latéralement dans une fourchette."
                },
                "HIGH_VOL_RANGE": {
                    "label": "Marché latéral volatil",
                    "description": "Les prix fluctuent fortement sans direction durable."
                },
                "DOWNTREND": {
                    "label": "Tendance baissière",
                    "description": "Les prix suivent une tendance à la baisse."
                },
                "CAPITULATION": {
                    "label": "Forte pression vendeuse",
                    "description": "Le marché subit une brusque pression vendeuse."
                },
                "LOW_VOL_ACCUMULATION": {
                    "label": "Marché calme",
                    "description": "Les mouvements de prix sont relativement faibles et modérés."
                }
            },
            "plannedCovers": "Ordres de couverture après cette mise à jour",
            "savedStale": "Le serveur indique que l’étude publiée doit être actualisée. Consultez les résultats enregistrés avec les dates de leurs propres données.",
            "incompleteSettings": "Les paramètres de la recommandation sont incomplets. Demandez un résultat actualisé avant de l’utiliser.",
            "outlook": {
                "title": "Perspectives de stratégie",
                "collapse": "Réduire les perspectives de stratégie",
                "expand": "Développer les perspectives de stratégie",
                "nextStep": "Votre prochaine décision",
                "reviewHelp": "Découvrez les changements et leur calendrier. Vous confirmez avant toute application.",
                "activationHelp": "Cette page se met à jour dès que votre bot confirme les changements.",
                "activeHelp": "Ces paramètres font désormais partie de la stratégie de votre bot.",
                "context": "Comprendre cette recommandation",
                "unrated": "Non évaluée",
                "limitedEvidence": "Les tests ont des limites. Consultez les résultats avant d’appliquer.",
                "checksFailed": "Cette recommandation n’a pas passé tous les contrôles de stratégie. Un examen complémentaire est nécessaire.",
                "details": "Paramètres et résultats des tests",
                "allChanges": "Comparaison complète des paramètres",
                "studyDetails": "Dates, méthode et limites de l’étude",
                "buyMore": "Engager davantage de votre capital alloué lors du premier achat.",
                "buyLess": "Engager moins de votre capital alloué lors du premier achat.",
                "widerTrail": "Autoriser un repli plus important avant de prendre les bénéfices.",
                "tighterTrail": "Prendre les bénéfices après un repli plus faible depuis le sommet.",
                "higherTarget": "Attendre une hausse plus importante avant de prendre les bénéfices.",
                "lowerTarget": "Viser une hausse plus faible avant de prendre les bénéfices.",
                "impact": "Ce qui changerait",
                "reviewFull": "Consultez les paramètres et les ordres de couverture ci-dessous pour comparer cette recommandation.",
                "impactNote": "Ces changements décrivent le comportement du bot. Ils ne prédisent pas un meilleur rendement.",
                "automation": "Mises à jour automatiques",
                "automationPaused": "À vérifier",
                "automatic": "Application auto activée",
                "manual": "Vous validez les changements",
                "botUpdate": "Votre bot · Mise à jour de stratégie",
                "requestAccepted": "Mise à jour demandée",
                "confirmHelp": "Votre bot est vérifié avant tout changement. Consultez les modifications prévues et leur calendrier avant de confirmer.",
                "backToBot": "Revenir au bot",
                "checking": "Vérification…",
                "reviewUnavailable": "Cette mise à jour ne peut pas être confirmée pour le moment. Fermez cet aperçu et actualisez votre bot."
            },
            "cancelRun": "Annuler l’analyse",
            "cancelling": "Annulation…"
        }
    }
}
