2052 lines
96 KiB
JSON
2052 lines
96 KiB
JSON
{
|
||
"Language": {
|
||
"followSystem": "Suivre le système",
|
||
"english": "Anglais",
|
||
"simplifiedChinese": "Chinois simplifié",
|
||
"traditionalChinese": "Chinois traditionnel",
|
||
"japanese": "Japonais",
|
||
"korean": "Coréen",
|
||
"spanish": "Espagnol",
|
||
"german": "Allemand",
|
||
"french": "Français",
|
||
"portuguese": "Portugais",
|
||
"arabic": "Arabe"
|
||
},
|
||
"WelcomePage": {
|
||
"title": "Bienvenue sur Codeg",
|
||
"openSettings": "Ouvrir les paramètres",
|
||
"searchPlaceholder": "Rechercher des dossiers...",
|
||
"loading": "Chargement...",
|
||
"emptyFolders": "Aucun dossier pour le moment",
|
||
"removeFromHistory": "Retirer de l’historique",
|
||
"openFolder": "Ouvrir un dossier",
|
||
"cloneRepository": "Cloner un dépôt",
|
||
"projectBoot": "Lanceur de projet",
|
||
"softwareVersion": "Version {version}",
|
||
"toasts": {
|
||
"loadFolderHistoryFailed": "Échec du chargement de l’historique des dossiers",
|
||
"openFolderFailed": "Échec de l’ouverture du dossier",
|
||
"removeFromHistoryFailed": "Échec de la suppression du dossier",
|
||
"openSettingsFailed": "Échec de l’ouverture des paramètres",
|
||
"cloneFailed": "Échec du clonage du dépôt",
|
||
"openProjectBootFailed": "Impossible d'ouvrir le lanceur de projet"
|
||
},
|
||
"errors": {
|
||
"unknown": "Erreur inattendue",
|
||
"invalidInput": "Entrée invalide.",
|
||
"notFound": "Ressource introuvable.",
|
||
"alreadyExists": "La ressource existe déjà.",
|
||
"dependencyMissing": "Une dépendance requise est manquante.",
|
||
"databaseError": "Échec de l’opération de base de données.",
|
||
"ioError": "Échec de l’opération de fichier.",
|
||
"externalCommandFailed": "La commande externe a échoué.",
|
||
"windowOperationFailed": "Échec de l’opération de fenêtre.",
|
||
"gitNotInstalled": "Git n’est pas installé. Veuillez installer Git d’abord.",
|
||
"targetDirectoryNotEmpty": "Le répertoire cible existe déjà et n’est pas vide.",
|
||
"repositoryNotFound": "Dépôt introuvable. Vérifiez l’URL et les autorisations d’accès.",
|
||
"networkUnavailable": "Le réseau est indisponible. Vérifiez votre connexion et réessayez.",
|
||
"authenticationFailed": "Échec de l’authentification. Vérifiez les identifiants ou la clé SSH.",
|
||
"permissionDenied": "Permission refusée. Vérifiez les autorisations du répertoire."
|
||
},
|
||
"cloneDialog": {
|
||
"title": "Cloner un dépôt",
|
||
"repositoryUrl": "URL du dépôt",
|
||
"repositoryUrlPlaceholder": "https://github.com/user/repo.git",
|
||
"directory": "Répertoire",
|
||
"directoryPlaceholder": "Sélectionnez le répertoire cible...",
|
||
"browseDirectory": "Parcourir le répertoire",
|
||
"cancel": "Annuler",
|
||
"clone": "Cloner",
|
||
"clonePath": "Chemin de clonage : {path}"
|
||
}
|
||
},
|
||
"GitCredentialDialog": {
|
||
"title": "Authentification requise",
|
||
"description": "Le serveur distant nécessite des identifiants. Entrez votre nom d'utilisateur et votre mot de passe (ou jeton d'accès personnel).",
|
||
"username": "Nom d'utilisateur",
|
||
"usernamePlaceholder": "Nom d'utilisateur ou e-mail",
|
||
"password": "Mot de passe / Jeton",
|
||
"passwordPlaceholder": "Mot de passe ou jeton d'accès personnel",
|
||
"passwordHint": "Entrez le nom d'utilisateur et le mot de passe du serveur.",
|
||
"cancel": "Annuler",
|
||
"authenticate": "Authentifier",
|
||
"authenticating": "Authentification...",
|
||
"invalidCredentials": "Identifiants invalides. Veuillez réessayer.",
|
||
"saveCredentials": "Enregistrer les identifiants pour les opérations futures",
|
||
"githubTitle": "Authentification GitHub",
|
||
"githubDescription": "Entrez un jeton d'accès personnel pour vous connecter à GitHub. Le jeton sera validé et enregistré automatiquement.",
|
||
"githubToken": "Jeton d'accès personnel",
|
||
"githubTokenPlaceholder": "ghp_xxxxxxxxxxxx",
|
||
"githubTokenHint": "Générez un jeton dans GitHub → Settings → Developer settings → Personal access tokens.",
|
||
"githubAuthenticate": "Valider et connecter",
|
||
"generateToken": "Générer un jeton"
|
||
},
|
||
"SettingsShell": {
|
||
"title": "Paramètres",
|
||
"preferences": "Préférences",
|
||
"nav": {
|
||
"appearance": "Apparence",
|
||
"agents": "Agents IA",
|
||
"mcp": "MCP",
|
||
"skills": "Skills",
|
||
"shortcuts": "Raccourcis",
|
||
"version_control": "Contrôle de version",
|
||
"system": "Système",
|
||
"chat_channels": "Canaux de chat",
|
||
"web_service": "Service Web",
|
||
"model_providers": "Fournisseurs de Modèles",
|
||
"experts": "Experts"
|
||
}
|
||
},
|
||
"AppearanceSettings": {
|
||
"sectionTitle": "Apparence du thème",
|
||
"sectionDescription": "Choisissez clair, sombre ou suivre le système. Les paramètres sont enregistrés automatiquement.",
|
||
"themeMode": "Mode du thème",
|
||
"placeholder": "Sélectionner le mode du thème",
|
||
"system": "Suivre le système",
|
||
"light": "Clair",
|
||
"dark": "Sombre",
|
||
"currentTheme": "Thème effectif actuel : {theme}",
|
||
"resolvedTheme": {
|
||
"light": "Clair",
|
||
"dark": "Sombre",
|
||
"unknown": "--"
|
||
},
|
||
"themeColor": {
|
||
"sectionTitle": "Couleur du thème",
|
||
"sectionDescription": "Choisissez une palette pour les accents, les boutons et les surlignages.",
|
||
"current": "Couleur actuelle : {color}",
|
||
"options": {
|
||
"neutral": "Neutral",
|
||
"zinc": "Zinc",
|
||
"slate": "Slate",
|
||
"stone": "Stone",
|
||
"gray": "Gray",
|
||
"red": "Red",
|
||
"rose": "Rose",
|
||
"orange": "Orange",
|
||
"green": "Green",
|
||
"blue": "Blue",
|
||
"yellow": "Yellow",
|
||
"violet": "Violet"
|
||
}
|
||
},
|
||
"zoomLevel": {
|
||
"sectionTitle": "Zoom de la fenêtre",
|
||
"sectionDescription": "Met à l'échelle toute l'interface. S'applique immédiatement et est enregistré par appareil.",
|
||
"placeholder": "Sélectionnez le niveau de zoom",
|
||
"default": "Par défaut",
|
||
"current": "Zoom actuel : {zoom}%"
|
||
},
|
||
"resetToDefaults": "Réinitialiser",
|
||
"resetHint": "Réinitialise la couleur du thème et le zoom de la fenêtre."
|
||
},
|
||
"SystemSettings": {
|
||
"loading": "Chargement...",
|
||
"sectionTitle": "Gestion du système",
|
||
"sectionDescription": "Gérez le proxy réseau, les mises à jour de l’app et les préférences de langue.",
|
||
"proxyTitle": "Proxy réseau",
|
||
"proxyDescription": "Lorsqu’il est activé, les requêtes réseau suivantes utilisent ce proxy en priorité (y compris le chat ACP, l’installation d’agents et les opérations Git distantes).",
|
||
"loadFailed": "Échec du chargement : {message}",
|
||
"enableProxy": "Activer le proxy système",
|
||
"proxyAddress": "Adresse du proxy",
|
||
"proxyHint": "Prend en charge http(s)/socks5, exemple : {example}. Actif uniquement lorsque le proxy système est activé.",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement...",
|
||
"proxyRequired": "L’URL du proxy est requise lorsque le proxy est activé",
|
||
"saveSuccess": "Les paramètres du proxy système ont été enregistrés",
|
||
"saveFailed": "Échec de l’enregistrement : {message}",
|
||
"languageTitle": "Langue",
|
||
"languageDescription": "Définissez la langue de l’app. En mode système, les langues non prises en charge reviennent à l’anglais.",
|
||
"appLanguage": "Langue de l’app",
|
||
"languageSaveSuccess": "Les paramètres de langue ont été enregistrés",
|
||
"languageSaveFailed": "Échec de l’enregistrement des paramètres de langue : {message}",
|
||
"updateTitle": "Mise à jour de l’app",
|
||
"versionTitle": "Mise à jour logicielle",
|
||
"updateDescription": "Vérifiez les nouvelles versions depuis la source de publication configurée et installez-les directement si disponibles.",
|
||
"currentVersion": "Version actuelle",
|
||
"upgradableVersion": "Dernière version",
|
||
"none": "Aucune",
|
||
"lastChecked": "Dernière vérification : {time}",
|
||
"updateError": "Erreur de mise à jour : {message}",
|
||
"checking": "Vérification...",
|
||
"checkUpdate": "Rechercher les mises à jour",
|
||
"updating": "Installation...",
|
||
"downloading": "Téléchargement...",
|
||
"upgradeTo": "Mettre à jour vers v{version}",
|
||
"foundUpdate": "Nouvelle version v{version} trouvée",
|
||
"alreadyLatest": "Vous utilisez déjà la dernière version",
|
||
"checkUpdateFailed": "Échec de la recherche de mises à jour : {message}",
|
||
"installSuccess": "Mise à jour installée. Redémarrage de l’app.",
|
||
"installFailed": "Échec de la mise à jour : {message}",
|
||
"updateErrors": {
|
||
"sourceUnavailable": "Impossible d’atteindre la source de mise à jour. Vérifiez votre réseau ou proxy et réessayez.",
|
||
"network": "La connexion réseau a échoué. Vérifiez votre réseau ou proxy et réessayez.",
|
||
"downloadFailed": "Impossible de télécharger le paquet de mise à jour. Veuillez réessayer plus tard.",
|
||
"installFailed": "Impossible d’installer la mise à jour. Fermez l’app puis réessayez.",
|
||
"unknown": "La mise à jour a échoué. Veuillez réessayer plus tard."
|
||
}
|
||
},
|
||
"VersionControlSettings": {
|
||
"loading": "Chargement...",
|
||
"sectionTitle": "Contrôle de version",
|
||
"sectionDescription": "Configurez l'exécutable Git et gérez les comptes GitHub.",
|
||
"gitTitle": "Configuration Git",
|
||
"gitDescription": "Configurez l'exécutable Git utilisé par l'application.",
|
||
"gitDetected": "Git détecté",
|
||
"gitNotFound": "Git introuvable sur le système",
|
||
"gitVersion": "Version",
|
||
"gitPath": "Chemin",
|
||
"customGitPath": "Chemin Git personnalisé",
|
||
"customGitPathPlaceholder": "/usr/bin/git",
|
||
"customGitPathHint": "Laissez vide pour utiliser le chemin détecté automatiquement.",
|
||
"test": "Tester",
|
||
"testing": "Test en cours...",
|
||
"testSuccess": "L'exécutable Git est valide.",
|
||
"testFailed": "Test Git échoué : {message}",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement...",
|
||
"saveSuccess": "Paramètres Git enregistrés.",
|
||
"saveFailed": "Échec de l'enregistrement : {message}",
|
||
"githubTitle": "Comptes GitHub",
|
||
"githubDescription": "Gérez les comptes GitHub pour l'authentification. Les jetons sont stockés localement.",
|
||
"noAccounts": "Aucun compte GitHub configuré.",
|
||
"addAccount": "Ajouter un compte",
|
||
"serverUrl": "URL du serveur",
|
||
"serverUrlPlaceholder": "https://github.com",
|
||
"token": "Jeton d'accès personnel",
|
||
"tokenPlaceholder": "ghp_xxxxxxxxxxxx",
|
||
"generateToken": "Générer un jeton",
|
||
"tokenHint": "Générez un jeton dans GitHub → Settings → Developer settings → Personal access tokens.",
|
||
"validateAndAdd": "Valider et ajouter",
|
||
"validating": "Validation...",
|
||
"addSuccess": "Compte {username} ajouté avec succès.",
|
||
"addFailed": "Échec de l'ajout du compte : {message}",
|
||
"testConnection": "Tester",
|
||
"connectionSuccess": "Connexion réussie.",
|
||
"connectionFailed": "Échec de la connexion : {message}",
|
||
"setDefault": "Définir par défaut",
|
||
"defaultLabel": "Par défaut",
|
||
"defaultSet": "Compte par défaut mis à jour.",
|
||
"removeAccount": "Supprimer",
|
||
"removeConfirmTitle": "Supprimer le compte",
|
||
"removeConfirmMessage": "Êtes-vous sûr de vouloir supprimer le compte « {username} » ?",
|
||
"removeConfirm": "Supprimer",
|
||
"removeCancel": "Annuler",
|
||
"removeSuccess": "Compte supprimé.",
|
||
"scopes": "Portées",
|
||
"loadFailed": "Échec du chargement des paramètres : {message}",
|
||
"gitAccount": {
|
||
"sectionTitle": "Comptes serveur Git",
|
||
"sectionDescription": "Gérez les identifiants pour les serveurs Git non GitHub (GitLab, Bitbucket, auto-hébergé, etc.).",
|
||
"noAccounts": "Aucun compte de serveur Git configuré.",
|
||
"addAccount": "Ajouter un compte",
|
||
"addTitle": "Ajouter un compte Git",
|
||
"addDescription": "Entrez l'adresse du serveur, le nom d'utilisateur et le mot de passe ou jeton d'accès.",
|
||
"serverUrl": "URL du serveur",
|
||
"serverUrlPlaceholder": "https://gitlab.example.com",
|
||
"username": "Nom d'utilisateur",
|
||
"usernamePlaceholder": "Nom d'utilisateur ou e-mail",
|
||
"password": "Mot de passe / Jeton",
|
||
"passwordPlaceholder": "Mot de passe ou jeton d'accès",
|
||
"passwordHint": "Entrez le mot de passe ou le jeton d'accès du serveur.",
|
||
"add": "Ajouter",
|
||
"serverRequired": "L'URL du serveur est requise.",
|
||
"usernameRequired": "Le nom d'utilisateur est requis.",
|
||
"passwordRequired": "Le mot de passe est requis."
|
||
}
|
||
},
|
||
"ShortcutSettings": {
|
||
"sectionTitle": "Raccourcis",
|
||
"resetDefault": "Rétablir les valeurs par défaut",
|
||
"recordInstruction": "Cliquez sur le bouton à droite, puis appuyez sur une combinaison de touches. Utilisez Ctrl/Cmd, Alt et Shift. Appuyez sur Échap pour annuler l’enregistrement.",
|
||
"recording": "Appuyez sur un raccourci...",
|
||
"toasts": {
|
||
"conflict": "Le raccourci est déjà utilisé par \"{title}\"",
|
||
"updated": "Raccourci mis à jour",
|
||
"invalid": "Raccourci invalide, veuillez réessayer",
|
||
"reset": "Les raccourcis par défaut ont été restaurés"
|
||
},
|
||
"actions": {
|
||
"toggle_search": {
|
||
"title": "Ouvrir la recherche",
|
||
"description": "Afficher ou masquer le panneau de recherche de conversations"
|
||
},
|
||
"toggle_sidebar": {
|
||
"title": "Basculer la barre latérale gauche",
|
||
"description": "Afficher ou masquer la barre latérale de liste des conversations"
|
||
},
|
||
"toggle_terminal": {
|
||
"title": "Basculer le terminal",
|
||
"description": "Afficher ou masquer le panneau terminal inférieur"
|
||
},
|
||
"new_terminal_tab": {
|
||
"title": "Nouveau terminal",
|
||
"description": "Créer un nouvel onglet terminal lorsque le terminal a le focus"
|
||
},
|
||
"close_current_terminal_tab": {
|
||
"title": "Fermer le terminal actuel",
|
||
"description": "Fermer l’onglet terminal actuel lorsque le terminal a le focus"
|
||
},
|
||
"toggle_aux_panel": {
|
||
"title": "Basculer le panneau droit",
|
||
"description": "Afficher ou masquer le panneau d’informations auxiliaires"
|
||
},
|
||
"new_conversation": {
|
||
"title": "Nouvelle conversation",
|
||
"description": "Créer un nouvel onglet de conversation dans le dossier actuel"
|
||
},
|
||
"open_folder": {
|
||
"title": "Ouvrir un dossier",
|
||
"description": "Ouvrir le sélecteur de dossier et ouvrir dans une nouvelle fenêtre"
|
||
},
|
||
"open_settings": {
|
||
"title": "Ouvrir les paramètres",
|
||
"description": "Ouvrir la fenêtre des paramètres"
|
||
},
|
||
"close_current_tab": {
|
||
"title": "Fermer l’onglet actuel",
|
||
"description": "Fermer la conversation actuelle ou l’onglet de fichier"
|
||
},
|
||
"close_all_file_tabs": {
|
||
"title": "Fermer tous les onglets de fichiers",
|
||
"description": "Fermer tous les onglets de fichiers uniquement en mode fichiers"
|
||
},
|
||
"send_message": {
|
||
"title": "Envoyer le message",
|
||
"description": "Envoyer le message actuel dans la zone de saisie"
|
||
},
|
||
"newline_in_message": {
|
||
"title": "Retour à la ligne",
|
||
"description": "Insérer un retour à la ligne dans la zone de saisie"
|
||
}
|
||
}
|
||
},
|
||
"SkillsSettings": {
|
||
"title": "Skills",
|
||
"description": "Sélectionnez une Skill à gauche. À droite, un aperçu Markdown s’affiche par défaut ; passez en édition pour modifier et enregistrer.",
|
||
"loadingAgents": "Chargement des agents qui prennent en charge les Skills...",
|
||
"emptyNoManageableAgents": "Aucun agent disponible pour la gestion des Skills.",
|
||
"managedTarget": "Cible gérée",
|
||
"selectAgentPlaceholder": "Sélectionnez un agent",
|
||
"searchPlaceholder": "Rechercher par nom / ID / chemin...",
|
||
"skillsList": "Liste des Skills",
|
||
"loadingSkills": "Chargement des Skills...",
|
||
"agentNotSupported": "L’agent actuel ne prend pas en charge la gestion des Skills.",
|
||
"emptySkills": "Aucune Skill pour le moment. Cliquez sur « Nouvelle Skill » pour en créer une.",
|
||
"newSkillTitle": "Nouvelle Skill",
|
||
"skillInfo": "Infos de la Skill",
|
||
"skillIdPlaceholder": "skill-id (lettres/chiffres/-/_/.)",
|
||
"skillsDirectoryWithPath": "Répertoire des Skills : {path}",
|
||
"skillsDirectoryNeedId": "Répertoire des Skills : saisissez l’ID de Skill pour générer le chemin complet",
|
||
"markdownContent": "Contenu Markdown",
|
||
"editingStatus": "Édition",
|
||
"previewStatus": "Aperçu",
|
||
"contentPlaceholder": "Saisissez le contenu Markdown de la Skill...",
|
||
"metadataTitle": "Métadonnées des Skills",
|
||
"onlyYamlMetadata": "Cette Skill contient uniquement des métadonnées YAML.",
|
||
"emptyContentHint": "Aucun contenu pour le moment. Cliquez sur « Éditer » pour commencer.",
|
||
"loadingSkill": "Chargement de la Skill...",
|
||
"emptyNoAgents": "Aucun agent disponible.",
|
||
"noSelectionHint": "Sélectionnez un Skill à gauche ou cliquez sur « Nouveau Skill » pour en créer un.",
|
||
"scope": {
|
||
"global": "Global",
|
||
"folder": "Dossier",
|
||
"selectFolderPlaceholder": "Sélectionner un dossier",
|
||
"noFolders": "Aucun dossier trouvé",
|
||
"pickFolderHint": "Sélectionnez un dossier pour afficher ses Skills."
|
||
},
|
||
"actions": {
|
||
"preview": "Aperçu",
|
||
"edit": "Éditer",
|
||
"openInWindow": "Ouvrir dans une nouvelle fenêtre",
|
||
"delete": "Supprimer",
|
||
"deleting": "Suppression...",
|
||
"refresh": "Actualiser",
|
||
"newSkill": "Nouvelle Skill",
|
||
"reset": "Réinitialiser",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement...",
|
||
"cancel": "Annuler"
|
||
},
|
||
"deleteDialog": {
|
||
"title": "Supprimer la Skill",
|
||
"confirm": "Supprimer la Skill actuelle ? Cette action est irréversible.",
|
||
"confirmWithNamePrefix": "Supprimer la Skill",
|
||
"confirmWithNameSuffix": "? Cette action est irréversible."
|
||
},
|
||
"toasts": {
|
||
"loadFailed": "Échec du chargement de la Skill",
|
||
"openFolderFailed": "Échec de l’ouverture du dossier",
|
||
"noSkillDirectory": "Aucun répertoire de Skills disponible pour l’agent actuel",
|
||
"nameRequired": "Le nom de la Skill ne peut pas être vide",
|
||
"updated": "Skill mise à jour",
|
||
"created": "Skill créée",
|
||
"saveFailed": "Échec de l’enregistrement de la Skill",
|
||
"deleted": "Skill supprimée",
|
||
"deleteFailed": "Échec de la suppression de la Skill"
|
||
},
|
||
"templates": {
|
||
"gemini": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Skill Name\n\nInstructions for the agent when this skill is active.\n\n## Workflow\n\n1. Add actionable step one.\n2. Add actionable step two.\n",
|
||
"openCode": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Purpose\n\nDescribe what this skill helps with.\n\n# Steps\n\n1. Add actionable step one.\n2. Add actionable step two.\n",
|
||
"openClaw": "---\nname: example-skill\ndescription: Describe when this skill should be used.\nuser-invocable: true\ndisable-model-invocation: false\n---\n\n# Purpose\n\nDescribe what this skill helps with.\n\n# Instructions\n\n1. Add actionable instruction one.\n2. Add actionable instruction two.\n",
|
||
"default": "# Skill: example-skill\n\n## When to use\n\n- Describe trigger conditions.\n\n## Instructions\n\n1. Add actionable instruction one.\n2. Add actionable instruction two.\n"
|
||
}
|
||
},
|
||
"McpSettings": {
|
||
"loading": "Chargement...",
|
||
"summary": {
|
||
"missingCommand": "(commande manquante)",
|
||
"missingUrl": "(URL manquante)"
|
||
},
|
||
"protocol": {
|
||
"stdio": "Stdio"
|
||
},
|
||
"errors": {
|
||
"selectInstallProtocol": "Veuillez sélectionner un protocole d’installation",
|
||
"fieldRequired": "{field} est requis",
|
||
"fieldNeedsBoolean": "{field} doit être true ou false",
|
||
"fieldNeedsNumber": "{field} doit être un nombre",
|
||
"fieldNeedsInteger": "{field} doit être un entier",
|
||
"fieldInvalidJson": "{field} contient un JSON invalide : {message}",
|
||
"fieldOutOfRange": "La valeur de {field} est hors de la plage autorisée",
|
||
"jsonEmpty": "{name} ne peut pas être vide",
|
||
"jsonInvalid": "{name} n’est pas un JSON valide : {message}",
|
||
"jsonMustBeObject": "{name} doit être un objet JSON"
|
||
},
|
||
"jsonNames": {
|
||
"localConfig": "Configuration MCP",
|
||
"installConfig": "Configuration d’installation"
|
||
},
|
||
"toasts": {
|
||
"uninstalled": "MCP désinstallé",
|
||
"uninstallFailed": "Échec de la désinstallation : {message}",
|
||
"selectAtLeastOneApp": "Veuillez sélectionner au moins une application cible",
|
||
"saveSuccess": "Enregistré",
|
||
"saveFailed": "Échec de l’enregistrement : {message}",
|
||
"installed": "{name} installé",
|
||
"installFailed": "Échec de l’installation : {message}"
|
||
},
|
||
"installDialog": {
|
||
"title": "Confirmer l’installation MCP",
|
||
"descriptionWithName": "Installer {name} dans la configuration locale.",
|
||
"description": "Sélectionnez les applications cibles pour l’installation.",
|
||
"protocol": "Protocole",
|
||
"selectProtocol": "Sélectionner un protocole",
|
||
"parameters": "Paramètres de configuration",
|
||
"booleanPlaceholder": "Veuillez sélectionner true/false",
|
||
"selectOneValue": "Sélectionner une valeur",
|
||
"targetApps": "Applications cibles"
|
||
},
|
||
"actions": {
|
||
"cancel": "Annuler",
|
||
"confirmInstall": "Confirmer l’installation",
|
||
"installing": "Installation",
|
||
"uninstall": "Désinstaller",
|
||
"uninstalling": "Désinstallation",
|
||
"viewDetails": "Voir les détails",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement",
|
||
"install": "Installer"
|
||
},
|
||
"tabs": {
|
||
"local": "MCP local",
|
||
"market": "Marketplace MCP"
|
||
},
|
||
"local": {
|
||
"filterPlaceholder": "Filtrer les MCP locaux...",
|
||
"loadFailed": "Échec du chargement : {message}",
|
||
"empty": "Aucun MCP local détecté.",
|
||
"description": "La configuration MCP locale peut être modifiée et enregistrée directement.",
|
||
"enabledApps": "Applications activées",
|
||
"configJson": "Configuration MCP (JSON)"
|
||
},
|
||
"market": {
|
||
"selectMarketplace": "Sélectionner un marketplace",
|
||
"searchPlaceholder": "Rechercher MCP...",
|
||
"searchFailed": "Échec de la recherche : {message}",
|
||
"loadingList": "Chargement de la liste MCP...",
|
||
"empty": "Aucun résultat MCP.",
|
||
"loadingDetail": "Chargement des détails du marketplace...",
|
||
"detailLoadFailed": "Échec du chargement des détails : {message}",
|
||
"owner": "Propriétaire : {owner}",
|
||
"namespace": "Espace de noms : {namespace}",
|
||
"defaultInstallProtocol": "Protocole d’installation par défaut",
|
||
"currentOptionParameterCount": "Nombre de paramètres de l’option actuelle : {count}",
|
||
"installConfigDescription": "Configuration d’installation (JSON, modifiable avant installation ; les modifications remplaceront le formulaire protocole/paramètres)",
|
||
"selectLeftToView": "Sélectionnez un MCP du marketplace à gauche pour voir les détails."
|
||
},
|
||
"badges": {
|
||
"verified": "Vérifié",
|
||
"remote": "Distant",
|
||
"hasHomepage": "A une page d’accueil",
|
||
"uses": "{count} utilisations",
|
||
"deployed": "Déployé",
|
||
"notDeployed": "Non déployé"
|
||
},
|
||
"selectLeftMcp": "Sélectionnez un MCP à gauche."
|
||
},
|
||
"AcpAgentSettings": {
|
||
"title": "Gestion du SDK des agents",
|
||
"description": "Gérez en un seul endroit la connexion SDK des agents, l'état activé, les variables d'environnement, la gestion de configuration et les informations de préflight de version.",
|
||
"loadingAgents": "Chargement de la liste des agents...",
|
||
"agentList": "Liste des agents",
|
||
"emptyNoAgent": "Aucun agent disponible.",
|
||
"configManagement": "Gestion de configuration",
|
||
"envVars": "Variables d'environnement",
|
||
"nativeJsonConfig": "Configuration JSON native",
|
||
"modelHintDefault": "Laissez vide pour utiliser le modèle système par défaut.",
|
||
"generalConfigDescriptionClaude": "Prend en charge la configuration rapide de l'API URL, API Key et des modèles Claude, et synchronise avec la configuration JSON native.",
|
||
"generalConfigDescriptionDefault": "Prend en charge les entrées de configuration importantes (API URL, API Key, Model) et la gestion de la configuration JSON native.",
|
||
"actions": {
|
||
"dragSort": "Glisser pour réordonner",
|
||
"dragSortAgent": "Glisser pour réordonner {name}",
|
||
"refreshCheck": "Actualiser la vérification",
|
||
"refreshCheckAgent": "Actualiser la vérification de {name}",
|
||
"clickEnable": "Cliquer pour activer {name}",
|
||
"clickDisable": "Cliquer pour désactiver {name}",
|
||
"install": "Installer",
|
||
"upgrade": "Mettre à niveau",
|
||
"uninstall": "Désinstaller",
|
||
"uninstalling": "Désinstallation...",
|
||
"saveEnvVars": "Enregistrer les variables d’environnement",
|
||
"saving": "Enregistrement...",
|
||
"saveCodexConfig": "Enregistrer la config Codex",
|
||
"saveGeminiConfig": "Enregistrer la config Gemini",
|
||
"saveOpenCodeConfig": "Enregistrer la config OpenCode",
|
||
"saveOpenClawConfig": "Enregistrer la config OpenClaw",
|
||
"saveConfigManagement": "Enregistrer la gestion de config",
|
||
"saveCurrentProvider": "Enregistrer le provider actuel",
|
||
"showApiKey": "Afficher la clé API",
|
||
"hideApiKey": "Masquer la clé API",
|
||
"showKey": "Afficher la clé",
|
||
"hideKey": "Masquer la clé",
|
||
"showToken": "Afficher le token",
|
||
"hideToken": "Masquer le token",
|
||
"cancel": "Annuler",
|
||
"delete": "Supprimer",
|
||
"deleting": "Suppression...",
|
||
"confirmDelete": "Confirmer la suppression",
|
||
"confirmUninstall": "Confirmer la désinstallation",
|
||
"saveClineConfig": "Enregistrer la configuration Cline"
|
||
},
|
||
"status": {
|
||
"enabled": "Activé",
|
||
"disabled": "Désactivé",
|
||
"unchecked": "Non vérifié",
|
||
"agentEnabledAria": "{name} activé",
|
||
"agentEnabledSwitch": "Interrupteur d’activation {name}"
|
||
},
|
||
"preflight": {
|
||
"count": "Éléments de pré-vérification : {count}",
|
||
"notRun": "Les vérifications n’ont pas encore été exécutées."
|
||
},
|
||
"codex": {
|
||
"configDescription": "Prend en charge la configuration rapide de l’URL API, de la clé API, du nom du modèle et du reasoning effort, avec synchronisation vers `auth.json` / `config.toml`.",
|
||
"authMode": "Mode d’authentification",
|
||
"chatgptSubscription": "Abonnement officiel",
|
||
"chatgptSubscriptionHint": "Connectez-vous avec l’abonnement officiel ChatGPT, pas besoin d’API Key",
|
||
"apiKeyHint": "Connectez-vous avec une API Key à OpenAI ou aux services API compatibles",
|
||
"selectProvider": "Sélectionner un provider",
|
||
"modelName": "Nom du modèle",
|
||
"selectReasoningEffort": "Sélectionner Reasoning Effort",
|
||
"enableWebsocket": "Activer WebSocket",
|
||
"enableWebsocketAria": "Activer WebSocket pour Codex Provider",
|
||
"enableSkills": "Activer Skills",
|
||
"enableSkillsAria": "Activer Skills pour Codex",
|
||
"enableFast": "Activer Fast",
|
||
"enableFastAria": "Activer le niveau de service Fast pour Codex",
|
||
"authJsonNative": "auth.json (natif)",
|
||
"configTomlNative": "config.toml (natif)",
|
||
"loginButton": "Se connecter avec ChatGPT",
|
||
"loginRequesting": "Demande du code de connexion...",
|
||
"loginStep1": "Ouvrez l'URL suivante dans votre navigateur :",
|
||
"loginStep2": "Entrez le code ci-dessous :",
|
||
"loginPolling": "En attente d'autorisation...",
|
||
"loginCancel": "Annuler",
|
||
"loginSuccess": "Connexion réussie, configuration enregistrée !",
|
||
"loginFailed": "Échec de la connexion : {message}",
|
||
"loginRetry": "Réessayer",
|
||
"loginCodeCopied": "Code copié",
|
||
"loggedIn": "Compte connecté",
|
||
"loginRelogin": "Reconnecter / Changer de compte",
|
||
"loginTimeout": "Connexion expirée, veuillez réessayer",
|
||
"loginSaveFailed": "Connexion réussie mais échec de la sauvegarde de la configuration"
|
||
},
|
||
"gemini": {
|
||
"authConfig": "Configuration d’authentification Gemini",
|
||
"authConfigDescription": "Alignée sur la documentation d’authentification Gemini CLI, avec prise en charge d’un endpoint personnalisé, connexion Google, Gemini API Key et Vertex AI (ADC / compte de service / API Key).",
|
||
"authMode": "Mode d’authentification",
|
||
"selectAuthMode": "Sélectionner un mode d’authentification",
|
||
"viewAuthDoc": "Voir la documentation d’authentification",
|
||
"mode": {
|
||
"custom": "Endpoint personnalisé",
|
||
"loginGoogle": "Connexion Google (OAuth)",
|
||
"vertexServiceAccount": "Vertex AI (Compte de service)"
|
||
},
|
||
"hint": {
|
||
"custom": "Renseignez API URL, API Key et Model, mappés sur GOOGLE_GEMINI_BASE_URL / GEMINI_API_KEY / GEMINI_MODEL.",
|
||
"loginGoogle": "Exécutez d’abord gemini dans le terminal et terminez la connexion Google ; la clé API n’est pas requise.",
|
||
"geminiApiKey": "Renseignez GEMINI_API_KEY lors de l’utilisation de l’API Gemini.",
|
||
"vertexAdc": "Utilisez gcloud ADC ; GOOGLE_CLOUD_PROJECT et GOOGLE_CLOUD_LOCATION sont recommandés.",
|
||
"vertexServiceAccount": "Définissez le chemin JSON du compte de service dans GOOGLE_APPLICATION_CREDENTIALS.",
|
||
"vertexApiKey": "Renseignez GOOGLE_API_KEY lors de l’utilisation d’une clé API Vertex AI."
|
||
}
|
||
},
|
||
"openCode": {
|
||
"configManagement": "Gestion de configuration OpenCode",
|
||
"configDescription": "Alignée sur le schéma `provider` d’OpenCode, prend en charge la gestion multi-provider et la synchronisation bidirectionnelle avec les fichiers JSON natifs.",
|
||
"providerManagement": "Gestion des providers",
|
||
"providerCount": "{count} fournisseurs",
|
||
"addProvider": "Ajouter un provider",
|
||
"emptyProvider": "Aucun provider pour le moment. Saisissez un ID puis cliquez sur « Ajouter un provider ».",
|
||
"providerEnabledState": "État activé de {providerId}",
|
||
"selectProviderNpm": "Sélectionner provider.npm",
|
||
"notSet": "Non défini",
|
||
"modelManagement": "Gestion des modèles",
|
||
"modelCount": "{count} modèles",
|
||
"modelDescription": "Aligné sur `provider.models` d’OpenCode. La gestion rapide prend actuellement en charge `name` / `id` ; les autres champs avancés sont conservés et peuvent être modifiés dans le JSON natif ci-dessous.",
|
||
"addModel": "Ajouter un modèle",
|
||
"emptyModel": "Aucun modèle pour le moment. Saisissez model id puis cliquez sur « Ajouter un modèle ».",
|
||
"modelId": "ID du modèle",
|
||
"modelName": "Nom du modèle",
|
||
"deleteModel": "Supprimer le modèle {modelId}",
|
||
"nativeJsonConfig": "Configuration JSON native OpenCode",
|
||
"mainModel": "Modèle principal",
|
||
"smallModel": "Petit modèle",
|
||
"noMatchingModels": "Aucun modèle correspondant"
|
||
},
|
||
"openClaw": {
|
||
"gatewayConfig": "Configuration Gateway",
|
||
"gatewayDescription": "Configure la connexion OpenClaw Gateway. Prend en charge une gateway locale ou distante.",
|
||
"gatewayUrlHint": "Laisser vide pour utiliser gateway.remote.url depuis la configuration locale openclaw.",
|
||
"gatewayTokenPlaceholder": "Token d’authentification Gateway",
|
||
"gatewayTokenHint": "Utilisez token-file plutôt qu’un token en clair si possible ; configurez-le via le CLI openclaw.",
|
||
"sessionKeyHint": "Optionnel. Spécifie la session key de la gateway ; laisser vide pour auto-attribuer une session isolée."
|
||
},
|
||
"authModeOfficialSubscription": "Abonnement officiel",
|
||
"authModeCustomEndpoint": "Endpoint personnalisé",
|
||
"authModeCustomEndpointHint": "Configurer manuellement l'URL API et la clé API pour un endpoint personnalisé.",
|
||
"authModeModelProvider": "Fournisseur de modèle",
|
||
"modelProvider": "Fournisseur de modèle",
|
||
"modelProviderHint": "Utiliser l'URL API et la clé API d'un fournisseur de modèle configuré.",
|
||
"selectModelProvider": "Sélectionner un fournisseur de modèle",
|
||
"noModelProviderAvailable": "Aucun fournisseur de modèle configuré pour cet agent. Allez dans les paramètres des fournisseurs de modèle pour en ajouter un.",
|
||
"claude": {
|
||
"authMode": "Mode d'authentification",
|
||
"officialSubscription": "Abonnement officiel",
|
||
"officialSubscriptionHint": "Utiliser l'abonnement officiel Anthropic, pas de clé API requise.",
|
||
"mainModel": "Modèle principal",
|
||
"reasoningModel": "Modèle de raisonnement (thinking)",
|
||
"haikuDefaultModel": "Modèle Haiku par défaut",
|
||
"sonnetDefaultModel": "Modèle Sonnet par défaut",
|
||
"opusDefaultModel": "Modèle Opus par défaut",
|
||
"effortLevel": "Niveau de raisonnement",
|
||
"effortLevelDefault": "Niveau par défaut",
|
||
"effortLevel_low": "Bas",
|
||
"effortLevel_medium": "Moyen",
|
||
"effortLevel_high": "Élevé",
|
||
"effortLevel_xhigh": "Très Élevé"
|
||
},
|
||
"dialogs": {
|
||
"confirmDeleteProvider": "Supprimer le provider {providerId} ?",
|
||
"confirmDeleteProviderDescription": "La configuration OpenCode et auth JSON seront mises à jour ensemble. Cette action est irréversible.",
|
||
"confirmUninstall": "Désinstaller {name} ?",
|
||
"confirmUninstallDescription": "Cela supprime la version installée localement. Vous pouvez réinstaller plus tard."
|
||
},
|
||
"errors": {
|
||
"nativeJsonMustBeObject": "La configuration JSON native doit être un objet",
|
||
"nativeJsonInvalid": "Erreur de format de configuration JSON native : {message}",
|
||
"openCodeAuthMustBeObject": "OpenCode auth.json doit être un objet JSON",
|
||
"openCodeAuthInvalid": "Erreur de format OpenCode auth.json : {message}",
|
||
"authMustBeObject": "auth.json doit être un objet JSON",
|
||
"authInvalid": "Erreur de format auth.json : {message}",
|
||
"providerIdPattern": "L’ID du provider n’accepte que lettres, chiffres, underscore, point et tiret",
|
||
"providerExists": "Le provider '{providerId}' existe déjà",
|
||
"modelIdPattern": "L’ID du modèle n’accepte que lettres, chiffres, underscore, point, deux-points et tiret",
|
||
"modelExists": "Le modèle '{modelId}' existe déjà"
|
||
},
|
||
"warnings": {
|
||
"nativeJsonRecoveredStructured": "La configuration JSON native est invalide ; réinitialisée en configuration structurée",
|
||
"nativeJsonRecoveredOpenCode": "La configuration JSON native est invalide ; réinitialisée en configuration structurée OpenCode",
|
||
"openCodeAuthRecovered": "OpenCode auth.json est invalide ; réinitialisé en configuration par défaut",
|
||
"authRecoveredStructured": "auth.json est invalide ; réinitialisé en configuration structurée"
|
||
},
|
||
"toasts": {
|
||
"agentActionCompleted": "{name} {action} terminé",
|
||
"agentActionFailed": "{name} {action} échoué",
|
||
"localVersion": "Version locale : {version}",
|
||
"installCompletedVersionLater": "Installation terminée, la version sera mise à jour à la prochaine vérification",
|
||
"uninstallCompleted": "Désinstallation de {name} terminée",
|
||
"uninstallFailed": "Échec de la désinstallation de {name}",
|
||
"localVersionRemoved": "Version locale supprimée",
|
||
"saveAgentOrderFailed": "Échec de l’enregistrement de l’ordre des agents",
|
||
"saveAgentSwitchFailed": "Échec de l’enregistrement du switch agent",
|
||
"saveEnvFailed": "Échec de l’enregistrement des variables d’environnement",
|
||
"codexSaved": "Configuration Codex enregistrée",
|
||
"saveCodexNativeFailed": "Échec de l’enregistrement de la configuration native Codex",
|
||
"geminiSaved": "Configuration Gemini enregistrée",
|
||
"saveGeminiFailed": "Échec de l’enregistrement de la configuration Gemini",
|
||
"providerDeleted": "Provider {providerId} supprimé",
|
||
"providerDeleteFailed": "Échec de suppression du provider {providerId}",
|
||
"providerSaved": "Provider {providerId} enregistré",
|
||
"saveProviderFailed": "Échec d’enregistrement du provider {providerId}",
|
||
"openCodeConfigSynced": "La configuration OpenCode et auth JSON ont été synchronisés.",
|
||
"openCodeSaved": "Configuration OpenCode enregistrée",
|
||
"saveOpenCodeFailed": "Échec de l’enregistrement de la configuration OpenCode",
|
||
"openClawSaved": "Configuration OpenClaw enregistrée",
|
||
"saveOpenClawFailed": "Échec de l’enregistrement de la configuration OpenClaw",
|
||
"configSaved": "Configuration enregistrée",
|
||
"configSavedHint": "Les sessions existantes doivent être rouvertes pour prendre effet",
|
||
"saveConfigManagementFailed": "Échec de l’enregistrement de la gestion de configuration",
|
||
"clineSaved": "Configuration Cline enregistrée",
|
||
"saveClineFailed": "Échec de l'enregistrement de la configuration Cline",
|
||
"modelProviderRequired": "Veuillez sélectionner un fournisseur de modèle avant d'enregistrer."
|
||
},
|
||
"version": {
|
||
"statusLabel": "Statut de version",
|
||
"notInstalled": "Non installé",
|
||
"remoteLocal": "Distant : {remoteVersion} · Local : {localVersion}",
|
||
"platformUnsupported": "{versionText}. La plateforme actuelle ne prend pas en charge cet agent.",
|
||
"clickInstall": "{versionText}. Cliquez sur Installer à droite.",
|
||
"localUnrecognized": "{versionText}. La version locale n’est pas comparable ; essayez une mise à niveau pour écraser l’installation.",
|
||
"upgradeAvailable": "{versionText}. Mise à niveau disponible.",
|
||
"remoteUnavailable": "{versionText}. La version distante est actuellement indisponible.",
|
||
"latest": "{versionText}. Déjà à jour."
|
||
},
|
||
"cline": {
|
||
"configDescription": "Configurez le fournisseur API et les identifiants Cline. Les paramètres sont enregistrés dans ~/.cline/data/."
|
||
},
|
||
"opencodePlugins": {
|
||
"title": "Plugins OpenCode",
|
||
"declared": "Plugins déclarés",
|
||
"noPlugins": "Aucun plugin déclaré dans opencode.json",
|
||
"status": {
|
||
"installed": "Installé",
|
||
"missing": "Non installé"
|
||
},
|
||
"installAll": "Installer tous les manquants",
|
||
"pinVersions": "Fixer les versions @latest",
|
||
"install": "Installer",
|
||
"uninstall": "Désinstaller",
|
||
"refresh": "Actualiser",
|
||
"success": "Tous les plugins ont été installés avec succès",
|
||
"failed": "L'opération du plugin a échoué"
|
||
}
|
||
},
|
||
"SettingsPages": {
|
||
"agentsLoading": "Chargement des paramètres des agents..."
|
||
},
|
||
"CommitPage": {
|
||
"title": "Valider",
|
||
"invalidFolderId": "ID de dossier invalide",
|
||
"loadingRepo": "Chargement du dépôt..."
|
||
},
|
||
"MergePage": {
|
||
"title": "Résoudre les conflits",
|
||
"invalidFolderId": "ID de dossier invalide",
|
||
"loadingRepo": "Chargement du dépôt...",
|
||
"localVersion": "Local (Le nôtre)",
|
||
"result": "Résultat",
|
||
"remoteVersion": "Distant (Le leur)",
|
||
"acceptLocal": "Accepter le local",
|
||
"acceptRemote": "Accepter le distant",
|
||
"markResolved": "Marquer comme résolu",
|
||
"abortMerge": "Abandonner",
|
||
"completeMerge": "Terminer la fusion",
|
||
"unresolvedConflicts": "Il reste des marqueurs de conflit non résolus dans ce fichier",
|
||
"fileResolved": "Fichier résolu avec succès",
|
||
"allResolved": "Tous les conflits sont résolus",
|
||
"conflictFiles": "Fichiers en conflit",
|
||
"loadingFile": "Chargement du fichier...",
|
||
"preparingMerge": "Préparation de la fusion...",
|
||
"selectFile": "Sélectionner un fichier à résoudre",
|
||
"noConflicts": "Aucun fichier en conflit",
|
||
"skipFile": "Passer",
|
||
"abortSuccess": "Opération abandonnée",
|
||
"applyAllNonConflicting": "Appliquer tous les changements non conflictuels",
|
||
"applyLeftNonConflicting": "Appliquer local",
|
||
"applyRightNonConflicting": "Appliquer distant"
|
||
},
|
||
"Folder": {
|
||
"common": {
|
||
"all": "Tout",
|
||
"cancel": "Annuler",
|
||
"close": "Fermer",
|
||
"closeOthers": "Fermer les autres",
|
||
"closeAll": "Tout fermer",
|
||
"confirm": "Confirmer",
|
||
"save": "Enregistrer",
|
||
"delete": "Supprimer",
|
||
"rename": "Renommer",
|
||
"loading": "Chargement...",
|
||
"refresh": "Actualiser",
|
||
"refreshing": "Actualisation...",
|
||
"create": "Créer",
|
||
"createAndSwitch": "Créer et basculer",
|
||
"openFile": "Ouvrir le fichier",
|
||
"viewDiff": "Voir le Diff",
|
||
"push": "Pousser..."
|
||
},
|
||
"modes": {
|
||
"conversation": "Mode conversation",
|
||
"fusion": "Mode fusion",
|
||
"files": "Mode fichiers",
|
||
"workspaceModesAria": "Modes de l’espace de travail"
|
||
},
|
||
"statusLabels": {
|
||
"in_progress": "En cours",
|
||
"pending_review": "Revue",
|
||
"completed": "Terminé",
|
||
"cancelled": "Annulé"
|
||
},
|
||
"sidebar": {
|
||
"title": "Discussions",
|
||
"locateActiveConversation": "Localiser la conversation active",
|
||
"expandAllGroups": "Développer tous les groupes",
|
||
"collapseAllGroups": "Réduire tous les groupes",
|
||
"newConversation": "Nouvelle conversation",
|
||
"noConversationsFound": "Aucune conversation trouvée.",
|
||
"importLocalSessions": "Importer les sessions locales",
|
||
"importing": "Import en cours...",
|
||
"error": "Erreur : {message}",
|
||
"completeAllSessions": "Terminer toutes les sessions",
|
||
"completeAllReviewTitle": "Terminer toutes les sessions en revue ?",
|
||
"completeAllReviewDescription": "Cela marquera comme terminées toutes les {count, plural, one {# session} other {# sessions}} en Revue.",
|
||
"completing": "Finalisation...",
|
||
"toasts": {
|
||
"importedSessions": "{imported, plural, one {# session} other {# sessions}} importée(s), {skipped} ignorée(s)",
|
||
"noNewSessionsFound": "Aucune nouvelle session trouvée ({skipped} ignorée(s))",
|
||
"importFailed": "Échec de l’import : {message}",
|
||
"reviewCompleted": "{count, plural, one {# session en revue} other {# sessions en revue}} marquée(s) comme terminée(s)",
|
||
"completeReviewFailed": "Échec de la finalisation des sessions en revue : {message}"
|
||
}
|
||
},
|
||
"conversation": {
|
||
"reloadFailed": "Échec du rechargement de la conversation : {message}",
|
||
"reloaded": "Conversation rechargée",
|
||
"reload": "Recharger",
|
||
"newConversation": "Nouvelle conversation",
|
||
"closeConversation": "Fermer la conversation",
|
||
"forkSession": "Dupliquer la session",
|
||
"forkSessionSuccess": "Session dupliquée avec succès",
|
||
"forkSessionFailed": "Échec de la duplication de la session : {error}",
|
||
"exportConversation": "Exporter la conversation",
|
||
"exportImage": "Image",
|
||
"exportMarkdown": "Markdown",
|
||
"exportHtml": "HTML",
|
||
"exportSuccess": "Conversation exportée",
|
||
"exportFailed": "Échec de l'exportation",
|
||
"exportImageTooLong": "La conversation est trop longue pour être exportée en image",
|
||
"exportLabels": {
|
||
"untitledConversation": "Conversation sans titre",
|
||
"agent": "Agent",
|
||
"model": "Modèle",
|
||
"status": "Statut",
|
||
"started": "Début",
|
||
"updated": "Mis à jour",
|
||
"tokens": "Statistiques de tokens",
|
||
"duration": "Durée",
|
||
"inputTokens": "Entrée",
|
||
"outputTokens": "Sortie",
|
||
"cacheRead": "Cache lu",
|
||
"cacheWrite": "Cache écrit",
|
||
"user": "Utilisateur",
|
||
"assistant": "Assistant",
|
||
"system": "Système",
|
||
"toolResult": "Résultat",
|
||
"toolError": "Erreur"
|
||
}
|
||
},
|
||
"conversationCard": {
|
||
"untitledConversation": "Conversation sans titre",
|
||
"newConversation": "Nouvelle conversation",
|
||
"rename": "Renommer",
|
||
"status": "Statut",
|
||
"delete": "Supprimer",
|
||
"importLocalSessions": "Importer les sessions locales",
|
||
"importing": "Import en cours...",
|
||
"renameConversation": "Renommer la conversation",
|
||
"deleteConversationTitle": "Supprimer la conversation ?",
|
||
"deleteConversationDescription": "Cela supprimera \"{title}\". Cette action est irréversible.",
|
||
"cancel": "Annuler",
|
||
"save": "Enregistrer"
|
||
},
|
||
"search": {
|
||
"dialogTitle": "Rechercher",
|
||
"tabConversations": "Conversations",
|
||
"tabFiles": "Fichiers",
|
||
"placeholder": "Rechercher des conversations...",
|
||
"filePlaceholder": "Rechercher des fichiers ou répertoires...",
|
||
"allAgents": "Tout",
|
||
"searching": "Recherche...",
|
||
"typeToSearch": "Tapez pour rechercher des conversations",
|
||
"typeToSearchFiles": "Tapez pour rechercher des fichiers ou répertoires",
|
||
"noResults": "Aucun résultat trouvé.",
|
||
"untitledConversation": "Conversation sans titre"
|
||
},
|
||
"folderTitleBar": {
|
||
"showSidebar": "Afficher la barre latérale",
|
||
"hideSidebar": "Masquer la barre latérale",
|
||
"toggleTerminal": "Basculer le terminal",
|
||
"toggleAuxPanel": "Basculer le panneau auxiliaire",
|
||
"search": "Rechercher",
|
||
"openSettings": "Ouvrir les paramètres",
|
||
"withShortcut": "{label} (raccourci : {shortcut})"
|
||
},
|
||
"statusBar": {
|
||
"connection": {
|
||
"connected": "Connecté",
|
||
"connecting": "Connexion...",
|
||
"prompting": "Réponse...",
|
||
"error": "Erreur de connexion",
|
||
"disconnected": "Déconnecté",
|
||
"tooltip": "{agent} : {status}",
|
||
"tooltipError": "{agent} : {error}"
|
||
},
|
||
"tasks": {
|
||
"title": "Tâches"
|
||
},
|
||
"alerts": {
|
||
"title": "Alertes",
|
||
"empty": "Aucune alerte"
|
||
},
|
||
"stats": {
|
||
"conversations": "{count} discussions",
|
||
"summary": "{conversations} discussions / {messages} messages"
|
||
},
|
||
"tokens": {
|
||
"contextWindowUsageAria": "Utilisation de la fenêtre de contexte",
|
||
"contextWindow": "Fenêtre de contexte",
|
||
"usedMax": "Utilisé / Max",
|
||
"tokenUsage": "Utilisation des tokens",
|
||
"input": "Entrée",
|
||
"output": "Sortie",
|
||
"cacheRead": "Lecture cache",
|
||
"cacheWrite": "Écriture cache",
|
||
"total": "Total des tokens"
|
||
}
|
||
},
|
||
"auxPanel": {
|
||
"tabs": {
|
||
"diff": "Différences",
|
||
"files": "Fichiers",
|
||
"changes": "Changements",
|
||
"commits": "Validations"
|
||
}
|
||
},
|
||
"windowControls": {
|
||
"minimizeWindow": "Minimiser la fenêtre",
|
||
"minimize": "Minimiser",
|
||
"maximizeWindow": "Maximiser la fenêtre",
|
||
"maximize": "Maximiser",
|
||
"restoreWindow": "Restaurer la fenêtre",
|
||
"restore": "Restaurer",
|
||
"closeWindow": "Fermer la fenêtre",
|
||
"close": "Fermer"
|
||
},
|
||
"tabs": {
|
||
"closeConversationTab": "Fermer l’onglet de conversation",
|
||
"close": "Fermer",
|
||
"closeOthers": "Fermer les autres",
|
||
"closeAll": "Tout fermer",
|
||
"tileDisplay": "Affichage en mosaïque",
|
||
"untileDisplay": "Quitter la mosaïque"
|
||
},
|
||
"fileWorkspace": {
|
||
"files": "Fichiers",
|
||
"closeFileTab": "Fermer l’onglet fichier",
|
||
"close": "Fermer",
|
||
"closeOthers": "Fermer les autres",
|
||
"closeAll": "Tout fermer",
|
||
"preview": "Aperçu",
|
||
"editSource": "Modifier la source"
|
||
},
|
||
"terminal": {
|
||
"rename": "Renommer",
|
||
"close": "Fermer",
|
||
"closeOthers": "Fermer les autres",
|
||
"closeAll": "Tout fermer",
|
||
"hideTerminal": "Masquer le terminal ({shortcut})"
|
||
},
|
||
"sessionFiles": {
|
||
"currentResponse": "Réponse actuelle",
|
||
"noDiffDataAvailable": "Aucune donnée de diff disponible pour {filePath}",
|
||
"loading": "Chargement...",
|
||
"noFileChangesInConversation": "Aucun changement de fichier dans cette conversation",
|
||
"openConversationToSeeChanges": "Ouvrez une conversation pour voir ses changements de fichiers",
|
||
"remove": "Retirer",
|
||
"changeCount": "{count, plural, one {# changement} other {# changements}}",
|
||
"fileCount": "{count, plural, one {# fichier} other {# fichiers}}"
|
||
},
|
||
"folderNameDropdown": {
|
||
"fallbackFolderName": "Dossier",
|
||
"openFolder": "Ouvrir le dossier",
|
||
"cloneRepository": "Cloner le dépôt",
|
||
"projectBoot": "Lanceur de projet",
|
||
"opened": "Ouvert",
|
||
"recentOpen": "Ouvert récemment"
|
||
},
|
||
"fileWorkspacePanel": {
|
||
"viewDiff": "Voir le Diff",
|
||
"openFile": "Ouvrir le fichier",
|
||
"fileCount": "{count, plural, one {# fichier} other {# fichiers}}",
|
||
"openFileOrDiff": "Ouvrez un fichier ou un diff depuis le panneau de droite",
|
||
"disk": "Disque",
|
||
"head": "HEAD",
|
||
"unsaved": "Non enregistré",
|
||
"workingTree": "Arbre de travail",
|
||
"loading": "Chargement...",
|
||
"compareWithBranch": "{path} · comparer avec {branch}",
|
||
"hunkCount": "{count, plural, one {# bloc} other {# blocs}}",
|
||
"prev": "Précédent",
|
||
"next": "Suivant",
|
||
"jumpToLine": "Aller à la ligne {line}",
|
||
"noParsedDiffSections": "Aucune section de diff analysée",
|
||
"loadingEditor": "Chargement de l’éditeur...",
|
||
"imageZoomIn": "Agrandir",
|
||
"imageZoomOut": "Réduire",
|
||
"imageZoomReset": "Réinitialiser le zoom"
|
||
},
|
||
"branchDropdown": {
|
||
"toasts": {
|
||
"commitCodeCompleted": "Commit de code terminé",
|
||
"pushCodeCompleted": "Push de code terminé",
|
||
"committedFiles": "{count, plural, one {# fichier commit} other {# fichiers commit}}",
|
||
"taskCompleted": "{label} terminé",
|
||
"taskFailed": "{label} échoué",
|
||
"mergeNoNewCommits": "{branchName} n’a pas de nouveaux commits",
|
||
"mergedCommits": "{count, plural, one {# commit fusionné} other {# commits fusionnés}}",
|
||
"allFilesUpToDate": "Tous les fichiers sont à jour",
|
||
"updatedFiles": "{count, plural, one {# fichier mis à jour} other {# fichiers mis à jour}}",
|
||
"openCommitWindowFailed": "Impossible d’ouvrir la fenêtre de commit",
|
||
"openPushWindowFailed": "Impossible d’ouvrir la fenêtre de push",
|
||
"upstreamSet": "La branche upstream a été définie",
|
||
"upstreamSetAndPushed": "Branche upstream définie et {count, plural, one {# commit} other {# commits}} poussé(s)",
|
||
"noCommitsToPush": "Aucun commit à pousser",
|
||
"pushedCommits": "{count, plural, one {# commit poussé} other {# commits poussés}}"
|
||
},
|
||
"tasks": {
|
||
"newBranch": "Créer la branche {name}",
|
||
"newWorktree": "Créer le worktree {name}",
|
||
"checkoutTo": "Basculer vers {branchName}",
|
||
"mergeBranch": "Fusionner {branchName}",
|
||
"rebaseTo": "Rebase vers {branchName}",
|
||
"deleteBranch": "Supprimer la branche {branchName}",
|
||
"deleteRemoteBranch": "Supprimer la branche distante {branchName}",
|
||
"initGitRepo": "Initialiser le dépôt Git",
|
||
"pullCode": "Pull du code",
|
||
"fetchInfo": "Récupérer les infos",
|
||
"pushCode": "Push du code",
|
||
"stashChanges": "Stash des changements",
|
||
"stashPop": "Appliquer le stash"
|
||
},
|
||
"confirm": {
|
||
"mergeTitle": "Fusionner la branche",
|
||
"rebaseTitle": "Rebase de la branche",
|
||
"deleteTitle": "Supprimer la branche",
|
||
"mergeDescription": "Fusionner {branchName} dans la branche actuelle {currentBranch} ?",
|
||
"rebaseDescription": "Rebaser la branche actuelle {currentBranch} sur {branchName} ?",
|
||
"deleteDescription": "Supprimer la branche {branchName} ? Cette action est irréversible.",
|
||
"forceDeleteTitle": "Forcer la suppression de la branche",
|
||
"forceDeleteDescription": "La branche {branchName} n'est pas entièrement fusionnée. Êtes-vous sûr de vouloir la supprimer de force ? Cette action est irréversible.",
|
||
"deleteRemoteTitle": "Supprimer la branche distante",
|
||
"deleteRemoteDescription": "Supprimer la branche distante {branchName} ? Cette action la supprimera du dépôt distant et ne pourra pas être annulée."
|
||
},
|
||
"current": "Actuelle",
|
||
"switchToBranch": "Basculer vers cette branche",
|
||
"mergeBranchIntoCurrent": "Fusionner {branchName} dans {currentBranch}",
|
||
"rebaseCurrentToBranch": "Rebaser {currentBranch} sur {branchName}",
|
||
"deleteBranch": "Supprimer la branche",
|
||
"versionControl": "Contrôle de version",
|
||
"initGitRepo": "Initialiser le dépôt Git",
|
||
"pullCode": "Pull du code",
|
||
"fetchRemoteBranches": "Récupérer les branches distantes",
|
||
"openCommitWindow": "Commit du code...",
|
||
"pushCode": "Pousser...",
|
||
"newBranch": "Nouvelle branche...",
|
||
"newWorktree": "Nouveau worktree...",
|
||
"stashChanges": "Remiser les changements...",
|
||
"stashPop": "Appliquer le stash...",
|
||
"manageRemotes": "Gérer les dépôts distants...",
|
||
"localBranches": "Branches locales ({count, plural, one {#} other {#}})",
|
||
"noLocalBranches": "Aucune branche locale",
|
||
"remoteBranches": "Branches distantes ({count, plural, one {#} other {#}})",
|
||
"noRemoteBranches": "Aucune branche distante",
|
||
"parentBranchHint": "La branche actuelle a été créée depuis {parentBranch}. Cliquez pour fusionner {parentBranch} dans la branche actuelle.",
|
||
"dialogs": {
|
||
"newBranchTitle": "Nouvelle branche",
|
||
"newBranchDescription": "Créer une nouvelle branche depuis la branche actuelle {branch}",
|
||
"branchNamePlaceholder": "Nom de la branche",
|
||
"newWorktreeTitle": "Nouveau worktree",
|
||
"newWorktreeDescription": "Créer un nouveau worktree depuis la branche actuelle {branch}",
|
||
"branchNameLabel": "Nom de la branche",
|
||
"worktreePathLabel": "Chemin du worktree",
|
||
"worktreePathPlaceholder": "Chemin du worktree",
|
||
"manageRemotesTitle": "Gérer les dépôts distants",
|
||
"manageRemotesEmpty": "Aucun dépôt distant configuré",
|
||
"remoteNamePlaceholder": "Nom du dépôt distant",
|
||
"remoteUrlPlaceholder": "URL du dépôt distant",
|
||
"addRemote": "Ajouter",
|
||
"savingRemotes": "Enregistrement..."
|
||
},
|
||
"conflict": {
|
||
"title": "Conflits de fusion",
|
||
"description": "Les fichiers suivants ont des conflits qui doivent être résolus :",
|
||
"abort": "Abandonner la fusion",
|
||
"openMergeTool": "Ouvrir l'outil de fusion",
|
||
"completeMerge": "Terminer la fusion",
|
||
"abortSuccess": "Fusion abandonnée avec succès",
|
||
"completeSuccess": "Fusion terminée avec succès"
|
||
},
|
||
"stashDialog": {
|
||
"title": "Remiser les changements",
|
||
"description": "Sauvegarder les changements actuels dans la remise",
|
||
"messageLabel": "Message",
|
||
"messagePlaceholder": "Message de remise (optionnel)",
|
||
"keepIndex": "Conserver l'index (les changements indexés restent indexés)",
|
||
"cancel": "Annuler",
|
||
"stash": "Remiser",
|
||
"success": "Changements remisés",
|
||
"error": "Échec de la remise"
|
||
},
|
||
"unstashDialog": {
|
||
"title": "Appliquer la remise",
|
||
"noStashes": "Aucune remise trouvée",
|
||
"selectFile": "Sélectionner un fichier pour voir le diff",
|
||
"viewDiff": "Voir le diff",
|
||
"original": "Original",
|
||
"modified": "Modifié",
|
||
"apply": "Appliquer",
|
||
"drop": "Supprimer",
|
||
"applySuccess": "Remise appliquée",
|
||
"dropSuccess": "Remise supprimée",
|
||
"confirmApply": "Appliquer la remise {ref} au répertoire de travail ?",
|
||
"cancel": "Annuler"
|
||
}
|
||
},
|
||
"commitDialog": {
|
||
"toasts": {
|
||
"commitCompleted": "Commit de code terminé",
|
||
"pushFailed": "Échec du push",
|
||
"committedFiles": "{count, plural, one {# fichier commit} other {# fichiers commit}}",
|
||
"addedToVcs": "Ajouté à VCS",
|
||
"addToVcsFailed": "Échec de l’ajout à VCS",
|
||
"fileDeleted": "Fichier supprimé",
|
||
"deleteFailed": "Échec de la suppression",
|
||
"fileRolledBack": "Fichier restauré",
|
||
"rollbackFailed": "Échec du rollback",
|
||
"dirRolledBack": "Répertoire restauré",
|
||
"dirDeleted": "Répertoire supprimé"
|
||
},
|
||
"confirm": {
|
||
"deleteTitle": "Confirmer la suppression",
|
||
"deleteDescription": "Supprimer le fichier \"{file}\" ? Cette action est irréversible.",
|
||
"rollbackTitle": "Confirmer le rollback",
|
||
"rollbackDescription": "Restaurer le fichier \"{file}\" vers HEAD ? Les modifications non enregistrées seront perdues.",
|
||
"rollbackDirDescription": "Restaurer le répertoire \"{dir}\" vers HEAD ? Les modifications non enregistrées seront perdues.",
|
||
"deleteDirDescription": "Supprimer le répertoire \"{dir}\" ? Cette action est irréversible."
|
||
},
|
||
"actions": {
|
||
"select": "Sélectionner",
|
||
"unselect": "Désélectionner",
|
||
"rollback": "Annuler",
|
||
"addToVcs": "Ajouter à VCS"
|
||
},
|
||
"aria": {
|
||
"selectFile": "{action} : {path}",
|
||
"unselectAllFiles": "Désélectionner tous les fichiers",
|
||
"selectAllFiles": "Sélectionner tous les fichiers",
|
||
"unselectTracked": "Désélectionner les changements suivis",
|
||
"selectTracked": "Sélectionner les changements suivis",
|
||
"unselectUntracked": "Désélectionner les fichiers non suivis",
|
||
"selectUntracked": "Sélectionner les fichiers non suivis"
|
||
},
|
||
"loading": "Chargement...",
|
||
"selectionCount": "{selected} / {total} fichiers",
|
||
"emptyFiles": "Aucun fichier modifié",
|
||
"trackedChanges": "Changements suivis ({count})",
|
||
"untrackedFiles": "Fichiers non suivis ({count})",
|
||
"commitMessage": "Message de commit",
|
||
"commitMessagePlaceholder": "Saisissez le message de commit...",
|
||
"commitButton": "Valider ({count})",
|
||
"commitAndPushButton": "Valider et pousser ({count})",
|
||
"head": "HEAD",
|
||
"workingTree": "Arbre de travail",
|
||
"clickFileToDiff": "Cliquez sur un nom de fichier pour voir le diff",
|
||
"loadingDiff": "Chargement du diff..."
|
||
},
|
||
"pushWindow": {
|
||
"title": "Pousser le code",
|
||
"noUnpushedCommits": "Aucun commit non poussé",
|
||
"noRemoteConfigured": "Aucun dépôt distant Git configuré\nAjoutez-en un dans « Gérer les dépôts distants »",
|
||
"newBranchNoPushedCommits": "Nouvelle branche — pousser pour créer la branche de suivi distante",
|
||
"unpushed": "Non poussé",
|
||
"selectFileToViewDiff": "Sélectionnez un fichier pour voir les différences",
|
||
"before": "Avant",
|
||
"after": "Après",
|
||
"push": "Pousser",
|
||
"toasts": {
|
||
"pushSuccess": "Push réussi",
|
||
"pushFailed": "Échec du push",
|
||
"upstreamSet": "La branche distante a été configurée",
|
||
"upstreamSetAndPushed": "Branche distante configurée et {count} commits poussés",
|
||
"noCommitsToPush": "Aucun commit à pousser",
|
||
"pushedCommits": "{count} commits poussés"
|
||
}
|
||
},
|
||
"gitLogTab": {
|
||
"filesTitle": "Fichiers",
|
||
"expandAllFiles": "Développer tous les fichiers",
|
||
"collapseAllFiles": "Réduire tous les fichiers",
|
||
"workspace": "espace de travail",
|
||
"retry": "Réessayer",
|
||
"noCommitsFound": "Aucun commit trouvé",
|
||
"hash": "Empreinte",
|
||
"copyHash": "Copier le hash",
|
||
"copyMessage": "Copier le message",
|
||
"author": "Auteur",
|
||
"noFileChangeDetails": "Aucun détail de changement de fichier disponible.",
|
||
"branchesTitle": "Branches Git",
|
||
"loadingBranches": "Chargement des branches...",
|
||
"noContainingBranches": "Aucune branche contenant ce commit.",
|
||
"newBranch": "Nouvelle branche...",
|
||
"resetToHere": "Réinitialiser ici",
|
||
"resetDisabledReasonNotCurrentBranchView": "Disponible uniquement en affichant la branche actuelle",
|
||
"viewCommitDiffAria": "Voir le diff du commit {hash}",
|
||
"copyFullCommitHashAria": "Copier le hash complet du commit {hash}",
|
||
"pushStatus": {
|
||
"pushed": "Poussé vers le remote",
|
||
"notPushed": "Non poussé vers le remote",
|
||
"unknown": "Statut de push inconnu (aucun upstream configuré)"
|
||
},
|
||
"time": {
|
||
"monthsAgo": "{count, plural, one {il y a # mois} other {il y a # mois}}",
|
||
"daysAgo": "{count, plural, one {il y a # jour} other {il y a # jours}}",
|
||
"hoursAgo": "{count, plural, one {il y a # heure} other {il y a # heures}}",
|
||
"minsAgo": "{count, plural, one {il y a # min} other {il y a # mins}}",
|
||
"justNow": "à l’instant"
|
||
},
|
||
"toasts": {
|
||
"createdAndSwitchedNewBranch": "Nouvelle branche créée et activée",
|
||
"newBranchFromCommit": "{name} (depuis {shortHash})",
|
||
"createBranchFailed": "Échec de la création de la branche",
|
||
"openPushWindowFailed": "Échec de l'ouverture de la fenêtre de push",
|
||
"resetSuccess": "Réinitialisation réussie",
|
||
"resetSuccessDescription": "{branch} a été réinitialisée sur {shortHash} avec {mode}",
|
||
"resetFailed": "Échec de la réinitialisation"
|
||
},
|
||
"branchSelector": {
|
||
"selectBranchPlaceholder": "Sélectionner une branche...",
|
||
"localBranches": "Branches locales",
|
||
"current": "Actuelle",
|
||
"remoteBranches": "Branches distantes",
|
||
"refreshCommitHistory": "Actualiser l’historique des commits"
|
||
},
|
||
"dialogs": {
|
||
"newBranchTitle": "Nouvelle branche",
|
||
"newBranchDescription": "Créer une nouvelle branche avec le commit {shortHash} comme dernier commit.",
|
||
"branchNamePlaceholder": "Nom de la branche",
|
||
"reset": {
|
||
"title": "Réinitialiser la branche actuelle jusqu’ici",
|
||
"branchLabel": "Branche",
|
||
"targetLabel": "Commit cible",
|
||
"messageLabel": "Message",
|
||
"modeLabel": "Mode de réinitialisation",
|
||
"confirmButton": "Réinitialiser",
|
||
"modes": {
|
||
"soft": {
|
||
"label": "--soft",
|
||
"description": "Déplace HEAD et le pointeur de la branche actuelle vers le commit cible.\nConserve Index et Working Tree inchangés.\nLes changements des commits retirés restent staged."
|
||
},
|
||
"mixed": {
|
||
"label": "--mixed (par défaut)",
|
||
"description": "Déplace HEAD vers le commit cible.\nRéinitialise Index au commit cible tout en conservant les changements du Working Tree.\nLes changements passent de staged à unstaged."
|
||
},
|
||
"hard": {
|
||
"label": "--hard",
|
||
"description": "Déplace HEAD et réinitialise à la fois Index et Working Tree au commit cible.\nLes changements locaux suivis après le commit cible sont supprimés.\nC’est une opération destructive."
|
||
},
|
||
"keep": {
|
||
"label": "--keep",
|
||
"description": "Déplace HEAD vers le commit cible en conservant les changements locaux quand c’est possible.\nSeuls les changements sans conflit sont conservés.\nEn cas de conflit, la réinitialisation est annulée pour protéger votre travail."
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"gitChangesTab": {
|
||
"workspace": "espace de travail",
|
||
"noChanges": "Aucun changement local",
|
||
"trackedChanges": "Changements suivis ({count})",
|
||
"untrackedFiles": "Fichiers non suivis ({count})",
|
||
"expandTracked": "Développer les changements suivis",
|
||
"collapseTracked": "Réduire les changements suivis",
|
||
"expandUntracked": "Développer les fichiers non suivis",
|
||
"collapseUntracked": "Réduire les fichiers non suivis",
|
||
"actions": {
|
||
"commitCode": "Commit du code",
|
||
"rollback": "Annuler",
|
||
"addToVcs": "Ajouter à VCS",
|
||
"delete": "Supprimer"
|
||
},
|
||
"toasts": {
|
||
"noAddableFilesInDir": "Aucun fichier modifié de ce répertoire ne peut être ajouté à VCS",
|
||
"noRollbackFilesInDir": "Aucun fichier modifié de ce répertoire ne peut être rollback",
|
||
"addedToVcs": "{name} ajouté à VCS",
|
||
"addToVcsFailed": "Échec de l’ajout à VCS",
|
||
"openCommitWindowFailed": "Impossible d’ouvrir la fenêtre de commit",
|
||
"rolledBack": "{name} restauré",
|
||
"rollbackFailed": "Échec du rollback",
|
||
"addedFilesToVcs": "{count, plural, one {# fichier} other {# fichiers}} ajouté(s) à VCS",
|
||
"rolledBackFiles": "{count, plural, one {# fichier restauré} other {# fichiers restaurés}}",
|
||
"deleted": "{name} supprimé",
|
||
"deleteFailed": "Échec de la suppression",
|
||
"deletedFiles": "{count} fichiers supprimés",
|
||
"noDeletableFilesInDir": "Aucun fichier modifié dans ce répertoire ne peut être supprimé"
|
||
},
|
||
"directoryDialog": {
|
||
"descriptionAdd": "Sélectionnez les fichiers du répertoire {path} à ajouter à VCS.",
|
||
"descriptionRollback": "Sélectionnez les fichiers du répertoire {path} à rollback.",
|
||
"descriptionDelete": "Sélectionnez les fichiers du répertoire {path} à supprimer. Cette action est irréversible.",
|
||
"descriptionFallback": "Sélectionnez les fichiers pour continuer.",
|
||
"selectionCount": "{selected} / {total} fichiers sélectionnés",
|
||
"selectAll": "Tout sélectionner",
|
||
"unselectAll": "Tout désélectionner",
|
||
"loadingCandidates": "Chargement des changements du répertoire...",
|
||
"noOperableFiles": "Aucun fichier opérable"
|
||
},
|
||
"rollbackConfirm": {
|
||
"title": "Confirmer le rollback",
|
||
"descriptionWithTarget": "Rollback des changements locaux pour {kind} \"{name}\" ?",
|
||
"descriptionFallback": "Rollback des changements locaux ?",
|
||
"kindDirectory": "répertoire",
|
||
"kindFile": "fichier"
|
||
},
|
||
"deleteConfirm": {
|
||
"title": "Confirmer la suppression",
|
||
"descriptionWithTarget": "Supprimer {kind} \"{name}\" ? Cette action est irréversible.",
|
||
"descriptionFallback": "Cette action est irréversible.",
|
||
"kindDirectory": "répertoire",
|
||
"kindFile": "fichier"
|
||
}
|
||
},
|
||
"tabContext": {
|
||
"loadingConversation": "Chargement...",
|
||
"untitledConversation": "Conversation sans titre",
|
||
"newConversation": "Nouvelle conversation"
|
||
},
|
||
"fileTreeTab": {
|
||
"workspace": "Espace de travail",
|
||
"retry": "Réessayer",
|
||
"git": "Git",
|
||
"openInFileManager": "Ouvrir dans le gestionnaire de fichiers",
|
||
"openInFinder": "Ouvrir dans Finder",
|
||
"openInExplorer": "Ouvrir dans Explorer",
|
||
"attachToCurrentSession": "Ajouter à la session",
|
||
"compareWithBranch": "Comparer avec la branche...",
|
||
"reloadFromDisk": "Recharger depuis le disque",
|
||
"new": "Nouveau",
|
||
"newFile": "Fichier",
|
||
"newDirectory": "Répertoire",
|
||
"openIn": "Ouvrir dans",
|
||
"openInTerminal": "Ouvrir dans le terminal",
|
||
"actions": {
|
||
"select": "Sélectionner",
|
||
"unselect": "Désélectionner",
|
||
"commitCode": "Committer le code",
|
||
"rollback": "Annuler",
|
||
"addToVcs": "Ajouter au VCS"
|
||
},
|
||
"aria": {
|
||
"selectPath": "{action} : {path}"
|
||
},
|
||
"toasts": {
|
||
"openDirectoryFailed": "Échec de l'ouverture du dossier",
|
||
"openBuiltinTerminalFailed": "Impossible d'ouvrir le terminal intégré",
|
||
"openCommitWindowFailed": "Échec de l'ouverture de la fenêtre de commit",
|
||
"noAddableFilesInDir": "Aucun fichier modifié de ce dossier ne peut être ajouté au VCS",
|
||
"noRollbackFilesInDir": "Aucun fichier modifié de ce dossier ne peut être annulé",
|
||
"addedToVcs": "{name} ajouté au VCS",
|
||
"addToVcsFailed": "Échec de l'ajout au VCS",
|
||
"loadBranchesFailed": "Échec du chargement des branches",
|
||
"renameFailed": "Échec du renommage",
|
||
"deleteFailed": "Échec de la suppression",
|
||
"rolledBack": "{name} annulé",
|
||
"rollbackFailed": "Échec de l'annulation",
|
||
"addedFilesToVcs": "{count, plural, one {# fichier ajouté au VCS} other {# fichiers ajoutés au VCS}}",
|
||
"rolledBackFiles": "{count, plural, one {# fichier annulé} other {# fichiers annulés}}",
|
||
"savedAsCopy": "Enregistré en copie",
|
||
"saveCopyFailed": "Échec de l'enregistrement en copie",
|
||
"watchStartFailed": "Échec du démarrage de la surveillance de fichiers",
|
||
"createFailed": "Échec de la création"
|
||
},
|
||
"createDialog": {
|
||
"newFile": "Nouveau fichier",
|
||
"newDirectory": "Nouveau répertoire",
|
||
"description": "Entrez un nom pour le nouveau {kind}.",
|
||
"placeholderFile": "file-name.ext",
|
||
"placeholderDirectory": "folder-name"
|
||
},
|
||
"renameDialog": {
|
||
"renameDirectory": "Renommer le dossier",
|
||
"renameFile": "Renommer le fichier",
|
||
"description": "Saisissez un nouveau nom (nom uniquement, sans chemin).",
|
||
"placeholderDirectory": "nouveau-nom-dossier",
|
||
"placeholderFile": "nouveau-nom-fichier.ext"
|
||
},
|
||
"directoryDialog": {
|
||
"descriptionAdd": "Sélectionnez des fichiers sous le dossier {path} à ajouter au VCS.",
|
||
"descriptionRollback": "Sélectionnez des fichiers sous le dossier {path} à annuler.",
|
||
"descriptionFallback": "Sélectionnez des fichiers pour continuer.",
|
||
"selectionCount": "{selected} / {total} fichiers sélectionnés",
|
||
"selectAll": "Tout sélectionner",
|
||
"unselectAll": "Tout désélectionner",
|
||
"loadingCandidates": "Chargement des changements du dossier...",
|
||
"noOperableFiles": "Aucun fichier exploitable"
|
||
},
|
||
"compareDialog": {
|
||
"title": "Comparer avec la branche",
|
||
"descriptionWithTarget": "Sélectionnez une branche et comparez avec {kind} {path}",
|
||
"descriptionFallback": "Sélectionnez une branche à comparer.",
|
||
"kindDirectory": "dossier",
|
||
"kindFile": "fichier",
|
||
"filterPlaceholder": "Filtrer les branches, ex. main / origin/main",
|
||
"singleClickHint": "Cliquez sur une branche pour comparer directement",
|
||
"loadingBranches": "Chargement des branches...",
|
||
"recentBranches": "Branches récentes ({count})",
|
||
"noCurrentBranch": "Aucune branche courante",
|
||
"localBranches": "Branches locales ({count})",
|
||
"remoteBranches": "Branches distantes ({count})",
|
||
"noMatchingBranches": "Aucune branche correspondante"
|
||
},
|
||
"externalConflictDialog": {
|
||
"title": "Modifications externes de fichiers détectées",
|
||
"descriptionWithPath": "Le fichier {path} a changé sur le disque et les modifications actuelles ne sont pas enregistrées.",
|
||
"descriptionFallback": "Le fichier actuel a changé sur le disque et les modifications actuelles ne sont pas enregistrées.",
|
||
"compare": "Comparer",
|
||
"savingCopy": "Enregistrement de la copie...",
|
||
"saveAsCopy": "Enregistrer en copie",
|
||
"reload": "Recharger"
|
||
},
|
||
"deleteConfirm": {
|
||
"title": "Confirmer la suppression",
|
||
"descriptionWithTarget": "Supprimer {kind} \"{name}\" ? Cette action est irréversible.",
|
||
"descriptionFallback": "Cette action est irréversible.",
|
||
"kindDirectory": "dossier",
|
||
"kindFile": "fichier"
|
||
},
|
||
"rollbackConfirm": {
|
||
"title": "Confirmer l'annulation",
|
||
"descriptionWithTarget": "Annuler les modifications locales du fichier \"{name}\" ?",
|
||
"descriptionFallback": "Annuler les modifications locales de ce fichier ?"
|
||
},
|
||
"terminalTitle": "Console · {name}"
|
||
},
|
||
"commandDropdown": {
|
||
"loading": "Chargement...",
|
||
"addCommand": "Ajouter une commande",
|
||
"manageCommands": "Gérer les commandes...",
|
||
"runCommandTitle": "Exécuter : {command}",
|
||
"stopCommandTitle": "Arrêter : {command}",
|
||
"manageDialog": {
|
||
"title": "Gérer les commandes",
|
||
"empty": "Aucune commande pour le moment",
|
||
"namePlaceholder": "Nom",
|
||
"commandPlaceholder": "Commande",
|
||
"add": "Ajouter",
|
||
"saving": "Enregistrement..."
|
||
}
|
||
},
|
||
"workspaceContext": {
|
||
"confirmCloseDirtyTab": "Fermer « {title} » sans enregistrer ?",
|
||
"confirmCloseOtherDirtyTabs": "Fermer les autres onglets avec des modifications non enregistrées ?",
|
||
"confirmCloseAllDirtyTabs": "Fermer tous les onglets avec des modifications non enregistrées ?",
|
||
"unableLoadContent": "Impossible de charger le contenu.\n\n{message}",
|
||
"previewRequestTimedOut": "La requête de prévisualisation a expiré",
|
||
"diffRequestTimedOut": "La requête Diff a expiré",
|
||
"branchCompareRequestTimedOut": "La requête de comparaison de branches a expiré",
|
||
"commitDiffRequestTimedOut": "La requête de Diff de commit a expiré",
|
||
"saveRequestTimedOut": "La requête d’enregistrement a expiré",
|
||
"reloadRequestTimedOut": "La requête de rechargement a expiré",
|
||
"noChanges": "Aucun changement.",
|
||
"noDiffOutput": "Aucune sortie diff.",
|
||
"diffTitleWorkspace": "Diff · Espace de travail",
|
||
"diffDescriptionWorkingTree": "Arbre de travail (HEAD)",
|
||
"diffTitleFile": "Différence · {name}",
|
||
"compareTitleFile": "Comparer · {name}",
|
||
"compareTitleBranch": "Comparer · {branch}",
|
||
"compareDescriptionPath": "{path} · comparer avec {branch}",
|
||
"compareDescriptionBranch": "comparer avec {branch}",
|
||
"diffTitleCommitFile": "Différence · {name} @ {hash}",
|
||
"diffTitleCommit": "Différence · {hash}",
|
||
"diffDescriptionCommitPath": "{path} · validation {commit}",
|
||
"diffDescriptionCommit": "validation {commit}",
|
||
"diffTitleConflictFile": "Conflit · {name}",
|
||
"diffDescriptionConflict": "{path} · disque vs non enregistré"
|
||
},
|
||
"chat": {
|
||
"acpConnections": {
|
||
"actions": {
|
||
"openAgentsSettings": "Ouvrir les paramètres des agents",
|
||
"retry": "Réessayer"
|
||
},
|
||
"agentsSetupHint": "Ouvrez Paramètres > Agents pour gérer l'installation.",
|
||
"withSetupHint": "{message}\n{hint}",
|
||
"blocked": {
|
||
"missingConfig": "Impossible de lire la configuration actuelle de l'agent.",
|
||
"disabled": "{agent} est désactivé dans les paramètres des agents. Activez-le avant de vous connecter.",
|
||
"unavailable": "{agent} n'est pas disponible sur la plateforme actuelle.",
|
||
"sdkMissing": "Le SDK de {agent} n'est pas installé"
|
||
},
|
||
"backendErrors": {
|
||
"initializeTimeout": "Le handshake de connexion de {agent} a expiré (aucune réponse après 60 secondes). Ouvrez Paramètres pour vérifier la configuration de l'agent et du réseau.",
|
||
"processExited": "Le processus {agent} s'est arrêté de manière inattendue.",
|
||
"spawnFailed": "Impossible de démarrer {agent} : {message}",
|
||
"downloadFailed": "Échec du téléchargement de {agent} : {message}"
|
||
},
|
||
"unableReadAgentConfig": "Impossible de lire la configuration de l'agent : {message}",
|
||
"connectFailedTitle": "Échec de la connexion de {agent}",
|
||
"toolFallbackTitle": "Outil",
|
||
"eventErrorTitle": "Erreur de l'agent",
|
||
"notificationTurnComplete": "{agent} a terminé de répondre",
|
||
"notificationError": "{agent} erreur : {message}",
|
||
"claudeApiRetry": {
|
||
"fallbackError": "authentication_failed",
|
||
"retryingWithMax": "nouvelle tentative {attempt}/{max}",
|
||
"retryingAttempt": "nouvelle tentative {attempt}",
|
||
"retrying": "nouvelle tentative",
|
||
"nextRetryIn": "prochaine dans {seconds}s",
|
||
"line": "{error}{status} · {retry}",
|
||
"lineWithDelay": "{error}{status} · {retry}, {delay}",
|
||
"httpStatus": " (HTTP {status})"
|
||
}
|
||
},
|
||
"connectionLifecycle": {
|
||
"tasks": {
|
||
"connectingTitle": "Connexion à {agent}",
|
||
"connectingDescription": "Établissement de la connexion",
|
||
"loadingSelectorsTitle": "Chargement des sélecteurs de {agent}",
|
||
"loadingSelectorsDescription": "Récupération des options de mode et de configuration de session",
|
||
"initSessionTitle": "Initializing {agent} session",
|
||
"initSessionDescription": "Creating session and loading configuration"
|
||
},
|
||
"errors": {
|
||
"connectionFailed": "Échec de la connexion"
|
||
}
|
||
},
|
||
"shared": {
|
||
"attachedResources": "Ressources jointes",
|
||
"toolCallFailed": "Échec de l'appel d'outil"
|
||
},
|
||
"messageThread": {
|
||
"emptyTitle": "Aucun message pour le moment",
|
||
"emptyDescription": "Commencez une conversation pour voir les messages ici"
|
||
},
|
||
"chatInput": {
|
||
"connecting": "Connexion...",
|
||
"agentResponding": "{agent} répond...",
|
||
"sendMessage": "Envoyer un message..."
|
||
},
|
||
"messageInput": {
|
||
"askAnything": "Posez n'importe quelle question...",
|
||
"removeAttachmentAria": "Retirer {name}",
|
||
"attachFiles": "Joindre des fichiers",
|
||
"dropFilesToAttach": "Déposez des fichiers à joindre",
|
||
"loadingSettings": "Chargement des paramètres...",
|
||
"loadingMode": "Chargement du mode...",
|
||
"cancel": "Annuler",
|
||
"send": "Envoyer",
|
||
"forkAndSend": "Fork & Envoyer",
|
||
"slashCommands": "Commandes slash",
|
||
"expertSkills": "Compétences d'expert",
|
||
"expertsEmptyForAgent": "Cet agent n'a aucun expert activé. Activez-les dans Paramètres > Experts."
|
||
},
|
||
"messageQueue": {
|
||
"addToQueue": "Mettre en file",
|
||
"saveEdit": "Enregistrer",
|
||
"cancelEdit": "Annuler la modification",
|
||
"editItem": "Modifier",
|
||
"deleteItem": "Supprimer"
|
||
},
|
||
"welcomeInputPanel": {
|
||
"agentsSettingsPath": "Paramètres > Agents",
|
||
"autoConnectFallback": "Cliquez pour ouvrir {path} et gérer l'installation.",
|
||
"autoConnectAppend": "{message}. Cliquez pour ouvrir {path} et gérer l'installation.",
|
||
"enableAgentFirstPlaceholder": "Activez au moins un agent avant de démarrer une session...",
|
||
"askAnythingPlaceholder": "Posez n'importe quelle question..."
|
||
},
|
||
"agentSelector": {
|
||
"noEnabledAgents": "Aucun agent activé",
|
||
"openAgentsSettings": "Ouvrir les paramètres des agents"
|
||
},
|
||
"agentPlanOverlay": {
|
||
"title": "Plan de l'agent",
|
||
"collapsePlanAria": "Réduire le plan",
|
||
"collapsedSummary": "Plan de travail {completed}/{total}",
|
||
"status": {
|
||
"completed": "Terminé",
|
||
"inProgress": "En cours",
|
||
"pending": "En attente",
|
||
"unknown": "Inconnu"
|
||
},
|
||
"priority": {
|
||
"high": "Haute",
|
||
"medium": "Moyenne",
|
||
"low": "Basse",
|
||
"unknown": "Inconnue"
|
||
}
|
||
},
|
||
"permissionDialog": {
|
||
"subtitle": "L'agent demande une autorisation pour continuer ce tour.",
|
||
"kindFallbackTool": "outil",
|
||
"command": "Commande",
|
||
"cwd": "Répertoire de travail : {cwd}",
|
||
"filesSummary": "Fichiers : {count}",
|
||
"moreFiles": "+{count} fichiers supplémentaires",
|
||
"plan": "Plan de travail",
|
||
"allowedActions": "Actions autorisées",
|
||
"targetMode": "Mode cible : {mode}"
|
||
},
|
||
"questionDialog": {
|
||
"title": "L'agent pose une question",
|
||
"placeholder": "Tapez votre réponse...",
|
||
"send": "Envoyer"
|
||
},
|
||
"messageBranch": {
|
||
"previousBranchAria": "Branche précédente",
|
||
"nextBranchAria": "Branche suivante",
|
||
"pageOf": "{current} sur {total}"
|
||
},
|
||
"terminal": {
|
||
"title": "Console",
|
||
"running": "En cours"
|
||
},
|
||
"reasoning": {
|
||
"thinking": "Réflexion…",
|
||
"thoughtForFewSeconds": "Réflexion",
|
||
"thoughtForSeconds": "Réflexion"
|
||
},
|
||
"linkSafety": {
|
||
"localFileTitle": "Ouvrir le fichier local ?",
|
||
"externalLinkTitle": "Ouvrir le lien externe ?",
|
||
"localFileDescription": "Vous êtes sur le point d'ouvrir un fichier local dans le panneau de fichiers.",
|
||
"externalLinkDescription": "Vous êtes sur le point de visiter un site web externe.",
|
||
"cancel": "Annuler",
|
||
"opening": "Ouverture…",
|
||
"openFile": "Ouvrir le fichier",
|
||
"openLink": "Ouvrir le lien",
|
||
"errorCannotOpen": "Impossible d'ouvrir le fichier local",
|
||
"errorNoWorkspace": "Aucun dossier d'espace de travail n'est actuellement actif.",
|
||
"errorOutsideWorkspace": "Le fichier se trouve en dehors du dossier de l'espace de travail actuel.",
|
||
"errorFailedOpen": "Échec de l'ouverture du fichier local",
|
||
"errorFailedLink": "Échec de l'ouverture du lien"
|
||
},
|
||
"messageList": {
|
||
"attachedResources": "Ressources jointes",
|
||
"loading": "Chargement...",
|
||
"error": "Erreur : {message}",
|
||
"emptyConversation": "Aucun message dans cette conversation.",
|
||
"systemMessage": "Message système",
|
||
"copyMessage": "Copier",
|
||
"copied": "Copié"
|
||
},
|
||
"liveTurnStats": {
|
||
"thinking": "Réflexion...",
|
||
"streaming": "Diffusion",
|
||
"elapsedHours": "{value} h",
|
||
"elapsedMinutes": "{value} min",
|
||
"elapsedSeconds": "{value} s",
|
||
"toolUseCount": "{count} outil {count, plural, one {use} other {uses}}"
|
||
},
|
||
"tool": {
|
||
"parameters": "Paramètres",
|
||
"error": "Erreur",
|
||
"result": "Résultat",
|
||
"status": {
|
||
"approvalRequested": "En attente d'approbation",
|
||
"approvalResponded": "Répondu",
|
||
"inputAvailable": "En cours",
|
||
"inputStreaming": "En attente",
|
||
"outputAvailable": "Terminé",
|
||
"outputDenied": "Refusé",
|
||
"outputError": "Erreur"
|
||
}
|
||
},
|
||
"toolCallBlock": {
|
||
"tool": "Outil",
|
||
"error": "Erreur",
|
||
"result": "Résultat"
|
||
},
|
||
"contentParts": {
|
||
"showingTailOutput": "Affichage de la fin de la sortie pendant le streaming pour de meilleures performances.",
|
||
"result": "Résultat",
|
||
"unknown": "inconnu",
|
||
"inputTruncated": "L'entrée a été tronquée — le diff peut être incomplet.",
|
||
"replaceAll": "TOUT REMPLACER",
|
||
"filesCount": "Fichiers : {count}",
|
||
"update": "mettre à jour",
|
||
"moreFiles": "+{count} fichiers supplémentaires",
|
||
"timeoutMs": "Délai d'expiration : {timeout}ms",
|
||
"backgroundTrue": "Arrière-plan : true",
|
||
"offset": "Décalage : {offset}",
|
||
"limit": "Limite : {limit}",
|
||
"pages": "Pages : {pages}",
|
||
"mode": "Mode : {mode}",
|
||
"cell": "Cellule : {cell}",
|
||
"pathLabel": "Chemin :",
|
||
"globLabel": "Glob :",
|
||
"typeLabel": "Type :",
|
||
"outputLabel": "Sortie :",
|
||
"caseInsensitive": "Insensible à la casse",
|
||
"multiline": "Multiligne",
|
||
"promptLabel": "Instruction",
|
||
"subjectLabel": "Sujet",
|
||
"taskLabel": "Tâche",
|
||
"nameLabel": "Nom :",
|
||
"agentPromptLabel": "Instruction",
|
||
"agentModelLabel": "Modèle",
|
||
"agentStatsBash": "Commandes",
|
||
"agentStatsRead": "Fichiers lus",
|
||
"agentStatsSearch": "Recherches",
|
||
"agentStatsEdit": "Modifications",
|
||
"agentStatsOther": "Autres",
|
||
"field": {
|
||
"file": "Fichier",
|
||
"notebook": "Carnet",
|
||
"command": "Commande",
|
||
"old": "Ancien",
|
||
"new": "Nouveau",
|
||
"pattern": "Motif",
|
||
"path": "Chemin",
|
||
"query": "Requête",
|
||
"url": "URL :",
|
||
"description": "Détails",
|
||
"content": "Contenu",
|
||
"source": "Origine",
|
||
"prompt": "Instruction",
|
||
"subject": "Sujet",
|
||
"taskId": "ID de tâche",
|
||
"status": "Statut",
|
||
"skill": "Skill",
|
||
"args": "Arguments",
|
||
"offset": "Décalage",
|
||
"limit": "Limite",
|
||
"glob": "Motif glob",
|
||
"type": "Type de donnée",
|
||
"output": "Sortie",
|
||
"replaceAll": "Tout remplacer",
|
||
"language": "Langue",
|
||
"timeout": "Délai",
|
||
"background": "Arrière-plan",
|
||
"agentType": "Type d'agent",
|
||
"library": "Bibliothèque",
|
||
"libraryId": "ID de bibliothèque"
|
||
},
|
||
"title": {
|
||
"edit": "Modifier",
|
||
"command": "Commande",
|
||
"todoWrite": "TodoWrite (mise à jour des tâches)",
|
||
"read": "Lire",
|
||
"write": "Écrire",
|
||
"notebookEdit": "NotebookEdit (édition du carnet)",
|
||
"editFiles": "Modifier ({count} fichiers)",
|
||
"editWithTarget": "Modifier {target}",
|
||
"readWithTarget": "Lire {target}",
|
||
"writeWithTarget": "Écrire {target}",
|
||
"notebookEditWithTarget": "NotebookEdit ({target})",
|
||
"globWithPattern": "Motif glob {pattern}",
|
||
"grepWithPattern": "Motif grep {pattern}",
|
||
"taskCreateWithSubject": "Créer une tâche : {subject}",
|
||
"taskUpdateWithStatus": "Mettre à jour la tâche #{id} -> {status}",
|
||
"taskUpdate": "Mettre à jour la tâche #{id}",
|
||
"webFetchWithUrl": "WebFetch ({url})",
|
||
"webSearchWithQuery": "Recherche web : {query}",
|
||
"todosProgress": "Tâches ({done}/{total})",
|
||
"skillWithName": "Skill : {name}",
|
||
"genericWithContext": "{tool} ({context})"
|
||
}
|
||
}
|
||
},
|
||
"diffPreview": {
|
||
"mode": {
|
||
"added": "Ajouté",
|
||
"deleted": "Supprimé",
|
||
"renamed": "Renommé",
|
||
"modified": "Modifié"
|
||
},
|
||
"hunkLabel": "Bloc {index}",
|
||
"loadingHunk": "Chargement du hunk...",
|
||
"noDiffData": "Aucune donnée diff"
|
||
}
|
||
},
|
||
"ProjectBoot": {
|
||
"title": "Lanceur de projet",
|
||
"tabs": {
|
||
"shadcn": "shadcn"
|
||
},
|
||
"config": {
|
||
"base": "Base",
|
||
"style": "Style",
|
||
"baseColor": "Couleur de base",
|
||
"theme": "Thème",
|
||
"chartColor": "Couleur du graphique",
|
||
"iconLibrary": "Bibliothèque d'icônes",
|
||
"font": "Police",
|
||
"fontHeading": "Police de titre",
|
||
"menuAccent": "Accent du menu",
|
||
"menuColor": "Couleur du menu",
|
||
"radius": "Rayon",
|
||
"template": "Modèle",
|
||
"createProject": "Créer un projet",
|
||
"sectionStyle": "Style",
|
||
"sectionColors": "Couleurs",
|
||
"sectionTypography": "Typographie",
|
||
"sectionInterface": "Interface"
|
||
},
|
||
"preview": {
|
||
"loading": "Chargement de l'aperçu..."
|
||
},
|
||
"createDialog": {
|
||
"title": "Créer un projet",
|
||
"projectName": "Nom du projet",
|
||
"projectNamePlaceholder": "my-app",
|
||
"frameworkTemplate": "Modèle de framework",
|
||
"packageManager": "Gestionnaire de paquets",
|
||
"saveDirectory": "Répertoire de sauvegarde",
|
||
"saveDirectoryPlaceholder": "Sélectionner un répertoire...",
|
||
"browseDirectory": "Parcourir",
|
||
"projectPath": "Le projet sera créé dans : {path}",
|
||
"advancedOptions": "Options avancées",
|
||
"base": "Bibliothèque de base",
|
||
"enableRtl": "Activer le support RTL",
|
||
"enableRtlDescription": "Activer la prise en charge de la mise en page pour les langues de droite à gauche (ex. arabe, hébreu)",
|
||
"pmChecking": "Vérification...",
|
||
"pmNotInstalled": "Non installé",
|
||
"cancel": "Annuler",
|
||
"create": "Créer",
|
||
"creating": "Création du projet..."
|
||
},
|
||
"toasts": {
|
||
"createFailed": "Échec de la création du projet",
|
||
"createSuccess": "Projet créé avec succès"
|
||
},
|
||
"errors": {
|
||
"directoryExists": "Le répertoire cible existe déjà",
|
||
"commandFailed": "La commande de création du projet a échoué."
|
||
}
|
||
},
|
||
"WebServiceSettings": {
|
||
"sectionTitle": "Service Web",
|
||
"sectionDescription": "Activer pour accéder à Codeg à distance via le navigateur",
|
||
"port": "Port",
|
||
"status": "Statut",
|
||
"running": "En cours",
|
||
"stopped": "Arrêté",
|
||
"processing": "Traitement...",
|
||
"start": "Démarrer",
|
||
"stop": "Arrêter",
|
||
"startFailed": "Échec du démarrage",
|
||
"stopFailed": "Échec de l'arrêt",
|
||
"open": "Ouvrir",
|
||
"hide": "Masquer",
|
||
"show": "Afficher",
|
||
"copy": "Copier",
|
||
"addressLabel": "Adresse d'accès",
|
||
"tokenLabel": "Token d'accès",
|
||
"tokenHint": "Entrez ce token lors du premier accès au client Web"
|
||
},
|
||
"DirectoryBrowser": {
|
||
"title": "Parcourir le répertoire",
|
||
"pathPlaceholder": "Entrez le chemin du répertoire...",
|
||
"goHome": "Aller au répertoire personnel",
|
||
"navigateUp": "Aller au répertoire parent",
|
||
"select": "Sélectionner",
|
||
"cancel": "Annuler",
|
||
"loading": "Chargement...",
|
||
"emptyDirectory": "Ce répertoire est vide",
|
||
"errorLoadingDir": "Échec du chargement du répertoire",
|
||
"permissionDenied": "Permission refusée"
|
||
},
|
||
"ChatChannelSettings": {
|
||
"loading": "Chargement...",
|
||
"sectionTitle": "Canaux de chat",
|
||
"sectionDescription": "Configurez des bots IM pour recevoir des notifications d'événements et interroger l'activité de codage.",
|
||
"addChannel": "Ajouter un canal",
|
||
"noChannels": "Aucun canal de chat configuré pour le moment.",
|
||
"channelName": "Nom",
|
||
"channelNamePlaceholder": "Mon bot Telegram",
|
||
"channelType": "Type de canal",
|
||
"lark": "Lark (Feishu)",
|
||
"weixin": "WeChat",
|
||
"dailyReport": "Rapport quotidien",
|
||
"dailyReportTime": "Heure du rapport",
|
||
"nameRequired": "Le nom du canal est requis.",
|
||
"tokenRequired": "Le token est requis.",
|
||
"chatIdRequired": "Le Chat ID est requis.",
|
||
"loadFailed": "Échec du chargement des canaux.",
|
||
"saveFailed": "Échec de l'enregistrement.",
|
||
"connectSuccess": "Canal connecté.",
|
||
"connectFailed": "Échec de la connexion",
|
||
"disconnectSuccess": "Canal déconnecté.",
|
||
"disconnectFailed": "Échec de la déconnexion.",
|
||
"testSuccess": "Test de connexion réussi.",
|
||
"testFailed": "Test de connexion échoué",
|
||
"deleteSuccess": "Canal supprimé.",
|
||
"deleteFailed": "Échec de la suppression du canal.",
|
||
"deleteConfirmTitle": "Supprimer le canal",
|
||
"deleteConfirmMessage": "Le canal et ses journaux de messages seront définitivement supprimés. Êtes-vous sûr ?",
|
||
"cancel": "Annuler",
|
||
"delete": "Supprimer",
|
||
"create": "Créer",
|
||
"save": "Enregistrer",
|
||
"channelListTitle": "Canaux configurés",
|
||
"channelListDescription": "Les canaux activés se connectent automatiquement au démarrage du service.",
|
||
"editChannel": "Modifier le canal",
|
||
"editSuccess": "Canal mis à jour.",
|
||
"tokenPlaceholderKeep": "Laisser vide pour conserver l'actuel",
|
||
"weixinScanTitle": "Scanner le QR code",
|
||
"weixinScanDescription": "Ouvrez WeChat et scannez le QR code pour vous connecter.",
|
||
"weixinQrcodeExpired": "QR code expiré.",
|
||
"weixinRefreshQrcode": "Actualiser",
|
||
"weixinWaitingScan": "En attente du scan...",
|
||
"weixinPollError": "Connexion instable, nouvelle tentative...",
|
||
"weixinReconnectNotice": "En raison des limitations du protocole iLink, après chaque reconnexion vous devez envoyer un message au bot pour que les déclencheurs d'événements prennent effet.",
|
||
"connect": "Connecter",
|
||
"disconnect": "Déconnecter",
|
||
"test": "Tester la connexion",
|
||
"tabs": {
|
||
"channels": "Canaux",
|
||
"commands": "Commandes",
|
||
"events": "Événements",
|
||
"other": "Autres"
|
||
},
|
||
"commands": {
|
||
"title": "Commandes intégrées",
|
||
"description": "Commandes bot disponibles dans les canaux de chat. Dans les chats de groupe, @Bot est requis pour traiter les messages.",
|
||
"prefixLabel": "Préfixe de commande",
|
||
"prefixDescription": "1-3 caractères non alphanumériques pour déclencher les commandes du bot (par défaut /).",
|
||
"prefixSaved": "Préfixe de commande enregistré.",
|
||
"prefixSaveFailed": "Échec de l'enregistrement du préfixe.",
|
||
"prefixInvalid": "Le préfixe doit être de 1-3 caractères non alphanumériques.",
|
||
"save": "Enregistrer",
|
||
"folderDesc": "Sélectionner le dossier de travail",
|
||
"agentDesc": "Sélectionner l'agent IA",
|
||
"taskDesc": "Créer une session et exécuter la tâche",
|
||
"sessionsDesc": "Lister les sessions actives du dossier",
|
||
"resumeDesc": "Conversations récentes / reprendre une session",
|
||
"cancelDesc": "Annuler la tâche en cours",
|
||
"approveDesc": "Approuver la demande de permission de l'agent",
|
||
"denyDesc": "Refuser la demande de permission de l'agent",
|
||
"searchDesc": "Rechercher des conversations par mot-clé",
|
||
"todayDesc": "Résumé de l'activité du jour",
|
||
"statusDesc": "État de connexion du canal",
|
||
"helpDesc": "Afficher l'aide"
|
||
},
|
||
"events": {
|
||
"title": "Notifications d'événements",
|
||
"description": "Une fois activés, les événements déclenchés seront envoyés au canal.",
|
||
"turnComplete": "Tour terminé",
|
||
"turnCompleteDesc": "Lorsqu'un tour d'agent se termine",
|
||
"error": "Erreur de l'agent",
|
||
"errorDesc": "Lorsqu'un agent rencontre une erreur",
|
||
"saved": "Filtre d'événements mis à jour.",
|
||
"saveFailed": "Échec de l'enregistrement du filtre d'événements."
|
||
},
|
||
"language": {
|
||
"title": "Langue des messages",
|
||
"description": "Langue utilisée pour les notifications d'événements, les réponses aux commandes et les rapports quotidiens envoyés aux canaux de chat.",
|
||
"saved": "Langue des messages enregistrée.",
|
||
"saveFailed": "Échec de l'enregistrement de la langue des messages.",
|
||
"en": "Anglais",
|
||
"zh-cn": "Chinois simplifié",
|
||
"zh-tw": "Chinois traditionnel",
|
||
"ja": "Japonais",
|
||
"ko": "Coréen",
|
||
"es": "Espagnol",
|
||
"de": "Allemand",
|
||
"fr": "Français",
|
||
"pt": "Portugais",
|
||
"ar": "Arabe"
|
||
}
|
||
},
|
||
"ModelProviderSettings": {
|
||
"sectionTitle": "Fournisseurs de Modèles",
|
||
"sectionDescription": "Gérer les identifiants des fournisseurs d'API pour les agents.",
|
||
"filterAll": "Tous",
|
||
"providerListTitle": "Fournisseurs Configurés",
|
||
"addProvider": "Ajouter un Fournisseur",
|
||
"editProvider": "Modifier le Fournisseur",
|
||
"noProviders": "Aucun fournisseur de modèle configuré.",
|
||
"providerName": "Nom",
|
||
"providerNamePlaceholder": "Ex. OpenAI, Anthropic",
|
||
"apiUrl": "URL de l'API",
|
||
"apiUrlPlaceholder": "https://api.openai.com/v1",
|
||
"apiKey": "Clé API",
|
||
"apiKeyPlaceholder": "sk-...",
|
||
"apiKeyKeepCurrent": "Laisser vide pour conserver l'actuelle",
|
||
"agentTypes": "Types d'Agent",
|
||
"agentTypesRequired": "Au moins un type d'agent est requis.",
|
||
"nameRequired": "Le nom du fournisseur est requis.",
|
||
"apiUrlRequired": "L'URL de l'API est requise.",
|
||
"apiKeyRequired": "La clé API est requise.",
|
||
"loadFailed": "Échec du chargement des fournisseurs.",
|
||
"saveFailed": "Échec de la sauvegarde.",
|
||
"createSuccess": "Fournisseur créé.",
|
||
"editSuccess": "Fournisseur mis à jour.",
|
||
"deleteSuccess": "Fournisseur supprimé.",
|
||
"deleteConfirmTitle": "Supprimer le Fournisseur",
|
||
"deleteConfirmMessage": "Le fournisseur \"{name}\" sera définitivement supprimé. Êtes-vous sûr ?",
|
||
"deleteBlockedByAgent": "{agents} utilise ce fournisseur. Veuillez le dissocier avant de supprimer.",
|
||
"cancel": "Annuler",
|
||
"delete": "Supprimer",
|
||
"create": "Créer",
|
||
"save": "Enregistrer"
|
||
},
|
||
"ExpertsSettings": {
|
||
"title": "Compétences d'experts",
|
||
"description": "Activez des workflows de compétences soigneusement sélectionnés et éprouvés pour vos agents de codage IA. Chaque expert est une compétence autonome du projet superpowers — codeg gère la copie centrale et la lie aux agents que vous choisissez.",
|
||
"loading": "Chargement des experts…",
|
||
"loadingContent": "Chargement du contenu…",
|
||
"emptyExperts": "Aucun expert disponible. Vérifiez les journaux de l'application.",
|
||
"emptySelection": "Sélectionnez un expert pour voir son contenu et gérer son activation.",
|
||
"emptySearch": "Aucun expert ne correspond à la recherche actuelle.",
|
||
"searchPlaceholder": "Rechercher des experts par nom, ID ou description",
|
||
"enableForAgents": "Activer pour les agents",
|
||
"noAgents": "Aucun agent ACP détecté.",
|
||
"copyModeWarning": "Copié (non lié). Réactivez après les mises à jour de codeg pour obtenir la dernière version.",
|
||
"previewTitle": "Aperçu de SKILL.md",
|
||
"categories": {
|
||
"discovery": "Découverte et conception",
|
||
"planning": "Planification",
|
||
"execution": "Exécution",
|
||
"quality": "Qualité et tests",
|
||
"debugging": "Débogage",
|
||
"review": "Révision et intégration",
|
||
"meta": "Meta"
|
||
},
|
||
"states": {
|
||
"not_linked": "Non activé",
|
||
"linked_to_codeg": "Activé",
|
||
"linked_elsewhere": "Bloqué — un autre lien existe",
|
||
"blocked_by_real_directory": "Bloqué — une compétence personnalisée occupe ce nom",
|
||
"broken": "Lien cassé"
|
||
},
|
||
"badges": {
|
||
"userModified": "Modifié par l'utilisateur"
|
||
},
|
||
"actions": {
|
||
"openCentralDir": "Ouvrir le dossier central",
|
||
"refresh": "Actualiser"
|
||
},
|
||
"toasts": {
|
||
"loadFailed": "Échec du chargement des détails de l'expert",
|
||
"enabled": "Expert activé pour cet agent",
|
||
"disabled": "Expert désactivé pour cet agent",
|
||
"enableFailed": "Échec de l'activation de l'expert",
|
||
"disableFailed": "Échec de la désactivation de l'expert",
|
||
"openFolderFailed": "Échec de l'ouverture du dossier"
|
||
}
|
||
}
|
||
}
|