{
    "bot": {
        "started": "🚀 Bot à distance Antigravity démarré !\nChat ID : {chatId}\nTapez /help pour voir toutes les commandes disponibles.",
        "polling": "Le Bot Antigravity est en écoute active !",
        "restarted": "🔄 Bot redémarré."
    },
    "auth": {
        "unauthorized": "❌ Non autorisé.",
        "unauthorized_attempt": "⚠️ <b>Tentative d'accès non autorisé !</b>\n\n👤 <b>Personne :</b> {name}\n🔖 <b>Nom d'utilisateur :</b> {username}\n🆔 <b>ID :</b> <code>{id}</code>\n💬 <b>{details}</b>",
        "anonymous": "Anonyme",
        "setup_welcome": "Bienvenue ! Votre Chat ID est : {chatId}\nVeuillez l'ajouter au fichier .env en tant que ALLOWED_CHAT_ID et redémarrer le bot.",
        "action": "Action : {type}",
        "unknown": "Inconnu",
        "message": "Message : \"{text}\"",
        "button": "Bouton : {data}"
    },
    "help": {
        "title": "🤖 <b>Commandes disponibles :</b>",
        "messaging_title": "📝 <i>Messagerie &amp; Interaction :</i>",
        "messaging_text": "- Saisir du texte → Parler à l'agent\n- 📎 Envoyer image/fichier → Transmettre à l'agent\n- /stop → Arrêter l'agent en cours d'exécution\n- /file → Ouvrir l'explorateur de fichiers\n- /turbo → Activer/désactiver le mode turbo\n- /panel → Réafficher le panneau de contrôle",
        "agent_title": "🎯 <i>Modes de l'Agent &amp; Compétences (Skills) :</i>",
        "agent_text": "- /goal &lt;tâche&gt; → Objectif autonome (travaille jusqu'à achèvement)\n- /plan &lt;tâche&gt; → Générer un plan de mise en œuvre\n- /skills → Explorateur interactif de compétences par catégorie\n- /skill &lt;nom&gt; [prompt] → Exécuter une compétence spécifique\n- /schedule_task &lt;tâche&gt; → Planifier une tâche récurrente",
        "chat_title": "💬 <i>Chat &amp; Artefacts :</i>",
        "chat_text": "- /new → Ouvrir une nouvelle conversation\n- /agents → Lister et basculer entre conversations récentes\n- /artifacts → Lister les artefacts générés\n- /gettask | /getplan | /getwalk → Obtenir la dernière liste de tâches, plan ou guide\n- /telegraph → Activer/désactiver la publication Telegraph\n- /cleartelegraph → Effacer les pages Telegraph publiées\n- /model → Sélectionner le modèle IA\n- /autoaccept → Activer/désactiver l'auto-acceptation\n- /help → Afficher ce guide d'aide",
        "ide_title": "🛠️ <i>Contrôles du Système &amp; Workspace :</i>",
        "ide_text": "- /start_ide | /start_ag → Démarrer l'IDE / App Standalone\n- /close → Fermer complètement l'application\n- /closeall → Fermer tous les onglets de fichiers ouverts\n- /app → Basculer entre IDE et Standalone\n- /workspace → Changer d'espace de travail\n- /memory → Vérifier ou basculer la mémoire de projet (AGENT.md)\n- /watcher → Activer/désactiver le Task Watcher en arrière-plan\n- /window → Sélectionner la fenêtre active\n- /fix_shortcuts → Réparer les raccourcis bureau\n- /lang → Changer de langue\n- /menu → Actualiser le menu de commandes\n- /cmd &lt;commande&gt; → Exécuter une commande terminal\n- /restart → Redémarrer le bot Telegram",
        "status_title": "👁️ <i>Statut &amp; Info :</i>",
        "status_text": "- /latest → Obtenir la dernière réponse\n- /screenshot → Prendre une capture d'écran de l'IDE\n- /status → Voir l'état du système et des processus\n- /quota → Vérifier les quotas de modèles IA\n- /version → Afficher la version du bot\n- /update → Vérifier les mises à jour",
        "account_title": "📱 <b>Gestion des Comptes :</b>",
        "account_text": "- /login → Se connecter avec Google (OAuth)\n- /accounts → Lister les comptes Google enregistrés\n- /switchacc &lt;N&gt; → Changer de compte actif\n- /getinfo &lt;N&gt; → Voir les détails et le quota du compte\n- /delacc &lt;N&gt; → Supprimer un compte enregistré"
    },
    "ide": {
        "already_running": "✅ Antigravity IDE est déjà en cours d'exécution ! Inutile d'ouvrir une autre fenêtre.\n💡 Utilisez /close pour le fermer.",
        "starting": "🔄 Démarrage de l'Antigravity IDE...",
        "start_failed": "❌ Échec du démarrage de l'IDE : {error}",
        "started": "✅ L'IDE a démarré avec succès !",
        "already_closed": "ℹ️ L'IDE est déjà fermé. (Fichier lock nettoyé)",
        "closing": "🔄 Fermeture de l'IDE...",
        "closing_window": "🪟 Fermeture de la fenêtre...",
        "window_closed": "✅ Fenêtre fermée avec succès.",
        "window_close_failed": "❌ Échec de la fermeture. Y a-t-il une fenêtre ouverte ?",
        "closed": "✅ L'IDE a été complètement fermé ! (Tous les processus et fichiers lock nettoyés)",
        "not_installed": "❌ Antigravity IDE introuvable. Veuillez l'installer d'abord.\nVoir : https://antigravity.google/",
        "init_error": "❌ Erreur d'initialisation : {error}",
        "already_running_short": "L'IDE Antigravity est déjà en cours d'exécution (PID: {pid})"
    },
    "status": {
        "title": "📊 <b>Statut du système :</b>\n",
        "ide_running": "💻 <b>Antigravity IDE (Classique) :</b> {status}\n",
        "ide_stopped": "🔴 IDE : Arrêté",
        "cdp_active": "⚡ <b>Automatisation CDP :</b> 🟢 ACTIF\n",
        "cdp_inactive": "⚡ <b>Automatisation CDP :</b> 🔴 INACTIF (Échec de la connexion CDP)\n",
        "bot_running": "🟢 Bot : En cours",
        "autoaccept_on": "✅ ACTIVÉ",
        "autoaccept_off": "❌ DÉSACTIVÉ",
        "standalone_running": "🤖 <b>Antigravity Standalone :</b> {status}\n",
        "running_status": "🟢 EN COURS",
        "stopped_status": "🔴 FERMÉ",
        "telegram_bot": "🤖 <b>Bot Telegram :</b> 🟢 ACTIF\n",
        "active_chat": "\n💬 <b>Détails du chat actif :</b>\n",
        "project_area": "- Espace du projet : <code>{workspace}</code>\n",
        "agent_title": "- Titre de l'agent : <code>{name}</code>\n",
        "selected_model": "- Modèle sélectionné : <code>{model}</code>\n",
        "agent_status": "- Statut de l'agent : <b>{status}</b>\n",
        "agent_working": "🔄 En cours (Occupé)",
        "agent_idle": "💤 En attente",
        "report_title": "📊 <b>Rapport de statut du Bot Antigravity</b>\n\n",
        "preferred_app_status": "🎯 <b>Appli préférée :</b> <code>{app}</code>\n\n"
    },
    "latest": {
        "title": "📝 Dernière Réponse :\n\n",
        "no_new": "[Aucun nouveau message]",
        "error": "❌ Erreur : {error}\n(Est-ce que Antigravity est ouvert ?)",
        "last_agent_reply": "📋 Dernière réponse de l'agent :",
        "not_found_active": "⚠️ Fenêtre de discussion active introuvable. Veuillez sélectionner une discussion avec la commande /agents ou envoyer un nouveau message."
    },
    "screenshot": {
        "taking": "📸 Capture de l'IDE en cours (via CDP)...",
        "error": "❌ Erreur : {error}\n(L'IDE est-il ouvert ?)"
    },
    "ask": {
        "empty": "Veuillez poser une question. Exemple : `/ask Bonjour`",
        "sent": "✅ Message envoyé, en attente d'une réponse...",
        "done": "✅ Terminé !",
        "done_empty": "✅ Terminé, mais aucun nouveau texte n'a été généré.",
        "timeout": "⚠️ L'agent réfléchit encore ou a expiré. Utilisez /latest pour vérifier.",
        "send_error": "❌ Erreur d'envoi : {error}",
        "headless_error": "❌ Erreur Headless : {error}",
        "no_chat_input": "Aucun champ de saisie trouvé dans l'IDE. Assurez-vous d'avoir ouvert une session de chat.",
        "reply_agent": "✍️ Répondre à cet agent",
        "focus_toast": "Ciblage : {title}",
        "focus_success": "✅ Focalisé sur l'agent <b>{title}</b>.\n✍️ Les messages que vous tapez maintenant iront directement à cet agent.",
        "working": "⏳ L'agent travaille actuellement sur cette tâche..."
    },
    "stop": {
        "stopping": "🛑 Arrêt de l'agent en cours...",
        "stopped": "✅ Agent arrêté !",
        "already_stopped": "ℹ️ L'agent est déjà arrêté ou le bouton Stop est introuvable.",
        "error": "❌ Erreur : {error}"
    },
    "new_chat": {
        "opened": "✅ Nouveau chat ouvert !",
        "not_found": "❌ Bouton 'nouveau chat' introuvable.",
        "error": "❌ Erreur : {error}"
    },
    "model": {
        "selecting": "🔄 Sélection du modèle : {model}",
        "changed": "✅ Modèle modifié : {model}",
        "not_found": "❌ Modèle introuvable ou n'a pas pu être sélectionné.",
        "select_prompt": "🤖 Sélectionnez un modèle :",
        "changing": "🔄 Changement de modèle : {model}",
        "select_failed": "❌ Le modèle n'a pas pu être sélectionné. Assurez-vous que l'écran de chat est ouvert.",
        "error": "Erreur !"
    },
    "workspace": {
        "switching": "🔄 Ouverture de l'IDE avec le nouvel espace : {workspace}",
        "start_failed": "❌ Échec du démarrage : {error}",
        "started": "✅ L'IDE a démarré avec le nouvel espace : {workspace}!",
        "trusted": "🔓 Espace marqué automatiquement comme de confiance.",
        "cdp_warning": "\n⚠️ La connexion CDP n'est peut-être pas encore prête. Attendez quelques secondes et réessayez.",
        "select_prompt": "Veuillez sélectionner l'espace de travail vers lequel basculer :",
        "read_error": "❌ Impossible de lire le répertoire des projets.",
        "selected": "Espace sélectionné : {project}",
        "not_found_standalone": "❌ Le projet '{wsName}' n'a pas pu être trouvé ou ouvert dans l'application Standalone."
    },
    "file": {
        "empty_dir": "📂 Ce répertoire est vide.",
        "dir_read_error": "❌ Impossible de lire le répertoire : {error}",
        "not_found": "❌ Fichier introuvable : {path}",
        "too_large": "❌ Fichier trop volumineux ({size}MB). La limite Telegram est de 50MB.",
        "send_failed": "❌ Impossible d'envoyer le fichier : {error}",
        "sending": "Envoi de : {filename}",
        "parent_dir": "⬆️ Répertoire parent",
        "prev_page": "◀️ Précédent",
        "next_page": "▶️ Suivant",
        "dir_info": "({count} éléments, page {page}/{totalPages})",
        "expired": "❌ Session expirée, tapez /file pour recommencer."
    },
    "menu": {
        "updated": "✅ Menu mis à jour ! Vous pouvez le voir depuis le menu ☰ en bas à gauche.",
        "help_desc": "Afficher toutes les commandes disponibles",
        "ask_desc": "Poser une question à l'agent",
        "latest_desc": "Obtenir la dernière réponse",
        "screenshot_desc": "Prendre une capture de l'IDE",
        "status_desc": "Statut du système (IDE, CDP, PM2)",
        "start_ide_desc": "Démarrer l'IDE",
        "close_desc": "Fermer l'IDE complètement",
        "close_window_desc": "Fermer la fenêtre actuelle",
        "new_desc": "Ouvrir un nouveau chat",
        "agents_desc": "Liste des chats récents",
        "artifacts_desc": "Liste des artefacts du chat",
        "model_desc": "Ouvrir le menu de sélection de modèle",
        "workspace_desc": "Changer de projet",
        "lang_desc": "Changer de langue",
        "cmd_desc": "Exécuter une commande terminal",
        "file_desc": "Parcourir et envoyer des fichiers",
        "stop_desc": "Arrêter l'agent",
        "autoaccept_desc": "Activer/Désactiver l'auto-accept",
        "quota_desc": "Afficher l'utilisation du quota Antigravity",
        "update_desc": "Rechercher des mises à jour",
        "version_desc": "Afficher la version actuelle",
        "menu_desc": "Mettre à jour le menu des commandes",
        "window_desc": "Sélectionner la fenêtre IDE",
        "restart_desc": "Redémarrer le bot",
        "app_desc": "Sélectionner l'application active",
        "fix_shortcuts_desc": "Réparer les raccourcis bureau",
        "login_desc": "Se connecter avec Google",
        "accounts_desc": "Lister les comptes Google enregistrés",
        "switchacc_desc": "Changer de compte Google actif",
        "getinfo_desc": "Afficher les quotas du compte",
        "delacc_desc": "Supprimer un compte Google enregistré",
        "btn_screenshot": "📸 Capture",
        "btn_artifacts": "📦 Artefacts",
        "btn_auto_on": "⚡ Auto",
        "btn_auto_off": "🔴 Auto",
        "btn_latest": "💬 Récent",
        "start_ag_desc": "Démarrer Agent",
        "close_ide_desc": "Fermer IDE",
        "close_ag_desc": "Fermer Agent",
        "welcome": "👋 Bienvenue ! Votre panneau est prêt :",
        "btn_on": "Activer",
        "btn_off": "Désactiver",
        "btn_status": "📊 Statut",
        "goal_desc": "Définir un objectif autonome pour l'agent",
        "plan_desc": "Générer un plan d'implémentation",
        "schedule_task_desc": "Planifier une tâche dans l'IDE",
        "browser_desc": "Ouvrir le navigateur dans l'IDE",
        "model_not_selected": "⚠️ Aucun modèle sélectionné",
        "gettask_desc": "Obtenir la dernière liste de tâches",
        "getplan_desc": "Obtenir le dernier plan d'implémentation",
        "getwalk_desc": "Obtenir le dernier walkthrough",
        "closeall_desc": "Fermer tous les onglets de fichiers",
        "watcher_desc": "Activer/désactiver l'observateur de tâches",
        "telegraph_desc": "Basculer les téléversements Telegraph",
        "cleartelegraph_desc": "Effacer les pages Telegraph publiées"
    },
    "telegraph": {
        "enabled": "🌐 <b>Publication Telegraph :</b> ACTIVÉE\n\nLes artefacts seront publiés sur Telegraph/graph.org avec des URL indéchiffrables.",
        "disabled": "🔒 <b>Publication Telegraph :</b> DÉSACTIVÉE\n\nLes artefacts resteront privés et seront envoyés directement dans le chat Telegram.",
        "status": "🌐 <b>Statut de Telegraph :</b>\n\n• État : <b>{state}</b>\n• Sécurité : URL avec slug cryptographique indéchiffrable 128 bits\n\n<i>Utilisez /telegraph on pour activer ou /telegraph off pour désactiver.</i>",
        "state_on": "🟢 ACTIVÉE (Public graph.org)",
        "state_off": "🔒 DÉSACTIVÉE (Chat direct privé)",
        "btn_turn_on": "🟢 Activer",
        "btn_turn_off": "🔴 Désactiver",
        "btn_wipe": "Effacer pages",
        "wiping": "🗑️ Suppression des pages Telegraph publiées pour la confidentialité et sécurité...",
        "wiped": "✅ {count} page(s) Telegraph effacée(s) avec succès. Les contenus ont été remplacés par des avis de suppression sur graph.org."
    },
    "watcher": {
        "enabled": "👁️ <b>Task Watcher :</b> ACTIVÉ\n\nLes notifications d'agent en arrière-plan sont actives.",
        "disabled": "⏸️ <b>Task Watcher :</b> DÉSACTIVÉ\n\nLes notifications d'agent en arrière-plan sont suspendues.",
        "status": "👁️ <b>État de Task Watcher :</b>\n\n• État : <b>{state}</b>\n• Fil actif : <code>{thread}</code>\n• Surveillé(s) : {count} conversation(s)",
        "state_on": "🟢 ACTIVÉ",
        "state_off": "🔴 DÉSACTIVÉ"
    },
    "photo": {
        "downloaded": "✅ Fichier téléchargé et transmission à l'agent en cours...",
        "error": "❌ Erreur de traitement du fichier : {error}"
    },
    "lang": {
        "current": "🌐 Langue actuelle : {lang}",
        "changed": "✅ Langue modifiée en : {lang}",
        "select_prompt": "🌐 Sélectionnez une langue :"
    },
    "autoaccept": {
        "enabling": "🔄 Activation de l'auto-accept...",
        "enabled": "⚡ Auto-Accept ACTIVÉ !\n\n🤖 Observateur injecté dans {injected} cibles.\nLes boutons Run, Accept, Allow et Continue seront cliqués automatiquement.",
        "enabled_none": "⚡ Auto-Accept ACTIVÉ !\n\n⚠️ Aucune cible trouvée. L'injection se fera automatiquement à l'ouverture du panneau.",
        "disabling": "🔄 Désactivation de l'auto-accept...",
        "disabled": "✅ Auto-Accept DÉSACTIVÉ.\n\n📊 Total de clics pour cette session : {clicks}.",
        "status_title": "📊 <b>Statut de l'Auto-Accept :</b>\n",
        "status_enabled": "⚡ Statut : ACTIVÉ",
        "status_disabled": "⏸️ Statut : DÉSACTIVÉ",
        "status_active": "🤖 Observateur : Actif ({targets} cibles)",
        "status_inactive": "📴 Observateur : Inactif",
        "status_clicks": "🖱️ Total de clics : {total} (session : {session})",
        "status_last_click": "⏱️ Dernier clic : {text} (il y a {sec}s)",
        "status_blocked": "🛡️ Commandes bloquées : {count}",
        "status_no_panel": "⚠️ Panneau de l'agent non détecté. Veuillez ouvrir une session de chat.",
        "error": "❌ Erreur : {error}"
    },
    "quota": {
        "checking": "🔄 Vérification du quota...",
        "not_found": "❌ <b>Compte #{id} introuvable</b>\n\nUtilisez /accounts pour voir vos comptes enregistrés.",
        "error": "❌ Erreur : {error}",
        "header": "📊 Statut du compte et des quotas\n",
        "plan": "📋 Forfait : {plan}",
        "prompt_credits": "📊 Crédits Prompt : {available}{monthly}",
        "model_quota": "⏱️ Statut de quota du modèle :",
        "remaining": " {pct}% restants",
        "empty": " ⛔ ÉPUISÉ",
        "reset_time": " ⏳ {hours}h {mins}m",
        "remaining_pct": " {icon} {filled}{empty} {pct}% restants",
        "info_title": "✨ <b>Infos du Compte</b>",
        "user": "👤 <b>{name}</b>",
        "email": "📧 <code>{email}</code>",
        "id": "🆔 Compte  <b>#{id}</b>",
        "tier": "🎟️ Niveau  —  <b>{tier}</b>",
        "credits": "💳 Crédit IA  —  <b>{credits}</b>",
        "model_quota_title": "📊 <b>Quota des Modèles</b>",
        "model_access_title": "📊 <b>Accès aux Modèles</b>",
        "detailed_quota_title": "📊 <b>Quota Détaillé</b>",
        "unlimited": "<code>∞ Illimité</code>",
        "unlimited_desc": "  ↳ Tous les modèles — sans limite de quota",
        "unlimited_model": "  ↳ {model}{star}",
        "reset_timestamp": "     ↻ {resetStr}",
        "no_data": "ℹ️ Aucune donnée de quota disponible pour le moment.\n     Réessayez dans un instant.",
        "fetching": "🔍 <b>Récupération du quota…</b>",
        "fetch_failed": "❌ <b>Impossible de récupérer le quota</b>\n\n<code>{error}</code>",
        "no_accounts": "📭 <b>Aucun compte enregistré pour le moment</b>\n\nUtilisez /login pour en ajouter un.",
        "token_status_active": "🟢 Actif  —  <b>∞ Illimité</b>  (auto-actualisé)",
        "token_status_unknown": "⚪ Inconnu — utilisez /login pour actualiser",
        "token_status_valid": "🟢 Valide  —  il reste <b>{mins} min</b>",
        "token_status_expiring": "🟡 Expire bientôt  —  il reste <b>{mins} min</b>",
        "token_status_expired": "🔴 Expiré  —  utilisez /login pour actualiser",
        "reset_relative": "    <i>réinitialisation : {time}</i>",
        "usage": "ℹ️ <b>Utilisation</b>\n━━━━━━━━━━━━━━━━━━━━━━\n<code>/getinfo &lt;id&gt;</code>\n\nExemple : <code>/getinfo 1</code>\nUtilisez /accounts pour voir vos identifiants de compte."
    },
    "response_too_long": "⚠️ Réponse trop longue. Utilisez /latest pour voir la version complète.",
    "window": {
        "not_found": "Aucune fenêtre IDE trouvée. Envoyez /start_ide d'abord.",
        "title": "<b>🔳 Fenêtres IDE</b>\n",
        "current": "Cible actuelle : <i>{{current}}</i>",
        "auto": "Cible : <i>auto (la première disponible)</i>",
        "found": "{{count}} fenêtre(s) trouvée(s). Appuyez pour sélectionner :",
        "clear_btn": "🔄 Auto (effacer la préférence)",
        "error": "Erreur de liste des fenêtres : {{error}}",
        "cleared_toast": "Effacé — utilisation de l'auto-détection",
        "cleared_msg": "🔄 Préférence de fenêtre supprimée. Le bot détectera automatiquement la fenêtre IDE active.",
        "expired": "La liste des fenêtres a expiré. Envoyez /window à nouveau.",
        "selected_msg": "✅ Focalisé sur : <b>{{title}}</b>\n\nToutes les commandes seront redirigées vers cette fenêtre.",
        "selected_toast": "Fenêtre sélectionnée : {title}"
    },
    "agents": {
        "list_title": "📂 <b>Fils de discussion récents :</b>\n\n",
        "switched": "✅ Basculé vers le fil : <b>{name}</b>",
        "not_found": "❌ Le fil n'a pas pu être sélectionné.",
        "invalid_number": "❌ Numéro de fil invalide.",
        "no_recent": "ℹ️ Aucun fil actif récent trouvé.",
        "error": "❌ Erreur : {error}",
        "switched_plain": "✅ Basculé vers le fil : {name}",
        "window_not_found": "Fenêtre d'agent introuvable",
        "menu_title": "📂 <b>Sélectionner une discussion / Agent</b>\n\n📍 <b>Discussion active :</b> <i>{activeChat}</i>\n📁 <b>Projet actif :</b> <code>{activeProject}</code>\n\n<i>Sélectionnez une discussion récente ou filtrez par projet :</i>",
        "project_view_title": "📁 <b>Projet : {workspace}</b> ({count} discussions)\n\n<i>Sélectionnez une discussion pour basculer :</i>",
        "all_projects_btn": "⬅️ Tous les projets",
        "refresh_btn": "🔄 Actualiser",
        "close_btn": "❌ Fermer",
        "search_found_multi": "🔍 <b>Résultats de recherche pour \"{query}\" :</b>\n\n<i>Sélectionnez une discussion ci-dessous :</i>",
        "search_not_found": "❌ Aucune discussion trouvée pour \"{query}\"."
    },
    "artifacts": {
        "list_title": "📎 <b>Artefacts du fil actuel :</b>\n\n",
        "no_active_thread": "⚠️ Aucun fil actif trouvé. Veuillez d'abord en sélectionner un dans l'IDE.",
        "no_artifacts": "ℹ️ Aucun artefact trouvé pour le fil actuel.",
        "invalid_number": "❌ Numéro d'artefact invalide.",
        "sending": "📤 Envoi de l'artefact : <b>{name}</b>...",
        "error": "❌ Erreur de lecture de l'artefact : {error}"
    },
    "turbo": {
        "off": "🛑 Mode Turbo Désactivé.\nRetour au mode assistant normal.",
        "on_msg": "⚡ <b>MODE TURBO ACTIF</b> ⚡\n\n⚠️ <b>Attention :</b> Dans ce mode, vos requêtes seront traitées séquentiellement par Claude et Gemini (Planification -> Codage -> Révision). Puisque les modèles réviseront le code de l'autre, <b>plus de tokens seront consommés.</b>\n\nPour désactiver ce mode, vous pouvez taper à nouveau <code>/turbo</code> ou cliquer sur le bouton du menu.",
        "on_toast": "🚀 Mode Turbo activé !",
        "btn_on": "🚀 Turbo ✅",
        "btn_off": "🚀 Turbo",
        "p1_start": "🚀 <b>Mode Turbo Démarré :</b>\n\n⏳ <b>Phase 1 :</b> Sélection du modèle (Claude)...",
        "p1_planning": "🚀 <b>Mode Turbo Démarré :</b>\n\n⏳ <b>Phase 1 :</b> Claude prépare le plan...",
        "p1_error": "Délai d'attente de Claude dépassé lors de la phase de planification.",
        "p2_switching": "🚀 <b>Mode Turbo Actif :</b>\n\n✅ <b>Phase 1 :</b> Claude a terminé le plan.\n⏳ <b>Phase 2 :</b> Changement de modèle (Gemini)...",
        "p2_coding": "🚀 <b>Mode Turbo Actif :</b>\n\n✅ <b>Phase 1 :</b> Claude a terminé le plan.\n⏳ <b>Phase 2 :</b> Gemini écrit le code...",
        "p2_error": "Délai d'attente de Gemini dépassé lors de la phase de codage.",
        "p3_switching": "🚀 <b>Mode Turbo Actif :</b>\n\n✅ <b>Phase 1 :</b> Planification\n✅ <b>Phase 2 :</b> Codage\n⏳ <b>Phase 3 :</b> Changement de modèle (Claude) - Révision...",
        "p3_reviewing": "🚀 <b>Mode Turbo Actif :</b>\n\n✅ <b>Phase 1 :</b> Planification\n✅ <b>Phase 2 :</b> Codage\n⏳ <b>Phase 3 :</b> Claude révise le code...",
        "p3_error": "Délai d'attente de Claude dépassé lors de la phase de révision.",
        "p4_switching": "🚀 <b>Mode Turbo Actif :</b>\n\n✅ <b>Phase 1 :</b> Planification\n✅ <b>Phase 2 :</b> Codage\n⚠️ <b>Phase 3 :</b> Problèmes trouvés !\n⏳ <b>Phase 4 :</b> Changement de modèle (Gemini) - Correction...",
        "p4_fixing": "🚀 <b>Mode Turbo Actif :</b>\n\n✅ <b>Phase 1 :</b> Planification\n✅ <b>Phase 2 :</b> Codage\n⚠️ <b>Phase 3 :</b> Problèmes trouvés !\n⏳ <b>Phase 4 :</b> Gemini corrige les problèmes...",
        "p4_error": "Délai d'attente de Gemini dépassé lors de la phase de correction.",
        "done_issues": "🚀 <b>Mode Turbo Terminé :</b>\n\n✅ <b>Phase 1 :</b> Planification (Claude)\n✅ <b>Phase 2 :</b> Codage (Gemini)\n⚠️ <b>Phase 3 :</b> Révision (Claude)\n✅ <b>Phase 4 :</b> Correction (Gemini)\n\n✨ Les résultats arrivent...",
        "done_no_issues": "🚀 <b>Mode Turbo Terminé :</b>\n\n✅ <b>Phase 1 :</b> Planification (Claude)\n✅ <b>Phase 2 :</b> Codage (Gemini)\n✅ <b>Phase 3 :</b> Révision - Aucun Problème (Claude)\n\n✨ Les résultats arrivent...",
        "error_title": "❌ <b>Erreur du Mode Turbo :</b>\n\n{error}",
        "p5_summarizing": "⏳ Phase 5 : Préparation du résumé...",
        "done_summary": "✨ Mode Turbo Terminé (Résumé prêt)",
        "p5_error": "Délai d'attente dépassé lors de la phase de résumé.",
        "is_running": "⏳ Le Mode Turbo est en cours ! Veuillez patienter ou tapez /turbo pour annuler.",
        "is_running_short": "⏳ Mode Turbo en cours, veuillez patienter.",
        "p1_fallback": "🚀 <b>Turbo Mode Active:</b>\\n\\n⚠️ Claude limit reached.\\n⏳ <b>Phase 1:</b> Falling back to Gemini 3.5 Flash for planning...",
        "p3_fallback": "🚀 <b>Turbo Mode Active:</b>\\n\\n✅ <b>Phase 1:</b> Planning\\n✅ <b>Phase 2:</b> Coding\\n⚠️ Claude limit reached.\\n⏳ <b>Phase 3:</b> Falling back to Gemini 3.1 Pro for review..."
    },
    "restart": {
        "closing": "🔄 Redémarrage du bot..."
    },
    "standalone": {
        "already_running": "🤖 Antigravity Standalone est déjà en cours !",
        "starting": "🚀 Démarrage d'Antigravity Standalone...",
        "started": "✅ Antigravity Standalone a démarré avec succès.",
        "not_installed": "❌ Échec du démarrage : Antigravity Standalone ne semble pas être installé.",
        "start_failed": "❌ Erreur de démarrage : {error}",
        "already_closed": "ℹ️ Antigravity Standalone est déjà fermé.",
        "closing": "🔌 Fermeture d'Antigravity Standalone...",
        "closed": "✅ Antigravity Standalone fermé."
    },
    "close": {
        "select_prompt": "⚠️ Veuillez spécifier quelle application fermer :\n\n👉 Standalone : /close_ag\n👉 IDE (Classique) : /close_ide"
    },
    "cmd": {
        "empty": "Veuillez entrer une commande à exécuter. Exemple : /cmd ls -la",
        "running": "⏳ Exécution de la commande :\n`{cmdStr}`",
        "no_output": "✅ Commande exécutée avec succès (Aucune sortie).",
        "output_title": "💻 Sortie de la commande :"
    },
    "app": {
        "select_prompt": "Veuillez sélectionner l'application que vous souhaitez contrôler. Les deux peuvent s'exécuter simultanément sur des ports indépendants :\n",
        "auto_starting": "🚀 {appName} semble fermé. Démarrage auto...",
        "started": "✅ {appName} démarré avec succès.",
        "updated_preference": "Préférence d'application mise à jour sur '{app}' !",
        "selection_title": "🤖 <b>Sélection d'App Antigravity</b>\n\n",
        "preferred_app": "Application préférée : <b>{appName}</b>\n",
        "active_port": "Port de connexion CDP actif : <code>{port}</code>\n\n",
        "persistent_selection": "⚡ <i>Votre sélection est enregistrée dans le fichier .env et appliquée instantanément sans redémarrer le bot.</i>",
        "updated_title": "✅ <b>Préférence d'application mise à jour !</b>\n\n",
        "new_port": "Nouveau port de connexion : <code>{port}</code>\n\n",
        "redirect_info": "Le bot redirigera désormais tous vos messages et commandes vers cette application.",
        "control_panel": "🕹️ Panneau de contrôle ({app}) :",
        "error_save": "Erreur : Impossible d'enregistrer la préférence."
    },
    "shortcuts": {
        "scanning": "⏳ Analyse et mise à jour des raccourcis du bureau...",
        "error": "❌ Erreur lors de la mise à jour des raccourcis :\n<code>{error}</code>",
        "not_found": "Introuvable sur le bureau ou n'a pas pu être modifié",
        "success": "\n✨ <b>Succès !</b> Un total de <b>{count}</b> raccourcis a été mis à jour. Le bot pourra se connecter automatiquement au lancement depuis le bureau.",
        "start_error": "❌ Le processus n'a pas pu démarrer : {error}",
        "updated_header": "Raccourcis mis à jour :\n",
        "binary_not_found": "binaire introuvable",
        "updated": "Raccourcis mis à jour :\n",
        "unsupported_platform": "Les raccourcis ne sont pris en charge que sur macOS."
    },
    "update": {
        "checking": "🔍 Recherche de mises à jour...",
        "error": "❌ Erreur de mise à jour : {error}",
        "success": "✅ Code mis à jour et dépendances installées.\nLe bot redémarre maintenant...",
        "bot_updated": "🚀 Le bot Antigravity a été mis à jour avec succès !\n\n📢 Rejoignez @agts_updates pour les actus et @agts_community pour discuter!",
        "up_to_date": "✅ Vous êtes à jour !\n\nv{version} ({commit})",
        "available": "🔄 <b>Mise à jour disponible !</b>\n\n📢 Rejoignez @agts_updates pour les actus et @agts_community pour discuter!\n\n",
        "new_version": "🚀 Nouvelle version : <code>{remote}</code>",
        "click_to_download": "⬇️ Cliquez pour télécharger : /update",
        "current_version": "Actuelle : v{version} ({commit})\n",
        "new_version_info": "Nouvelle : v{version} ({commit})\n",
        "changelog": "📝 <b>Changelog :</b> <i>{message}</i>\n\n",
        "update_note": "<i>💡 Note : Antigravity 2.0 (Standalone) et l'IDE Antigravity sont tous deux entièrement pris en charge.</i>\n\n",
        "updating": "Mise à jour...",
        "auto_updating": "🔄 <b>[Mise à jour auto]</b> Mise à jour du développeur détectée (v{version} - {commit}).\nFusion des changements et mise à jour en cours...",
        "auto_update_failed": "❌ <b>[Mise à jour auto]</b> Échec de la mise à jour : {error}"
    },
    "error": {
        "start_error": "❌ Erreur de démarrage : {error}",
        "general_error": "❌ Erreur : {error}",
        "modal_active": "❌ Un panneau de questions interactif est actuellement ouvert. Veuillez sélectionner une option ou utiliser /stop pour annuler."
    },
    "agent": {
        "swipe_to_reply": "<i>(Glissez ce message vers la gauche pour répondre à cet agent)</i>"
    },
    "interactive_modal": {
        "default_header": "L'agent attend une approbation / une réponse :",
        "options_prompt": "_(Vous pouvez sélectionner l'un des boutons ci-dessous ou taper votre réponse)_",
        "confirm_prompt": "_(Veuillez utiliser le bouton 'Confirmer' pour approuver ou 'Rejeter' pour annuler)_",
        "btn_confirm": "Confirmer",
        "btn_reject": "Rejeter",
        "answer_sent": "Votre sélection a été envoyée : {answer}"
    },
    "native_cmd": {
        "goal_empty": "🎯 Utilisation : /goal <description>\nDéfinir un objectif autonome à long terme pour l'agent.",
        "goal_started": "🎯 Mode objectif activé ! L'agent travaillera de manière autonome jusqu'à atteindre l'objectif.",
        "plan_empty": "📋 Utilisation : /plan <description>\nDemander à l'agent de créer un plan d'implémentation.",
        "plan_started": "📋 Génération du plan lancée !",
        "schedule_empty": "⏰ Utilisation : /schedule_task <description>\nPlanifier une tâche récurrente ou ponctuelle.",
        "schedule_started": "⏰ Tâche planifiée !",
        "browser_started": "🌐 Navigateur ouvert dans l'IDE.",
        "error": "❌ Erreur : {error}"
    },
    "task_watcher": {
        "proactive_msg": "L'agent a envoyé une notification proactive :"
    },
    "schedule": {
        "not_configured": "⚠️ CronCrew n’est pas encore configuré.\\n\\nInstallation : /schedule_setup <url_serveur> <clé_licence>\\nExemple : /schedule_setup https://agp.emreturkmen.com CC-XXXX-XXXX-XXXX-XXXX",
        "setup_usage": "⚙️ Utilisation : /schedule_setup <url_serveur> <clé_licence>\\n\\nExemple :\\n<code>/schedule_setup https://agp.emreturkmen.com CC-XXXX-XXXX-XXXX-XXXX</code>",
        "setup_success": "✅ CronCrew connecté !\\n\\n🎫 Niveau : <b>{tier}</b>\\n📡 Serveur : <code>{url}</code>\\n\\nUtilisez /schedule_list pour gérer vos planifications.",
        "setup_error": "❌ Erreur de connexion : {error}",
        "status_title": "📊 <b>Statut de CronCrew</b>\\n\\n",
        "status_tier": "🎫 Niveau : <b>{tier}</b>\\n",
        "status_license": "📋 Statut : <b>{status}</b>\\n",
        "status_usage": "📈 Aujourd’hui : {today} exécutions\\n",
        "status_schedules": "📅 Planifications actives : {count}\\n",
        "status_changes": "🔄 Changements d’appareil : {used}/{max}\\n",
        "status_expires": "⏰ Expire : {date}\\n",
        "list_title": "📅 <b>Liste des planifications :</b>\\n\\n",
        "list_empty": "ℹ️ Aucune planification créée pour le moment.\\n\\nUtilisez /schedule_add pour créer une nouvelle planification.",
        "list_item": "{icon} <b>{name}</b>\\n   ⏰ <code>{cron}</code> → {workspace}\\n   📊 Exécuté : {runCount}x | Dernier : {lastResult}\\n",
        "add_usage": "➕ Ajouter une nouvelle planification :\\n\\n<code>/schedule_add Nom | expression_cron | espace_de_travail | prompt</code>\\n\\nExemple :\\n<code>/schedule_add Test quotidien | 0 9 * * * | antigravity-bot | Exécuter tous les tests</code>",
        "add_success": "✅ Planification créée !\\n\\n📝 <b>{name}</b>\\n⏰ <code>{cron}</code>\\n📁 {workspace}\\n🤖 {model}",
        "add_error": "❌ Erreur de création : {error}",
        "delete_usage": "🗑️ Supprimer une planification :\\n\\n<code>/schedule_del <id_planification></code>",
        "delete_success": "✅ Planification supprimée.",
        "delete_error": "❌ Erreur de suppression : {error}",
        "pause_success": "⏸️ Planification en pause : <b>{name}</b>",
        "resume_success": "▶️ Planification reprise : <b>{name}</b>",
        "run_success": "🚀 Planification exécutée !\\n\\n📁 Espace de travail : <b>{workspace}</b>\\n🤖 Modèle : {model}\\n📝 Invite envoyée.",
        "run_error": "❌ Erreur d’exécution : {error}",
        "error": "❌ Erreur : {error}",
        "btn_pause": "⏸️ Pause",
        "btn_resume": "▶️ Reprendre",
        "btn_delete": "🗑️ Supprimer",
        "btn_run": "▶️ Exécuter",
        "btn_back": "◀️ Retour à la liste",
        "menu_schedule_setup_desc": "Configurer la connexion CronCrew",
        "menu_schedule_list_desc": "Lister les tâches planifiées",
        "menu_schedule_add_desc": "Ajouter une nouvelle tâche planifiée",
        "menu_schedule_status_desc": "Afficher le statut de CronCrew"
    },
    "localImageFallback": "Image",
    "localImageSent": "envoyée sur votre téléphone",
    "login": {
        "notice_title": "⚠️ <b>Avis de connexion Google</b>",
        "notice_body": "Le lancement du flux de connexion suspendra temporairement les autres commandes du bot.\nL'agent IA continuera de s'exécuter en arrière-plan dans votre IDE.\n\nVoulez-vous continuer ?",
        "btn_continue": "👉 Oui, Continuer",
        "btn_cancel": "✖ Annuler",
        "starting": "🔄 <b>Démarrage de la connexion sécurisée…</b>",
        "server_error": "❌ <b>Erreur du serveur de connexion</b>\n\n<code>{error}</code>",
        "timeout": "🚫 <b>Connexion expirée (10 minutes).</b> Utilisez /login pour réessayer.",
        "prompt_title": "🔐 <b>Se connecter avec Google</b>",
        "prompt_body": "Appuyez sur le bouton ci-dessous pour vous connecter avec votre\ncompte Google et le lier à ce bot.\n\n📱 <b>Sur mobile ?</b>\nSi votre navigateur affiche une erreur de connexion après la connexion,\ncopiez simplement l'<b>URL complète</b> de la barre d'adresse et collez-la ici.\n\n⏱  Expire dans <b>10 minutes</b>",
        "btn_signin": "🔒 Se connecter avec Google",
        "btn_cancel_login": "❌ Annuler la connexion",
        "cancelled": "🚫 <b>Connexion annulée</b>\n\nEnvoyez /login lorsque vous êtes prêt à réessayer.",
        "code_received": "⏳ <b>Code reçu !</b> Finalisation de la connexion…",
        "success_title": "✅ <b>Connexion réussie !</b>",
        "success_body": "👤 <b>{name}</b>\n📧 <code>{email}</code>\n🆔 Compte  <b>#{numericId}</b>  <i>({action})</i>\n\n<i>Quelle est la suite ?</i>\n• Changer  →  <code>/switchacc {numericId}</code>\n• Quota    →  <code>/getinfo {numericId}</code>\n• Tous les comptes  →  <code>/accounts</code>",
        "failed": "❌ <b>Échec de l'authentification</b>\n\n<code>{error}</code>",
        "no_active_session": "⚠️ <b>Aucune session de connexion active</b>\n\nCommencez par en lancer une nouvelle avec /login.",
        "no_active_session_short": "⚠️ Aucune session de connexion active trouvée. Utilisez /login pour commencer.",
        "authenticating": "⏳ <b>Authentification en cours…</b>",
        "failed_attempts": "Le flux de connexion Google a été annulé après 3 tentatives infructueuses de collage d'un lien/code valide.",
        "in_progress": "⚠️ <b>Connexion Google en cours</b>\n━━━━━━━━━━━━━━━━━━━━━━\nLes autres services du bot sont temporairement suspendus.\nVeuillez finaliser la connexion avec Google ou annuler le flux actuel en utilisant le bouton Annuler ou en saisissant /cancel.",
        "no_accounts": "📭 <b>Aucun compte enregistré pour le moment</b>\n\nUtilisez /login pour en ajouter un.",
        "code_usage": "📋 <b>Collez votre code de connexion</b>\n━━━━━━━━━━━━━━━━━━━━━━\nAprès vous être connecté avec Google, si la redirection a échoué, copiez l'URL complète de votre navigateur (ou juste la valeur <code>code=…</code>) et envoyez-la ici :\n\n<code>/logincode &lt;url ou code&gt;</code>",
        "invalid_code": "⚠️ <b>URL ou code Google invalide</b>\n━━━━━━━━━━━━━━━━━━━━━━\nImpossible d'extraire un code d'autorisation Google valide de votre message.\nVeuillez coller l'URL de redirection complète ou le code d'autorisation.",
        "invalid_code_attempt": "\n<i>Tentative {count} sur 3 avant annulation.</i>"
    },
    "switchacc": {
        "title": "🔄 <b>Passage au Compte #{id}</b>",
        "email": "📧 {email}",
        "usage": "ℹ️ <b>Utilisation</b>\n━━━━━━━━━━━━━━━━━━━━━━\n<code>/switchacc &lt;id&gt;</code>\n\nExemple : <code>/switchacc 1</code>\nUtilisez /accounts pour voir vos identifiants de compte.",
        "not_found": "❌ <b>Compte #{id} introuvable</b>\n\nUtilisez /accounts pour voir vos comptes enregistrés.",
        "step_refreshing": "🔑 Actualisation du jeton…",
        "step_refreshed": "✅ Jeton actualisé et enregistré",
        "step_valid": "✅ Le jeton est valide",
        "step_stopping": "🔴 Arrêt d'Antigravity ({app})…",
        "step_stopped": "✅ Antigravity ({app}) arrêté",
        "step_still_closing": "⚠️ Antigravity ({app}) est peut-être encore en cours de fermeture…",
        "step_not_running": "ℹ️ Antigravity ({app}) ne s'exécutait pas",
        "step_writing": "💉 Écriture des identifiants…",
        "step_written": "✅ Identifiants écrits → {app}",
        "step_written_keyring": "✅ Identifiants → trousseau (SQLite : {error})",
        "step_write_failed": "⚠️ Échec de l'écriture : {error}",
        "step_starting": "🟢 Démarrage d'Antigravity ({app})…",
        "step_started": "✅ Démarrage d'Antigravity ({app})…",
        "step_start_failed": "⚠️ Impossible de démarrer ({app}) : {error}",
        "step_done": "✅ <b>Désormais sur le compte #{id}</b>",
        "step_done_email": "📧 {email}",
        "error": "❌ <b>Erreur</b>\n\n<code>{error}</code>"
    },
    "accounts": {
        "title": "Comptes Enregistrés",
        "btn_add": "Ajouter un Compte",
        "btn_back": "Retour aux Comptes",
        "btn_confirm_delete": "Oui, supprimer",
        "btn_cancel": "Annuler",
        "delete_confirm_title": "Supprimer le Compte",
        "delete_confirm_body": "Cela supprime le jeton enregistré de ce bot.",
        "delete_confirm_note": "Antigravity lui-même ne sera pas affecté.",
        "btn_quota": "Quota",
        "btn_delete": "Supprimer"
    },
    "artifact_feedback": {
        "proceed": "✅ Continuer",
        "cancel": "❌ Annuler",
        "proceeded": "✅ Continué",
        "canceled": "❌ Annulé",
        "processing": "Traitement...",
        "error": "Erreur: {message}"
    },
    "skills": {
        "menu_title": "🧠 <b>Compétences Agent ({count})</b>\n\n📂 <i>Parcourir par catégorie ou rechercher :</i>\n💡 <code>/skill &lt;nom&gt; [prompt]</code>",
        "category_title": "{category}\n<b>{count} compétences</b>\n\n<i>Appuyez sur une compétence pour les détails :</i>",
        "search_results": "🔍 <b>Résultats pour \"{query}\" ({count})</b>",
        "not_found": "❌ Compétence introuvable : \"{name}\"",
        "no_skills": "ℹ️ Aucune compétence installée.",
        "running": "▶️ Exécution de {name}...",
        "close_btn": "❌ Fermer",
        "back_btn": "⬅️ Toutes les Catégories",
        "refresh_btn": "🔄 Actualiser"
    }
}
