import type { TranslationResources } from "./en"; export const fr: TranslationResources = { common: { back: "Dos", loading: "Chargement...", actions: { back: "Dos", cancel: "Annuler", close: "Fermer", copy: "Copie", dismiss: "Rejeter", retry: "Réessayer", search: "Recherche", select: "Sélectionner", }, placeholders: { search: "Recherche...", }, empty: { noResults: "Aucun résultat trouvé", noOptionsMatchSearch: "Aucune option ne correspond à votre recherche.", }, states: { loading: "Chargement...", starting: "Départ...", copied: "Copié", copiedLabel: "{{label}}copié", downloadComplete: "Téléchargement terminé", downloadFailed: "Le téléchargement a échoué", }, errors: { error: "Erreur", unableToSave: "Impossible d'enregistrer", nameRequired: "Le nom est requis", daemonUnavailable: "Daemonindisponible", daemonClientUnavailable: "ClientDaemonindisponible", daemonClientDisconnected: "Le clientDaemonest déconnecté", noFileFound: "Aucun fichier trouvé pour{{token}}", unexpectedDictationError: "Une erreur inattendue s'est produite lors du traitement de la dictée.", }, connectionStatus: { online: "En ligne", connecting: "De liaison", offline: "Hors ligne", error: "Erreur", idle: "Inactif", }, }, shell: { menu: { toggleSidebar: "Basculer la barre latérale", open: "Ouvrir le menu", close: "Fermer le menu", }, commandCenter: { placeholder: "Rechercher des commandes, espaces de travail et agents...", noMatches: "Aucune correspondance", actions: "Actes", workspaces: "Espaces de travail", agents: "Agents", newAgent: "Nouvel agent", addProject: "Ajouter un projet", home: "Maison", modelGroupLabel: "Modèle", modelSearchKeywords: "changer de modèle modifier le modèle définir le modèle sélectionner le modèle", thinkingGroupLabel: "Raisonnement", thinkingSearchKeywords: "raisonnement effort réflexion", modeGroupLabel: "Mode", modeSearchKeywords: "accès permission approbation mode", planModeGroupLabel: "Mode plan", planModeSearchKeywords: "plan planification mode plan", fastModeGroupLabel: "Rapide", fastModeSearchKeywords: "rapide vitesse faible latence", settingOn: "Activé", settingOff: "Désactivé", }, }, composer: { placeholders: { desktop: "Envoyez un message à l'agent, marquez@filesou utilisez/commandset/skills", mobile: "Message,@files,/commands", fallback: "Message...", }, input: { accessibilityLabel: "Agent de messagerie...", focusHint: "{{shortcut}}pour se concentrer", addAttachment: "Ajouter une pièce jointe", interruptAgent: "Agent d'interruption", queueMessage: "Message de file d'attente", sendAndInterrupt: "Envoyer et interrompre", sendMessage: "Envoyer un message", queue: "File d'attente", send: "Envoyer", }, cancel: { cancelingAgent: "Agent d'annulation", stopAgent: "Agent d'arrêt", interrupt: "Interrompre", }, voice: { enableVoiceMode: "Activer le mode vocal", voiceMode: "Mode vocal", unmuteVoiceMode: "Activer le mode vocal", muteVoiceMode: "Mode voix muette", stopDictation: "Arrêter la dictée", startDictation: "Démarrer la dictée", unmuteVoice: "Réactiver la voix", muteVoice: "Voix muette", dictation: "Dictée", interruptBeforeVoice: "Interrompre l'agent avant de démarrer le mode vocal", }, attachments: { addImage: "Ajouter une image", pasteImage: "Coller une image", addFile: "Upload file", addIssueOrPr: "Ajouter un problème ouPR", addIssueOrPr_mr: "Ajouter un problème ou MR", dropImagesHere: "Déposez des images ici", dropFilesHere: "Drop files here", editQueuedMessage: "Modifier le message en file d'attente", sendQueuedMessageNow: "Envoyer le message en file d'attente maintenant", openImage: "Ouvrir la pièce jointe de l'image", removeImage: "Supprimer l'image jointe", removeFile: "Remove file attachment", openGithub: "Ouvrir {{kind}} {{number}}", removeGithub: "Supprimer {{kind}} {{number}}", element: "Élément", openBrowserElement: "Ouvrir la pièce jointe de l'élément de navigateur", removeBrowserElement: "Supprimer la pièce jointe d'un élément de navigateur", openReview: "Ouvrir la pièce jointe de l'avis", removeReview: "Supprimer la pièce jointe de l'avis", }, errors: { failedToSend: "Échec de l'envoi du message", failedToCreateAgent: "Échec de la création de l'agent", noHostSelected: "Aucun hôte sélectionné", initialPromptRequired: "Une invite initiale est requise", alreadyLoading: "Déjà en cours de chargement", uploadFailed: "Failed to upload file", noClipboardImage: "Aucune image dans le presse-papiers", pasteImageFailed: "Impossible de coller l’image", fileTooLarge: "{{fileName}} is too large (max {{size}})", }, clientCommands: { archiveAgent: "Archiver l'agent actuel", freshDraft: "Archivez cet agent et démarrez un nouveau brouillon", }, github: { searching: "Recherche...", noResults: "Aucun résultat trouvé.", searchPlaceholder: "Problèmes de recherche et PR...", searchPlaceholder_mr: "Problèmes de recherche et MR...", title: "Joindre le problème ouPR", title_mr: "Joindre le problème ou MR", }, }, agentControls: { provider: { fallback: "Fournisseur", select: "Sélectionnez le fournisseur d'agent", }, thinking: { title: "Pensée", unknown: "Inconnu", extraHigh: "Très haut", select: "Sélectionnez l'option de réflexion", selectWithValue: "Sélectionnez l'option de réflexion ({{value}})", }, model: { unknown: "Modèle inconnu", }, features: { title: "Caractéristiques", open: "Fonctionnalités de l'agent ouvert", on: "Sur", off: "Désactivé", }, mode: { title: "Mode", searchPlaceholder: "Modes de recherche...", selectWithValue: "Sélectionnez le mode agent ({{value}})", }, hints: { thinking: "Mode réflexion", model: "Changer de modèle", mode: "Changer de mode", }, }, agentStream: { empty: "Commencez à discuter avec cet agent...", scrollToBottom: "Faire défiler vers le bas", historyLoadFailed: "Impossible de charger l’historique de l’agent", permission: { plan: "Plan", required: "Autorisation requise", deny: "Refuser", accept: "Accepter", implement: "Mettre en œuvre", question: "Comment souhaitez-vous procéder?", proposedPlan: "Plan proposé", }, }, agentPanel: { states: { notFound: "Agentintrouvable", failedToLoad: "Échec du chargement de l'agent", reconnecting: "Reconnexion...", timelineSyncFailed: "Impossible d’actualiser l’historique de l’agent. Nouvelle tentative…", archivingTitle: "Agent d'archivage...", archivingSubtitle: "Veuillez patienter pendant que nous archivons cet agent.", }, unavailable: { selectedHost: "Hôte sélectionné", unknownHost: "Impossible d'ouvrir cet agent car{{serverLabel}}n'est pas configuré sur ce périphérique.", addHost: "Ajoutez l'hôte dans Paramètres ou ouvrez un agent sur un serveur configuré pour continuer.", preparingSession: "Préparation de la séance{{serverLabel}}...", connecting: "Connexion à{{serverLabel}}...", showSoon: "Nous montrerons cet agent dans un instant.", showWhenOnline: "Nous afficherons cet agent une fois que l'hôte sera en ligne.", reconnectingTo: "Reconnexion à{{serverLabel}}...", showAgainWhenReachable: "Nous afficherons à nouveau cet agent dès que l'hôte sera joignable.", }, archived: { callout: "Cet agent est archivé", unarchive: "Désarchiver", }, }, sessions: { title: "Historique", empty: "Aucune séance pour l'instant", actions: { loadMore: "Charger plus", }, }, agentList: { fallbackTitle: "Nouvelle séance", dateSections: { recent: "Récent", today: "Aujourd'hui", yesterday: "Hier", thisWeek: "Cette semaine", thisMonth: "Ce mois-ci", older: "Plus vieux", }, status: { initializing: "Départ", idle: "Inactif", running: "En cours d'exécution", error: "Erreur", closed: "Fermé", }, badges: { archived: "Archivé", pending: "{{count}}en attente", attention: "Attention", }, archiveSheet: { hostOffline: "Hosthors ligne", runningAgent: "Cet agent est toujours en cours d'exécution. L’archiver arrêtera l’agent.", archive: "Archive", }, }, message: { actions: { copyCode: "Copier le code", copyTurn: "Copier le tour", copyMessage: "Copier le message", forkMenu: "Dupliquer le message", forkInNewTab: "Dupliquer dans un nouvel onglet", forkInNewWorkspace: "Dupliquer dans un nouvel espace de travail", forkUnavailable: "Mettez l'hôte à jour pour utiliser ceci.", forkMissingWorkspace: "Cet agent n'est pas dans un espace de travail.", forkFailed: "Impossible de dupliquer le chat", openFile: "Ouvrir le fichier", copied: "Copié", }, attachments: { dismissImage: "Ignorer l'image", closeImage: "Fermer l'image", imageLoadFailed: "Impossible de charger l'image", imageUnavailable: "Image indisponible", imagePreviewUnavailable: "Aperçu de l'image indisponible.", imagePreviewLoadFailed: "Impossible de charger l'aperçu de l'image.", review: "Revue", commentsOne: "1 commentaire", commentsMany: "{{count}} commentaires", textAttachment: "Texte en pièce jointe", text: "Texte", file: "Fichier", }, speak: { header: "Rayon", }, activity: { details: "Détails", }, dictation: { start: "Démarrer la dictée vocale", cancel: "Annuler la dictée", retry: "Réessayer la dictée", insert: "Insérer la transcription", insertAndSend: "Insérer la transcription et envoyer", failed: "Échec de la dictée:{{error}}", failedRetry: "La dictée a échoué. Appuyez sur réessayer.", }, question: { submit: "Soumettre", next: "Suivant", answerPlaceholder: "Tapez votre réponse...", otherPlaceholder: "Autre...", }, todo: { title: "Tâches", empty: "Aucune tâche pour l'instant.", }, compaction: { loading: "Compactage...", auto: "Contexte automatiquement compacté", manual: "Contexte compacté manuellement", withTokens: "Contexte compacté (jetons{{tokens}}K)", completed: "Contexte compacté", }, }, importSession: { title: "Session d'importation", filters: { all: "Tous", }, status: { connectHost: "Connectez-vous à un hôte pour importer des sessions", updateHost: "Mettez à jour l'hôte pour importer des sessions.", noProviders: "Aucun fournisseur importable n'est activé.", loading: "Chargement des sessions récentes...", failedAll: "Impossible de charger les sessions récentes.", failedProviders: "Impossible de charger les sessions pour{{providers}}.", failedImport: "Impossible d'importer la session sélectionnée.", }, actions: { refresh: "Sessions de rafraîchissement", }, preview: { untitledSession: "Séance sans titre", noPrompt: "Aucun aperçu rapide", }, empty: { noRecent: "Aucune session récente à importer.", alreadyImported: "Toutes les sessions récentes sont déjà importées.", noProviderSessions: "Aucune session{{provider}}trouvée.", }, row: { importing: "Importation...", }, }, workspace: { route: { loading: "Chargement de l'espace de travail", connecting: "De liaison", hostOffline: "{{hostName}}est hors ligne", cannotReachHost: "Impossible d'atteindre{{hostName}}", hostStatus: "StatutHost:{{status}}", needsHostUpgrade: "Mettez à jour votre hôte pour restaurer cet espace de travail", manageHost: "Gérer l'hôte", recovery: { archivedTitle: "Espace de travail archivé", restoreDescription: "{{workspaceName}} a été archivé et son worktree supprimé. Restaurez la branche {{branch}} pour le rouvrir.", unarchiveDescription: "{{workspaceName}} est archivé. Désarchivez-le pour le rouvrir.", restoreAction: "Restaurer", unarchiveAction: "Désarchiver", restoringTitle: "Restauration de l'espace de travail", restoringAction: "Restauration...", unavailableTitle: "Espace de travail indisponible", checkFailedTitle: "Impossible de vérifier l'espace de travail", }, }, hoverCard: { scriptsAccessibility: "ScriptsWorkspace", copyPath: "Copier le chemin", copyBranchName: "Copier le nom de la branche", copied: "Copié", }, fileActions: { openFile: "Ouvrir le fichier", copyPath: "Copier le chemin", download: "Télécharger", addToChat: "Ajouter au chat…", moreActions: "Plus de propositions", }, fileExplorer: { sort: { name: "Nom", modified: "Modifié", size: "Taille", }, context: { size: "Taille", modified: "Modifié", }, actions: { back: "Dos", retry: "Réessayer", refresh: "Actualiser les fichiers", refreshing: "Actualisation des fichiers", hideHiddenFiles: "Masquer les fichiers cachés", showHiddenFiles: "Afficher les fichiers cachés", }, empty: { noFiles: "Aucun fichier", noVisibleFiles: "Aucun fichier visible", }, states: { unavailable: "Workspacen'est pas disponible", loading: "Chargement des fichiers...", }, errors: { failedToListDirectory: "Échec de la liste du répertoire", }, }, setup: { descriptor: { label: "Installation", completed: "Configuration terminée", failed: "Échec de l'installation", workspace: "ConfigurationWorkspace", }, status: { running: "En cours d'exécution", completed: "Complété", failed: "Échoué", waiting: "En attente de la sortie de configuration", }, waiting: "Configuration de l'espace de travail...", empty: { noCommands: "Aucune commande de configuration n'a été exécutée pour cet espace de travail.", }, accessibility: { noCommands: "Aucune commande de configuration n'a été exécutée pour cet espace de travail", log: "Journal de configurationWorkspace", }, log: { noOutput: "Aucune sortie", }, }, browser: { unavailable: { title: "Le navigateur est réservé au bureau", subtitle: "Ouvrez cet espace de travail dans Electron pour utiliser le navigateur intégré.", }, session: "Session de navigateur{{browserId}}", controls: { back: "Dos", forward: "Avant", stopLoading: "Arrêter le chargement", refresh: "Rafraîchir", browserUrl: "NavigateurURL", enterUrl: "EntrezURL", openDevTools: "Outils de développement du navigateur ouvert", cancelSelector: "Annuler le sélecteur d'élément", annotateElement: "Annoter l'élément", screenshotElement: "Capturer l'élément", screenshotCopied: "Capture d'écran copiée dans le presse-papiers", elementCopied: "Élément copié dans le presse-papiers", screenshotFailed: "Impossible de copier la capture", }, annotate: { title: "Annoter l'élément", placeholder: "Message à l'agent concernant cet élément…", submit: "Joindre", cancel: "Annuler", }, devices: { label: "Taille de l'appareil", responsive: "Adaptatif", }, errors: { failedToLoad: "Échec du chargement de la page", invalidUrl: "NavigateurURLinvalide", unsupportedProtocol: "Navigateur non pris en charge bloquéURL:{{protocol}}", }, }, terminal: { hostDisconnected: "Hostn'est pas connecté", unableToSubscribe: "Impossible de s'abonner au terminal", }, tabs: { loading: "Chargement...", modified: "Modifications non enregistrées", loadingAgentTitle: "Titre d'agent de chargement", emptyPane: "Aucun onglet dans ce volet.", fallback: { newAgent: "Nouvel agent", setup: "Installation", workspaceSetup: "ConfigurationWorkspace", terminal: "Terminal", browser: "Navigateur", agent: "Agent", workspace: "Workspace", }, switcher: { trigger: "Changer d'onglet ({{count}}ouvert)", title: "Changer d'onglet", searchPlaceholder: "Onglets de recherche", }, menu: { openFor: "Ouvrir le menu pour{{label}}", copyResumeCommand: "Copier la commande de reprise", copyAgentId: "Copier l'identifiant de l'agent", copyTerminalId: "Copier l'identifiant du terminal", copyFilePath: "Copy file path", rename: "Rebaptiser", closeAbove: "Fermer les onglets ci-dessus", closeBelow: "Fermer les onglets ci-dessous", closeLeft: "Près de la gauche", closeRight: "Près de la droite", closeOthers: "Fermer les autres onglets", reloadAgent: "Agent de rechargement", reloadAgentTooltip: "Rechargez l'agent pour mettre à jour les compétences, les MCP ou le statut de connexion.", close: "Fermer", renameTerminal: "Renommer le terminal", renameAgent: "Renommer l'agent", }, actions: { newAgent: "Nouvel agent", newTerminal: "Nouveau terminal", preparingTerminal: "Préparation de l'onglet du terminal", preparingTerminalTooltip: "Préparation du terminal...", newBrowser: "Nouveau navigateur", exitFocusMode: "Quitter le mode concentration", splitRight: "Volet divisé à droite", splitDown: "Diviser le volet vers le bas", terminalProfilesMenu: "Terminal profiles", editTerminalProfiles: "Edit profiles…", pinTarget: "Épingler", unpinTarget: "Détacher", }, explorer: { open: "Ouvrir l'explorateur", close: "Fermer l'explorateur", toggle: "Basculer l'explorateur", changes: "Changements", files: "Fichiers", }, toasts: { copyFailed: "Échec de la copie", agentIdCopiedLabel: "AgentID", terminalIdCopiedLabel: "Identifiant du terminal", resumeCommandCopiedLabel: "reprendre la commande", filePathCopiedLabel: "File path", resumeIdUnavailable: "ReprendreIDnon disponible", resumeCommandUnavailable: "Commande de reprise non disponible", reloadingAgent: "Agent de rechargement...", reloadedAgent: "Agent rechargé", failedToReloadAgent: "Échec du rechargement de l'agent", }, confirmations: { unsavedTitle: "Modifications non enregistrées", unsavedMessage: "Cet onglet contient des modifications non enregistrées. Le fermer supprimera le brouillon.", closeWithoutSaving: "Fermer sans enregistrer", closePaneTitle: "Fermer le volet?", bulkUnsaved: "{{count}} onglet(s) contiennent des modifications non enregistrées. Les fermer supprimera ces brouillons.", close: "Fermer", cancel: "Annuler", archive: "Archive", closeTerminalTitle: "Fermer le terminal?", closeTerminalMessage: "Tout processus en cours d’exécution dans ce terminal sera immédiatement arrêté.", archiveRunningAgentTitle: "Archiver l'agent en cours d'exécution?", archiveRunningAgentMessage: "Cet agent est toujours en cours d'exécution. L'archiver arrêtera l'agent et fermera l'onglet.", closeTabsLeftTitle: "Fermer les onglets à gauche?", closeTabsRightTitle: "Fermer les onglets à droite?", closeOtherTabsTitle: "Fermer les autres onglets?", bulk: { all: "Cela archivera les agents{{agents}}, fermera les terminaux{{terminals}}et fermera les onglets{{tabs}}. Tout processus en cours d’exécution dans un terminal fermé sera immédiatement arrêté.", agentsAndTerminals: "Cela archivera les agents{{agents}}et fermera les terminaux{{terminals}}. Tout processus en cours d’exécution dans un terminal fermé sera immédiatement arrêté.", terminalsAndTabs: "Cela fermera le(s) terminal(s){{terminals}}et fermera le(s) onglet(s){{tabs}}. Tout processus en cours d’exécution dans un terminal fermé sera immédiatement arrêté.", agentsAndTabs: "Cela archivera les agents{{agents}}et fermera les onglets{{tabs}}.", terminals: "Cela fermera le(s) terminal(s){{terminals}}. Tout processus en cours d’exécution dans un terminal fermé sera immédiatement arrêté.", tabs: "Cela fermera les onglets{{tabs}}.", agents: "Cela archivera les agents{{agents}}.", }, }, }, header: { actions: { workspaceActions: "ActionsWorkspace", newAgent: "Nouvel agent", newTerminal: "Nouvelle borne", newBrowser: "Nouvel onglet du navigateur", importSession: "Session d'importation", copyPath: "Copier le chemin de l'espace de travail", copyBranchName: "Copier le nom de la branche", showSetup: "Afficher la configuration", }, toasts: { workspacePathUnavailable: "Le cheminWorkspacen'est pas encore disponible", branchNameUnavailable: "Nom de la succursale non disponible", terminalQueued: "Préparation de l'espace de travail, ouverture du terminal lorsque vous êtes prêt...", workspacePathCopiedLabel: "CheminWorkspace", branchNameCopiedLabel: "Nom de la succursale", }, }, scripts: { title: "Scripts", actions: { chooseUrl: "Choisir l’URL", copyUrl: "Copier l’URL", openService: "Voir le service", restart: "Redémarrer", run: "Courir", stop: "Arrêter", view: "Voir le terminal", }, accessibility: { trigger: "ScriptsWorkspace", openService: "Voir le service {{scriptName}}", viewTerminal: "Voir le terminal{{scriptName}}", runScript: "Exécuter le script{{scriptName}}", stopScript: "Arrêter{{scriptName}}", restartScript: "Redémarrer{{scriptName}}", copyUrl: "Copier l'URL de{{scriptName}}", chooseUrl: "Choisir l’URL pour {{scriptName}}", script: "Script{{scriptName}}", }, routes: { public: "Proxy inverse", paseo: "Memorable", direct: "Directe", }, states: { exitCode: "quitter{{code}}", startFailed: "Échec du démarrage de{{scriptName}}", stopFailed: "Échec de l'arrêt de{{scriptName}}", }, }, git: { actions: { moreOptions: "Plus d'options", moreActions: "Plus de propositions", commit: { label: "Commettre", pending: "S'engager...", success: "Engagé", }, pull: { label: "Tirer", pending: "Tirer...", success: "Tiré", }, push: { label: "Pousser", pending: "Pousser...", success: "Poussé", }, pullAndPush: { label: "Tirez et poussez", pending: "Tirer et pousser...", success: "Tiré et poussé", }, viewPr: "VoirPR", createPr: { label: "CréerPR", pending: "Création dePR...", success: "PRcréé", label_mr: "Créer MR", pending_mr: "Création de MR...", success_mr: "MR créé", }, mergeBranch: { label: "Fusionner localement", pending: "Fusion...", success: "Fusionné", }, mergeFromBase: { label: "Mise à jour de{{baseRef}}", pending: "Mise à jour...", success: "Mis à jour", }, archive: { label: "Archiver l’espace de travail", pending: "Archivage...", success: "Archivé", }, mergePr: { squash: "Fusionner PR (squash)", merge: "Fusionner PR (merge)", rebase: "Fusionner PR (rebase)", pending: "Fusion de PR...", success: "PR fusionné", squash_mr: "Fusionner MR (squash)", merge_mr: "Fusionner MR (merge)", rebase_mr: "Fusionner MR (rebase)", pending_mr: "Fusion de MR...", success_mr: "MR fusionné", }, viewPr_mr: "Voir MR", autoMerge: { enableSquash: "Fusion automatique (squash)", enableMerge: "Fusion automatique (merge)", enableRebase: "Fusion automatique (rebase)", enabled: "Fusion automatique activée", enabling: "Activation de la fusion automatique...", disabling: "Désactivation de la fusion automatique...", disabled: "Fusion automatique désactivée", }, unavailable: { viewPrNoForge: "Voir {{noun}} n'est pas disponible pour le moment car {{brand}} n'est pas connecté", pullNoRemote: "Pull n'est pas disponible ici car cette branche n'est pas encore connectée à une télécommande", pullDirty: "Pull n'est pas disponible tant que vous avez des modifications locales, alors validez-les ou cachez-les d'abord", pullUpToDate: "Pull n'est pas disponible car cette branche est déjà à jour", pushNoRemote: "Push n'est pas disponible ici car cette branche n'est pas encore connectée à une télécommande", pushBehind: "Push n'est pas encore disponible, car de nouvelles modifications doivent être apportées en premier.", pushNothing: "Push n'est pas disponible car il n'y a rien de nouveau à envoyer", pullAndPushNoRemote: "Le pull et le push ne sont pas disponibles ici car cette branche n'est pas encore connectée à une télécommande", pullAndPushDirty: "Pull et push ne sont pas disponibles tant que vous avez des modifications locales, alors validez-les ou cachez-les d'abord", pullAndPushNoIncoming: "Pull et push ne sont pas disponibles car il n'y a aucun changement entrant à récupérer d'abord", pullAndPushInSync: "Les fonctions Pull et Push ne sont pas disponibles car cette branche est déjà synchronisée", pullAndPushNothingToPush: "Pull et push ne sont pas disponibles car il n'y a rien de nouveau à envoyer après le pull", createPrNoForge: "Créer {{noun}} n'est pas disponible pour le moment car {{brand}} n'est pas connecté", createPrNoCommits: "CréerPRn'est pas disponible car cette branche n'a pas encore de nouveaux commits", mergeNoBase: "La fusion n'est pas disponible car nous n'avons pas pu déterminer la branche de base", mergeDirty: "La fusion n'est pas disponible tant que vous avez des modifications locales, alors validez-les ou cachez-les d'abord", mergeNothing: "La fusion n'est pas disponible car cette branche n'a encore rien de nouveau à fusionner", updateNoBase: "La mise à jour n'est pas disponible car nous n'avons pas pu déterminer la branche de base", updateDirty: "La mise à jour n'est pas disponible tant que vous avez des modifications locales, alors validez-les ou cachez-les d'abord", updateCurrent: "La mise à jour n'est pas disponible car cette branche est déjà à jour avec{{baseRef}}", mergePrNoGithub: "La fusionPRn'est pas disponible pour le moment carGitHubn'est pas connecté", archiveNotWorktree: "L'archive n'est pas disponible ici car cet espace de travail n'a pas été créé en tant qu'arbre de travailPaseo", mergePrNoForge: "La fusion {{noun}} n'est pas disponible pour le moment car {{brand}} n'est pas connecté", mergePrMissing: "La fusionPRn'est pas disponible car il n'y a pas encore de demande d'extraction", mergePrDraft: "La fusionPRn'est pas disponible car la demande d'extraction est encore un brouillon", mergePrMerged: "La fusionPRn'est pas disponible car la demande d'extraction est déjà fusionnée", mergePrClosed: "La fusionPRn'est pas disponible car la demande d'extraction est fermée", mergePrConflicts: "La fusionPRn'est pas disponible car la demande d'extraction présente des conflits", mergePrQueue: "MergePRn'est pas disponible ici car ce référentiel utilise une file d'attente de fusion", mergePrNotReady: "La fusion {{noun}} n'est pas disponible jusqu'à ce que {{brand}} signale que {{noun}} est prête à fusionner", autoMergeCannotDisable: "La fusion automatique est activée, mais ce compte ne peut pas la désactiver", }, toasts: { failedCommit: "Échec de la validation", failedPull: "Échec de l'extraction", failedPush: "Échec de la poussée", failedPullAndPush: "Impossible de tirer et de pousser", failedCreatePr: "Échec de la création dePR", failedMergePr: "Échec de la fusion dePR", failedEnableAutoMerge: "Échec de l'activation de la fusion automatique", failedDisableAutoMerge: "Échec de la désactivation de la fusion automatique", baseRefUnavailable: "Réf de base indisponible", failedMerge: "Échec de la fusion", failedMergeFromBase: "Échec de la fusion à partir de la base", }, archiveWarning: { title: "Archiver «{{workspaceName}}»?", confirm: "Archive", cancel: "Annuler", uncommittedChanges: "Modifications non validées", uncommittedChangesWithDiff: "Modifications non validées ({{diffStat}})", addedLine: "Ligne ajoutée{{count}}", addedLines: "{{count}}lignes ajoutées", deletedLine: "Ligne supprimée{{count}}", deletedLines: "{{count}}lignes supprimées", unpushedCommit: "Validation non poussée{{count}}", unpushedCommits: "Validations non poussées{{count}}", }, }, diff: { openChangesTab: "Ouvrir l'onglet Modifications", closeChangesTab: "Fermer l'onglet Modifications", binaryFile: "Fichier binaire", tooLarge: "Diff trop grand pour être affiché", previewTooLargeTitle: "Ce diff est trop volumineux pour être prévisualisé", previewTooLargeDescription: "Réduisez la comparaison pour la prévisualiser ici", unified: "Différentiel unifié", split: "Différent côte à côte", switchToUnified: "Passer au diff unifié", switchToSplit: "Passer au diff côte à côte", showTreeView: "Afficher l'arborescence des dossiers", showFlatView: "Afficher la liste de fichiers à plat", options: "Options du diff", hideWhitespace: "Masquer les espaces", showWhitespace: "Afficher les espaces", scrollLongLines: "Faire défiler les longues lignes", wrapLongLines: "Enroulez les longues lignes", collapseAll: "Réduire tous les fichiers", expandAll: "Développer tous les fichiers", collapseAllFolders: "Réduire tous les dossiers", expandAllFolders: "Développer tous les dossiers", refreshing: "Rafraîchissant", refresh: "Rafraîchir", refreshState: "Actualiser l'état de git et de {{brand}}", failedRefresh: "Échec de l'actualisation de l'état git.", emptyHiddenWhitespace: "Aucun changement visible après avoir masqué les espaces", emptyUncommitted: "Aucune modification non validée", emptyAgainstBase: "Aucun changement par rapport à{{baseRef}}", checkingRepository: "Vérification du référentiel...", notRepository: "Pas un dépôt git", diffMode: "Mode différentiel", uncommitted: "Non engagé", committed: "Engagé", branchUnknown: "Inconnu", base: "base", newFile: "Nouveau", deletedFile: "Supprimé", commits: { title: "Commits", countLabel: "{{count}} commits de l’espace de travail", noneAhead: "Aucun commit en avance sur {{baseRef}} pour le moment", fileDiffEmpty: "Aucune modification à afficher", fileDiffError: "Échec du chargement du diff du fichier", loading: "Chargement des commits…", loadError: "Échec du chargement des commits", empty: "Aucun commit pour le moment", }, }, openInEditor: { open: "Ouvrir", chooseEditor: "Choisir l'éditeur", openIn: "Espace de travail ouvert dans{{target}}", openFileIn: "Open {{fileName}} in {{target}}", failedOpen: "Échec de l'ouverture de l'espace de travail", }, pr: { actions: { viewPullRequest: "Voir", openOn: "Ouvrir sur {{brand}}", }, sections: { checks: "Chèques", pipeline: "Pipeline", reviews: "Avis", }, empty: { noJobs: "Aucune tâche", loadingPipeline: "Chargement du pipeline...", pipelineJobsLoadFailed: "Impossible de charger les tâches du pipeline", allowedToFail: "autorisé à échouer", }, approvals: "{{given}} sur {{required}} approbations", accessibility: { pullRequest: "Demande de tirage #{{number}}", pullRequest_mr: "Demande de fusion !{{number}}", }, states: { draft: "Brouillon", merged: "Fusionné", closed: "Fermé", open: "Ouvrir", }, activity: { commented: "Commenté", approved: "Approuvé", requestedChanges: "Modifications demandées", reviewed: "Révisé", }, time: { justNow: "tout à l' heure", }, thread: { discussion: "Fil de discussion", }, errors: { statusLoadFailed: "Impossible de charger le statut de la demande d'extraction", activityLoadFailed: "Impossible de charger l'activité de demande d'extraction", }, }, forgeSetup: { installCli: "Installez la CLI {{cli}} pour utiliser les fonctionnalités {{brand}}.", signIn: "Exécutez {{command}} pour utiliser les fonctionnalités {{brand}}.", generic: "Configurez {{brand}} sur cet hôte pour utiliser ses fonctionnalités.", }, }, }, sidebar: { pinned: { title: "Épinglés", }, host: { noHost: "Aucun hôte", switchTitle: "Changer d'hôte", searchPlaceholder: "Rechercher des hôtes...", }, actions: { addProject: "Ajouter un projet", newWorkspace: "Nouvel espace de travail", hosts: "Hôtes", home: "Maison", settings: "Paramètres", closeSidebar: "Fermer la barre latérale", }, help: { trigger: "Aide et assistance", sectionHelp: "Aide", diagnostics: "Lancer le diagnostic", shortcuts: "Raccourcis clavier", reportIssue: "Signaler un problème", discord: "Discord", github: "Créer un ticket GitHub", whatsNew: "Nouveautés", version: "Paseo {{version}}", }, sections: { sessions: "Historique", schedules: "Planifications", }, worktreeSetup: { title: "Configurer les scripts d'arbre de travail", description: "Ajoutez des commandes de configuration pour que les nouveaux arbres de travail puissent installer des dépendances et se préparer automatiquement.", openProjectSettings: "Ouvrir les paramètres du projet", }, project: { actions: { menu: "Actions du projet", openSettings: "Ouvrir les paramètres du projet", openNewWindow: "Open in new window", openNewWindowFailed: "Couldn't open a new window", openFolder: "Open in file manager", openFolderFailed: "Couldn't open folder", remove: "Supprimer le projet", removing: "Suppression...", }, confirmations: { removeTitle: "Supprimer le projet?", removeMessage: "Supprimer «{{projectName}}» de la barre latérale?\n\nLes fichiers sur le disque ne seront pas modifiés.", removeConfirm: "Retirer", cancel: "Annuler", }, toasts: { hostDisconnected: "Hostn'est pas connecté", removeFailed: "Échec de la suppression de certains espaces de travail", updateHostToRemove: "Mettez à jour le host pour supprimer des projets.", }, empty: { title: "Aucun projet pour l'instant", description: "Ajoutez un projet pour commencer", }, }, workspace: { status: { scriptsAvailable: "Scripts disponibles", creating: "Création...", }, actions: { menu: "ActionsWorkspace", newWorkspace: "Nouvel espace de travail", showMore: "Afficher plus", showLess: "Afficher moins", createWorkspaceFor: "Créer un nouvel espace de travail pour{{projectName}}", copyPath: "Copier le chemin", copyBranchName: "Copier le nom de la branche", rename: "Renommer l'espace de travail", pin: "Épingler en haut", unpin: "Désépingler", archive: "Archive", archiveWorkspace: "Archiver l’espace de travail", hideFromSidebar: "Masquer de la barre latérale", archiving: "Archivage...", hiding: "Dissimulation...", }, confirmations: { hideTitle: "Masquer l'espace de travail?", hideMessage: "Masquer «{{workspaceName}}» dans la barre latérale?\n\nLes fichiers sur le disque ne seront pas modifiés.", hideConfirm: "Cacher", cancel: "Annuler", }, rename: { title: "Renommer l'espace de travail", submit: "Rebaptiser", invalidBranchName: "Nom de succursale invalide", }, toasts: { workspacePathUnavailable: "CheminWorkspacenon disponible", pathCopied: "Chemin copié", branchNameCopied: "Nom de la succursale copié", hostDisconnected: "Hostn'est pas connecté", hideFailed: "Échec du masquage de l'espace de travail", archiveFailed: "Échec de l'archivage de l'espace de travail", }, }, }, newWorkspace: { title: "Nouvel espace de travail", create: "Créer", isolation: { local: "Local", worktree: "Nouveau worktree", label: "Isolation", }, fields: { project: "Projet", base: "Base", baseNotApplicable: "Non applicable", }, titlePlaceholder: "Titre (facultatif)", errors: { hostDisconnected: "Hostn'est pas connecté", createWorktreeFailed: "Échec de la création de l'arbre de travail", composerStateRequired: "L'état du compositeur est requis", selectModel: "Sélectionnez un modèle", }, refPicker: { startingRef: "Réf de départ", chooseStart: "Choisissez par où commencer", intoBase: "dans {{baseRef}}", searching: "Recherche...", noMatchingRefs: "Aucune référence correspondante.", searchPlaceholder: "Rechercher des succursales et des PR", title: "Commencer à partir de", }, }, desktop: { quitting: { title: "QuitterPaseo...", detail: "Arrêt du démon local.", }, daemon: { title: "Daemon", status: { title: "Statut", builtInOnly: "Seul le démon de bureau intégré est affiché ici", running: "en cours d'exécution", notRunning: "ne fonctionne pas", pid: "PID{{pid}}", }, management: { title: "Gérer le démon intégré", hint: "LaissezPaseodémarrer et arrêter le démon intégré", pauseTitle: "Suspendre le démon intégré", pauseMessage: "Cela arrêtera immédiatement le démon intégré. Les agents en cours d'exécution et les terminaux connectés au démon intégré seront arrêtés.", pauseAndStop: "Pause et arrêt", registrationFailed: "Built-in daemon started, but Paseo could not save the localhost connection. Toggle daemon management off and on again, or add localhost manually.", pausedStopFailed: "La gestion du démon intégré a été suspendue, maisPaseon'a ​​pas pu arrêter le démon.", updateFailed: "Impossible de mettre à jour la gestion des démons intégrés.", }, keepRunning: { title: "Laisser le démon fonctionner après avoir quitté", hint: "Daemoncontinue de fonctionner lorsque vous quittezPaseo", }, logs: { title: "Fichier journal", modalTitle: "JournauxDaemon", unavailable: "Chemin du journal indisponible", empty: "(le fichier journal est vide)", copied: "Chemin du journal copié.", copyFailed: "Impossible de copier le chemin du journal.", open: "Journaux ouverts", copyPath: "Copier le chemin", }, fullStatus: { title: "Statut complet", modalTitle: "StatutDaemon", hint: "Exécute`paseo daemon status`et affiche la sortie", view: "Afficher l'état", copied: "Statut copié dans le presse-papiers.", fetchFailed: "Échec de la récupération de l'état du démon:{{message}}", }, advancedSettings: "Paramètres avancés", openAdvancedSettings: "Ouvrir les paramètres avancés du démon", versionMismatch: "Les versions de l'application et du démon ne correspondent pas. Mettez à jour les deux vers la même version pour une meilleure expérience.", loadFailed: "Impossible de charger l'état du démon de bureau.", }, updates: { status: { checking: "Vérification des mises à jour de l'application...", installing: "Installation de la mise à jour de l'application...", upToDate: "L'application est à jour.", upToDateWithLastChecked: "Up to date. Last checked at {{time}}.", pending: "Nous vous informerons lorsque la mise à jour sera prête.", pendingWithLastChecked: "Nous vous informerons lorsque la mise à jour sera prête. Dernière vérification à {{time}}.", pendingWithVersion: "Mise à jour trouvée : {{version}}. Téléchargement...", pendingWithVersionAndLastChecked: "Mise à jour trouvée : {{version}}. Téléchargement... Dernière vérification à {{time}}.", availableWithVersion: "Mise à jour prête:{{version}}", availableWithVersionAndLastChecked: "Mise à jour prête:{{version}}. Dernière vérification à {{time}}.", available: "Une mise à jour de l'application est prête à être installée.", availableWithLastChecked: "Une mise à jour de l'application est prête à être installée. Dernière vérification à {{time}}.", installed: "Mise à jour de l'application installée. Redémarrage requis.", failed: "Échec de la mise à jour de l'application.", idle: "L'état de la mise à jour n'a pas encore été vérifié.", }, installError: "Impossible d'installer la mise à jour de l'application de bureau.", callout: { installingTitle: "Installation de la mise à jour", failedTitle: "La mise à jour a échoué", availableTitle: "Mise à jour disponible", genericError: "Quelque chose s'est mal passé.", whatsNew: "Quoi de neuf", installingAction: "Installation...", installAndRestart: "Installer et redémarrer", installingDescription: "Installation et redémarrage...", versionReady: "{{version}}est prêt à être installé.", newVersionReady: "Une nouvelle version est prête à être installée.", restartWarning: "La mise à niveau de l'application arrêtera l'exécution des agents et fermera les sessions de terminal.", }, }, settings: { loadFailed: "Impossible de charger les paramètres du bureau.", saveFailed: "Impossible d'enregistrer les paramètres du bureau.", }, rosetta: { title: "Téléchargez la versionApple Silicon", runningIntel: "Vous exécutez la versionInteldePaseosousRosettasurApple Silicon.", highCpu: "Cela entraîne une utilisation élevée du processeur. Téléchargez la versionApple Siliconpour le réparer.", download: "Télécharger", }, permissions: { notifications: { allowed: "Les notifications sont autorisées par le système d'exploitation.", denied: "Les notifications sont refusées dans les paramètres système.", notGranted: "Les notifications n'ont pas encore été accordées.", webOnly: "L’état des notifications sur le bureau est uniquement disponible sur l’exécution Web.", supported: "Les notifications de bureau sont prises en charge.", unsupported: "Les notifications de bureau ne sont pas prises en charge sur cette plateforme.", apiUnavailable: "L'API de notification Web n'est pas disponible dans cet environnement.", requestsWebOnly: "Les demandes de notification sur le bureau sont uniquement disponibles sur l'exécution Web.", requestUnavailable: "L'API de notification Web requestPermission() n'est pas disponible.", requestFailed: "Échec de la demande d'autorisation de notification:{{message}}", unexpectedState: "État d'autorisation de notification inattendu:{{state}}", }, microphone: { webOnly: "L’état du microphone de bureau est uniquement disponible dans l’environnement d’exécution Web.", navigatorUnavailable: "Le navigateur n'est pas disponible dans cet environnement.", granted: "L’accès au microphone est accordé.", denied: "L'accès au microphone est refusé dans les paramètres système.", notGranted: "L'autorisation du microphone n'a pas encore été accordée.", unexpectedState: "État d'autorisation inattendu du microphone:{{state}}", statusApiUnavailable: "L’API d’état du microphone n’est pas disponible dans ce runtime. Utilisez Request pour vérifier l’accès.", queryFailed: "Échec de l'interrogation de l'état du microphone:{{message}}", captureUnavailable: "La capture du microphone n'est pas disponible dans cet environnement.", permissionApiUnavailable: "L'API d'état des autorisations n'est pas disponible. Utilisez Request pour vérifier l’accès.", requestsWebOnly: "Les demandes de microphone de bureau sont uniquement disponibles sur le runtime Web.", captureApiUnavailable: "L'API de capture de microphone n'est pas disponible dans cet environnement.", requestDenied: "L'autorisation du microphone a été refusée par l'utilisateur ou le système.", noDevice: "Aucun microphone n'a été trouvé.", requestFailed: "Échec de la demande d'autorisation du microphone:{{message}}", }, empty: { notifications: "L'état de la notification n'a pas encore été vérifié.", microphone: "L'état du microphone n'a pas encore été vérifié.", }, testNotification: { title: "Test de notificationPaseo", body: "Si vous pouvez voir cela, les notifications sur le bureau fonctionnent.", notDelivered: "La notification n'a pas été délivrée. Vérifiez Paramètres système > Notifications.", failed: "Échec de l'envoi de la notification.", }, }, integrations: { cli: { statusFailed: "Impossible de vérifier l'état de l'installation deCLI.", installFailed: "Impossible d'installer lePaseoCLI.", }, skills: { statusFailed: "Impossible de vérifier l'état des compétences d'orchestration.", installFailed: "Impossible d'installer les compétences d'orchestration.", updateFailed: "Impossible de mettre à jour les compétences d'orchestration.", uninstallFailed: "Impossible de désinstaller les compétences d'orchestration.", saveSelectionFailed: "Impossible d'enregistrer la sélection des compétences d'orchestration.", }, }, }, rootError: { kicker: "Une erreur s'est produite", title: "Paseo a rencontré un problème.", body: "Réessayez pour recharger l'application. Si cela continue, joignez les détails ci-dessous au signalement.", details: "Détails", }, startup: { errorTitle: "Quelque chose s'est mal passé", errorDescription: "Le serveur local n'a pas pu démarrer. Si cela continue, veuillez signaler le problème surGitHubet inclure les journaux ci-dessous.", logs: { loading: "Chargement des journaux du démon...", unavailable: "Aucun journal de démon disponible.", loadFailed: "Impossible de charger les journaux du démon:{{message}}", }, }, openProject: { tiles: { addProject: { title: "Ajouter un projet", description: "Ouvrez un dossier sur votre machine", }, importSession: { title: "Session d'importation", description: "Apportez des sessionsCLIexternes récentes", }, setupProviders: { title: "Fournisseurs d'installation", description: "ConfigurezClaude Code,Codexet plus", }, pairDevice: { title: "Associer un appareil", description: "Connectez votre téléphone à ce démon", }, }, }, projectPicker: { placeholder: "Tapez pour rechercher...", browse: "Parcourir…", opening: "Projet d'ouverture...", searching: "Recherche en cours...", empty: "Commencez à taper un chemin", errors: { directory_not_found: "Répertoire introuvable.", open_failed: "Impossible d’ouvrir le projet.", }, openPath: "Ouvrir le chemin", }, branchSwitcher: { currentBranch: "Branche actuelle:{{branchName}}. Appuyez pour changer de branche.", placeholder: "Changer de branche...", searchPlaceholder: "Filtrer les branches...", empty: "Aucune branche trouvée.", title: "Changer de branche", uncommittedTitle: "Modifications non validées", uncommittedMessage: "Vous avez des modifications non validées. Les ranger avant de changer de branche?", stashAndSwitch: "Cachette et changement", failedToStash: "Échec de la sauvegarde des modifications", failedToSwitch: "Échec du changement de branche", restoreStashTitle: "Restaurer les modifications cachées?", restoreStashMessage: "Cette branche a caché les modifications d'une session précédente. Souhaitez-vous les restaurer?", restore: "Restaurer", later: "Plus tard", stashRestored: "Modifications cachées restaurées", }, agentAutocomplete: { searchingWorkspace: "Recherche dans l'espace de travail...", loadingCommands: "Chargement des commandes...", noFiles: "Aucun fichier ou répertoire trouvé", noCommands: "Aucune commande trouvée", failedToLoad: "Échec du chargement", }, loadOlderHistory: { failed: "Impossible de charger l'ancien historique", }, imageAttachmentPicker: { permissionTitle: "Autorisation requise", permissionMessage: "Veuillez autoriser l'accès à votre photothèque pour joindre des images.", errorTitle: "Erreur", failedToSelect: "Échec de la sélection de l'image", dialogTitle: "Joindre des images", dialogFilterName: "Images", }, workspaceSetup: { title: "Créer un espace de travail", errors: { failedCreateWorktree: "Échec de la création de l'arbre de travail", failedOpenProject: "Échec de l'ouverture du projet", selectModel: "Sélectionnez un modèle", hostDisconnected: "Hostn'est pas connecté", pendingRequired: "Aucune configuration d'espace de travail n'est en attente", composerStateRequired: "L'état du compositeur de configurationWorkspaceest requis", }, }, onboarding: { title: "Bienvenue surPaseo", subtitle: "Connectez votre ordinateur pour commencer", actions: { settings: "Paramètres", }, }, modelSelector: { title: "Sélectionnez le fournisseur", selectModel: "Sélectionnez le modèle", selectedModel: "Sélectionnez le modèle ({{model}})", loading: "Chargement...", loadingShort: "Chargement", loadingSelector: "Chargement du sélecteur de modèle...", error: "Erreur", defaultModel: "Défaut", favorites: "Favoris", favoriteModel: "Modèle préféré", unfavoriteModel: "Modèle défavorisé", modelCount: "{{count}} modèle", modelCountPlural: "{{count}} modèles", retry: "Réessayer", retrying: "Nouvelle tentative...", noMatches: "Aucun modèle ne correspond à votre recherche", searchPlaceholder: "Rechercher des modèles...", openProviderSettings: "Ouvrir les paramètres{{provider}}", }, providerCatalog: { title: "Ajouter un fournisseur", search: "Fournisseurs de recherche", noProviders: "Aucun fournisseur trouvé", actions: { add: "Ajouter", adding: "Ajout", installed: "Installé", cancel: "Annuler", installInstructions: "Instructions d'installation", installInstructionsFor: "Instructions d'installation{{provider}}", }, errors: { unableToInstall: "Impossible d'installer le fournisseur", }, }, providerSelection: { defaultModel: "Défaut", selectModel: "Sélectionnez le modèle", loading: "Chargement...", error: "Erreur", unavailable: "Indisponible", unknownError: "Erreur inconnue", readiness: { initialPromptRequired: "Une invite initiale est requise", noProviders: "Aucun fournisseur disponible sur l'hébergeur sélectionné", modelDefaultsLoading: "Les valeurs par défaut du modèle sont toujours en cours de chargement", noModelAvailable: "Aucun modèle n'est disponible pour le fournisseur sélectionné", workspaceDirectoryNotFound: "RépertoireWorkspaceintrouvable", hostDisconnected: "Hostn'est pas connecté", }, }, pairing: { connectionMethods: { title: "Ajouter une connexion", direct: { title: "Connexion directe", description: "Réseau local ou VPN.", }, scanQr: { title: "Scanner le codeQR", description: "Connexion relais cryptée.", }, pasteLink: { title: "Coller le lien d'association", description: "Connexion relais cryptée.", }, }, direct: { title: "Connexion directe", helper: "Saisissez l'adresse d'un serveurPaseo.", fields: { host: "Host", port: "Port", password: "Mot de passe", optional: "Facultatif", useSsl: "Utiliser SSL", connectionUri: "URI de connexion", }, advanced: { label: "Avancé", show: "Afficher avancé", hide: "Masquer avancé", }, passwordVisibility: { show: "Afficher le mot de passe", hide: "Masquer le mot de passe", }, actions: { cancel: "Annuler", connect: "Connecter", connecting: "De liaison...", }, errors: { hostRequired: "Hostest requis", invalidPort: "Le port doit être compris entre 1 et 65535", invalidConnection: "Connexion invalide", failedTitle: "La connexion a échoué", failedToConnect: "Nous n'avons pas réussi à nous connecter à{{endpoint}}.", noAdditionalDetails: "{{detail}}(aucun détail supplémentaire fourni)", timedOut: "La connexion a expiré. Vérifiez l'hôte/portet votre réseau.", refused: "Connexion rejetée. Le serveur fonctionne-t-il à cette adresse?", hostNotFound: "Hostintrouvable. Vérifiez le nom d'hôte et réessayez.", hostUnreachable: "Hostest inaccessible. Vérifiez votre réseau et votre pare-feu.", tlsError: "Erreur TLS. Les connexions directes utilisent SSL uniquement lorsqu'un terminateur TLS se trouve devant le démon.", unableToConnect: "Impossible de se connecter. Vérifiez l'hôte/portet que le démon est accessible.", details: "Détails:{{detail}}", }, }, link: { title: "Coller le lien d'association", helper: "Collez le lien d'appairage depuis votre serveur.", label: "Lien d'appariement", errors: { required: "Collez un lien d'appairage (.../#offer=...)", missingOffer: "Le lien doit inclure#offer=...", emptyOffer: "La charge utile de l'offre est vide", invalid: "Lien d'association invalide", unableToPair: "Impossible de coupler l'hôte", }, alert: { failedTitle: "Échec du couplage", }, actions: { cancel: "Annuler", pair: "Paire", pairing: "L'appariement...", }, }, scan: { title: "ScannerQR", webUnavailableTitle: "Non disponible sur le Web", webUnavailableBody: "L'analyseQRn'est pas prise en charge dans la version Web. Utilisez plutôt \"Coller le lien\".", backToSettings: "Retour aux paramètres", cameraPermissionTitle: "Autorisation de la caméra", cameraPermissionBody: "Autorisez l'accès à la caméra pour scanner le code d'appairageQRà partir de votre démon.", grantPermission: "Accorder l'autorisation", pairing: "L'appariement...", unableToPair: "Impossible de coupler l'hôte", errorTitle: "Erreur", }, device: { loadingOffer: "Chargement de l'offre d'association...", failedToLoadOffer: "Échec du chargement de l'offre d'association.", relayDisabled: "Le relais n'est pas activé. Activer le relais pour coupler un appareil.", enableTitle: "Activer le relais ?", enableDescription: "Le relais permet à cet appareil de se connecter depuis n’importe où. Le trafic de couplage est chiffré de bout en bout.", relayDocs: "Fonctionnement du relais", relayDocsAccessibility: "Lire comment fonctionne le relais Paseo", enableRelay: "Activer le relais", enablingRelay: "Activation...", notNow: "Pas maintenant", directConnectionHint: "Sans relais, connectez-vous directement via TCP, Tailscale ou un autre VPN. Aucun code QR n’est créé.", updateRequired: "Mettez à jour l’hôte pour activer le relais depuis Paseo Desktop.", unavailable: "Offre de jumelage indisponible.", hint: "Scannez ce codeQRavecPaseosur votre téléphone ou copiez le lien ci-dessous.", qrUnavailable: "CodeQRindisponible.", qrAccessibility: "Code QR de couplage", retry: "Réessayer", copy: "Copie", copied: "Copié", }, }, realtimeVoice: { actions: { mute: "Couper la voix en temps réel", unmute: "Réactiver la voix en temps réel", stop: "Arrêtez la voix en temps réel et interrompez le tour", }, }, rewind: { tooltip: "Revenez à ce message", warning: "Cette action ne peut pas être annulée", actions: { conversation: "Rembobiner la conversation", files: "Rembobiner les fichiers", both: "Rembobiner la conversation et les fichiers", }, errors: { failed: "Échec du rembobinage de l'agent", }, }, diffViewer: { empty: "Aucun changement à afficher", }, serviceUrl: { title: "Service ouvertURL", message: "Ouvrir{{url}}?", inPaseo: "DansPaseo", externalBrowser: "Navigateur externe", dontAskAgain: "Ne demande plus", }, downloads: { requestTokenFailed: "Échec de la demande du jeton de téléchargement.", hostUnavailable: "L'hôte de téléchargement n'est pas disponible.", cancelled: "Le téléchargement a été annulé.", failed: "Échec du téléchargement du fichier.", shareFile: "Partager un fichier", shareFileNamed: "Partager{{fileName}}", }, menu: { backdrop: "Toile de fond du menu", }, subagents: { detachAction: "Detacher {{label}}", detachTooltip: "Detacher le sous-agent", archiveAction: "Archiver{{label}}", archiveTooltip: "Sous-agent d'archivage", archiveFinishedAction: "Archiver les sous-agents terminés", archiveFinishedTooltip: "Archiver les terminés", }, panels: { draft: { newAgent: "Nouvel agent", creatingAgent: "Agent créateur", }, file: { directoryMissing: "Répertoire Workspace introuvable.", loading: "Chargement du fichier...", noPreview: "Aucun aperçu disponible", binaryPreviewUnavailable: "Aperçu binaire indisponible", failedToLoad: "Échec du chargement du fichier", failedToLoadPreview: "Échec du chargement de l'aperçu du fichier", editor: { fileSize: "Taille {{size}}", lines: "{{count}} lignes", editorStatus: "État de l’éditeur : {{status}}", unsavedChanges: "Modifications non enregistrées", saving: "Enregistrement...", saveFailed: "Échec de l’enregistrement", changedOnDisk: "Modifié sur le disque", vimMode: "Mode Vim {{mode}}", cursor: "Ligne {{line}}, colonne {{column}}", preview: "Aperçu", source: "Source", deletedTitle: "Fichier supprimé du disque", checkFailedTitle: "Impossible de vérifier le fichier sur le disque", preservedDescription: "La copie ouverte est conservée.", conflictDescription: "Le contenu local a été conservé. Choisissez la version à garder.", overwrite: "Écraser", reload: "Recharger", reloadTitle: "Recharger depuis le disque ?", reloadMessage: "Vos modifications locales seront perdues.", }, }, diff: { changesLabel: "Modifications", changesSubtitle: "Différences de l'arbre de travail", commitSubtitle: "Différences du commit", uncommittedSubtitle: "Modifications non validées", baseSubtitle: "Comparé à {{baseRef}}", directoryMissing: "Répertoire Workspace introuvable.", empty: "Aucune modification", loadError: "Échec du chargement des différences", capabilityMissing: "Mettez à jour l'hôte pour voir les différences des commits.", }, }, toolCallDetails: { error: "Erreur", empty: "Aucun détail supplémentaire disponible", subAgentActivity: "Activité du sous-agent", input: "Saisir", output: "Sortir", }, toolCallGroup: { editedFiles: { one: "a modifié {{count}} fichier", other: "a modifié {{count}} fichiers", }, commands: { one: "a exécuté {{count}} commande", other: "a exécuté {{count}} commandes", }, readFiles: { one: "a lu {{count}} fichier", other: "a lu {{count}} fichiers", }, searches: { one: "a effectué {{count}} recherche", other: "a effectué {{count}} recherches", }, otherTools: { one: "a utilisé {{count}} autre outil", other: "a utilisé {{count}} autres outils", }, paseoCalls: { one: "a appelé Paseo {{count}} fois", other: "a appelé Paseo {{count}} fois", }, and: "et", }, renameModal: { rename: "Rebaptiser", saving: "Sauvegarde...", }, sidebarCallout: { dismiss: "Rejeter", }, contextWindow: { title: "Fenêtre contextuelle", used: "{{percentage}}% utilisé", tokens: "Jetons{{used}}/{{max}}", sessionCost: "Coût de la séance{{cost}}", accessibility: "Fenêtre contextuelle{{percentage}}% utilisé", }, review: { comment: { add: "Ajouter un commentaire", edit: "Modifier le commentaire de l'avis", delete: "Supprimer le commentaire de l'avis", label: "Revoir le commentaire", placeholder: "Laisser un commentaire", cancel: "Annuler", cancelAccessibility: "Annuler le commentaire de révision", save: "Commentaire", saveAccessibility: "Enregistrer le commentaire de l'avis", }, }, settings: { title: "Paramètres", loading: "Chargement des paramètres...", groups: { app: "Application", host: "Host", }, hostPicker: { switchHost: "Changer d'hôte", local: "Locale", }, backToWorkspace: "Dos", addHost: "Ajouter un hôte", enableBuiltInDaemon: "Activer le démon intégré", projects: "Projets", projectList: { hostLoadFailed: "Impossible de charger les projets depuis l'hôte{{hostName}}:{{message}}", editProject: "Modifier{{projectName}}", }, groupInfo: "À propos de{{title}}", sections: { general: "Général", appearance: "Apparence", editor: "Éditeur", shortcuts: "Raccourcis", integrations: "Intégrations", permissions: "Autorisations", diagnostics: "Diagnostic", about: "À propos", }, editor: { title: "Éditeur", vimKeybindings: "Raccourcis Vim", vimHint: "S’applique aux fichiers source sur le web et le bureau.", }, hostSections: { projects: "Projets", connections: "Relations", agents: "Agents", workspaces: "Workspaces", providers: "Fournisseurs", usage: "Utilisation", terminals: "Terminals", host: "Aperçu", }, general: { title: "Général", browserData: { title: "Données du navigateur", siteData: "Cookies et données des sites", description: "Les onglets du navigateur partagent les connexions et les données des sites dans Paseo.", clear: "Effacer les données du navigateur", clearing: "Effacement...", confirmTitle: "Effacer les données du navigateur ?", confirmMessage: "Vous serez déconnecté des sites et les onglets ouverts seront rechargés.", success: "Données du navigateur effacées.", error: "Impossible d'effacer les données du navigateur.", }, defaultSend: { label: "Envoi par défaut", descriptions: { interrupt: "Lorsque l'agent est en cours d'exécution, Entrée interrompt. Commande/Ctrl+Entrée met en file d'attente.", queue: "Lorsque l'agent est en cours d'exécution, Entrée met en file d'attente. Commande/Ctrl+Entrée envoie.", }, options: { interrupt: "Interrompre", queue: "File d'attente", }, }, serviceUrls: { label: "URL de services", description: "Où ouvrir les URL à partir de scripts en cours d'exécution", options: { ask: "Demander", inApp: "DansPaseo", external: "Navigateur externe", }, }, terminalScrollback: { label: "DéfilementTerminal", description: "Lignes conservées dans le tampon du terminal intégré", accessibilityLabel: "Lignes de défilementTerminal", }, autoExpandReasoning: { label: "Toujours afficher le raisonnement", description: "Afficher le raisonnement de l'agent entièrement développé par défaut", }, toolCallDetail: { label: "Affichage des appels d’outils", description: "Comment les appels d’outils apparaissent dans la chronologie", accessibilityLabel: "Sélectionner l’affichage des appels d’outils ({{value}})", options: { overview: "Résumé", detailed: "Détails complets", }, }, language: { label: "Langue", description: "Langue de l'application", options: { system: "Système", ar: "العربية", en: "English", es: "Español", fr: "Français", ja: "日本語", ptBR: "Português brasileiro", ru: "Русский", zhCN: "中文", }, }, }, diagnostics: { title: "Diagnostic", testAudio: "Tester le son", playTest: "Jouer à l'essai", playing: "Jouant...", playbackFailed: "Échec de la lecture:{{message}}", app: { title: "App diagnostic", rowTitle: "App diagnostic", rowHint: "Collect connection, daemon, provider, desktop, and log details", run: "Run", running: "Running diagnostic...", copyLabel: "diagnostic", copyAccessibility: "Copy diagnostic", copyFailed: "Failed to copy diagnostic", refreshAccessibility: "Refresh diagnostic", refreshingAccessibility: "Refreshing diagnostic", progress: { client: "Client", desktop: "Desktop", }, }, }, about: { title: "À propos", appVersion: "Version de l'application", thisDevice: "Cet appareil", connectedHosts: "Hôtes connectés", offline: "Hors ligne", versionDiffers: "La version diffère de cet appareil", releaseChannel: { label: "Canal de sortie", description: "Passez àBetapour obtenir des mises à jour plus tôt et contribuer à les façonner", stable: "Stable", beta: "Beta", }, updates: { label: "Mises à jour de l'application", readyToInstall: "Prêt à installer:{{version}}", installTitle: "Installer la mise à jour du bureau", installMessage: "Cela met à jourPaseosur cet ordinateur", installConfirm: "Installer la mise à jour", update: "Mise à jour", updateTo: "Mise à jour vers{{version}}", installing: "Installation...", check: "Vérifier", checking: "Vérification...", alertTitle: "Erreur", alertMessage: "Impossible d'ouvrir la boîte de dialogue de confirmation de mise à jour.", }, }, appearance: { theme: { title: "Thème", accessibilityLabel: "Thème:{{value}}", options: { light: "Lumière", dark: "Sombre", zinc: "Zinc", midnight: "Minuit", claude: "Claude", ghostty: "Fantôme", auto: "Système", }, }, detailLevel: { title: "Niveau de détail", }, chatOutline: { title: "Plan de la discussion", description: "Afficher un plan pour passer d’une requête à l’autre", }, fonts: { title: "Polices", systemDefault: "Valeur par défaut du système", interfaceFont: "Police d'interface", interfaceFontHint: "Utilisé dans toute l'application. Laisser vide pour la valeur par défaut du système", interfaceFontAccessibility: "Famille de polices d'interface", interfaceSize: "Taille de l'interface", interfaceSizeAccessibility: "Taille de la police de l'interface", codeFont: "Police de code", codeFontHint: "Utilisé dans le code, les différences et la sortie du terminal. Laisser vide pour la valeur par défaut du système", codeFontAccessibility: "Famille de polices de code", codeSize: "Taille du code", codeSizeAccessibility: "Taille de la police du code", }, syntax: { title: "Syntaxe", highlightTheme: "Thème de surbrillance", highlightThemeHint: "Couleurs du code, indépendamment du thème de l'application", highlightThemeAccessibility: "Thème phare:{{value}}", previewAccessibility: "Aperçu en direct du thème de syntaxe et de la police de code", }, }, shortcuts: { dialogTitle: "Raccourcis", searchPlaceholder: "Rechercher des raccourcis", unavailableOnMobile: "Les raccourcis clavier ne sont disponibles que sur le bureau", capturePrompt: "Appuyez sur le raccourci...", actions: { done: "Fait", cancel: "Annuler", rebind: "Relier", reset: "Réinitialiser", resetAll: "Tout réinitialiser", }, sections: { navigation: "Navigation", tabsPanes: "Onglets et volets", projects: "Projets", panels: "Panneaux", agentInput: "EntréeAgent", }, help: { openProject: "Projet ouvert", newWorkspace: "Nouvel espace de travail", newWorktree: "Nouvel arbre de travail", archiveWorkspace: "Archiver l’espace de travail", newTab: "Nouvel onglet", closeCurrentTab: "Fermer l'onglet actuel", jumpToWorkspace: "Accéder à l'espace de travail", jumpToTab: "Aller à l'onglet", previousWorkspace: "Espace de travail précédent", nextWorkspace: "Espace de travail suivant", previousTab: "Onglet précédent", nextTab: "Onglet suivant", splitPaneRight: "Volet divisé à droite", splitPaneDown: "Diviser le volet vers le bas", focusPaneLeft: "Volet de mise au point à gauche", focusPaneRight: "Volet de mise au point à droite", focusPaneUp: "Volet de mise au point vers le haut", focusPaneDown: "Volet de mise au point vers le bas", moveTabLeft: "Déplacer l'onglet vers la gauche", moveTabRight: "Déplacer l'onglet vers la droite", moveTabUp: "Déplacer l'onglet vers le haut", moveTabDown: "Déplacer l'onglet vers le bas", closePane: "Fermer le volet", newTerminal: "Nouvelle borne", toggleCommandCenter: "Basculer le centre de commande", showKeyboardShortcuts: "Afficher les raccourcis clavier", toggleLeftSidebar: "Basculer la barre latérale gauche", toggleRightSidebar: "Basculer la barre latérale droite", toggleBothSidebars: "Basculer les deux barres latérales", toggleSettings: "Basculer les paramètres", toggleFocusMode: "Basculer le mode de mise au point", cycleTheme: "Thème du cycle", focusMessageInput: "Saisie du message de focus", cycleAgentMode: "Parcourir les modes de l'agent", toggleVoiceMode: "Changer le mode vocal", startStopDictation: "Démarrer la dictée/stop", interruptAgent: "Agent d'interruption", sendMessage: "Envoyer un message", queueMessage: "Message de file d'attente", muteUnmuteVoiceMode: "Mode vocal/unmutemuet", switchProject: "Changer de projet", }, helpNotes: { showKeyboardShortcuts: "Disponible lorsque le focus n’est pas dans un champ de texte ou un terminal.", }, }, integrations: { title: "Intégrations", docs: { cli: "DocumentsCLI", skills: "Documents de compétences", openCli: "Ouvrir la documentationCLI", openSkills: "Documentation des compétences ouvertes", }, commandLine: { title: "Ligne de commande", description: "Agents de contrôle et de script depuis votre terminal", }, skills: { title: "Compétences en orchestration", description: "Apprenez à vos agents à orchestrer via leCLI", updateAvailable: "Mise à jour disponible", updateTitle: "Mettre à jour les compétencesPaseo?", updateFallback: "Synchronisez les compétences regroupées sur votre machine.", uninstallTitle: "Désinstaller les compétencesPaseo?", uninstallMessage: "Supprime toutes les compétences d'orchestrationPaseode ~/.agents, ~/.claude, ~/.codex.", choose: "Choisir les compétences", chooseAll: "Toutes les compétences", chooseAllHint: "Gardez installées toutes les compétences fournies, y compris celles ajoutées plus tard.", chooseList: "Compétences fournies", chooseEmpty: "Cette version ne fournit aucune compétence.", removeTitle: "Supprimer les compétences décochées ?", removeMessage: "{{skills}} seront supprimées de ~/.agents, ~/.claude et ~/.codex. Tout ce que vous avez ajouté dans ces dossiers de compétences est également supprimé.", saveFailed: "Impossible d'enregistrer votre sélection de compétences.", }, actions: { install: "Installer", installing: "Installation...", installed: "Installé", update: "Mise à jour", working: "Fonctionnement...", remove: "Supprimer", uninstall: "Désinstaller", save: "Enregistrer", saving: "Enregistrement...", }, operations: { add: "Ajouter une compétence", update: "Mettre à jour la compétence", delete: "Supprimer la compétence", }, }, permissions: { title: "Autorisations", notifications: "Notifications", microphone: "Microphone", refresh: "Rafraîchir", refreshing: "Rafraîchissant...", refreshAccessibility: "Actualiser les autorisations du bureau", test: "Test", actions: { granted: "Accordé", request: "Demande", requesting: "Demander...", busySuffix: "{{label}}...", }, }, host: { appearance: { title: "Apparence", name: { label: "Nom", }, color: { label: "Couleur", accessibilityLabel: "Couleur, {{value}}", options: { none: "Par défaut", violet: "Violet", sky: "Ciel", emerald: "Émeraude", orange: "Orange", pink: "Rose", indigo: "Indigo", teal: "Sarcelle", red: "Rouge", amber: "Ambre", blue: "Bleu", }, }, badge: { label: "Badge de la barre latérale", accessibilityLabel: "Badge de la barre latérale, {{value}}", options: { name: "Nom", icon: "Icône seule", hidden: "Masqué", }, }, preview: { workspaceName: "my-workspace", }, }, notFound: "Hostintrouvable", badges: { relay: "Relais", local: "Locale", }, connections: { title: "Relations", removeTitle: "Supprimer la connexion", removeMessage: "Supprimer{{name}}? Cela ne peut pas être annulé.", removeAction: "Retirer", removeErrorTitle: "Erreur", removeErrorMessage: "Impossible de supprimer la connexion", timeout: "Temps mort", }, pairDevices: { title: "Associer des appareils", rowTitle: "Associer un appareil", rowHint: "Scannez un codeQRou copiez un lien pour connecter votre téléphone à cet hôte", }, orchestration: { title: "Orchestration", unavailable: "Connectez-vous à cet hôte pour gérer l'orchestration", enableTools: { title: "Activer les outilsPaseo", hint: "Les agents pourront gérer les arbres de travail, les agents et les horaires", accessibilityLabel: "Injecter les outilsPaseo", }, systemPrompt: { title: "Invite système", hint: "Ajoute une invite système à tous les agents", sheetTitle: "Ajouter une invite système", accessibilityLabel: "Ajouter une invite système", placeholder: "Gardez toujours des réponses concises.", edit: "Modifier", reset: "Réinitialiser", save: "Sauvegarder", saving: "Sauvegarde...", }, }, agents: { unavailable: "Connect to this host to manage agents", }, workspaces: { unavailable: "Connect to this host to manage workspaces", }, terminalProfiles: { unavailable: "Connect to this host to manage terminal profiles", sectionTitle: "Terminal profiles", editProfile: "Edit profile", addProfileTitle: "Add terminal profile", editProfileTitle: "Edit terminal profile", namePlaceholder: "Claude Code", commandPlaceholder: "claude", argsPlaceholder: "--dangerously-skip-permissions", nameLabel: "Name", commandLabel: "Command", argsLabel: "Arguments", nameRequired: "Name is required", commandRequired: "Command is required", argsHint: "Space-separated arguments passed to the command", saving: "Saving...", remove: "Remove", removeConfirmTitle: "Remove profile?", removeConfirmMessage: 'Remove "{{name}}"?', moveUp: "Move up", moveDown: "Move down", save: "Save", emptyState: "No profiles yet. Add one to launch terminals with a specific command.", }, daemon: { rename: { editLabel: "Modifier l'étiquette", title: "Renommer l'hôte", placeholder: "MonHost", submit: "Renommer", }, restart: { title: "Redémarrer le démon", hint: "Redémarre le processus démon. L'application se reconnectera automatiquement", confirm: "Redémarrer", confirmTitle: "Redémarrer{{name}}", confirmMessage: "Cela redémarrera le démon. Les agents qui s'y exécutent continueront à fonctionner; l'application se reconnectera automatiquement.", restarting: "Redémarrage...", unableToReconnectTitle: "Impossible de se reconnecter", unableToReconnectMessage: "{{name}}n'est pas revenu en ligne. Veuillez vérifier qu'il a redémarré.", unavailableTitle: "Hostindisponible", unavailableMessage: "Cet hôte n'est pas connecté. Attendez qu'il soit en ligne avant de redémarrer.", offlineTitle: "Hosthors ligne", offlineMessage: "Cet hôte est hors ligne.Paseose reconnecte automatiquement: attendez qu'il soit de nouveau en ligne avant de redémarrer.", requestFailedTitle: "Erreur", requestFailedMessage: "Échec de l'envoi de la demande de redémarrage.Paseose reconnecte automatiquement - réessayez une fois que l'hôte apparaît comme en ligne.", dialogFailedMessage: "Impossible d'ouvrir la boîte de dialogue de confirmation de redémarrage.", }, update: { desktopManagedHint: "Ce daemon est géré par Paseo Desktop. Mettez à jour Paseo Desktop sur l’hôte.", title: "Update daemon", hint: "Update the daemon to the latest version and restart it", confirm: "Update", confirmTitle: "Update {{name}}", confirmMessage: "This will update the daemon to the latest version and restart it. Running agents will be briefly interrupted.", updating: "Updating...", phaseStarting: "Preparing update...", phaseDownloading: "Downloading packages...", phaseInstalling: "Installing...", phaseComplete: "Update complete, restarting...", unableToReconnectTitle: "Unable to reconnect", unableToReconnectMessage: "{{name}} did not come back online after updating. Please verify the daemon restarted.", unavailableTitle: "Host unavailable", unavailableMessage: "This host is not connected. Wait for it to come online before updating.", offlineTitle: "Host offline", offlineMessage: "This host is offline. Wait until it is back online before updating.", requestFailedTitle: "Update failed", requestFailedMessage: "Failed to update the daemon: {{error}}", dialogFailedMessage: "Unable to open the update confirmation dialog.", }, dangerZone: "Zone dangereuse", remove: { title: "Supprimer l'hôte", localTitle: "Remove localhost connection", hint: "Supprime cet hôte et ses connexions enregistrées de cet appareil", localHint: "Removes localhost from this device and stops the built-in daemon", localConfirmTitle: "Remove localhost connection and stop daemon?", confirmMessage: "Supprimer{{name}}? Cela supprimera ses connexions enregistrées.", localConfirmMessage: "This will remove the localhost connection, turn off built-in daemon management, and stop the managed daemon. Remote hosts remain connected.", errorTitle: "Erreur", errorMessage: "Impossible de supprimer l'hôte", localErrorMessage: "Unable to remove localhost connection", }, }, }, providers: { title: "Fournisseurs", addProvider: "Ajouter un fournisseur", providerDetails: "Détails du fournisseur{{name}}", enableProvider: "Activer{{name}}", unavailable: "Connectez-vous à cet hôte pour voir les fournisseurs", loading: "Chargement...", addErrorTitle: "Unable to add provider", updateErrorTitle: "Impossible de mettre à jour le fournisseur", actions: { menu: "{{name}} actions", remove: "Remove provider", removing: "Removing...", }, remove: { confirmTitle: "Remove {{name}}?", confirmMessage: "This deletes the provider entry from config.json. It cannot be undone.", confirm: "Remove", errorTitle: "Unable to remove provider", }, statuses: { disabled: "Désactivé", loading: "Chargement", error: "Erreur", available: "Disponible", notInstalled: "Non installé", }, models: { one: "1 modèle", many: "{{count}} modèles", addModel: "Ajouter un modèle", addCustomTitle: "Ajouter un modèle personnalisé", modelId: "ModèleID", modelIdPlaceholder: "par ex. ouvert/gpt-5", add: "Ajouter", adding: "Ajout...", failedToSave: "Échec de l'enregistrement du modèle", removeModel: "Supprimer{{id}}", searchPlaceholder: "Rechercher des modèles", loading: "Chargement des modèles...", retry: "Réessayer", retrying: "Nouvelle tentative...", noSearchMatches: "Aucun modèle ne correspond à votre recherche", noneDetected: "Aucun modèle détecté", discovered: "Découvert", custom: "Modèles personnalisés", updated: "{{time}}mis à jour", }, diagnostic: { title: "Diagnostique", button: "Diagnostique", refresh: "Rafraîchir", refreshing: "Rafraîchissant...", copyLabel: "diagnostic", copyAccessibility: "Copier le diagnostic", copyFailed: "Échec de la copie du diagnostic", refreshAccessibility: "Actualiser le diagnostic", refreshingAccessibility: "Diagnostic rafraîchissant", running: "Exécution du diagnostic...", none: "Aucun diagnostic disponible", failedToFetch: "Échec de la récupération du diagnostic", unknownError: "Erreur inconnue", }, }, project: { noEditableTarget: "Ce projet n'est pas modifiable sur cet hôte.", backToProjects: "Retour aux projets", edit: { title: "Modifier le projet", name: "Nom", nameLabel: "Nom du projet", icon: "Icône", chooseImage: "Choisir une image", useAutomatic: "Utiliser l'automatique", imageUrl: "URL d'image ou de site", save: "Enregistrer", savedToast: "Projet mis à jour", }, readFailures: { invalidTitle: "paseo.json n'a pas pu être analysé", invalidDescription: "Corrigez le fichier sur le disque, puis rechargez.", missingTitle: "Cet hôte n'a pas ce projet", missingSingleHost: "L'hôte sélectionné n'a aucune trace de ce projet.", transportTitle: "Impossible de charger paseo.json", transportFallback: "L'hôte n'a pas répondu.", failedTitle: "Impossible de charger paseo.json", failedDescription: "Rechargez pour réessayer.", }, worktree: { title: "Crochets de cycle de vie Worktree", info: "Commandes exécutées lorsqu'un arbre de travail est créé ou supprimé pour ce projet", docs: "Documents", docsTooltip: "Voir la documentation pour plus de détails et les variables d'environnement disponibles pour ces commandes", setup: "Installation", setupAccessibility: "Commandes de configuration de Worktree", teardown: "Démolir", teardownAccessibility: "Commandes de démontage de Worktree", }, scripts: { title: "Scripts", info: "Services de longue durée et commandes ponctuelles que vous pouvez lancer à partir de n'importe quel agent de ce projet", empty: "Pas encore de scripts.", untitled: "Script sans titre", port: "port{{port}}", menuAccessibility: "Ouvrir le menu des scripts", removeTitle: "Supprimer le script?", removeMessage: "Supprimer{{name}}?", removeFallbackName: "ce scénario", name: "Nom", command: "Commande", nameAccessibility: "Nom du script", commandAccessibility: "Commande de script", nameRequired: "Le nom est requis", commandRequired: "La commande est requise", newScript: "Nouveau scénario", editScript: "Modifier{{name}}", runAsService: "Exécuter en tant que service", serviceHint: "Paseosupervise le processus et attribue un port via $PASEO_PORT", actions: { add: "Ajouter un script", edit: "Modifier", remove: "Retirer", }, }, metadata: { title: "Génération de métadonnées", info: "Instructions spécifiques au projet injectées dans les invites de l'IA quePaseoutilise pour générer des métadonnées: utilisez-les pour appliquer les conventions de votre équipe telles que la dénomination des branches, le style de validation ou le formatPR.", branchName: "Noms des succursales", branchNamePlaceholder: "Préfixez les branches avec feat/ ou fix/, mb/ pour les branches personnelles", commitMessage: "Valider les messages", commitMessagePlaceholder: "Utiliser des commits conventionnels avec une portée", pullRequest: "Demandes de tirage", pullRequestPlaceholder: "Commencez avec un résumé d'un paragraphe, incluez une section sur le plan de test", }, writeFailures: { staleTitle: "Configuration modifiée sur le disque", staleDescription: "Rechargez pour récupérer le dernier paseo.json avant de sauvegarder.", failedTitle: "Impossible d'enregistrer paseo.json", failedDescription: "Réessayez ou rechargez la dernière version à partir du disque.", }, actions: { reload: "Recharger", tryAgain: "Essayer à nouveau", save: "Sauvegarder", saved: "Projet enregistré", saving: "Sauvegarde...", cancel: "Annuler", }, }, }, };