{
  "app": {
    "name": "CiCy Desktop",
    "apiTitle": "CiCy Desktop API",
    "brandSub": "Team AI collaboration workspace"
  },
  "tray": {
    "openHomepage": "Open CiCy Desktop",
    "quit": "Quit",
    "tooltip": "CiCy Desktop"
  },
  "menu": {
    "backends": "Backends",
    "showHomepage": "Afficher l'accueil",
    "newLocalWindow": "Nouvelle fenêtre locale",
    "file": "Fichier",
    "edit": "Édition",
    "view": "Affichage",
    "window": "Fenêtre",
    "help": "Aide",
    "close": "Fermer",
    "quit": "Quitter",
    "undo": "Annuler",
    "redo": "Rétablir",
    "cut": "Couper",
    "copy": "Copier",
    "paste": "Coller",
    "selectAll": "Tout sélectionner",
    "reload": "Recharger",
    "forceReload": "Forcer le rechargement",
    "toggleDevTools": "Outils de développement",
    "actualSize": "Taille réelle",
    "zoomIn": "Zoom avant",
    "zoomOut": "Zoom arrière",
    "toggleFullscreen": "Plein écran",
    "minimize": "Réduire",
    "zoom": "Zoom",
    "front": "Tout au premier plan",
    "checkForUpdates": "Rechercher les mises à jour…",
    "checkingForUpdates": "Recherche de mises à jour…",
    "updateAvailable": "Nouvelle version {{version}} détectée, téléchargement…",
    "upToDate": "Vous êtes à jour (v{{version}})",
    "updateError": "Échec de la vérification : {{error}}"
  },
  "dialog": {
    "openLink": {
      "title": "Open Link",
      "message": "How would you like to open this link?",
      "openInBrowser": "Open in Browser",
      "openInApp": "Open in App",
      "cancel": "Cancel"
    }
  },
  "homepage": {
    "title": "CiCy Desktop",
    "addBackend": "Add backend",
    "name": "Name",
    "url": "URL",
    "token": "Token",
    "save": "Save",
    "cancel": "Cancel",
    "test": "Test",
    "open": "Open",
    "remove": "Remove",
    "copyUrl": "Copy URL",
    "copied": "URL copied",
    "removed": "Removed {{name}}",
    "removeConfirm": "Remove {{name}}?",
    "opened": "Opened {{name}}",
    "focused": "Focused {{name}}",
    "openFailed": "Open failed: {{error}}",
    "unknown": "unknown",
    "noBackendsYet": "No backends yet — click \"Add backend\" above",
    "statusUp": "Up",
    "statusDown": "Down",
    "statusWarn": "Warning"
  },
  "localTeams": {
    "unnamed": "Sans nom",
    "rename": "Renommer",
    "renameHint": "Double-cliquez ou ✎ pour renommer",
    "open": "Open",
    "renameFailed": "Rename wasn't saved, reverted",
    "startOpen": "Start & open",
    "manage": "Manage local cicy-code",
    "more": "More",
    "reloadWindow": "Reload window",
    "billing": "Billing",
    "removeConfirm": "Confirm removal?",
    "remove": "Remove",
    "copyAddr": "Click to copy address",
    "version": "Version",
    "saving": "Saving…",
    "saved": "Saved",
    "kindLocal": "Local",
    "kindCustom": "Custom",
    "defaultName": "Local team",
    "deleteTitle": "Supprimer l'équipe",
    "deleteMsg": "Supprimer «{{name}}»? Cette action est irréversible.",
    "removing": "Suppression…",
    "removed": "Supprimé",
    "removeFailed": "Échec de suppression"
  },
  "cli": {
    "controllerTitle": "cicy - CiCy Desktop Controller",
    "usage": "Usage: cicy [command] [options]"
  },
  "mitmConsent": {
    "cardTitle": "Local HTTPS Traffic Auditing",
    "stateUngrantedTitle": "Not enabled",
    "body": "When enabled, HTTPS traffic from this machine to AI providers (Claude / OpenAI / DeepSeek / Gemini) is decrypted locally for auditing. Data stays local and you can turn it off anytime.",
    "adminNote": "Requires writing a certificate into the system root trust store; administrator authorization is required.",
    "scopeNote": "Only traffic to the AI provider domains above is decrypted; all other traffic (banking, social, other sites) is never decrypted or read.",
    "localNote": "Decrypted data is stored only on your machine and is never uploaded to any server.",
    "enable": "Enable",
    "stateGrantedTitle": "Enabled",
    "grantedDesc": "HTTPS auditing is on; you can revoke and uninstall the certificate anytime.",
    "revoke": "Revoke",
    "revokeConfirm": "Revoking will uninstall the certificate, stop decryption, and clear the consent flag. Continue?",
    "stateProcessingTitle": "Working…",
    "processingEnable": "Installing certificate…",
    "processingRevoke": "Uninstalling certificate…",
    "errorTitle": "Operation failed",
    "errorAdminDenied": "Administrator authorization was not granted; cancelled.",
    "retry": "Retry",
    "statePillOn": "HTTPS auditing on",
    "turnOff": "Turn off"
  },
  "firstRunTerms": {
    "title": "Conditions d'utilisation et autorisations",
    "subtitle": "Veuillez lire et accepter les conditions suivantes avant d'utiliser CiCy Desktop",
    "summaryTitle": "En bref",
    "summary1": "CiCy Desktop est un outil d'orchestration d'agents IA qui s'exécute sur votre propre ordinateur et vous aide à coordonner des assistants IA tiers (Claude Code, Codex, Gemini, etc.) pour accomplir votre travail.",
    "summary2": "Les IA et comptes tiers relèvent de votre relation avec chaque fournisseur : le choix de l'IA, le compte utilisé, ainsi que l'usage et les frais qui en découlent relèvent de votre décision et de votre responsabilité, et non de CiCy.",
    "summary3": "Pour effectuer le travail, ce logiciel nécessite une série d'autorisations sur votre ordinateur (exécuter des programmes, exécuter des scripts, contrôler le navigateur, accéder aux fichiers, etc.). Vous êtes entièrement responsable des opérations lancées via ce logiciel.",
    "summary4": "Vos données restent par défaut sur votre machine ; CiCy ne téléverse pas le contenu de votre travail à des fins d'exploitation.",
    "summary5": "Deux capacités à haut risque nécessitent votre autorisation distincte et explicite et sont désactivées par défaut : (a) l'audit local du trafic HTTPS (installe un certificat, nécessite l'administrateur) ; (b) l'exécution locale de commandes/scripts. L'acceptation des présentes conditions ne les active pas.",
    "summary6": "Vous ne devez pas utiliser ce logiciel pour contrôler des appareils non autorisés, pratiquer la multi-connexion illicite / la falsification de trafic, contourner les contrôles de risque des plateformes ou collecter des données en violation des conditions.",
    "viewFull": "Voir les conditions complètes",
    "agree": "Accepter et continuer",
    "decline": "Refuser et quitter",
    "mustAgree": "Vous ne pouvez pas utiliser ce logiciel sans accepter les conditions.",
    "scrollHint": "Veuillez lire jusqu'au bout pour continuer",
    "menu": "Conditions d'utilisation",
    "close": "Fermer"
  },
  "docker": {
    "title": "Docker cicy-code",
    "install": "Installer",
    "start": "Démarrer",
    "running": "En cours · :8008",
    "notRunning": "Arrêté · cliquez sur Démarrer",
    "notInstalled": "Non installé · cliquez pour installer",
    "working": "En cours…",
    "ready": "Docker cicy-code est prêt",
    "failed": "Échec de l'installation",
    "upgraded": "Mis à jour",
    "upgradeFailed": "Échec de la mise à niveau",
    "manage": "Gérer Docker cicy-code",
    "restart": "Redémarrer",
    "restarted": "Redémarré",
    "restarting": "Redémarrage…",
    "stop": "Arrêter",
    "stopped": "Arrêté",
    "stoping": "Arrêt…",
    "upgrade": "Mettre à niveau (dernière image)",
    "opFailed": "Échec de l'opération",
    "setupTitle": "Installer Docker cicy-code",
    "busy": "En cours",
    "preparing": "Préparation…",
    "installing2": "Installation…",
    "background": "Continuer en arrière-plan",
    "rebootNeeded": "WSL2 installé — REDÉMARREZ Windows, puis cliquez sur Réessayer",
    "rebootShort": "Redémarrer Windows",
    "installerLaunched": "Programme d installation Docker ouvert — terminez-le (WSL2/redemarrage), puis Reessayer",
    "engineDown": "Moteur Docker arrete · Demarrer",
    "startDocker": "Demarrer Docker",
    "update": "Mettre à jour cicy-code",
    "reloadWindow": "Recharger la fenêtre",
    "dockerRestart": "Redémarrer Docker",
    "dockerRestarted": "Conteneur Docker redémarré",
    "recreate": "Reconstruire Docker",
    "billing": "Facturation",
    "openNoToken": "Service pas encore prêt — patientez quelques secondes puis recliquez sur Ouvrir (ou 「Redémarrer」 dans le menu).",
    "retry": "Retry",
    "run": "Install & start",
    "manual": "Install Docker manually",
    "updated": "cicy-code updated to latest",
    "updateFailed": "Update failed",
    "authorizingHost": "Authorizing container to access Mac (configuring SSH)…",
    "authorizedHostOk": "Authorized: the container can `ssh mac` to reach the Mac ✅",
    "authorizedHostPartial": "Public key written to Mac (not verified; try `ssh mac` in the container manually)",
    "chromeProxyOn": "Enabling Chrome proxy (host mihomo)…",
    "chromeProxyOff": "Disabling Chrome proxy…",
    "chromeProxyDone": "Chrome proxy enabled ✅",
    "chromeProxyUndone": "Chrome proxy disabled",
    "wslUnresponsive": "WSL not responding · click “Retry check”",
    "opening": "Opening…",
    "probing": "Checking…",
    "retryProbe": "Retry check",
    "wslStillStuck": "WSL still not responding — you may need to restart Windows and try again",
    "probeFailed": "Check failed, please retry",
    "authorizeHostHint": "Add the container's public key to the Mac's authorized_keys so `ssh mac` works inside the container",
    "authorizeHost": "Authorize container to access Mac",
    "chromeProxyHint": "Run a mihomo on this machine to proxy system Chrome profiles (127.0.0.1:2000N). Config synced from the container.",
    "chromeProxy": "Chrome proxy",
    "recreateConfirm": "This deletes and recreates the current container (volume data kept) to switch to the dedicated team's gateway key. Recreate?",
    "recreated": "Docker container recreated",
    "recreateOk": "Recreate",
    "runningWslBroken": "En marche · ⚠ WSL non géré (ouverture OK ; mise à jour/redémarrage = réparer WSL)",
    "openFailed": "Échec d'ouverture",
    "openTitle": "Ouvrir l'équipe Docker",
    "repairWsl": "Réparer WSL",
    "wslBrokenRepair": "WSL non géré · cliquez Réparer WSL pour réinstaller",
    "openWslDir": "Ouvrir le dossier WSL",
    "openProjectsDir": "Ouvrir le dossier projets",
    "wslWedged": "WSL bloqué · cliquez Réparer WSL",
    "wslNeedReboot": "Service WSL bloqué — REDÉMARREZ Windows ; réparation auto au prochain lancement (anciennes données renommées/conservées).",
    "wslRepaired": "WSL réparé",
    "repairFailed": "Échec de la réparation",
    "updating": {
      "checking": "Vérification de la version de cicy-code…",
      "alreadyLatest": "Déjà à jour — v{{v}} ✅",
      "toVersion": "Mise à jour de cicy-code → v{{v}}…",
      "pulling": "Mise à jour de cicy-code (récupération de la dernière version)…",
      "doneVersion": "cicy-code mis à jour vers v{{v}} 🎉",
      "doneLatest": "cicy-code mis à jour vers la dernière version 🎉",
      "notReady": "Mis à jour, mais :8008 ne répond pas encore — patientez ou réessayez",
      "failed": "Échec de la mise à jour : {{msg}} (cette image peut ne pas le prendre en charge ; essayez « Mettre à niveau » pour réinstaller)",
      "hostResolveFail": "Échec de la résolution de version côté hôte ; résolution dans le conteneur…",
      "scriptReady": "Script de mise à jour du conteneur actualisé (rapide)",
      "scriptPushFail": "Échec de l'envoi du script ; utilisation de la version intégrée",
      "starting": "Démarrage du service cicy-code…"
    },
    "ports": {
      "menu": "Réglage des ports",
      "title": "Réglage des ports",
      "sub": "Ports supplémentaires (hors :8008) publiés pour que Windows atteigne les services du conteneur",
      "mainFixed": ":8008 · cicy-code (fixe)",
      "add": "+ Ajouter un port",
      "ph": "Port 1-65535",
      "save": "Enregistrer et reconstruire",
      "saving": "Enregistrement…",
      "cancel": "Annuler",
      "hint": "L'enregistrement reconstruit le conteneur (données du volume conservées), brève interruption",
      "invalid": "Port invalide (1-65535, pas 8008, sans doublon)",
      "none": "Aucun port supplémentaire",
      "remove": "Retirer"
    },
    "starting": "Démarrage…"
  },
  "common": {
    "close": "Close",
    "retry": "Retry",
    "done": "Done",
    "minimize": "Réduire",
    "cancel": "Cancel",
    "cloud": "Cloud",
    "on": "On",
    "off": "Off",
    "confirm": "Confirmer",
    "delete": "Supprimer",
    "saving": "Sauvegarde…",
    "noAuth": "Non connecté",
    "loading": "Chargement…",
    "copied": "Copié"
  },
  "auth": {
    "restoring": "Restauration de la connexion…",
    "tagline": "Connectez-vous pour synchroniser vos équipes, réglages et assistant IA",
    "browserLogin": "Se connecter via le navigateur",
    "autoOpenHint": "Votre navigateur s'ouvrira automatiquement",
    "waitingTagline": "Page de connexion ouverte dans le navigateur — terminez là…",
    "waitingCallback": "En attente du rappel",
    "cancel": "Annuler",
    "browserNotOpened": "Le navigateur ne s'est pas ouvert ?",
    "openManually": "Ouvrir la page de connexion manuellement",
    "copyLink": "Copier le lien",
    "linkCopied": "Lien copié — collez-le dans le navigateur",
    "badEmail": "Please enter a valid email address",
    "emailLabel": "Enter your email to sign in with a magic link",
    "emailPlaceholder": "you@example.com",
    "emailLogin": "Send login link",
    "emailHint": "Tap the link in the email on your phone to sign in on this computer too",
    "or": "or",
    "emailSentTagline": "Login email sent",
    "emailSentHint": "Open the link from your inbox (phone or computer) and you'll be signed in here automatically.",
    "emailWaiting": "Waiting for confirmation…",
    "sessionExpired": "Session expired, signing in again…",
    "welcomeBack": "Restored your previous session",
    "loginSuccess": "Signed in",
    "sending": "Envoi…",
    "opening": "Ouverture…"
  },
  "teams": {
    "addHint": "Create a new private cloud team",
    "add": "Add team",
    "emptyHint": "No teams yet — install local cicy-code to start a local team, or create one in the cloud.",
    "addCustom": "Équipe personnalisée",
    "addCustomSub": "Saisir l'adresse et le nom manuellement",
    "addPrivate": "Équipe cloud privé",
    "addPrivateSub": "Ajouter dans le centre d'équipes cloud",
    "customTitle": "Ajouter une équipe personnalisée",
    "customSub": "Se connecter à une adresse cicy-code existante",
    "customNameLabel": "Nom",
    "customNamePlaceholder": "Mon équipe",
    "customUrlLabel": "URL d'adresse",
    "customTokenLabel": "Token (optionnel)",
    "urlRequired": "Veuillez saisir l'URL",
    "badUrl": "URL invalide (http(s):// requis)",
    "adding": "Ajout…",
    "addAction": "Ajouter",
    "urlExists": "Cette adresse existe déjà",
    "sectionTeams": "Équipes"
  },
  "trustedSites": {
    "addFailed": "Add failed",
    "removeFailed": "Remove failed",
    "title": "Trusted sites",
    "warn": "⚠ Sites in this list can run commands (exec) on your computer. Only add addresses you fully trust.",
    "placeholder": "Add a site, e.g. app.cicy-ai.com or my-cloud.example.org",
    "add": "Add",
    "loading": "Loading…",
    "empty": "None",
    "builtin": "Built-in",
    "remove": "Remove",
    "menu": "Trusted sites"
  },
  "audit": {
    "loadFailed": "Load failed",
    "title": "Audit log",
    "count": "Total",
    "refresh": "Refresh",
    "all": "All",
    "rpc": "RPC calls",
    "auth": "Auth decisions",
    "search": "Search source / tool / command…",
    "colTime": "Time",
    "colType": "Type",
    "colSource": "Source",
    "colOp": "Operation",
    "colDetail": "Detail",
    "loading": "Loading…",
    "empty": "No audit records",
    "noMatch": "No matching records",
    "menu": "Audit log"
  },
  "sidecar": {
    "found": "New version found",
    "upToDate": "Already up to date",
    "notRunning": "cicy-code not running",
    "checkFailed": "Update check failed",
    "failed": "Operation failed",
    "startFailed": "Start failed",
    "checking2": "Checking…",
    "checkUpdate": "Check for updates",
    "updated": "Updated to latest",
    "updateTo": "Update to",
    "restarted": "Restarted",
    "restart": "Restart",
    "stoppedDone": "Stopped",
    "stop": "Stop",
    "lanAccess": "Accès LAN",
    "lanOn": "Accès LAN activé",
    "lanOff": "Accès LAN désactivé",
    "lanEnabling": "Activation accès LAN, redémarrage…",
    "lanDisabling": "Désactivation accès LAN, redémarrage…",
    "lanFailed": "Échec",
    "lanHint": "Activé : les appareils du LAN accèdent via l'IP de cette machine (api_token requis) ; le basculement redémarre cicy-code",
    "binPrepFail": "Échec de préparation de cicy-code : {{err}}",
    "binMissing": "Aucun binaire cicy-code utilisable",
    "starting": "Démarrage de cicy-code{{lan}}…",
    "lanSuffix": " (accès LAN)",
    "nodeInstalling": "Aucun Node utilisable (absent ou <20), installation de Node {{ver}} (~50 Mo)…",
    "nodeDone": "Node {{ver}} installé → {{dir}}",
    "nodeExtractRetry": "node/npx introuvable après extraction, source suivante…",
    "nodeDownloadFail": "Échec téléchargement Node ({{src}}) : {{err}} — nouvelle source…",
    "nodeFailed": "❌ Échec de l'installation auto de Node (les deux sources). Installez Node (LTS) depuis https://nodejs.org puis cliquez Réessayer",
    "linkFail": "lien symbolique {{link}} échoué : {{err}}",
    "linked": "{{names}} liés → ~/.local/bin",
    "brewSpawnFail": "brew install {{dep}} n'a pas démarré : {{err}}",
    "netChecking": "Vérification si le réseau est CN…",
    "netResult": "Réseau : {{net}} → registry={{registry}}{{mirror}}",
    "netCN": "CN",
    "netNonCN": "non-CN",
    "netMirror": " + miroir",
    "brewMissing": "❌ Homebrew introuvable (requis pour tmux etc.). Exécutez dans le Terminal puis Réessayer :",
    "depInstalled": "✓ {{dep}} déjà installé",
    "depInstalling": "Installation de {{dep}} (quelques minutes)…",
    "depFail": "❌ brew install {{dep}} a échoué (voir log), Réessayer",
    "depDone": "✓ {{dep}} installé",
    "mihomoInstalling": "Installation du binaire mihomo (node24 → npm pack cicy-mihomo)…",
    "mihomoReady": "✓ mihomo prêt → {{bin}}",
    "mihomoSkip": "Pré-installation mihomo ignorée (non bloquant) : {{err}}",
    "checkingLatest": "Vérification de la dernière version…",
    "swapping": "Passage à {{ver}}, redémarrage de cicy-code…",
    "startingAgents": "Démarrage de cicy-code… (restauration des panneaux agent)",
    "notUpInTime": "cicy-code n'a pas démarré en {{secs}}s",
    "upToDateVer": "Déjà à jour {{ver}}",
    "updatedTo": "Mis à jour vers {{ver}}",
    "startedUnknownVer": "Démarré (version inconnue, attendu {{ver}})",
    "updateFail": "Échec de la mise à jour : {{err}}",
    "downloading": "Téléchargement {{label}} {{ver}}…",
    "ready": "{{label}} {{ver}} prêt",
    "start": "Démarrer",
    "started": "Démarré",
    "cftMenu": "Tunnel Cloudflare",
    "cftHint": "Exposer le cicy-code de ce Mac sur un domaine public fixe via un tunnel nommé Cloudflare (nécessite un connector token Cloudflare) ; basculer redémarre cicy-code",
    "cftTitle": "Tunnel Cloudflare",
    "cftSubtitle": "Exposer ce cicy-code sur un domaine public fixe via un tunnel nommé Cloudflare",
    "cftEnable": "Activer le tunnel",
    "cftToken": "Token du tunnel",
    "cftHost": "Hôte public (optionnel)",
    "cftNeedToken": "Un token de tunnel est requis pour activer",
    "cftApplying": "Application du tunnel Cloudflare, redémarrage…",
    "cftOn": "Tunnel Cloudflare activé",
    "cftOff": "Tunnel Cloudflare désactivé",
    "cftFailed": "Échec du réglage",
    "cftRunning": "En cours",
    "cftStopped": "Arrêté",
    "cftRefresh": "Rafraîchir",
    "cftRestart": "Redémarrer le tunnel",
    "cftStart": "Démarrer le tunnel",
    "cftRestarted": "Tunnel redémarré",
    "cftRestartHint": "Redémarrer le tunnel avec le token/hôte actuel",
    "cftNeedHost": "L’hôte public est requis",
    "cftTunnelDown": "Tunnel non connecté : le token est peut-être invalide/expiré, ou le nom d’hôte n’a pas de route dans Cloudflare",
    "cftConnected": "Tunnel connecté",
    "tunnelMenu": "Activer le tunnel",
    "tunnelRunning": "Tunnel actif",
    "tunnelHint": "Expose le cicy-code de cette machine via un tunnel zero-trust à une adresse publique fixe (offre payante) ; cicy-code se connecte automatiquement une fois activé",
    "tunnelEnabling": "Activation du tunnel, redémarrage de cicy-code…",
    "tunnelOn": "Tunnel activé",
    "tunnelNeedUpgrade": "Offre gratuite — passez à une offre d'équipe pour un tunnel fixe",
    "tunnelFailed": "Échec de l'activation du tunnel"
  },
  "teamCard": {
    "noHost": "No address set",
    "noUrl": "No URL",
    "editUrl": "Modifier l'URL d'accès",
    "setUrl": "Définir l'URL d'accès",
    "delete": "Supprimer",
    "deleteTitle": "Supprimer l'équipe",
    "deleteMsg": "Cela supprimera l'équipe cloud privée du cloud, affectant tous les appareils. Supprimer «{{name}}»?",
    "deleted": "Équipe supprimée",
    "deleteFailed": "Échec de suppression",
    "editAddr": "Modifier l'adresse",
    "changeAvatar": "Cliquer pour changer l'avatar"
  },
  "updateDrawer": {
    "done": "Update complete",
    "failed": "Update failed",
    "phaseDownload": "Download",
    "phaseSwap": "Switch",
    "phaseDone": "Done",
    "title": "Update cicy-code",
    "current": "current",
    "latest": "latest",
    "minimize": "Minimize",
    "preparing": "Preparing…",
    "stuckHint": "Waiting for the new version to be ready — taking longer than usual. You can leave it in the background; you'll be notified when it finishes or fails.",
    "inProgress": "Updating…",
    "updatedLatest": "Updated to latest"
  },
  "teamFilter": {
    "all": "All",
    "local": "Local",
    "cloud": "Private cloud",
    "custom": "Custom"
  },
  "userMenu": {
    "wallet": "My wallet",
    "billing": "My billing",
    "logout": "Log out"
  },
  "busy": {
    "start": "Starting…",
    "restart": "Restarting…",
    "update": "Updating…",
    "stop": "Stopping…"
  },
  "localStatus": {
    "open": "Open",
    "notRunning": "Not running",
    "tokenInvalid": "Token invalid",
    "badUrl": "Bad URL",
    "error": "Error"
  },
  "teamKind": {
    "private": "Private cloud",
    "personal": "Personal",
    "shared": "Shared"
  },
  "ctxMenu": {
    "reload": "Recharger",
    "webviewId": "WebviewId: {{id}}",
    "copySkillCmd": "Copier la commande Skill",
    "skillPrompt": "Utilise le Skill agent-electron pour opérer ce webview : webContent id={{id}}, profile id={{profile}}, url={{url}}, title={{title}}",
    "cut": "Couper",
    "copy": "Copier",
    "paste": "Coller",
    "selectAll": "Tout sélectionner",
    "inspect": "Inspecter l'élément",
    "services": "Services",
    "lookUpSelection": "Rechercher la sélection",
    "searchWithGoogle": "Rechercher avec Google",
    "copyImage": "Copier l'image",
    "copyImageAddress": "Copier l'adresse de l'image",
    "saveImage": "Enregistrer l'image",
    "saveImageAs": "Enregistrer l'image sous…",
    "copyVideoAddress": "Copier l'adresse de la vidéo",
    "saveVideo": "Enregistrer la vidéo",
    "saveVideoAs": "Enregistrer la vidéo sous…",
    "copyLink": "Copier le lien",
    "saveLinkAs": "Enregistrer le lien sous…",
    "copied": "Commande Skill copiée — collez-la et envoyez-la à votre Agent",
    "goBack": "Précédent",
    "goForward": "Suivant"
  },
  "dockerOpen": {
    "tokVolHit": "✓ Token obtenu depuis le volume (tentative {{n}})",
    "tokVolMiss": "Pas encore d'api_token dans le volume (le conteneur n'a pas écrit global.json)",
    "tokVolErr": "Échec de lecture du volume : {{err}}",
    "tokExecHit": "✓ Token obtenu via exec conteneur (tentative {{n}})",
    "tokExecMiss": "docker exec n'a renvoyé aucun api_token",
    "tokExecErr": "Échec docker exec : {{err}}",
    "tokRetry": "Tentative {{n}}/5 sans résultat, nouvel essai dans 2s…",
    "tokFail": "Échec de lecture du token après 5 tentatives",
    "readToken": "Lecture du token conteneur (conteneur {{container}} / volume {{volume}})…",
    "hintNoToken": "Impossible de lire le token du conteneur. Le conteneur n'est peut-être pas démarré, ou vient de démarrer sans avoir écrit global.json — attendez puis cliquez Réessayer.",
    "hintWslUnmanaged": "WSL non géré : le conteneur est sur :{{port}} mais wsl ne voit pas la distro, docker exec ne peut pas lire le token. Essayez « Redémarrer Docker » dans le menu, ou redémarrez Windows puis Réessayer.",
    "hintNotRunning": "Le conteneur ne tourne pas. Cliquez « Démarrer » sur la carte d'abord, puis Ouvrir.",
    "registering": "Enregistrement de l'équipe cloud…",
    "hintRegisterFailed": "Échec d'enregistrement de l'équipe cloud (vérifiez connexion / réseau).",
    "opening": "Ouverture de {{url}} …",
    "opened": "Ouvert",
    "hintOpenFailed": "Token obtenu mais échec d'ouverture de la fenêtre : {{err}}",
    "hintException": "Exception lors de l'ouverture : {{err}}",
    "engineStartingNoReset": "Moteur Docker non démarré, démarrage (sans réinitialiser WSL)…"
  },
  "dockerBadge": {
    "install-docker": "Prép.",
    "image": "Téléch.",
    "container": "Démarr.",
    "health": "Démarr.",
    "done": "Terminé",
    "open": "Ouvrir"
  },
  "chromeProxy": {
    "downloading": "Téléchargement de mihomo (proxy Chrome, depuis OSS)…",
    "ready": "Proxy Chrome (host mihomo) prêt",
    "verifyFailed": "Échec de la vérification de mihomo après téléchargement (fichier trop petit)",
    "containerConfigParseFailed": "Échec de l’analyse de la config mihomo du conteneur : {{err}}",
    "noContainerConfig": "Impossible de lire la config mihomo du conteneur",
    "binMissing": "Binaire mihomo manquant (exécutez dabord ensureBinary)",
    "configMissing": "Config host manquante (exécutez dabord writeConfig)"
  },
  "updateBanner": {
    "available": "Nouvelle version v{{v}} disponible",
    "downloading": "Téléchargement de la mise à jour",
    "ready": "Téléchargé — redémarrez pour installer",
    "error": "Échec de la mise à jour",
    "downloadBtn": "Télécharger la mise à jour",
    "installBtn": "Installer",
    "checkBtn": "Vérifier les mises à jour",
    "checkingShort": "Vérification…",
    "checking": "Vérification des mises à jour…",
    "upToDate": "À jour (v{{v}})",
    "drawerTitle": "Mise à jour",
    "startDl": "Téléchargement…",
    "readyShort": "Téléchargé",
    "readyDrawer": "Téléchargé — cliquez Installer pour redémarrer",
    "later": "Plus tard",
    "eta": "{{s}}s restant",
    "updateNow": "Mettre à jour",
    "modalSub": "Nous recommandons de mettre à jour vers la dernière version"
  },
  "tabShell": {
    "myTeam": "Mon équipe",
    "newTabBtn": "Nouvel onglet",
    "newPanel": "Nouveau panneau"
  },
  "dood": {
    "menu": "Utiliser Docker dans le conteneur",
    "hint": "Monte le Docker et le client docker de l'hôte dans le conteneur pour que son agent puisse exécuter docker (le basculement recrée le conteneur ; effet immédiat, sans téléchargement)",
    "title": "Utiliser Docker dans le conteneur",
    "subtitle": "Monte le Docker et le client docker de l'hôte dans le conteneur pour que son agent puisse exécuter docker (immédiat, sans téléchargement)",
    "enable": "Autoriser Docker dans le conteneur",
    "applying": "Activation de l'accès Docker du conteneur, reconstruction…",
    "disabling": "Désactivation…",
    "onDone": "Accès Docker du conteneur activé",
    "offDone": "Accès Docker du conteneur désactivé",
    "failed": "Échec de l'application"
  },
  "plan": {
    "personal": "Personnel",
    "team": "Équipe",
    "enterprise": "Entreprise",
    "hint": "Offre du compte actuel"
  },
  "tunnel": {
    "menu": "Tunnel auto-hébergé",
    "hint": "Expose ce cicy-code via votre propre cicy-tunnel sur <slug>.gw.<domaine> (collez url+token, transfert transparent, sans --public) ; le basculement redémarre cicy-code",
    "title": "Tunnel auto-hébergé · cicy-tunnel",
    "subtitle": "Expose ce cicy-code via votre propre cicy-tunnel sur <slug>.gw.<domaine>, transfert transparent. url+token via enroll.",
    "enable": "Activer le tunnel",
    "url": "URL du tunnel",
    "token": "Token du nœud",
    "tokenPh": "Collez le token d'enroll",
    "needUrl": "URL requise pour activer (wss://…/_tunnel/connect)",
    "needToken": "Token du nœud requis pour activer",
    "applying": "Application de la config, redémarrage de cicy-code…",
    "on": "Tunnel activé",
    "off": "Tunnel désactivé",
    "failed": "Échec de l'application"
  },
  "hub": {
    "section": "Hub",
    "add": "Ajouter un Hub",
    "addTitle": "Ajouter un Hub",
    "addSub": "Saisissez l'URL d'un Hub — stockée localement uniquement.",
    "name": "Nom (optionnel)",
    "url": "URL",
    "editUrl": "Modifier l'URL",
    "deleteTitle": "Supprimer le Hub",
    "deleteConfirm": "Supprimer",
    "paste": "JSON du Hub",
    "pasteSub": "Collez le JSON du Hub (url + token). Stocké localement.",
    "badPaste": "Analyse impossible — collez le JSON du Hub (url requise)",
    "editTitle": "Modifier le Hub",
    "editAddr": "Modifier",
    "empty": "Aucun Hub — cliquez sur Ajouter un Hub et collez le JSON",
    "noTeams": "Aucune team en ligne dans ce Hub",
    "agents": "{n} agents",
    "scan": "Scannez avec CiCy Mobile pour ajouter ce Hub"
  }
}
