@ai-development-environment/server 0.0.75 → 0.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/standalone/.next/BUILD_ID +1 -1
- package/standalone/.next/build-manifest.json +3 -3
- package/standalone/.next/prerender-manifest.json +3 -3
- package/standalone/.next/server/app/[locale]/settings/page_client-reference-manifest.js +1 -1
- package/standalone/.next/server/app/_global-error.html +1 -1
- package/standalone/.next/server/app/_global-error.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.html +1 -1
- package/standalone/.next/server/app/_not-found.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/standalone/.next/server/chunks/ssr/messages_de_json_[json]_cjs_1uig1ud._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_en_json_[json]_cjs_206072-._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_es_json_[json]_cjs_082yukd._.js +1 -1
- package/standalone/.next/server/chunks/ssr/messages_fr_json_[json]_cjs_0j6-w0i._.js +1 -1
- package/standalone/.next/server/chunks/ssr/src_components_settings-page_tsx_06dxqc7._.js +1 -1
- package/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/standalone/.next/server/pages/404.html +1 -1
- package/standalone/.next/server/pages/500.html +1 -1
- package/standalone/.next/server/server-reference-manifest.js +1 -1
- package/standalone/.next/server/server-reference-manifest.json +1 -1
- package/standalone/.next/static/chunks/2jvwh8l-4r8jn.js +37 -0
- package/standalone/.next/static/chunks/3r4fi297tsw1d.js +0 -37
- /package/standalone/.next/static/{IdLHkgVgnALInrGzq6zeW → Aei0gFCWoltbmK7Sdf4sn}/_buildManifest.js +0 -0
- /package/standalone/.next/static/{IdLHkgVgnALInrGzq6zeW → Aei0gFCWoltbmK7Sdf4sn}/_clientMiddlewareManifest.js +0 -0
- /package/standalone/.next/static/{IdLHkgVgnALInrGzq6zeW → Aei0gFCWoltbmK7Sdf4sn}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[800675,(a,b,c)=>{b.exports=JSON.parse('{"metadata":{"title":"AI Development Environment","description":"Un environnement de développement axé sur l’intelligence artificielle."},"common":{"cancel":"Annuler","continue":"Continuer","cannotBeUndone":"Cette action est irréversible."},"shell":{"productName":"AI Development Environment","dashboard":"Tableau de bord","ai":"IA","navigation":"Navigation","breadcrumbLabel":"Fil d’Ariane","navigationDescription":"Navigation principale d’AI Development Environment.","actionCenter":"Centre d’actions","notifications":"Notifications","notificationsDescription":"Mises à jour et alertes de notification.","showNavigation":"Afficher la navigation","hideNavigation":"Masquer la navigation","closeNavigation":"Fermer la navigation","showNotifications":"Afficher les notifications","hideNotifications":"Masquer les notifications","closeNotifications":"Fermer les notifications","codebases":"Bases de code","worktrees":"Arbres de travail","buildData":"Données de build","builds":"Builds","workflows":"Workflows","commands":"Commandes","provisioningProfiles":"Profils de provisionnement","devices":"Appareils","pushNotifications":"Notifications push","agents":"Agents","usage":"Utilisation","github":"GitHub","pullRequests":"Demandes de tirage","actions":"Actions","webhooks":"Webhooks","comments":"Commentaires","actionsCache":"Cache des Actions","jira":"Jira","tickets":"Tickets","cache":"Cache","system":"Système","polling":"Interrogation","skills":"Compétences","tools":"Outils","debugging":"Débogage","consoleLogs":"Journaux de console","analyticsEvents":"Événements analytiques","unifiedEvents":"Vue unifiée","plans":"Plans","sessions":"Sessions","drafts":"Brouillons","credentials":"Identifiants","settings":"Paramètres","costs":"Coûts","newWorkflow":"Nouveau workflow","newCommand":"Nouvelle commande","newRun":"Nouvelle exécution","enrollDevice":"Inscrire un appareil","skillGroups":"Groupes de compétences","coverage":"Couverture","edit":"Modifier","enroll":"Inscrire","entries":"Entrées","groups":"Groupes","new":"Nouveau","repositories":"Dépôts","runs":"Exécutions","sync":"Synchronisation","changes":"Modifications"},"globalSearch":{"title":"Rechercher dans l’application","description":"Recherchez des pages, des ressources de développement et l’activité récente.","open":"Ouvrir la recherche globale","button":"Rechercher","placeholder":"Rechercher pages, tickets, branches, builds…","loading":"Recherche…","error":"Impossible de rechercher les ressources enregistrées. Les raccourcis de page restent disponibles.","empty":"Aucun résultat trouvé.","noRecents":"Les destinations sélectionnées apparaîtront ici pour un accès rapide.","recentBuilds":"Builds récents","recentWorkflowRuns":"Exécutions récentes de workflows","groups":{"recent":"Récents","PAGES":"Pages","WORKTREES":"Worktrees","TICKETS":"Tickets","PULL_REQUESTS":"Pull requests","REPOSITORIES":"Dépôts","CODEBASES":"Bases de code","WORKFLOWS":"Workflows","GITHUB_ACTIONS":"Actions GitHub","BUILDS":"Builds","AGENTS_JOBS":"Agents et tâches","PLANS_SESSIONS":"Plans et sessions","COMMANDS_RUNS":"Commandes et exécutions","SKILLS":"Compétences","DEVICES_PROFILES":"Appareils et profils"}},"actionCenter":{"title":"Centre d’actions","description":"Travail en cours, décisions, échecs et builds prêts à être exécutés.","refresh":"Actualiser le centre d’actions","totalCount":"{count, plural, one {# élément} other {# éléments}}","attentionCount":"{count, plural, one {# nécessite une attention} other {# nécessitent une attention}}","activeCount":"{count, plural, one {# actif} other {# actifs}}","emptyTitle":"Aucune action requise","emptyDescription":"Le travail actif et les nouvelles décisions apparaîtront ici automatiquement.","needsAttention":"Nécessite une attention","active":"Actif","noAttention":"Aucun élément ne nécessite d’attention actuellement.","noActive":"Aucun travail n’est actif actuellement.","loadMore":"Charger plus","miniLabel":"Centre d’actions compact","miniEmpty":"Aucune action requise.","kinds":{"PLAN":"Plan","SESSION":"Session","BUILD":"Build","WORKFLOW":"Workflow"},"reasons":{"QUESTION":"Réponse requise","BLOCKED":"Bloqué","FAILED":"Échec","UNRUN_BUILD":"Prêt à exécuter","ACTIVE":"Actif"},"acknowledge":"Acquitter","acknowledgeNamed":"Acquitter {name}","questionFrom":"Question de {source}","customAnswerFor":"Réponse personnalisée pour {question}","customAnswer":"Réponse personnalisée","submitAnswer":"Envoyer la réponse"},"workflows":{"title":"Workflows","descriptionLong":"Concevez, publiez et surveillez des automatisations de développement durables.","workflowsTab":"Workflows","allRuns":"Toutes les exécutions","newWorkflow":"Nouveau workflow","search":"Rechercher des workflows et exécutions","refresh":"Actualiser","import":"Importer","export":"Exporter","duplicate":"Dupliquer","actions":"Actions","edit":"Modifier","archive":"Archiver","enable":"Activer","enabled":"Activé","disabled":"Désactivé","pauseDefinition":"Suspendre le workflow","run":"Exécuter","workflow":"Workflow","status":"État","trigger":"Déclencheur","generation":"Génération","started":"Démarré","queued":"En attente","worktreeQueue":"File de l’arbre de travail","workflowQueue":"File d’attente","worktreeQueueDescription":"Ordre d’admission combiné des workflows, plans et sessions pour cet arbre. Les files de plans et de sessions peuvent avancer séparément jusqu’à ce qu’un workflow exclusif arrive en tête.","workflowQueueDescription":"Exécutions de workflow en attente et exécutions d’IA lancées par ce workflow. Les positions sont relatives à tous les travaux en attente de chaque arbre.","runQueueDescription":"Ordre d’admission actuel pour l’arbre de cette exécution. Cette exécution de workflow est mise en évidence dans la liste.","queueEmpty":"La file est vide","queueEmptyDescription":"Un nouveau travail peut démarrer sans attendre derrière une autre exécution en file.","queuePosition":"Position","queueItem":"Exécution","queueState":"État","queueWorktree":"Arbre de travail","queuedAt":"Mis en file","exclusive":"Exclusif","currentRun":"Exécution actuelle","empty":"Aucun workflow ne correspond à cette vue.","noRuns":"Aucune exécution de workflow.","noDescription":"Aucune description","versionCount":"{count, plural, one {# version} other {# versions}}","runCount":"{count, plural, one {# exécution} other {# exécutions}}","editor":"Éditeur de workflow","editorDescription":"Faites glisser les étapes, reliez les poignées typées, puis validez et publiez.","saveDraft":"Enregistrer le brouillon","saved":"Brouillon enregistré.","publish":"Publier","published":"Version immuable du workflow publiée.","saveBeforePublish":"Enregistrez le workflow avant de le publier.","validationPassed":"Validation réussie.","validationFailed":"La validation a détecté des problèmes à corriger.","invalidImport":"Le fichier importé n’est pas une définition de workflow.","importLoaded":"Définition importée chargée comme brouillon.","workflowSettings":"Paramètres du workflow","settings":"Paramètres","lockToFit":"Verrouiller sur la vue","unlockView":"Déverrouiller la vue","showSessionData":"Afficher les données de session","hideSessionData":"Masquer les données de session","lockSteps":"Figer les étapes","unlockSteps":"Déverrouiller les étapes","name":"Nom","description":"Description","overlapPolicy":"Politique de chevauchement","maxConcurrentRuns":"Exécutions simultanées maximales","exclusiveWorktree":"Réserver l’arbre de travail à ce workflow","exclusiveWorktreeHelp":"L’exécution attend la fin des travaux antérieurs, puis met en file les autres workflows, plans et sessions de cet arbre jusqu’à sa fin. Ses propres étapes continuent normalement.","completionNotifications":"Notifier lorsque ce workflow se termine avec succès","completionNotificationsHelp":"Désactivez cette option pour supprimer les notifications de réussite. Les notifications d’échec et d’attention restent activées.","connectorLayout":"Connecteurs d\'étape","connectorLayouts":{"SIDES":"Sur les côtés","TOP_BOTTOM":"En haut et en bas"},"displayLayout":"Disposition de l’affichage","displayLayouts":{"REGULAR":"Normale","BASIC":"Simple"},"displayLayoutHelp":{"REGULAR":"Les vues en lecture seule utilisent les positions définies sur le canevas.","BASIC":"Les vues en lecture seule alignent automatiquement les étapes selon la largeur disponible. Les positions définies restent inchangées."},"previewBasicLayout":"Aperçu de la disposition simple","exitBasicPreview":"Quitter l’aperçu","validate":"Valider","steps":"Étapes","outline":"Plan","viewOutline":"Afficher le plan","viewPalette":"Afficher la palette","searchSteps":"Rechercher des étapes","triggers":"Déclencheurs","mutates":"Modifie","diagnostics":"Diagnostics de validation","configurationJson":"Configuration (JSON)","applyConfiguration":"Appliquer la configuration","requiredPaths":"Chemins requis supplémentaires","providedPaths":"Chemins fournis supplémentaires","addsToSession":"Ajoute aux données de session","seedsSession":"Initialise les données de session","addsToSessionEmpty":"Cette étape n\'ajoute aucune donnée de session.","maxAttempts":"Tentatives maximales","failurePolicy":"Politique d’échec","idempotencyWarning":"Cette étape modifie un état externe. Configurez l’idempotence et ne relancez jamais aveuglément un résultat incertain.","duplicateNode":"Dupliquer l’étape","deleteNode":"Supprimer le nœud","deleteConnection":"Supprimer la connexion","configuration":"Configuration","notSet":"Non défini","noConfiguration":"Aucune configuration","noRequiredPaths":"Cette étape ne nécessite aucun chemin de session.","retryStrategy":"Stratégie de nouvelle tentative","retryStrategies":{"FIXED":"Délai fixe","EXPONENTIAL":"Délai exponentiel"},"retryDelay":"Délai avant nouvelle tentative","seconds":"{count, plural, one {# seconde} other {# secondes}}","advancedJson":"Avancé (JSON brut)","advancedJsonHelp":"Modifiez en JSON brut les champs sans contrôle de formulaire.","extraKeys":"{count, plural, one {# clé supplémentaire} other {# clés supplémentaires}}","configMustBeObject":"La configuration doit être un objet JSON.","selectPlaceholder":"Sélectionnez une option","searchPlaceholder":"Rechercher","noOptions":"Aucun résultat","addRow":"Ajouter","removeRow":"Supprimer","recordKeyPlaceholder":"Clé","recordValuePlaceholder":"Valeur","conditionMatchMode":"Correspondance","conditionMatchAll":"Toutes sont vraies","conditionMatchAny":"Au moins une est vraie","conditionField":"Valeur de session","conditionOperator":"Comparaison","conditionValue":"Valeur comparée","conditionValuePlaceholder":"Valeur","addCondition":"Ajouter une comparaison","conditionEmpty":"Aucune comparaison. Ajoutez-en une pour choisir la branche exécutée.","conditionHelp":"La sortie « true » s’exécute en cas de correspondance, sinon c’est la sortie « false ». Les nombres et true/false sont comparés selon leur type ; mettez une valeur entre guillemets pour la comparer comme du texte.","conditionAdvanced":"Cette condition imbrique des groupes que l’éditeur ne peut pas afficher. Modifiez-la en JSON.","conditionOperators":{"EQ":"est égal à","NE":"est différent de","CONTAINS":"contient","NOT_CONTAINS":"ne contient pas","MATCHES":"correspond à la regex","NOT_MATCHES":"ne correspond pas à la regex","GT":"est supérieur à","GTE":"est au moins","LT":"est inférieur à","LTE":"est au plus","EXISTS":"est défini","NOT_EXISTS":"n’est pas défini"},"choiceOptionLabel":"Libellé du bouton","choiceOptionDescription":"Description (facultatif)","addChoiceOption":"Ajouter un bouton","choiceOptionsEmpty":"Aucun bouton. Ajoutez les options proposées par cette étape.","choiceOptionsHelp":"Ces options deviennent les boutons affichés pendant que l’exécution attend une réponse.","choiceOptionsAdvanced":"Ces options ne sont pas de simples entrées libellé/description. Modifiez-les en JSON.","valueModeToggle":"Changer la source de la valeur","valueModeLiteral":"Utiliser une valeur fixe","valueModeSession":"Lier aux données de session","sessionBindingLabel":"Chemin de session","sessionPathPlaceholder":"p. ex. ticket.key","sessionBindingHelp":"Lit cette valeur dans les données de session à l’exécution.","interpolationHelp":"Utilisez {token} pour insérer des données de session à l’exécution, par exemple {example}.","modelProvider":"Fournisseur","modelModel":"Modèle","modelEffort":"Effort","overlap":{"QUEUE":"Mettre chaque événement en file","CONCURRENT":"Exécuter simultanément","COALESCE_LATEST":"Conserver le dernier événement en attente"},"overlapPolicies":{"QUEUE":"File d\'attente","CONCURRENT":"Simultané","COALESCE_LATEST":"Dernier uniquement"},"failure":{"FAIL":"Faire échouer le workflow","CONTINUE":"Continuer"},"statuses":{"QUEUED":"En file d\'attente","PENDING":"En attente","READY":"Prêt","RUNNING":"En cours","WAITING":"En attente d\'un signal","BLOCKED":"Bloqué","PAUSING":"Mise en pause","PAUSED":"En pause","SUCCEEDED":"Réussi","FAILED":"Échec","CANCELLED":"Annulé","SKIPPED":"Ignoré","SUPERSEDED":"Remplacé","TIMED_OUT":"Délai dépassé"},"eventTypes":{"RUN_STARTED":"Exécution démarrée","RUN_PAUSING":"Mise en pause de l\'exécution","RUN_PAUSED":"Exécution en pause","RUN_RESUMED":"Exécution reprise","RUN_CANCELLED":"Exécution annulée","RUN_SUCCEEDED":"Exécution réussie","RUN_FAILED":"Échec de l\'exécution","RUN_DATA_REPAIRED":"Données réparées","RUN_REPLAYED":"Exécution rejouée","STEP_SUCCEEDED":"Étape réussie","STEP_FAILED":"Échec de l\'étape","STEP_BLOCKED":"Étape bloquée","STEP_WAITING":"Étape en attente","STEP_RETRY_SCHEDULED":"Nouvelle tentative planifiée","STEP_RECOVERY_BLOCKED":"Récupération bloquée","STEP_WAITING_FOR_RESOURCE":"En attente du dépôt"},"diagnosticCodes":{"SCHEMA_INVALID":"Schéma invalide","DUPLICATE_NODE_ID":"Identifiant d\'étape en double","DUPLICATE_EDGE_ID":"Identifiant de connexion en double","EDGE_ENDPOINT_MISSING":"Extrémité de connexion manquante","TRIGGER_HAS_INPUT":"Le déclencheur a une entrée","TRIGGER_REQUIRED":"Déclencheur requis","STEP_REQUIRED":"Étape requise","EXPLICIT_JOIN_REQUIRED":"Étape de jonction requise","DAG_CYCLE":"Cycle dans le graphe","UNREACHABLE_STEP":"Étape inaccessible","SECRET_LITERAL":"Secret en clair","UNRESOLVED_REFERENCE":"Référence non résolue","SESSION_BINDING_INVALID":"Liaison de session invalide","SUBWORKFLOW_VERSION_REQUIRED":"Version du sous-workflow requise","TRIGGER_DISCONNECTED":"Déclencheur non connecté","RESOURCE_KIND_REQUIRED":"Type de ressource requis","ISSUE_COMMAND_ALLOWLIST_REQUIRED":"Liste de commandes autorisées requise","ISSUE_COMMAND_PATTERN_ANCHORED":"Le motif de commande doit être ancré","REQUIREMENT_UNSATISFIED":"Exigence non satisfaite","PARALLEL_WRITE_CONFLICT":"Conflit d\'écriture parallèle","TRIGGER_CHOICES_REQUIRED":"Choix du déclencheur requis","TRIGGER_CHOICE_HANDLE_UNKNOWN":"Choix de déclencheur inconnu"},"notFound":"Workflow introuvable.","publishedVersion":"Version publiée","runs":"Exécutions","graph":"Graphe du workflow","recentRuns":"Exécutions récentes","versionHistory":"Historique des versions","version":"Version","hash":"Empreinte du contenu","publishedAt":"Publié","exportVersion":"Exporter la version {version}","unpublished":"Ce workflow n’a pas encore été publié.","runNotFound":"Exécution de workflow introuvable.","generationValue":"Génération {generation}","pause":"Suspendre","resume":"Reprendre","cancelRun":"Annuler l’exécution","runGraph":"Graphe d’exécution en direct","repairData":"Réparer les données de session bloquées","repairDataDescription":"Appliquez un patch de fusion JSON atomique puis reprenez depuis l’étape bloquée.","applyRepair":"Appliquer la réparation","questionFrom":"Question de {step}","answer":"Répondre","customAnswer":"Réponse personnalisée","answerOnRunPage":"Répondre sur la page d’exécution","replay":"Rejouer et rembobiner","replayDescription":"Prévisualisez les descendants touchés avant de créer une nouvelle génération immuable.","selectReplayStep":"Sélectionner une étape","prepareReplay":"Préparer la relecture","replayAffected":"{count, plural, one {# étape sera rejouée} other {# étapes seront rejouées}}","externalEffectsWarning":"Les effets externes sont conservés et ne seront pas annulés :","replayWithoutRestore":"Rejouer sans restaurer Git","restoreAndReplay":"Restaurer Git et rejouer","stashRestoreReplay":"Remiser, restaurer et rejouer","timeline":"Chronologie","stepAttempts":"Tentatives d’étape","sessionData":"Données de session","resources":"Ressources","noEvents":"Aucun événement enregistré.","noResources":"Aucune ressource liée.","open":"Ouvrir","step":"Étape","iteration":"Itération","attempt":"Tentative","duration":"Durée","error":"Erreur","resourceWorkflows":"Workflows liés","resourceWorkflowsDescription":"Lancez un workflow compatible ou suivez cette ressource dans une exécution active.","manageWorkflows":"Gérer les workflows","quickActions":"Actions rapides","quickActionsDescription":"Choisir où ce workflow apparaît comme action rapide.","quickActionIcon":"Icône du bouton","quickActionStyle":"Style du bouton","quickActionStyles":{"default":"Par défaut","outline":"Contour","secondary":"Secondaire","destructive":"Destructif"},"quickActionKind":"Type d’action","quickActionKinds":{"STANDARD":"Standard","MERGE_CONFLICT":"Conflit de fusion","GITHUB_ACTIONS":"Actions GitHub","NONE":"Aucune"},"quickActionKindHelp":{"STANDARD":"Afficher avec les actions standard du worktree.","MERGE_CONFLICT":"Afficher lorsqu’un rebase est interrompu par des conflits.","GITHUB_ACTIONS":"Afficher dans les menus de pipelines et de tâches GitHub.","NONE":"Ne pas afficher comme action rapide."},"repositoryQuickActions":"Disponibilité par dépôt","repositoryQuickActionsHelp":"Aucune sélection autorise tous les dépôts ; une sélection crée une liste d’autorisation.","noQuickActionRepositories":"Ajoutez une base de code avant d’attribuer des actions rapides par dépôt.","quickActionEligibility":"L’action apparaît lorsque le workflow est publié, activé et possède un déclencheur de ressource correspondant au type d’action choisi.","saveQuickActions":"Enregistrer les actions rapides","quickActionStarted":"{name} a démarré.","quickActionView":"Voir","runNamed":"Exécuter {name}","fullRun":"Exécution complète","openLinkedResource":"Ouvrir les détails associés","addTriggerChoice":"Ajouter un choix","triggerChoiceLabel":"Libellé du choix","triggerChoiceKey":"Clé de sortie","triggerChoiceKeyDuplicate":"Un autre choix utilise déjà cette clé.","triggerChoiceDescription":"Description (facultatif)","triggerChoicesHelp":"Chaque choix devient une entrée de menu sous le bouton d\'exécution et une sortie propre sur le déclencheur.","triggerChoicesEmpty":"Aucun choix pour l\'instant. Ajoutez les options proposées au démarrage de ce workflow.","triggerChoicesAdvanced":"Ces choix ne sont pas de simples entrées clé, libellé et description. Modifiez-les en JSON.","active":"Actives","all":"Toutes","archived":"Archivées","archiveFilter":"Filtre d’archive","cancel":"Annuler","delete":"Supprimer","deleteRunDescription":"L’exécution et tout son historique d’étapes seront supprimés. Cette action est irréversible.","deleteRunTitle":"Supprimer l’exécution du workflow","done":"Terminé","editRuns":"Modifier","restore":"Restaurer","selectAll":"Tout sélectionner","selectDay":"Sélectionner tout du {day}","selectRun":"Sélectionner l’exécution nº {id}","selectedRuns":"{count, plural, one {# exécution sélectionnée} other {# exécutions sélectionnées}}"},"runs":{"actions":"Opérations","active":"Actifs","activeUsage":"Tentatives actives","activity":"Activité","activityDescription":"Activité en direct du fournisseur et des outils, avec recherche.","age":"Ancienneté","all":"Tous","allOrigins":"Toutes les origines","allProviders":"Tous les outils","answerNeeded":"Réponse requise","answer":"Réponse","answeredQuestions":"Questions répondues","archive":"Archiver","archiveFilter":"Filtre d’archive","archived":"Archivés","attachFiles":"Joindre des fichiers","attachmentLimits":"Jusqu’à 25 Mo par fichier et 100 Mo au total.","attachments":"Pièces jointes","attachmentsTooLarge":"Les pièces jointes dépassent la limite de 100 Mo.","auto":"Automatique","cacheReadTokens":"Cache en lecture","cacheTokens":"Jetons de cache","cacheWriteTokens":"Cache en écriture","cancel":"Annuler","cancelAndTransfer":"Annuler le parent et transférer l’arborescence","changesSnapshots":"Modifications","changesSnapshotsDescription":"Points de contrôle Git capturés pendant cette exécution.","checkpointKinds":{"ANSWER_ROLLBACK":"Restauration de la réponse","CONTINUE":"Reprise","FINAL":"Final","PRE_ANSWER_REVISION":"Avant la révision","QUESTION":"Question","START":"Démarrage"},"chooseModel":"Choisir un modèle","continue":"Continuer","copied":"Copié","copy":"Copier","cost":"Coût","crossProviderWarning":"L’état masqué du fournisseur ne peut pas être transféré entre outils. Choisissez la transcription visible ou le résumé final.","customAnswer":"Réponse personnalisée","delete":"Supprimer","deleted":"Supprimé","deleteDescription":"L’historique natif du fournisseur sera supprimé avant cet enregistrement local. Cette action est irréversible.","deleteDraftDescription":"Supprimer définitivement le brouillon sélectionné ? Cette action est irréversible.","deleteDraftTitle":"Supprimer le brouillon","deleteTitle":"Supprimer l’exécution","detached":"HEAD détachée","done":"Terminé","drafts":"Brouillons","draftsDescription":"Prompts enregistrés que vous pouvez lancer plus tard comme plan ou session.","edit":"Modifier","editAnswer":"Modifier la réponse","editDraft":"Modifier le brouillon","effort":"Niveau d’effort","empty":"Aucun élément de type {kind}","emptyDescription":"Aucune exécution correspondante.","estimatedCost":"Coût estimé","eventTypes":{"ASSISTANT":"Assistant","ERROR":"Erreur","QUESTION":"Question","RESULT":"Résultat","SYSTEM":"Système","TOOL":"Outil","USER":"Utilisateur"},"export":"Exporter","exportJson":"Exporter en JSON","exportMarkdown":"Exporter en Markdown","exportSession":"Exporter la session {tool} (JSONL)","exportSessionFile":"Télécharger le fichier {tool} d\'origine","fileTooLarge":"{name} dépasse la limite de 25 Mo.","followUp":"Suivi","followUpDescription":"Créer une exécution liée avec un contexte repris, nouveau ou renvoyé.","followUpModes":{"ANSWER_REVISION":"Révision de la réponse","FRESH":"Nouveau","PLAN_PLAY":"Exécution du Plan","RESEND":"Renvoyer","RESUME":"Reprendre"},"followUpPrompt":"Consigne de suivi","fresh":"Nouveau","id":"Identifiant","imported":"Importé","importedCollisionWarning":"Cette Session gérée à l’extérieur est active dans une arborescence déjà verrouillée par une autre Session gérée. L’application ne peut pas contrôler cette concurrence.","inputTokens":"Jetons d’entrée","jiraTicket":"Ticket Jira","linkedItems":"Éléments liés","linkedItemsDescription":"Plan source, parent et exécutions enfants associés à cette exécution.","loading":"Chargement…","loadMore":"Charger plus","loadingMore":"Chargement…","managed":"Géré","mode":"Type","model":"Modèle","modelEffort":"Modèle / effort","newDraft":"Nouveau brouillon","newRun":"Nouvel élément de type {kind}","noActivity":"Aucune activité ne correspond à cette recherche.","noChanges":"Aucun point de contrôle Git disponible.","noDetail":"Aucun détail supplémentaire","noDrafts":"Aucun brouillon correspondant.","noRollbackChanges":"Aucune modification du contenu de l’arborescence ne sera annulée.","normalizedContext":"Transcription visible","origin":"Origine","outputTokens":"Jetons de sortie","parentRun":"Exécution parente","pause":"Mettre en pause","pausedFollowUpDescription":"Démarrer un enfant repris annule cette Session en pause et transfère atomiquement son verrou d’arborescence.","pausedFollowUpTitle":"Transférer la Session en pause","phases":{"ANSWER_FAILED":"Échec de la réponse","ANSWER_REVISION_PREPARING":"Préparation de la révision","ANSWER_REVISION_QUEUED":"Révision en file d’attente","ANSWER_REVISION_READY":"Révision prête","CANCELLED":"Annulé","CANCEL_FAILED":"Échec de l’annulation","CANCEL_REQUESTED":"Annulation demandée","COMPLETED":"Terminé","CONTINUE_FAILED":"Échec de la reprise","DELETE_NATIVE_FAILED":"Échec de la suppression côté outil","DELETE_REQUESTED":"Suppression demandée","FAILED":"Échec","IMPORTED_ACTIVE_COLLISION":"Importé : conflit d’arborescence","IMPORTED_SYNCED":"Importé et synchronisé","IN_PROGRESS":"En cours","PAUSED":"En pause","PAUSE_FAILED":"Échec de la mise en pause","PAUSE_REQUESTED":"Pause demandée","PLAY_PLAN_FAILED":"Échec de l’exécution du Plan","PREPARE_ANSWER_REVISION_FAILED":"Échec de la préparation","QUEUED":"En file d’attente","RECOVERY_PAUSED":"En pause après récupération","REVISE_ANSWER_FAILED":"Échec de la révision","RUNNING":"En cours d’exécution","START_FAILED":"Échec du démarrage","STEER_FAILED":"Échec du pilotage","SUPERSEDED_BY_ANSWER_REVISION":"Remplacé par la révision de la réponse","SUPERSEDED_BY_FOLLOW_UP":"Remplacé par un suivi","WAITING_FOR_ANSWER":"En attente de réponse","WAITING_FOR_WORKTREE":"En attente de l’arborescence"},"pinPreset":"Épingler comme préréglage","plan":"Plan de travail","planMutationWarning":"Ce Plan en lecture seule a modifié l’arborescence sélectionnée de façon inattendue.","plans":"Plans de travail","plansDescription":"Plans en lecture seule qui analysent une base de code et proposent du travail sans la modifier.","play":"Exécuter le Plan","presets":"Préréglages","recentModels":"Récents","prompt":"Consigne","promptPlaceholder":"Décrivez ce que l’agent doit faire…","prepareRevision":"Préparation du retour arrière…","provider":"Outil","raw":"Brut","reasoningTokens":"Jetons de raisonnement","revisionDescription":"L’arborescence sélectionnée sera restaurée au point de contrôle précédant immédiatement cette question, puis une nouvelle session liée continuera avec la réponse révisée. La session précédente restera disponible dans l’historique d’audit.","revisionDescriptionNoRollback":"L’arborescence conservera ses modifications actuelles et une nouvelle session liée continuera avec la réponse révisée. La session précédente restera disponible dans l’historique d’audit.","rollbackChanges":"Annuler les modifications de l’arborescence effectuées après cette question","rollbackChangesHint":"Désactivez cette option pour conserver les modifications actuelles de l’arborescence au lieu de restaurer le point de contrôle précédant cette question.","rollbackDiff":"Modifications qui seront annulées","removeAttachment":"Retirer {name}","rendered":"Rendu","repoBranch":"Dépôt / branche","resend":"Renvoyer","resendPrompt":"Modifiez la consigne initiale avant de la renvoyer sans ancien contexte.","restore":"Restaurer","resume":"Reprendre","run":"Exécuté","runNotFound":"Exécution introuvable.","saveDraft":"Enregistrer le brouillon","confirmRevision":"Démarrer la session révisée","search":"Rechercher : {kind}","searchActivity":"Rechercher dans l’activité","searchDrafts":"Rechercher les brouillons","searchWorktrees":"Rechercher les arborescences","selectDraft":"Sélectionner le brouillon","selected":"{count, plural, one {# sélectionné} other {# sélectionnés}}","selectRun":"Sélectionner l’exécution nº {id}","selectWorktree":"Sélectionner une arborescence","send":"Envoyer","session":"Session d’agent","showingCount":"{count} éléments affichés sur {total}","sessions":"Sessions d’agent","sessionsDescription":"Sessions de fournisseur gérées qui s’exécutent sur un worktree.","start":"Démarrer","startDescription":"Démarrer un Plan ou une Session gérée dans l’arborescence sélectionnée.","mcpPresets":"Préréglages d’outils MCP","mcpPresetsDescription":"Accorder à cette exécution uniquement les outils intégrés des préréglages sélectionnés. Rien n’est sélectionné par défaut.","playPlan":"Exécuter le plan","playPlanDescription":"Choisissez les préréglages MCP activés pour les Sessions pour la nouvelle exécution d’implémentation.","startFollowUp":"Démarrer le suivi","startTitle":"Démarrer une consigne","status":"État","statuses":{"CANCELLED":"Annulé","COMPLETED":"Terminé","FAILED":"Échec","IN_PROGRESS":"En cours","PAUSED":"En pause","QUEUED":"En file d’attente"},"stashBeforeRollback":"Mettre de côté les modifications suivies et non suivies avant la restauration","stashCreated":"Mise de côté créée","steer":"Guider","steerDescription":"Envoyer des indications au tour actif du fournisseur. Elles attendront derrière les questions en attente.","steerPlaceholder":"Ajoutez des indications pour l’agent en cours…","submitAnswers":"Envoyer les réponses","summary":"Résumé","summaryOnly":"Résumé final uniquement","superseded":"Remplacé","ticket":"Demande","tool":"Outil","toolCallStatuses":{"COMPLETED":"Terminé","FAILED":"Échec","OBSERVED":"Observé"},"toolCalls":"Appels d’outil","unpinPreset":"Détacher le préréglage","unrestrictedWarning":"Les Sessions s’exécutent sans demande d’autorisation, avec un accès illimité et un verrou exclusif sur l’arborescence.","uploadFailed":"Échec du téléversement de la pièce jointe.","usageCost":"Utilisation et coût estimé","usageState":"Utilisation par tentative","webSearch":"Recherche web","webSearchDescription":"Activer l’outil de recherche web natif du fournisseur lorsqu’il est pris en charge.","worktree":"Arborescence","reportedCost":"Communiqué par le fournisseur","catalogCost":"Catalogue des coûts de modèles","selectAll":"Tout sélectionner","selectDay":"Sélectionner tout du {day}"},"notifications":{"title":"Notifications","description":"Consultez l’historique et choisissez comment recevoir chaque événement.","deliverySetup":"Diffusion dans le navigateur","deliverySetupDescription":"L’autorisation du navigateur et l’abonnement Web Push sont configurés séparément pour ce navigateur.","browserAlerts":"Alertes du navigateur","browserUnsupported":"Les alertes du navigateur ne sont pas prises en charge ici.","enabled":"Activé","enable":"Activer","webPush":"Push web","pushUnsupported":"Web Push nécessite un navigateur compatible et un contexte HTTPS sécurisé.","pushSubscribed":"Ce navigateur est abonné.","pushNotSubscribed":"Ce navigateur n’est pas abonné.","subscriptionCount":"{count, plural, one {# navigateur abonné} other {# navigateurs abonnés}}","subscribedBrowsers":"Navigateurs abonnés","subscribedBrowsersDescription":"Envoyez une notification de test ou retirez les navigateurs qui ne doivent plus recevoir de Push web.","browser":"Navigateur","pushService":"Service push","locale":"Paramètres régionaux","lastSeen":"Dernière activité","actions":"Actions","noSubscribedBrowsers":"Aucun navigateur n’est abonné au Push web.","current":"Actuel","test":"Tester","testSent":"Envoyée","remove":"Retirer","removeBrowser":"Retirer {browser}","removeBrowserTitle":"Retirer ce navigateur abonné ?","removeBrowserDescription":"Ce navigateur ne recevra plus de notifications Push web. Il pourra s’abonner à nouveau plus tard.","unknownBrowser":"Navigateur inconnu","subscribe":"S’abonner","unsubscribe":"Se désabonner","permissionRequired":"L’autorisation des notifications est requise pour Web Push.","pushKeyUnavailable":"La clé publique Web Push n’est pas disponible.","pushSubscriptionInvalid":"Le navigateur a renvoyé un abonnement push non valide.","iosInstallHelp":"Sur iPhone ou iPad, installez cette app via Partager → Sur l’écran d’accueil avant de vous abonner à Web Push.","preferences":"Types de notification","preferencesDescription":"Les canaux sont indépendants. Navigateur et Web Push peuvent produire les deux alertes.","notificationType":"Type","sidebarChannel":"Barre latérale","browserChannel":"Navigateur","pushChannel":"Push web","toggleChannel":"Basculer {channel} pour {type}","history":"Historique","settingsTab":"Paramètres","refresh":"Actualiser","historyCount":"{count, plural, one {# notification} other {# notifications}}","historyEmpty":"Aucune notification pour le moment.","notification":"Notification","channels":"Canaux","received":"Reçue","edit":"Modifier","done":"Terminé","deleteSelected":"Supprimer la sélection","deleteAll":"Tout supprimer","deleteAllTitle":"Supprimer tout l’historique des notifications ?","deleteAllDescription":"Cette action supprime définitivement toutes les notifications de la base de données.","selectedCount":"{count} sélectionnées","allSelected":"Toutes les notifications sont sélectionnées","selectAll":"Sélectionner toutes les notifications","selectDay":"Sélectionner les notifications du {day}","selectNotification":"Sélectionner {title}","dismiss":"Masquer","dismissOne":"Masquer {title} de la barre latérale","openBuild":"Ouvrir le build","openWorktree":"Ouvrir le worktree","delete":"Supprimer","confirmDelete":"Confirmer la suppression","mute":"Couper les sons de notification","unmute":"Activer les sons de notification","clearAll":"Tout effacer","clearSidebar":"Effacer la barre latérale","clearSidebarTitle":"Effacer la barre de notifications ?","clearSidebarDescription":"Les notifications seront retirées de la barre latérale mais resteront dans l’historique.","sidebarEmpty":"Aucune nouvelle notification.","cancel":"Annuler","permissions":{"default":"L’autorisation n’a pas encore été demandée.","granted":"Autorisation accordée pour ce navigateur.","denied":"L’autorisation est bloquée dans les paramètres du navigateur."},"types":{"IOS_BUILD_SUCCEEDED":{"title":"Build iOS réussi","description":"Un build iOS se termine avec succès."},"IOS_BUILD_FAILED":{"title":"Échec du build iOS","description":"Un build iOS se termine avec une erreur."},"COMMAND_RUN_SUCCEEDED":{"title":"Commande exécutée avec succès","description":"Une commande enregistrée se termine avec succès."},"COMMAND_RUN_FAILED":{"title":"Échec de l’exécution de la commande","description":"Une commande enregistrée se termine par un échec."},"GITHUB_ACTIONS_SUCCEEDED":{"title":"GitHub Actions réussi","description":"Un workflow GitHub Actions se termine avec succès."},"GITHUB_ACTIONS_FAILED":{"title":"Échec de GitHub Actions","description":"Un workflow GitHub Actions se termine avec une erreur."},"RUN_NEEDS_ANSWER":{"title":"Le plan ou la session attend une réponse","description":"Un plan ou une session gérée demande une saisie de l’utilisateur."},"RUN_COMPLETED":{"title":"Plan ou session terminée","description":"Un plan ou une session gérée se termine avec succès."},"RUN_FAILED":{"title":"Plan ou session en échec","description":"Un plan ou une session gérée échoue."},"RUN_CANCELLED":{"title":"Plan ou session annulée","description":"Un plan ou une session gérée est annulée."},"RUN_RECOVERY_PAUSED":{"title":"Plan ou session en pause après récupération","description":"Un plan ou une session gérée est mise en pause après le redémarrage de son agent."},"WORKFLOW_MESSAGE":{"title":"Message de workflow","description":"Un workflow envoie une notification générique."},"WORKFLOW_NEEDS_ATTENTION":{"title":"Le workflow requiert une intervention","description":"Un workflow attend des données ou une décision."},"WORKFLOW_COMPLETED":{"title":"Workflow terminé","description":"Une exécution de workflow se termine avec succès."},"WORKFLOW_FAILED":{"title":"Workflow en échec","description":"Une exécution de workflow échoue."},"WORKFLOW_RECOVERY_PAUSED":{"title":"Workflow en pause après récupération","description":"Un workflow se met en pause pendant la récupération de son travail durable."}},"categories":{"BUILDS":"Builds","COMMANDS":"Commandes","GITHUB":"GitHub","RUNS":"Plans et sessions","WORKFLOWS":"Workflows"}},"credentialEncryption":{"title":"Les identifiants de la base de données ne sont pas chiffrés","description":"Les secrets stockés dans la base de données de l’application sont actuellement en clair. Générez une clé de 32 octets avec cette commande :","instructionsPrefix":"Définissez la valeur générée comme","instructionsSuffix":"dans l’environnement du serveur, puis redémarrez-le. Les identifiants existants en clair seront chiffrés ensemble après le redémarrage.","backup":"Sauvegardez cette clé de manière sécurisée et conservez-la pendant toute la durée de vie des lignes chiffrées. Sa perte ou sa modification rend ces identifiants illisibles."},"credentials":{"title":"Identifiants","description":"Consultez le backend actif, l’état de protection et un inventaire limité aux métadonnées. Les valeurs secrètes ne sont jamais affichées ici.","refresh":"Actualiser","loading":"Chargement de l’inventaire des identifiants…","loadFailed":"Impossible de charger l’inventaire des identifiants","storageTitle":"Stockage des identifiants","storageDescription":"Configuration d’exécution et détails d’emplacement sûrs pour le backend sélectionné.","backend":"Système de stockage","protection":"Protection","itemCount":"Éléments stockés","mismatchCount":"Incompatibilités de backend","inventoryTitle":"Identifiants stockés","inventoryDescription":"Ce tableau contient uniquement des identifiants et des métadonnées de protection. Gérez chaque valeur dans ses paramètres propriétaires.","feature":"Fonction propriétaire","kind":"Type d’identifiant","updated":"Mis à jour","emptyTitle":"Aucun identifiant stocké","emptyDescription":"Les identifiants apparaissent ici après leur enregistrement depuis le formulaire de paramètres associé.","emptyDescriptionVault":"Aucun identifiant n\'a été trouvé sous le point de montage et le préfixe de chemin Vault configurés. Enregistrez-en un depuis son formulaire de configuration ou vérifiez que le montage et le préfixe correspondent au Vault qui les contient.","states":{"READY":"Prêt","WARNING":"Avertissement","ERROR":"Erreur"},"backends":{"DATABASE":"Base de données","VAULT":"Coffre HashiCorp Vault","KEYCHAIN":"Trousseau macOS","UNKNOWN":"Inconnu"},"encryptionStates":{"ENCRYPTED":"Chiffré","PLAINTEXT":"En clair","EXTERNAL":"Backend externe","ERROR":"Indisponible"},"protections":{"ENCRYPTED":"Chiffrement AES-256-GCM","PLAINTEXT":"En clair","VAULT":"Stockage Vault KV v2","KEYCHAIN":"Trousseau"},"features":{"jira":"Intégration Jira","github":"Intégration GitHub","cache":"Cache Actions","mcp":"Serveur MCP externe","ios":"Appareils iOS","push":"Notifications push","notifications":"Notifications"},"kinds":{"jira-api-token":"Jeton d’API","github-personal-access-token":"Jeton d’accès personnel","github-app-private-key":"Clé privée GitHub App","github-app-webhook-secret":"Secret du webhook GitHub App","cache-server-api-key":"Clé d’API","cache-server-headers":"Ensemble d’en-têtes personnalisés","external-mcp-server-headers":"Ensemble d’en-têtes","ios-profile-signer-private-key":"Clé privée de signature de profil","app-store-connect-private-key":"Clé privée App Store Connect","apns-token-private-key":"Clé privée du jeton APNs","apns-certificate-bundle":"Ensemble de certificat APNs","web-push-vapid-private-key":"Clé privée VAPID de push web"},"details":{"configuredValue":"Valeur configurée","location":"Emplacement","encryptionKey":"Clé de chiffrement","service":"Service","hostPlatform":"Plateforme hôte","address":"Adresse","mount":"Montage KV v2","pathPrefix":"Préfixe de chemin","namespace":"Espace de noms","authenticationToken":"Jeton d’authentification","additionalHeaders":"Noms d’en-têtes supplémentaires","customCa":"AC personnalisée","tlsServerName":"Nom du serveur TLS","vaultAccess":"Accès à Vault"},"detailValues":{"configured":"Configuré","notConfigured":"Non configuré","none":"Aucun","invalid":"Invalide","applicationDatabase":"Base de données de l’application","readOnly":"Lecture seule","readWrite":"Lecture et écriture"},"warningTitles":{"DATABASE_UNENCRYPTED":"Le chiffrement de la base de données est désactivé","CREDENTIAL_ENCRYPTION_KEY_INVALID":"La clé de chiffrement est invalide","CREDENTIAL_ENCRYPTION_KEY_MISSING":"La clé de chiffrement est absente","CREDENTIAL_ENCRYPTION_KEY_MISMATCH":"La clé de chiffrement ne correspond pas","CREDENTIAL_DATA_INVALID":"Les données d’identification sont invalides","CREDENTIAL_STORAGE_TYPE_INVALID":"Le type de stockage est invalide","CREDENTIAL_STORE_UNAVAILABLE":"Le stockage des identifiants est indisponible","CREDENTIAL_STORE_READ_ONLY":"Le stockage des identifiants est en lecture seule","VAULT_CONFIGURATION_INVALID":"La configuration de Vault est invalide","VAULT_INSECURE_HTTP":"Vault utilise HTTP en clair","VAULT_TLS_VERIFICATION_DISABLED":"La vérification du certificat Vault est désactivée","VAULT_READ_ONLY_IGNORED":"Le paramètre de lecture seule ne s\'applique pas","VAULT_ADOPTION_FAILED":"Les identifiants existants n\'ont pas pu être adoptés","KEYCHAIN_UNSUPPORTED_PLATFORM":"Le trousseau n’est pas pris en charge sur cet hôte","BACKEND_MISMATCH":"Des identifiants utilisent un autre backend"},"warnings":{"DATABASE_UNENCRYPTED":"Les identifiants de la base de données sont stockés en clair jusqu’à la configuration d’une clé de chiffrement.","CREDENTIAL_ENCRYPTION_KEY_INVALID":"CREDENTIAL_ENCRYPTION_KEY doit être un encodage Base64 strict de 32 octets exactement. Corrigez-la et redémarrez le serveur ; aucune solution de repli en clair n’est utilisée avec une clé invalide.","CREDENTIAL_ENCRYPTION_KEY_MISSING":"Des identifiants chiffrés existent, mais la clé est absente. Restaurez la clé d’origine et redémarrez le serveur.","CREDENTIAL_ENCRYPTION_KEY_MISMATCH":"La clé configurée ne correspond pas aux identifiants existants. Restaurez la clé d’origine et redémarrez le serveur.","CREDENTIAL_DATA_INVALID":"Un ou plusieurs enregistrements d’identifiants contiennent des métadonnées invalides et ne peuvent pas être utilisés.","CREDENTIAL_STORAGE_TYPE_INVALID":"CREDENTIAL_STORAGE_TYPE doit être database, vault ou keychain.","CREDENTIAL_STORE_UNAVAILABLE":"Le stockage des identifiants n’a pas pu être initialisé. Vérifiez la configuration et les journaux du serveur.","CREDENTIAL_STORE_READ_ONLY":"Cette installation peut lire les identifiants Vault mais pas les modifier. Gérez les secrets depuis une installation en écriture, ou supprimez CREDENTIAL_VAULT_READ_ONLY et accordez au jeton des capacités d\'écriture.","VAULT_CONFIGURATION_INVALID":"Vault ne peut pas être initialisé avec les variables d’environnement actuelles. Vérifiez l’adresse, les en-têtes, le chemin et les réglages TLS.","VAULT_INSECURE_HTTP":"Le trafic Vault, les secrets et les en-têtes d’authentification ne sont pas protégés en transit sur HTTP.","VAULT_TLS_VERIFICATION_DISABLED":"VAULT_SKIP_VERIFY autorise les certificats non approuvés et expose le trafic Vault à l’interception.","VAULT_READ_ONLY_IGNORED":"CREDENTIAL_VAULT_READ_ONLY ne s\'applique qu\'au stockage Vault et est ignoré par le backend actuel. Les identifiants de cette installation restent modifiables.","VAULT_ADOPTION_FAILED":"Les identifiants déjà détenus par le backend externe n\'ont pas pu être lus au démarrage : ils manquent donc dans cet inventaire. Vérifiez la connexion au backend et les capacités du jeton, puis redémarrez le serveur.","KEYCHAIN_UNSUPPORTED_PLATFORM":"Le trousseau macOS n’est disponible que si l’hôte Next.js s’exécute sur macOS. Le serveur reste disponible, mais les opérations sur les identifiants échoueront.","BACKEND_MISMATCH":"{count} élément(s) d’identification ont été enregistrés avec un autre backend. Saisissez-les à nouveau dans leurs paramètres propriétaires ; les valeurs ne sont ni déplacées ni supprimées automatiquement."},"readOnlyBadge":"Lecture seule","readOnlyNotice":"Cette installation dispose d\'un accès en lecture seule à Vault ; ce secret ne peut donc pas être modifié ici. Mettez-le à jour depuis une installation disposant d\'un accès en écriture.","adopted":"{count} identifiant(s) ont été adoptés depuis le backend externe au démarrage du serveur."},"agents":{"title":"Agents","description":"Gérez les Macs inscrits et les tâches durables depuis un plan de contrôle unique.","refresh":"Actualiser","enroll":"Inscrire un agent","enrollmentTitle":"Commande d’inscription à usage unique","enrollmentDescription":"Exécutez cette commande sur le Mac après avoir installé control-agent. Le Mac établit une connexion sortante ; il n’ouvre aucun port d’écoute.","serverAddress":"Adresse du serveur","customServerAddress":"Adresse de serveur personnalisée","headers":"En-têtes Cloudflare Access","headersDescription":"Ces valeurs sont ajoutées uniquement à la commande et enregistrées dans la configuration locale de l’agent.","addHeader":"Ajouter un en-tête","header":"en-tête","headerName":"Clé de l’en-tête","headerValue":"Valeur de l’en-tête","removeHeader":"Supprimer {name}","copy":"Copier la commande","copyFailed":"Impossible de copier la commande. Sélectionnez-la et copiez-la manuellement.","expires":"Le jeton expire le {date}","loading":"Chargement des agents…","emptyTitle":"Aucun agent inscrit","emptyDescription":"Créez une commande d’inscription pour associer votre premier Mac.","version":"Version","platform":"Plateforme","lastSeen":"Dernière activité","never":"Jamais"},"usage":{"title":"Utilisation","description":"Consultez l’utilisation des jetons et les coûts de tous les Macs inscrits.","refresh":"Actualiser l’utilisation","agentFilterLabel":"Filtrer l’utilisation par agent","allAgents":"Tous les agents","searchAgents":"Rechercher des agents…","noAgentsFound":"Aucun agent trouvé.","rangeLabel":"Période d’utilisation","allData":"Toutes les données","last7Days":"7 jours","last30Days":"30 jours","loading":"Chargement des agents…","noAgents":"Aucun agent inscrit","noAgentsDescription":"Inscrivez un Mac avant de collecter l’utilisation.","noCompatible":"Aucun agent compatible en ligne","noCompatibleDescription":"Mettez à jour control-agent sur un Mac en ligne pour ajouter la capacité ccusage.","noOnline":"Aucun agent en ligne","noOnlineDescription":"Connectez un Mac inscrit avant de collecter l’utilisation.","collectionFailed":"Échec de la collecte d’utilisation","collectionFailedDescription":"Aucun agent n’a renvoyé de rapport ccusage valide. Consultez les erreurs ci-dessus et réessayez.","zeroUsage":"Aucune utilisation trouvée","zeroUsageDescription":"Les agents ont répondu correctement, mais ccusage n’a trouvé aucune utilisation quotidienne.","noUsageInRange":"Aucune utilisation sur cette période","noUsageInRangeDescription":"Choisissez une période plus longue pour afficher l’utilisation antérieure.","progress":"{complete} agents compatibles sur {total} ont répondu","offlineAgents":"Hors ligne : {agents}","unsupportedAgents":"Mise à jour requise : {agents}","failedAgents":"Échec : {agents}","costChartTitle":"Coût quotidien par modèle","costChartDescription":"Utilisation quotidienne cumulée en USD sur la période sélectionnée.","costChartLegendHint":"Sélectionnez un modèle dans la légende pour l’afficher seul.","costChartShowingOnly":"Seul {model} est affiché. Sélectionnez-le à nouveau pour afficher tous les modèles.","costChartShowOnlyModel":"Afficher uniquement {model}","costChartShowAllModels":"Afficher tous les modèles","summaryFilteredByModel":"Les totaux ci-dessous ne concernent que {model}.","totalCost":"Coût total","totalTokens":"Total des jetons","inputTokens":"Jetons d’entrée","outputTokens":"Jetons de sortie","cacheCreationTokens":"Jetons de création du cache","cacheReadTokens":"Jetons de lecture du cache","usage":"Utilisation","input":"Entrée","output":"Sortie","cacheCreation":"Création du cache","cacheRead":"Lecture du cache","total":"Total","cost":"Coût","grandTotal":"Total général","unattributedTokens":"Jetons non attribués","modelCount":"{count} modèles","agentCount":"{count} agents","showModels":"Afficher les modèles du {date}","hideModels":"Masquer les modèles du {date}","showAgents":"Afficher les agents utilisant {model}","hideAgents":"Masquer les agents utilisant {model}"},"agentDetail":{"loading":"Chargement de l’agent…","notFound":"Agent introuvable.","version":"Version","lastSeen":"Dernière activité","never":"Jamais","generalInformation":"Informations générales","generalInformationDescription":"Le matériel et l’utilisation des ressources sont actualisés à chaque signal de l’agent.","cpuModel":"Modèle du processeur","operatingSystem":"Système d’exploitation","architecture":"Architecture","ipAddress":"Adresse IP","memory":"Mémoire","disk":"Espace disque","used":"Utilisé","free":"Libre","unavailable":"Indisponible","capabilities":"Fonctionnalités","capabilitiesDescription":"Recherchez les capacités annoncées par cet agent, exécutez-en une et inspectez sa réponse en direct.","searchCapabilities":"Rechercher des capacités","searchCapabilitiesPlaceholder":"Rechercher des noms de capacités…","noMatchingCapabilities":"Aucune capacité ne correspond à cette recherche.","capability":"Capacité","kind":"Type","event":"Événement","job":"Tâche","expandCapability":"Développer {capability}","collapseCapability":"Réduire {capability}","eventCapabilityDescription":"Cet événement demande une réconciliation immédiate des bases de code et n’accepte aucune donnée.","payload":"Données (objet JSON)","invoke":"Exécuter la capacité","invokeOffline":"Connectez cet agent avant d’exécuter une capacité.","noCapabilityResponse":"Exécutez la capacité pour voir sa réponse.","codebases":"Bases de code","codebasesDescription":"Bases de code enregistrées sur cet agent.","noCodebases":"Aucune base de code n’est enregistrée sur cet agent.","repository":"Dépôt","status":"État","created":"Créée","finished":"Terminée","selectJob":"Sélectionner {kind}","queuing":"Mise en file…","run":"Exécuter","history":"Historique des tâches","noJobs":"Aucune tâche n’a été exécutée sur cet agent.","cadenceSettings":"Fréquence de l’agent","cadenceSettingsDescription":"Réglez la fréquence des tâches récurrentes du plan de contrôle et des dépôts. L’analyse et la récupération Git utilisent d’abord les valeurs globales ; l’enregistrement définit celles de cet agent. Toutes les valeurs sont en secondes.","codebaseScanCadence":"Analyse des bases de code (secondes)","codebaseScanCadenceHelp":"Inspecte les dépôts enregistrés et transmet l’état des branches, de la synchronisation, de la disponibilité et des worktrees. Choisissez un entier de {min} à {max}.","jobReconciliationCadence":"Rapprochement durable des tâches (secondes)","jobReconciliationCadenceHelp":"Interroge le plan de contrôle sur les tâches en attente, en cours ou annulées afin de reprendre le travail après un événement manqué ou un redémarrage de l’agent. Choisissez un entier de {min} à {max}.","gitFetchCadence":"Git fetch (secondes)","gitFetchCadenceHelp":"Exécute git fetch origin lorsqu’une base de code enregistrée n’a pas été récupérée pendant cet intervalle. Choisissez un entier de {min} à {max}.","heartbeatCadence":"Pulsation de l’agent (secondes)","heartbeatCadenceHelp":"Transmet au plan de contrôle l’état de la connexion, l’inventaire de l’agent et l’utilisation actuelle des ressources. Choisissez un entier de {min} à {max}.","saveCadenceSettings":"Enregistrer la fréquence","cadenceSettingsSaved":"Fréquence de l’agent enregistrée.","baseRepoDirectory":"Répertoire de base des dépôts","baseRepoDirectoryDescription":"Choisissez le dossier de cet agent qui contient ses dépôts. Les chemins des worktrees qui s’y trouvent seront affichés relativement à ce dossier.","currentDirectory":"Répertoire actuel","notConfigured":"Non configuré","useDirectory":"Utiliser ce répertoire","clearDirectory":"Effacer le répertoire","directoryBrowsingUnavailable":"Connectez cet agent et mettez-le à jour si nécessaire pour parcourir les répertoires.","derivedDataLocation":"Derived Data Xcode","derivedDataLocationDescription":"Choisissez où cet agent stocke le DerivedData Xcode.","derivedDataMode":"Mode d’emplacement","derivedDataDefault":"Emplacement Xcode par défaut","derivedDataAbsolute":"Répertoire absolu personnalisé","derivedDataRelative":"Relatif à chaque arbre de travail","derivedDataAbsolutePath":"Répertoire absolu","derivedDataRelativePath":"Chemin de dossier relatif","derivedDataAbsoluteHelp":"Saisissez un chemin absolu sur cet agent ou choisissez un répertoire existant.","derivedDataRelativeHelp":"Ce dossier est recherché sous chaque arbre de travail actif suivi.","saveDerivedDataSettings":"Enregistrer les paramètres Derived Data","buildsDirectory":"Répertoire des builds","buildsDirectoryDescription":"Les journaux, produits copiés, archives et exports sont stockés dans un dossier par build. Par défaut, /Builds est ajouté au répertoire de base des dépôts, sauf remplacement ici.","browseBuildsDirectory":"Parcourir le répertoire des builds","effectiveDirectory":"Répertoire effectif","agentDefault":"Valeur par défaut du dépôt de base","customBuildsDirectory":"Répertoire absolu personnalisé","saveBuildsDirectory":"Enregistrer le répertoire des builds","useAgentDefault":"Utiliser la valeur par défaut du dépôt de base","deleteAgent":"Supprimer l’agent","deleteAgentTitle":"Supprimer cet agent ?","deleteAgentDescription":"Supprimer définitivement {name} ainsi que tous ses jobs et enregistrements de bases de code. Cette action est irréversible."},"diskSpace":{"title":"Surveillance de l’espace disque","description":"Surveille chaque volume d’agent et récupère automatiquement les Derived Data sûres les plus anciennes quand l’espace manque.","loading":"Chargement des rapports de disque…","settings":"Paramètres","normalThreshold":"Seuil de nettoyage (Gio)","pressureThreshold":"Seuil de pression (Gio)","saveThresholds":"Enregistrer les seuils","monitorAgent":"Surveiller l’agent","pressureModeControl":"Mode pression","noReport":"Aucun rapport de disque n’est encore disponible.","notMonitored":"Non surveillé","observedAt":"Observé {value}","volume":"Volume","freeOf":"libres sur","free":"libres","freeDiskSpace":"Espace disque libre","noEnabledAgents":"Aucun agent surveillé","usageToday":"Utilisation aujourd’hui","thresholdSummary":"Nettoyage sous {normal} Gio · critique à {pressure} Gio","recentDeletions":"Suppressions récentes","noRecentDeletions":"Aucune suppression automatique ou manuelle récente.","mainDisk":"Disque principal","baseRepoDisk":"Disque du dépôt de base","baseRepoDiskDescription":"Affiché séparément car le dépôt de base se trouve sur un autre système de fichiers.","disabled":"La surveillance du disque est désactivée pour cet agent.","usageLabel":"{percent}% de l’espace disque utilisé","role":{"MAIN":"Disque principal","BASE_REPO":"Dépôt de base","DERIVED_DATA":"Données dérivées"},"status":{"DISABLED":"Désactivé","STALE":"Périmé","IDLE":"Inactif","CLEANUP_REQUIRED":"Nettoyage requis","DELETING":"Suppression","PRESSURE":"Pression","CRITICAL":"Critique","ERROR":"Erreur"},"pressureMode":{"NORMAL":"Normal","MANUAL":"Pression manuelle","AUTOMATIC":"Pression automatique"}},"buildData":{"title":"Données de build","description":"Inspectez et nettoyez le DerivedData Xcode sur les agents inscrits.","derivedDataTitle":"Données dérivées","derivedDataDescription":"Produits de build, index, journaux et caches Xcode par projet.","deviceSupportTitle":"Prise en charge des appareils iOS","deviceSupportDescription":"Symboles et fichiers conservés pour les versions iOS connectées à chaque agent.","deviceSupportVersion":"Version iOS","selectAllDeviceSupport":"Sélectionner toute la prise en charge iOS","noDeviceSupport":"Aucun dossier de prise en charge iOS trouvé.","deleteDeviceSupportTitle":"Supprimer la prise en charge iOS ?","deleteDeviceSupportDescription":"Supprimer définitivement {count} dossiers ? Xcode peut les recréer à la connexion d’un appareil compatible.","refresh":"Actualiser","calculateSizes":"Calculer les tailles","loading":"Analyse de Derived Data…","emptyTitle":"Aucune Derived Data trouvée","emptyDescription":"Les répertoires DerivedData configurés ne contiennent aucune entrée.","progress":"{complete} agents analysés sur {total} éligibles","selected":"{count} sélectionnés","deleteSelected":"Supprimer la sélection","selectAll":"Sélectionner toutes les entrées Derived Data","selectEntry":"Sélectionner {name}","folder":"Dossier","worktree":"Chemin de l’arbre de travail","size":"Espace disque","agent":"Agent","modified":"Modifié","locked":"Verrouillé","lock":"Protéger du nettoyage automatique","unlock":"Autoriser le nettoyage automatique","protectedDeleteWarning":"Suppression à haut risque : les dossiers suivants sont verrouillés ou utilisés par une tâche en cours. Leur suppression peut perturber des ressources actives.\\n\\n{details}\\n\\nSupprimer quand même ?","actions":"Actions","entryActions":"Actions pour {name}","deleteEntry":"Supprimer {name}","confirmDeleteEntry":"Confirmer la suppression de {name}","confirmDelete":"Confirmer","delete":"Supprimer","deleteTitle":"Supprimer Derived Data ?","deleteDescription":"Supprimer définitivement {count} entrées sélectionnées ? Cette action est irréversible.","history":"Historique des suppressions","historyDescription":"Derived Data supprimées des agents inscrits au cours des 90 derniers jours.","clearHistory":"Effacer l’historique","clearHistoryTitle":"Effacer l’historique ?","clearHistoryDescription":"Supprimer tous les enregistrements conservés ? Cela n’affecte pas les fichiers des agents.","loadingHistory":"Chargement de l’historique…","noHistory":"Aucune Derived Data n’a encore été supprimée.","deleted":"Supprimé","sourceLabel":"Source","loadMore":"Charger plus","status":{"UNLINKED":"Non lié","PENDING":"Build en démarrage","SHARED_CACHE":"Cache partagé"},"source":{"USER":"Utilisateur","AUTOMATIC":"Automatique"},"agentStatus":{"QUEUING":"mise en file","QUEUED":"en attente","RUNNING":"analyse","SUCCEEDED":"terminé","FAILED":"échec","CANCELLED":"annulé","TIMED_OUT":"délai dépassé","OFFLINE":"hors ligne","UNSUPPORTED":"mise à jour de l’agent requise","INVALID":"réponse invalide"}},"cacheServerSettings":{"title":"Serveur de cache Actions","description":"Connectez-vous à un serveur de cache GitHub Actions pour gérer ses entrées de cache.","configured":"Configuré","notConfigured":"Non configuré","loading":"Chargement des paramètres…","saved":"Paramètres du serveur de cache enregistrés.","connectionSucceeded":"Connexion au serveur de cache réussie.","removed":"Paramètres du serveur de cache supprimés.","baseUrl":"URL de base","baseUrlHelp":"L\'URL de base de l\'API de gestion, y compris tout préfixe de chemin.","setupHelp":"Obtenez l’URL de base de l’API de gestion et la clé d’API dans la configuration du déploiement ou auprès de l’administrateur du serveur de cache. La clé configurée est envoyée comme en-tête x-api-key.","apiKey":"Clé d\'API","apiKeyPlaceholder":"Saisissez la clé d\'API du serveur de cache","apiKeyPlaceholderConfigured":"Laissez vide pour conserver la clé actuelle","apiKeyHelp":"Envoyée comme en-tête x-api-key à chaque requête.","apiKeyKeepHelp":"Une clé est enregistrée. Saisissez une nouvelle valeur pour la remplacer.","headers":"En-têtes personnalisés","addHeader":"Ajouter un en-tête","headersHelp":"Les valeurs des en-têtes sont enregistrées localement, envoyées à chaque requête au serveur de cache et ne sont jamais renvoyées au navigateur.","headersSetupHelp":"Ajoutez des en-têtes personnalisés uniquement si un proxy d’authentification les exige ; demandez leurs noms et leurs valeurs à l’administrateur du proxy.","noHeaders":"Aucun en-tête personnalisé configuré.","headerName":"Nom","headerValue":"Valeur","headerValuePlaceholderConfigured":"Laissez vide pour conserver la valeur actuelle","removeHeader":"Supprimer l\'en-tête","remove":"Supprimer","confirmRemove":"Supprimer les paramètres du serveur de cache ?","confirmRemoveDescription":"Les informations de connexion et la clé d\'API seront supprimées. La page Cache des Actions sera masquée jusqu\'à sa reconfiguration.","test":"Tester","save":"Enregistrer"},"cacheServer":{"title":"Cache des Actions","description":"Parcourez et gérez les entrées du serveur de cache GitHub Actions.","matchLookup":"Recherche de correspondance","refresh":"Actualiser","close":"Fermer","filtersTitle":"Filtres","filtersDescription":"Filtrez les entrées de cache par clé, version, portée ou dépôt.","key":"Clé","keyPlaceholder":"Clé de cache","version":"Version","versionPlaceholder":"Version du cache","scope":"Portée","scopePlaceholder":"Référence ou portée","repoId":"ID de dépôt","repoIdPlaceholder":"ID du dépôt","itemsPerPage":"Par page","deleteMatching":"Supprimer les correspondances","confirmDeleteMatching":"Supprimer toutes les entrées correspondantes ?","confirmDeleteMatchingDescription":"Toutes les entrées de cache correspondant aux filtres appliqués seront supprimées. Cette action est irréversible.","reset":"Réinitialiser","applyFilters":"Appliquer","entriesTitle":"Entrées de cache","entriesDescription":"Entrées de cache stockées sur le serveur.","loading":"Chargement des entrées de cache…","noEntries":"Aucune entrée de cache ne correspond aux filtres actuels.","updatedAt":"Mis à jour","actions":"Actions","viewDetails":"Voir les détails","delete":"Supprimer","confirmDeleteEntry":"Supprimer cette entrée de cache ?","edit":"Modifier","doneEditing":"Terminé","selected":"{count} sélectionnés","selectAll":"Sélectionner toutes les entrées de cache","selectEntry":"Sélectionner {name}","deleteSelected":"Supprimer la sélection","confirmDeleteSelected":"Supprimer {count} entrées de cache ?","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant","notConfiguredTitle":"Serveur de cache non configuré","notConfiguredDescription":"Configurez le serveur de cache GitHub Actions sur la page Paramètres pour gérer ses entrées.","goToSettings":"Aller aux paramètres","detailTitle":"Entrée de cache","detailDescription":"L\'entrée de cache complète et l\'emplacement de stockage qui la sous-tend.","entryNotFound":"Cette entrée de cache n\'existe plus.","entrySection":"Entrée","id":"Identifiant","locationId":"ID d\'emplacement","locationSection":"Emplacement de stockage","deleteLocation":"Supprimer l\'emplacement","confirmDeleteLocation":"Supprimer cet emplacement de stockage ?","confirmDeleteLocationDescription":"Le dossier de stockage et ses données seront supprimés. Cette action est irréversible.","folderName":"Nom du dossier","partCount":"Nombre de parties","sizeBytes":"Taille","mergeStartedAt":"Fusion démarrée","mergedAt":"Fusionné","partsDeletedAt":"Parties supprimées","lastDownloadedAt":"Dernier téléchargement","noLocation":"Aucun emplacement de stockage n\'est lié à cette entrée.","matchTitle":"Faire correspondre l\'entrée de cache","matchDescription":"Trouvez l\'entrée que le serveur de cache restaurerait pour un ensemble de clés.","primaryKey":"Clé principale","restoreKeys":"Clés de restauration","commaSeparated":"Séparé par des virgules","scopes":"Portées","matchFound":"Correspondance trouvée","matchTypes":{"EXACT_PRIMARY":"Principale exacte","PREFIXED_PRIMARY":"Principale préfixée","EXACT_RESTORE":"Restauration exacte","PREFIXED_RESTORE":"Restauration préfixée"},"noMatch":"Aucune entrée de cache ne correspond aux clés fournies.","runMatch":"Lancer la correspondance"},"jobs":{"open":"Ouvrir la tâche","cancel":"Annuler","loading":"Chargement de la tâche…","notFound":"Tâche introuvable.","waiting":"En attente de sortie…"},"jiraTickets":{"title":"Tickets Jira","description":"Parcourez par statut les projets, tableaux et requêtes JQL enregistrés.","refresh":"Actualiser","manage":"Gérer","showBoardLayout":"Vue tableau Kanban","showTableLayout":"Vue tabulaire","collapseStatus":"Réduire {status}","expandStatus":"Développer {status}","issueType":"Type de ticket","priority":"Priorité","loading":"Chargement des projets Jira…","loadingTickets":"Chargement des tickets…","loadingTicket":"Chargement des détails du ticket…","emptyProjects":"Aucun projet Jira pour le moment","emptyProjectsDescription":"Configurez Jira, puis ajoutez un projet et sa première source.","emptySources":"Ce projet n’a aucune source","emptySourcesDescription":"Ajoutez une requête JQL nommée ou l’URL d’un tableau Jira.","emptyTickets":"Aucun ticket ne correspond à cette source.","addProject":"Ajouter un projet","addSource":"Ajouter une source","projectTabs":"Projets Jira","sourceTabs":"Sources des tickets","staleWarning":"Jira est inaccessible ; des données expirées du cache sont affichées.","truncatedWarning":"Cette source dépasse 1 000 tickets. Affinez-la pour voir les autres résultats.","issue":"Demande","unassigned":"Non attribué","manageTitle":"Gérer les projets et sources Jira","manageDescription":"Les projets viennent de Jira et chaque source est validée avant l’enregistrement.","projects":"Projets","availableProjects":"Projets Jira disponibles","selectProject":"Sélectionner un projet","sourceCount":"{count} sources","removeProject":"Retirer le projet","confirmRemoveProject":"Retirer ce projet et toutes ses sources enregistrées ?","sourcesFor":"Sources de {project}","displaySettings":"Paramètres d’affichage","displaySettingsDescription":"Ces paramètres s’appliquent uniquement à ce projet.","ticketsToShow":"Tickets à afficher","allTickets":"Tous les tickets","unassignedOrSelfAssigned":"Non assignés ou assignés à moi","selfAssignedInProgress":"Mes tickets en cours","hideCompletedTickets":"Masquer les tickets terminés","hideCompletedTicketsDescription":"Choisissez les statuts du projet considérés comme terminés.","completedStatuses":"Statuts terminés","doneStatus":"Statut terminé d’Auto Merge","noDoneStatus":"Non configuré","doneStatusDescription":"Auto Merge déplace les tickets liés vers ce statut après la fusion GitHub.","loadingStatuses":"Chargement des statuts…","selectCompletedStatuses":"Sélectionner les statuts terminés","saveDisplaySettings":"Enregistrer les paramètres d’affichage","branchNaming":"Nommage des branches","branchNamingDescription":"Cette fonction est utilisée lors de la création d’une branche de worktree depuis un ticket de ce projet.","branchNamingFunction":"Fonction JavaScript de nommage des branches","branchNamingFunctionHelp":"Reçoit ticketKey, type, title et alreadyTaken. Retournez un nom de branche Git valide ; alreadyTaken est omis au premier appel.","saveBranchNaming":"Enregistrer le nommage des branches","sourceName":"Nom de la source","sourceType":"Type de source","boardUrl":"URL du tableau","editSource":"Modifier la source","deleteSource":"Supprimer la source","confirmDeleteSource":"Supprimer cette source et les entrées de cache associées ?","saveSource":"Enregistrer la source","cancel":"Annuler","done":"Terminé","ticket":"Ticket","staleTicket":"Certaines données sont expirées car Jira n’a pas répondu.","openInJira":"Ouvrir dans Jira","worktreeAction":"Créer un worktree","ticketWorktreeTitle":"Créer depuis {issueKey}","ticketWorktreeDescription":"Créez un nouveau worktree sur un agent, ou créez la branche du ticket et basculez-y un worktree existant.","newWorktree":"Nouveau worktree","existingWorktree":"Worktree existant","agentAndCodebase":"Agent et base de code","selectWorktreeDestination":"Sélectionner une destination","searchWorktreeDestinations":"Rechercher des worktrees, agents et bases de code","noWorktreeDestinations":"Aucune destination compatible et en ligne n’est disponible.","chooseWorktreeDestination":"Choisissez où créer la branche du ticket.","loadingWorktreeDestinations":"Chargement des destinations de worktree…","ticketWorktreeCreated":"Le worktree du ticket a été créé.","ticketBranchChanged":"La branche du ticket a été créée et le worktree y a été basculé.","createTicketWorktree":"Créer le worktree du ticket","createAndSwitchBranch":"Créer et changer de branche","ticketStashRetryHelp":"Git n’a pas pu changer de branche avec les modifications actuelles. Stashez les modifications suivies et non suivies, puis réessayez.","stashAndRetry":"Stasher et réessayer","detachedBranch":"HEAD détaché","descriptionTitle":"Description","classification":"Classement","labels":"Étiquettes","components":"Composants","fixVersions":"Versions correctives","sprints":"Itérations","relatedIssues":"Tickets associés","attachments":"Pièces jointes","comments":"Commentaires ({count})","noComments":"Ce ticket ne contient aucun commentaire.","unknownUser":"Utilisateur inconnu","assignee":"Responsable","reporter":"Rapporteur","created":"Créé","updated":"Mis à jour","due":"Échéance","resolved":"Résolu","affectedVersions":"Versions affectées","openFullDetails":"Ouvrir tous les détails","renderFormat":"Format d’affichage","markdown":"Format Markdown","jiraWiki":"Wiki Jira","viewRendered":"Voir le rendu","viewRaw":"Voir la source","rendered":"Rendu","raw":"Source","copied":"Copié","copy":"Copier","commentActions":"Actions du commentaire","copyRaw":"Copier le contenu source","copyFailed":"Impossible de copier le contenu.","authoringFormat":"Format de rédaction","preview":"Aperçu","hidePreview":"Masquer l’aperçu","commentBody":"Commentaire","commentPlaceholder":"Écrivez un commentaire…","saving":"Enregistrement…","addComment":"Ajouter un commentaire","changeAssignee":"Changer le responsable","searchAssignees":"Rechercher des utilisateurs assignables","loadingAssignees":"Chargement des utilisateurs…","noAssignees":"Aucun utilisateur assignable trouvé.","status":"Statut","changeStatus":"Changer le statut","requiresJira":"Nécessite Jira"},"jiraTicketDetail":{"loading":"Chargement du ticket Jira…","notFound":"Ticket introuvable","notFoundDescription":"Le ticket Jira n’a pas pu être chargé.","back":"Retour aux tickets Jira","summary":"Résumé","save":"Enregistrer","editSummary":"Modifier le résumé","refresh":"Actualiser","edit":"Modifier","saveDescription":"Enregistrer la description","descriptionHistory":"Historique de la description","descriptionHistoryDescription":"Sélectionnez deux versions de l’activité Jira pour comparer leur texte.","currentVersion":"Version actuelle","beforeChange":"Avant le {date}","afterChange":"Après le {date}","loadingHistory":"Chargement de l’historique…","noDescriptionHistory":"Aucune version antérieure de la description n’est disponible.","compareFrom":"Comparer depuis","compareTo":"Comparer vers","compareVersions":"Comparer les versions","descriptionComparison":"Comparaison de la description","selectVersions":"Sélectionnez deux versions différentes à comparer.","activity":"Activité","comments":"Commentaires","history":"Historique","worklogs":"Journaux de travail","unknownUser":"Utilisateur inconnu","noHistory":"Aucun historique disponible.","loadMore":"Charger plus","started":"Commencé {date}","noWorklogs":"Aucun journal de travail disponible.","allFields":"Tous les champs Jira","expandFields":"Afficher les champs","collapseFields":"Masquer les champs","searchFields":"Rechercher des champs","field":"Champ","value":"Valeur","custom":"Personnalisé","details":"Détails","editDetails":"Modifier les détails du ticket","editDetailsDescription":"Seuls les champs modifiables dans Jira sont affichés.","none":"Aucun","commaSeparated":"Valeurs séparées par des virgules","pickDate":"Choisir une date","clearDate":"Effacer la date","saving":"Enregistrement…"},"githubCache":{"title":"Cache GitHub","description":"Inspectez les lectures GraphQL en cache, les coûts exacts, l’utilisation de l’API, la latence et les limites.","ttl":"TTL du cache en minutes","saveTtl":"Enregistrer le TTL","overridesTitle":"TTL GraphQL personnalisées","overridesDescription":"Remplace la TTL globale du cache pour des noms exacts d’opérations GraphQL.","overrideOperation":"Opération GraphQL","overrideTtl":"TTL en secondes","overrideType":"Type","noOperationMatches":"Aucune opération en cache ne correspond. Saisissez un nom exact pour l’ajouter.","selectOperation":"Sélectionner ou saisir une opération","searchOperations":"Rechercher ou saisir une opération","addOverride":"Ajouter une exception","overridesHelp":"Les exceptions s’appliquent à tous les modes d’authentification, sources de requête et variables. La TTL contrôle la fraîcheur du cache, pas la fréquence d’interrogation d’une page.","builtInOverride":"Intégrée","customOverride":"Personnalisée","overrideTtlFor":"TTL en secondes pour {operation}","saveOverride":"Enregistrer la TTL pour {operation}","deleteOverride":"Supprimer l’exception","confirmDeleteOverride":"Supprimer l’exception de TTL pour {operation} ? L’opération utilisera la TTL globale.","deleteOverrideFor":"Supprimer l’exception de TTL pour {operation}","clearCache":"Vider le cache","confirmClear":"Vider toutes les réponses GraphQL GitHub en cache ? L’historique et les limites seront conservés.","loading":"Chargement de l’activité de l’API GitHub…","average":"Moyenne {ms} ms","live":"Direct","cache":"Cache","errors":"Erreurs","points":"{used} points utilisés · {avoided} évités","graphqlRateTitle":"Limites GraphQL","graphqlRateDescription":"Derniers en-têtes de limite principale par mode d’authentification.","restRateTitle":"Limites REST","restRateDescription":"Derniers compartiments REST ; les réponses REST ne sont pas mises en cache.","noRateData":"Aucun en-tête de limite n’a encore été observé.","limit":"Limite","remaining":"Restant","used":"Utilisé","estimated":"Estimé","reset":"Réinitialisation","resource":"Ressource","observed":"Observé","operationsTitle":"Opérations de l’API GitHub","operationsDescription":"Appels GraphQL et REST, avec l’utilisation des points, pour chaque fenêtre glissante.","sourcesTitle":"Appels par source","sourcesDescription":"Appels à l’API GitHub et utilisation des points par fonctionnalité source pour chaque fenêtre glissante.","noMetrics":"Aucune activité de l’API GitHub durant les dernières 24 heures.","operation":"Opération","recentTitle":"Appels récents de l’API GitHub","recentDescription":"Tous les appels GraphQL et REST via PAT ou GitHub App, y compris les requêtes en cache, directes et échouées.","clearCalls":"Effacer les appels récents","confirmClearCalls":"Effacer tous les appels récents de l’API GitHub ? Les réponses en cache et les instantanés des limites seront conservés.","noCalls":"Aucun appel à l’API GitHub n’a été enregistré.","filterApiType":"Filtrer les appels par type d’API","allApiTypes":"GraphQL et REST","filterRequestSource":"Filtrer les appels par source","allRequestSources":"Toutes les sources","filterCallSource":"Filtrer les appels directs ou en cache","liveAndCache":"Direct et cache","time":"Heure","source":"Source","callInfo":"Informations sur l’appel","status":"État","statuses":{"LIVE":"Direct","CACHE":"Cache","ERROR":"Erreur"},"requestSources":{"GITHUB_API":"Historique / inconnu","GITHUB_SETTINGS":"Paramètres GitHub","COMMENTS_PAGE":"Page des commentaires","CODEBASE_REPOSITORY":"Dépôt de base de code","PULL_REQUESTS_PAGE":"Page des pull requests","PULL_REQUEST_DETAILS":"Détails de la pull request","ACTIONS_PAGE":"Page Actions","WORKTREES":"Arbres de travail","WORKTREE_PIPELINES":"Pipelines des arbres de travail","WORKTREE_AUTOMATION":"Automatisation des arbres de travail","AUTO_RETRY":"Nouvelle tentative automatique Actions","WORKFLOW_AUTOMATION":"Automatisation des workflows","ACTIONS_NOTIFICATIONS":"Notifications Actions","CACHE_MANAGEMENT":"Page du cache GitHub"},"authentication":"Authentification","cost":"Coût en points","pointRate":"Points et limite","avoided":"{count} évités","rate":"Compartiment de limite","duration":"Durée","error":"Erreur","entriesTitle":"Entrées GraphQL en cache","entriesDescription":"Réponses persistantes séparées par authentification et variables.","noEntries":"Aucune réponse GraphQL GitHub n’est en cache.","freshness":"Fraîcheur","fresh":"Récent","stale":"Obsolète","lastFetched":"Dernière récupération","lastCost":"Dernier coût","actions":"Actions","open":"Ouvrir","refresh":"Forcer l’actualisation","delete":"Supprimer","confirmDeleteEntry":"Supprimer la réponse en cache de {operation} ?","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant"},"githubCacheDetail":{"title":"Entrée GraphQL en cache","description":"Réponse GraphQL GitHub en cache","refresh":"Forcer l’actualisation","delete":"Supprimer du cache","confirmDelete":"Supprimer cette réponse GraphQL en cache ?","loading":"Chargement de la réponse en cache…","notFound":"Cette réponse n’est pas dans le cache GitHub.","authentication":"Authentification","freshness":"Fraîcheur","fresh":"Récent","stale":"Obsolète","lastCost":"Dernier coût exact en points","fetchedAt":"Récupéré le","query":"Requête GraphQL","variables":"Variables","response":"Données de réponse"},"jiraCache":{"title":"Cache Jira","description":"Inspectez les données en cache, l’usage de l’API, la latence et les erreurs.","ttl":"Durée du cache en minutes","saveTtl":"Enregistrer la durée","clearCache":"Vider le cache","confirmClear":"Vider les réponses et tickets Jira ? L’historique des appels sera conservé.","loading":"Chargement de l’activité du cache…","average":"Moyenne de {ms} ms","live":"Direct","cache":"Cache","errors":"Erreurs","operationsTitle":"Opérations API","operationsDescription":"Comptages par opération et origine pour chaque fenêtre glissante.","noMetrics":"Aucune activité de l’API Jira au cours des dernières 24 heures.","operation":"Opération","recentTitle":"Appels API récents","recentDescription":"Chaque opération Jira mise en cache, de la plus récente à la plus ancienne.","clearCalls":"Effacer les appels récents","confirmClearCalls":"Effacer tous les appels récents de l’API Jira ? Les réponses et les tickets en cache seront conservés.","noCalls":"Aucun appel à l’API Jira n’a été enregistré.","time":"Heure","fetched":"Éléments récupérés","source":"Origine","sources":{"LIVE":"Direct","CACHE":"Cache","ERROR":"Erreur"},"duration":"Durée","error":"Erreur","stale":"Expiré","ticketsTitle":"Tickets en cache","ticketsDescription":"Couverture des résumés, détails et commentaires des tickets Jira.","noTickets":"Aucun ticket Jira n’est en cache.","ticket":"Ticket","status":"Statut","coverage":"Couverture","freshness":"Fraîcheur","fresh":"À jour","lastFetched":"Dernière récupération","actions":"Actions","open":"Ouvrir","refresh":"Actualiser","delete":"Supprimer","confirmDeleteTicket":"Supprimer {issueKey} et toutes les entrées qui le référencent ?","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant"},"jiraCacheDetail":{"description":"Données Jira du ticket en cache","refresh":"Actualiser le ticket","delete":"Supprimer du cache","confirmDelete":"Supprimer {issueKey} et ses entrées de cache associées ?","loading":"Chargement du ticket en cache…","notFound":"Ce ticket ne figure pas dans le cache Jira.","coverage":"Couverture","freshness":"Fraîcheur","fresh":"À jour","stale":"Expiré","detailFetched":"Détail récupéré","commentsFetched":"Commentaires récupérés","summaryData":"Réponse de résumé","detailData":"Réponse détaillée complète","commentsData":"Réponse complète des commentaires","notFetched":"Ce niveau de données n’a pas encore été récupéré.","relatedEntries":"Entrées de cache associées","noEntries":"Aucune entrée de cache ne référence ce ticket.","operation":"Opération","fetchedAt":"Récupéré le","entryId":"Identifiant de cache"},"jiraSettings":{"title":"Paramètres","description":"Configurez le compte Jira Cloud utilisé par cette application.","loading":"Chargement des paramètres Jira…","credentials":"Identifiants Jira","configured":"Jeton configuré","notConfigured":"Jeton non configuré","siteUrl":"URL du site Jira Cloud","siteUrlHelp":"Utilisez l’URL racine *.atlassian.net de votre site Jira.","email":"Adresse du compte Jira","accountHelp":"Ouvrez Jira dans votre navigateur et copiez uniquement l’origine https://*.atlassian.net. Utilisez l’adresse du même compte Atlassian.","apiToken":"Jeton d’API Jira","tokenPlaceholder":"Collez un jeton d’API Atlassian","tokenPlaceholderConfigured":"Laissez vide pour conserver le jeton","tokenHelp":"Le jeton est stocké dans SQLite local et n’est jamais renvoyé au navigateur.","tokenKeepHelp":"Laissez ce champ vide sauf pour remplacer le jeton enregistré.","tokenAcquireHelp":"Créez un jeton d’API Atlassian standard capable de s’authentifier directement auprès de ce site Jira.","createToken":"Créer un jeton d’API Jira","save":"Enregistrer les paramètres","test":"Tester la connexion","remove":"Retirer les identifiants","saved":"Paramètres Jira enregistrés.","connectionSucceeded":"Connexion à Jira réussie.","removed":"Identifiants retirés et données Jira en cache supprimées.","confirmSiteChange":"Changer de site supprime projets, sources et cache Jira. Continuer ?","confirmRemove":"Retirer l’adresse et le jeton enregistrés puis vider le cache Jira ?","webhookTitle":"Webhook Jira","webhookDescription":"Facultatif. Pousse les changements Jira vers les déclencheurs de workflows et les mises à jour de tickets en direct, sans attendre qu’un ticket soit consulté.","webhookConfigured":"Webhook configuré","webhookNotConfigured":"Webhook non configuré","webhookRegistered":"Enregistré dans Jira","webhookRegisteredAs":"Enregistré dans Jira sous le webhook {id}. Modifiez l\'URL ou le JQL ci-dessus puis réenregistrez pour le mettre à jour.","webhookUrl":"URL du webhook","webhookUrlHelp":"Jira doit pouvoir atteindre cette URL en HTTPS public. Modifiez-la si ce serveur est public à une autre adresse. Les livraisons non signées avec le secret ci-dessous sont rejetées.","webhookJql":"Filtre JQL","webhookJqlHelp":"Facultatif. Limitez les livraisons aux projets que vous automatisez. Chaque événement de ticket coûte un appel à l\'API Jira : gardez le filtre serré.","webhookSecret":"Secret de signature","webhookSecretHelp":"Copiez-le dans le champ Secret du webhook dans Jira. Il n’est affiché qu’une fois et n’est jamais renvoyé — régénérez-le si vous le perdez.","webhookSecretPending":"Générez un secret pour terminer la configuration du webhook dans Jira.","webhookSecretRegistered":"Stocké ici et dans Jira. Rien à copier : la rotation le remplace des deux côtés.","copy":"Copier","copied":"Copié","enableWebhook":"Générer un secret","registerWebhook":"Enregistrer dans Jira","updateRegistration":"Mettre à jour l\'enregistrement","rotateWebhook":"Renouveler le secret","disableWebhook":"Désactiver le webhook","webhookEnabled":"Secret du webhook Jira généré.","webhookRotated":"Secret du webhook Jira renouvelé. Mettez-le à jour dans Jira avant la prochaine livraison.","webhookDisabled":"Webhook Jira désactivé.","webhookRegisteredNotice":"Webhook Jira enregistré. Les livraisons commencent immédiatement.","webhookReregistered":"Enregistrement du webhook Jira mis à jour.","webhookRotatedInJira":"Secret du webhook Jira renouvelé ici et dans Jira.","confirmRotateRegisteredDescription":"Générer un nouveau secret de signature et le mettre à jour dans Jira ? Les livraisons signées avec l\'ancien secret sont rejetées.","confirmRotate":"Renouveler le secret de signature du webhook Jira ?","confirmRotateDescription":"Les livraisons signées avec l’ancien secret sont rejetées tant que le nouveau n’est pas collé dans Jira.","confirmDisable":"Désactiver le webhook Jira ?","confirmDisableDescription":"Le secret de signature est supprimé et les livraisons entrantes ne sont plus acceptées. Supprimez aussi le webhook dans Jira.","lastWebhook":"Dernière livraison : {date} ({outcome})","viewDeliveries":"Voir les livraisons","setupTitle":"Terminer la configuration dans Jira","manualIntro":"Pas administrateur Jira ? Générez plutôt un secret et créez le webhook à la main :","setupStep1":"Dans Jira, ouvrez Paramètres → Système → WebHooks puis choisissez Create a WebHook.","setupStep2":"Collez l’URL ci-dessus dans URL et le secret dans Secret.","setupStep3":"Sélectionnez ces événements : {events}","setupStep4":"Définissez un filtre JQL tel que {jql} pour que seuls les projets automatisés envoient des livraisons.","webhookDocs":"Documentation des webhooks Jira"},"settings":{"title":"Paramètres","description":"Configurez les outils de développement, les services Apple et les intégrations externes.","developmentGroup":"Développement","developmentGroupDescription":"Choisissez les outils utilisés avec les extractions locales et les worktrees.","appleGroup":"Services Apple","appleGroupDescription":"Gérez l’inscription iOS et les identifiants App Store Connect et APNs.","integrationsGroup":"Intégrations","integrationsGroupDescription":"Connectez les comptes Jira et GitHub utilisés dans toute l’application."},"editorSettings":{"title":"Éditeur des worktrees","description":"Choisissez l’édition de VS Code qui ouvre les worktrees ou masquez ces actions.","loading":"Chargement des réglages de l’éditeur…","label":"Éditeur","code":"Visual Studio Code (version stable)","insiders":"Visual Studio Code (canal Insiders)","none":"Aucun (masquer les boutons)","setupHelp":"Installez l’édition sélectionnée sur le Mac qui héberge le worktree :","downloadCode":"Télécharger Visual Studio Code","downloadInsiders":"Télécharger VS Code Insiders","save":"Enregistrer l’éditeur","saved":"Réglage de l’éditeur enregistré."},"githubSettings":{"title":"Identifiants GitHub","description":"Connectez le compte utilisé pour charger les demandes de tirage et GitHub Actions.","loading":"Chargement des paramètres GitHub…","configured":"Jeton configuré","notConfigured":"Jeton non configuré","apiToken":"Jeton d’accès personnel GitHub","tokenPlaceholder":"Collez un jeton d’accès personnel GitHub","tokenPlaceholderConfigured":"Laissez vide pour conserver le jeton enregistré","tokenHelp":"Accordez un accès en lecture et écriture aux demandes de tirage ainsi qu’un accès en lecture à Actions dans les dépôts utilisés. Le jeton sert aux vues, aux fils de révision et aux détails des exécutions.","tokenKeepHelp":"Laissez ce champ vide sauf si vous souhaitez remplacer le jeton enregistré.","tokenAcquireHelp":"Créez un jeton à granularité fine limité aux dépôts utilisés ici. Accordez Actions : lecture, Checks : lecture, Pull requests : lecture et écriture, et Contents : lecture et écriture pour les fusions. La lecture des adresses e-mail est facultative pour le choix de l’adresse des commits.","createToken":"Créer un jeton à granularité fine","pollInterval":"Intervalle des notifications Actions et des relances automatiques (secondes)","pollIntervalHelp":"Contrôle l’interrogation des relances automatiques et, lorsqu’aucun webhook GitHub App signé n’est disponible, celle des notifications. Choisissez un entier de 30 à 3600.","save":"Enregistrer les paramètres","test":"Tester la connexion","remove":"Supprimer les identifiants","saved":"Paramètres GitHub enregistrés.","connectionSucceeded":"Connexion à GitHub réussie.","removed":"Identifiants GitHub supprimés. Les dépôts gérés ont été conservés.","confirmRemove":"Supprimer les identifiants GitHub ?","confirmRemoveDescription":"Le jeton enregistré sera supprimé. Les dépôts gérés et leurs expressions Jira seront conservés."},"githubAppSettings":{"title":"Relance des pipelines par GitHub App","description":"Utilisez votre propre GitHub App pour relancer les workflows GitHub Actions.","loading":"Chargement des paramètres de la GitHub App…","verified":"Vérifiée","notConfigured":"Non configurée","setupTitle":"Configurer votre propre GitHub App","stepRegister":"Enregistrez une GitHub App au nom unique, par exemple « Relance IA Environnement », depuis","registerLink":"Créer une GitHub App","stepHomepage":"Utilisez","stepHomepageSuffix":" comme URL de page d’accueil. Laissez l’URL de rappel vide.","stepPermissions":"Réglez Repository permissions → Actions sur Read and write. Pour les mises à jour en direct avancées, accordez aussi l’accès en lecture à Checks et Commit statuses.","stepWebhook":"Activez les webhooks, sélectionnez Workflow run et utilisez","stepWebhookSuffix":" comme URL du webhook. L’enregistrement configure le secret et l’URL via GitHub.","stepInstall":"Créez l’app, générez une clé privée, puis installez-la uniquement sur les dépôts que ce déploiement doit contrôler.","stepInstallationId":"Après l’installation, ouvrez la page Configure de l’app. L’identifiant d’installation est le dernier nombre de l’URL, par exemple","stepInstallationIdSuffix":". Remplacez Organization-name par votre organisation et copiez la valeur finale de l’ID.","stepCredentials":"Copiez l’identifiant de l’app et celui de l’installation, puis collez-les avec le fichier PEM téléchargé.","appId":"Identifiant de la GitHub App","appIdPlaceholder":"Saisissez l’identifiant numérique de l’app","installationId":"Identifiant d’installation","installationIdPlaceholder":"Saisissez l’identifiant numérique d’installation","webhookUrl":"URL du webhook","webhookUrlHelp":"Remplacez le point de terminaison HTTPS public lorsque ce déploiement se trouve derrière un proxy ou un tunnel.","enhancedWebhooks":"Webhooks de pipeline avancés","enhancedWebhooksHelp":"Recevez les mises à jour des vérifications, tâches et statuts de commit dès leur envoi par GitHub. Activez les autorisations et événements indiqués, approuvez les changements d’installation, puis enregistrez pour vérifier.","openAppSettings":"Ouvrir les paramètres de la GitHub App","privateKey":"Clé privée au format PEM","privateKeyDropZone":"Zone de dépôt de la clé privée PEM","pemDropHint":"Déposez un fichier .pem ici ou collez la clé ci-dessous.","pemFileLoaded":"{filename} a été chargé. Enregistrez et vérifiez pour utiliser cette clé.","pemFileInvalid":"Déposez un fichier .pem valide contenant une clé privée RSA.","pemFileReadError":"Le fichier PEM déposé n’a pas pu être lu.","privateKeyPlaceholder":"Collez le PEM téléchargé de la GitHub App","privateKeyPlaceholderConfigured":"Laissez vide pour conserver la clé configurée","privateKeyHelp":"La clé est envoyée uniquement au serveur Next.js et n’est jamais renvoyée au navigateur.","privateKeyKeepHelp":"Une clé privée est configurée. Collez un nouveau PEM uniquement pour la renouveler.","connectedAs":"Connexion à {app} sur {account}","connectionDetails":"Actions : {permission} ; dépôts : {selection}","pipelinePermissions":"Checks : {checks} ; statuts de commit : {statuses}","lastVerified":"Dernière vérification : {date}","webhookConfigured":"Webhook configuré sur {url}","webhookNeedsSetup":"Les identifiants de la GitHub App sont vérifiés, mais GitHub indique que les webhooks ne sont pas activés. Activez les webhooks, sélectionnez l’événement Workflow run, puis enregistrez à nouveau.","webhookUnavailable":"Le webhook nécessite une origine HTTPS publique ; l’interrogation par jeton personnel reste disponible.","lastWebhook":"Dernier webhook : {date} ({outcome})","viewDeliveries":"Voir les livraisons","save":"Enregistrer et vérifier","rotate":"Renouveler la clé et vérifier","test":"Tester la connexion","remove":"Supprimer la GitHub App","saved":"La GitHub App a été enregistrée et vérifiée.","rotated":"La clé privée de la GitHub App a été renouvelée et vérifiée.","connectionSucceeded":"La connexion à la GitHub App a été vérifiée.","removed":"Les identifiants de la GitHub App ont été supprimés. Le jeton personnel et les dépôts gérés sont conservés.","confirmRemove":"Supprimer les identifiants de la GitHub App ?","confirmRemoveDescription":"L’identifiant de l’app, celui de l’installation et la clé privée seront supprimés. Les identifiants des demandes et les dépôts gérés seront conservés."},"polling":{"title":"Interrogation","description":"Consultez les opérations en arrière-plan du serveur et des agents, leur fréquence, fraîcheur et erreurs.","refresh":"Actualiser","loading":"Chargement des opérations…","serverTitle":"Opérations du serveur","agentTitle":"Opérations des agents","empty":"Aucune opération enregistrée.","operation":"Opération","agent":"Agent","status":"État","cadence":"Fréquence","lastStarted":"Dernier démarrage","lastCompleted":"Dernière fin","nextPoll":"Prochaine interrogation","details":"Détails","serverRuntime":"Serveur","agentRuntime":"Agent","everySeconds":"Toutes les {seconds}s","duration":"{milliseconds} ms","kinds":{"GITHUB_ACTIONS_NOTIFICATIONS":"Notifications GitHub actions","GITHUB_AUTO_RETRY":"Nouvelle tentative GitHub","APNS_RECOVERY":"Récupération des lots APNs","AGENT_HEARTBEAT":"Pulsation de l’agent","AGENT_JOB_RECONCILIATION":"Rapprochement durable des tâches","AGENT_DISK_SPACE":"Espace disque de l’agent","SIDEBAR_USAGE":"Utilisation de la barre latérale","CODEBASE_SCAN":"Analyse du code","GIT_FETCH":"Git fetch","WORKTREE_AUTOMATION":"Automatisation des worktrees"},"statuses":{"DISABLED":"Désactivé","HEALTHY":"Sain","RUNNING":"En cours","STALE":"Périmé","ERROR":"Erreur"}},"githubWebhooks":{"title":"Webhooks GitHub","description":"Consultez les livraisons de webhooks reçues de GitHub et leur traitement.","deliveryCount":"{count, plural, one {# livraison} other {# livraisons}}","refresh":"Actualiser","clearHistory":"Effacer l’historique","confirmClearHistory":"Effacer tout l’historique des livraisons de webhooks ? Les nouvelles livraisons continueront d’apparaître ici.","received":"Reçu","event":"Événement","repository":"Dépôt","outcome":"Résultat","details":"Détails","workflowRun":"Exécution du workflow {id}","processed":"Traité","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant","empty":"Aucune livraison de webhook pour le moment.","emptyDescription":"Les événements apparaîtront ici lorsque GitHub les enverra au webhook configuré.","outcomes":{"received":"Reçu","processed":"Traité","ignored":"Ignoré","error":"Erreur"}},"jiraWebhooks":{"title":"Webhooks Jira","description":"Consultez les livraisons de webhooks reçues de Jira et leur traitement.","deliveryCount":"{count, plural, one {# livraison} other {# livraisons}}","refresh":"Actualiser","clearHistory":"Effacer l’historique","confirmClearHistory":"Effacer tout l’historique des livraisons de webhooks ? Les nouvelles livraisons continueront d’apparaître ici.","received":"Reçu","event":"Événement","issue":"Ticket","outcome":"Résultat","details":"Détails","change":"modification","changes":"modifications","retry":"Tentative {count}","processed":"Traité","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant","empty":"Aucune livraison de webhook pour le moment.","emptyDescription":"Les événements apparaîtront ici lorsque Jira les enverra au webhook configuré.","outcomes":{"received":"Reçu","processed":"Traité","ignored":"Ignoré","error":"Erreur"}},"pullRequests":{"title":"Demandes de tirage","description":"Consultez vos demandes GitHub et les dépôts surveillés au même endroit.","refresh":"Actualiser","manage":"Gérer","loading":"Chargement de la configuration GitHub…","credentialsRequired":"Connectez GitHub pour afficher les demandes","credentialsRequiredDescription":"Ajoutez un jeton d’accès personnel dans les Paramètres avant de charger les données GitHub.","openSettings":"Ouvrir les Paramètres","tabsLabel":"Vues des demandes de tirage","mine":"Les miennes","reviewRequests":"Demandes de révision","repositories":"Dépôts","stateFilter":"État de la demande de tirage","repositoryFilter":"Dépôt","selectRepository":"Sélectionner un dépôt","searchRepositories":"Rechercher des dépôts","searchAvailableRepositories":"Rechercher les dépôts disponibles","noRepositoryMatches":"Aucun dépôt ne correspond à la recherche.","truncated":"La recherche GitHub renvoie au maximum 1 000 résultats. Affinez votre charge de travail sur GitHub pour voir les éléments au-delà de cette limite.","loadingPullRequests":"Chargement des demandes de tirage…","loadingMore":"Chargement…","retryLoad":"Réessayer","empty":"Aucune demande de tirage","emptyDescription":"Aucune demande de tirage ne correspond actuellement à cette vue.","repository":"Dépôt","number":"Numéro","pullRequest":"Demande de tirage","pullRequestAndRepository":"Demande de tirage / Dépôt","labels":"Étiquettes","ticket":"Ticket","pipeline":"Pipeline","approval":"Approbation","openComments":"Commentaires ouverts","viewOpenComments":"Voir {count} commentaires ouverts","age":"Ancienneté","actions":"Actions","details":"Détails","openInGitHub":"Ouvrir dans GitHub","merge":"Fusionner","mergePullRequest":"Fusionner la pull request","mergePullRequestDescription":"Fusionnez {repository} #{number} après avoir vérifié les détails du commit.","loadingMergeOptions":"Vérification des conditions de fusion…","mergeType":"Type de fusion","selectMergeType":"Sélectionner un type de fusion","mergeTypes":{"SQUASH":"Squash et fusion","MERGE":"Créer un commit de fusion","REBASE":"Rebase et fusion"},"commitMessage":"Message du commit","commitDescription":"Description du commit","commitEmail":"E-mail du commit","githubDefaultEmail":"Utiliser la valeur par défaut du compte GitHub","cancelMerge":"Annuler","merging":"Fusion en cours…","pipelineStates":{"ACTION_REQUIRED":"Action requise","CANCELLED":"Annulé","ERROR":"Erreur","EXPECTED":"Attendu","FAILURE":"Échec","IN_PROGRESS":"En cours","NEUTRAL":"Neutre","PENDING":"En attente","QUEUED":"En file","SKIPPED":"Ignoré","STALE":"Obsolète","STARTUP_FAILURE":"Échec au démarrage","SUCCESS":"Réussi","TIMED_OUT":"Délai dépassé","NONE":"Aucune vérification"},"pipelineMenuTitle":"État des pipelines","noPipelines":"Aucune vérification de pipeline n’a été signalée.","retry":"Relancer","retrying":"Relance…","retryUnavailable":{"GITHUB_APP_NOT_CONFIGURED":"Configurez et vérifiez une GitHub App dans les Paramètres pour relancer ce workflow.","NOT_COMPLETED":"Seuls les workflows terminés peuvent être relancés.","NOT_GITHUB_ACTIONS":"Seules les exécutions GitHub Actions peuvent être relancées.","WORKFLOW_RUN_UNAVAILABLE":"GitHub n’a fourni aucune exécution de workflow pour cette suite de vérifications.","HISTORICAL_ATTEMPT":"Les anciennes tentatives sont en lecture seule."},"reviewStates":{"APPROVED":"Approuvée","CHANGES_REQUESTED":"Modifications demandées","REVIEW_REQUIRED":"Révision requise","NONE":"Aucune décision"},"pullRequestStates":{"ALL":"Toutes","OPEN":"Ouverte","CLOSED":"Fermée","MERGED":"Fusionnée"},"mergeableStates":{"CONFLICTING":"Conflits","MERGEABLE":"Fusionnable","UNKNOWN":"Calcul en cours"},"manageTitle":"Gérer les dépôts GitHub","manageDescription":"Choisissez les onglets de dépôt et configurez l’extraction des clés Jira depuis les titres.","manageCredentialsRequired":"Configurez les identifiants GitHub avant d’ajouter des dépôts.","managedRepositories":"Dépôts gérés","noManagedRepositories":"Aucun dépôt n’est encore géré.","addRepository":"Ajouter un dépôt","browse":"Parcourir","enterManually":"Saisir manuellement","privateRepository":"Dépôt privé","managed":"Géré","add":"Ajouter","loadingRepositories":"Chargement des dépôts…","loadMore":"Charger plus","repositoryName":"Propriétaire/nom du dépôt","jiraKeyRegex":"Expression régulière de clé Jira","jiraKeyRegexHelp":"Le premier groupe capturé est utilisé s’il existe, sinon la correspondance complète. Effacez le champ pour désactiver l’analyse.","defaultJiraKeyRegex":"Expression par défaut de clé de ticket","defaultJiraKeyRegexHelp":"Utilisée pour chaque dépôt géré sans remplacement propre. Le premier groupe capturé est utilisé s’il existe.","jiraKeyRegexOverrideHelp":"Laissez vide pour hériter de l’expression par défaut.","saveDefaultRegex":"Enregistrer l’expression par défaut","invalidRegex":"Saisissez une expression régulière de clé Jira valide.","done":"Terminé","removeRepository":"Supprimer le dépôt","confirmRemoveRepository":"Supprimer ce dépôt géré ?","confirmRemoveRepositoryDescription":"Son onglet de demandes et sa configuration d’expression Jira seront supprimés.","saveRegex":"Enregistrer l’expression Jira"},"githubComments":{"title":"Commentaires","description":"Consultez et répondez aux fils de révision GitHub de vos demandes ouvertes.","refresh":"Actualiser","layout":"Disposition des commentaires","cards":"Disposition en cartes","table":"Disposition en tableau","loadingConfiguration":"Chargement de la configuration GitHub…","credentialsRequired":"Connectez GitHub pour voir les commentaires","credentialsDescription":"Ajoutez dans Paramètres un jeton personnel autorisé à lire et modifier les demandes.","openSettings":"Ouvrir les paramètres","allPullRequests":"Toutes les demandes ouvertes","searchPullRequests":"Rechercher des demandes ouvertes","noPullRequestMatches":"Aucune demande ouverte ne correspond à la recherche.","currentUser":"Utilisateur actuel","otherUsers":"Autres utilisateurs","unresolved":"Non résolus","truncated":"La recherche GitHub renvoie au maximum 1 000 demandes. Certains fils peuvent manquer.","loading":"Chargement des commentaires de révision…","empty":"Aucun commentaire de révision","emptyDescription":"Aucun fil ne correspond à la demande et aux filtres sélectionnés.","reviewThreads":"Commentaires de révision","reviewThreadsDescription":"{count, plural, =0 {Aucun fil de révision ne correspond aux filtres actuels.} one {# fil de révision correspond aux filtres actuels.} other {# fils de révision correspondent aux filtres actuels.}}","author":"Auteur","pullRequest":"Demande de tirage","comment":"Commentaire","date":"Date du commentaire","replies":"Réponses","github":"Plateforme GitHub","rendered":"Aperçu rendu","markdown":"Source Markdown","viewRaw":"Source","viewRendered":"Rendu","copy":"Copier","copied":"Copié","copyFailed":"Impossible de copier le Markdown.","unknownAuthor":"Auteur inconnu","fileComment":"Commentaire de fichier","outdated":"Obsolète","resolved":"Résolu","openInGitHub":"Ouvrir dans GitHub","openReplyInGitHub":"Ouvrir la réponse dans GitHub","reply":"Répondre","replyPlaceholder":"Répondre en Markdown…","replyUnavailable":"GitHub n’autorise pas ce compte à répondre à ce fil.","reopen":"Rouvrir le fil","resolve":"Résoudre le fil","replying":"Envoi en cours…","sendReply":"Envoyer la réponse"},"pullRequestDetail":{"back":"Demandes de tirage","loading":"Chargement des détails de la demande…","notFound":"Demande de tirage introuvable","notFoundDescription":"Cette demande est indisponible ou le jeton GitHub configuré ne permet pas d’y accéder.","refresh":"Actualiser","openInGitHub":"Ouvrir dans GitHub","viewWorktree":"Voir le worktree","draft":"Brouillon","description":"Description","noDescription":"Aucune description n’a été fournie.","comments":"Commentaires","noComments":"Aucun commentaire de révision","noCommentsDescription":"Cette demande de tirage ne contient aucun fil de révision.","pipelines":"Chaînes d’intégration","pipelineCount":"{count} pipelines et contextes d’état","viewAll":"Tout afficher","pipelineName":"Pipeline","pipelineStatus":"État","pipelineDetails":"Détails","viewPipeline":"Voir","jobCount":"{count} tâches","noJobs":"Aucune tâche n’a été signalée pour cette exécution.","viewJob":"Voir {job} sur GitHub","jobActions":"Actions pour {job}","retryJob":"Relancer {job}","showJobSteps":"Afficher les étapes de {job}","hideJobSteps":"Masquer les étapes de {job}","steps":"Étapes","noSteps":"Aucune étape n’a encore été signalée pour cette tâche.","details":"Détails de la demande","branches":"Branches","changes":"Modifications","files":"Fichiers modifiés","commits":"Commits","mergeable":"Possibilité de fusion","openComments":"Commentaires ouverts","created":"Créée","updated":"Mise à jour","merged":"Fusionnée","people":"Personnes","author":"Auteur","assignees":"Assignés","unassigned":"Non assignée","unknown":"Inconnu"},"actionsPage":{"title":"Actions GitHub","description":"Surveillez les exécutions de workflows dans les bases de code GitHub enregistrées.","refresh":"Actualiser","loadingConfiguration":"Chargement de la configuration GitHub…","credentialsRequired":"Connectez GitHub pour afficher Actions","credentialsRequiredDescription":"Ajoutez dans les Paramètres un jeton d’accès personnel autorisé à lire Actions.","openSettings":"Ouvrir les Paramètres","repositoryFilter":"Dépôt","allRepositories":"Tous les dépôts","searchRepositories":"Rechercher des dépôts","noRepositoryMatches":"Aucun dépôt ne correspond à la recherche.","branchFilter":"Branche","branchFilterPlaceholder":"Saisir le nom exact de la branche","applyBranchFilter":"Appliquer","clearBranchFilter":"Effacer le filtre de branche","pipelineFilter":"Flux de travail","allPipelines":"Tous les pipelines","searchPipelines":"Rechercher des pipelines","noPipelineMatches":"Aucun pipeline ne correspond à la recherche.","loadingRuns":"Chargement des exécutions…","noCodebases":"Aucune base de code GitHub","noCodebasesDescription":"Enregistrez une base de code dont l’origine est github.com pour afficher ses exécutions.","empty":"Aucune exécution","emptyDescription":"GitHub n’a renvoyé aucune exécution pour cette sélection de dépôts.","expand":"Développer","repository":"Dépôt","workflowRun":"Exécution du workflow","trigger":"Déclencheur","status":"État","pullRequest":"Demande de tirage","ticket":"Ticket","worktree":"Arbre de travail","started":"Démarrée","duration":"Durée : {duration}","actions":"Actions","runNumber":"Exécution n° {number}","autoRetry":"Relance automatique","attempt":"Tentative {attempt}","view":"Voir","viewWorktree":"Voir","cancel":"Annuler","cancelling":"Annulation…","forceCancel":"Forcer l’annulation","forceCancelling":"Annulation forcée…","forceCancelTitle":"Forcer l’annulation de cette exécution ?","forceCancelDescription":"L’annulation forcée contourne les conditions qui empêchent normalement GitHub d’arrêter cette exécution. Utilisez-la uniquement si l’annulation normale est bloquée.","keepRunning":"Laisser s’exécuter","showJobs":"Afficher les tâches de {run}","hideJobs":"Masquer les tâches de {run}","jobs":"Tâches","jobCount":"{count} tâches","loadingJobs":"Chargement des tâches…","retryLoad":"Réessayer","noJobs":"Aucune tâche n’a été signalée pour cette exécution.","showJobSteps":"Afficher les étapes de {job}","hideJobSteps":"Masquer les étapes de {job}","retryJob":"Relancer {job}","steps":"Étapes","noSteps":"Aucune étape n’a encore été signalée pour cette tâche.","loadMore":"Charger plus","loadingMore":"Chargement…"},"githubAutomation":{"autoRetry":"Relance automatique","title":"Configurer la relance automatique","description":"Relance automatiquement les workflows ou tâches GitHub Actions sélectionnés.","loading":"Chargement des workflows et règles enregistrées…","credentialsRequired":"Configurez un jeton d’accès personnel et vérifiez une GitHub App avec un accès en écriture à Actions avant de créer des règles.","scope":"S’applique à","currentRuns":"Exécutions actuelles","futureRuns":"Exécutions futures","targets":"Pipelines et tâches","allWorkflows":"Tous les workflows, y compris ceux ajoutés ultérieurement","noWorkflows":"Aucun workflow GitHub Actions trouvé.","mode":"Mode de relance","failureMode":"Relancer les échecs","countMode":"Relancer les réussites par nombre","retryLimit":"Limite de relances","unlimited":"Illimité","failureStrategy":"Lors d’un échec","failedJobs":"Relancer uniquement les tâches échouées","allJobs":"Relancer toutes les tâches","savedRules":"Règles enregistrées","edit":"Modifier la règle","ruleProgress":"{retries} relances automatiques sur {executions} exécutions","pause":"Suspendre la règle","resume":"Reprendre la règle","delete":"Supprimer la règle","close":"Fermer","save":"Enregistrer la règle","limitError":"Saisissez une limite comprise entre 1 et 100.","targetRequired":"Sélectionnez au moins un workflow ou une tâche.","attemptSelector":"Tentative du workflow","latestAttempt":"Dernière — Tentative {attempt}","attempt":"Tentative {attempt}","attemptStartedBy":"Lancée par @{actor}","pipelines":"Pipelines","pipelineCount":"{count} pipelines GitHub Actions","pipeline":"Chaîne","status":"État","actions":"Actions","view":"Voir","noJobs":"Aucune tâche signalée pour cette tentative.","statuses":{"ACTIVE":"Active","PAUSED":"Suspendue","COMPLETED":"Terminée","EXHAUSTED":"Épuisée","ERROR":"Erreur"},"scopes":{"WORKFLOW_RUN":"Exécution actuelle","WORKTREE_BRANCH":"Branche du worktree","PULL_REQUEST":"Pull request","REPOSITORY":"Dépôt"}},"codebases":{"title":"Bases de code","description":"Suivez les dépôts Git et leurs copies de travail sur tous les agents inscrits.","refreshAll":"Tout actualiser","fetchAll":"Tout récupérer","add":"Ajouter une base de code","groupBy":"Regrouper les bases de code par","agents":"Agents","repositories":"Dépôts","loading":"Chargement des bases de code…","emptyTitle":"Aucune base de code","emptyDescription":"Ajoutez un dépôt Git existant depuis un agent en ligne.","skipped":"{count} bases de code hors ligne, incompatibles ou indisponibles ont été ignorées.","fetchQueued":"La récupération a démarré pour les bases de code admissibles.","refreshQueued":"L’actualisation a démarré pour les bases de code admissibles.","online":"En ligne","offline":"Hors ligne","edit":"Modifier","view":"Afficher","folder":"Dossier","origin":"Origine","branch":"Branche","upstream":"Branche suivie","lastChecked":"Dernière vérification","lastFetched":"Dernière récupération","never":"Jamais","unknown":"Inconnu","none":"Aucune","ahead":"En avance de {count}","behind":"En retard de {count}","sync":{"IN_SYNC":"Synchronisée","AHEAD":"En avance","BEHIND":"En retard","DIVERGED":"Divergente","NO_UPSTREAM":"Sans branche suivie","DETACHED":"Détachée","UNKNOWN":"Inconnu"},"availability":{"AVAILABLE":"Disponible","MISSING":"Dossier introuvable","NOT_REPOSITORY":"Ce n’est pas un dépôt Git","ORIGIN_MISMATCH":"L’origine a changé","ERROR":"Indisponible"},"operationRunning":"Opération Git en cours…","fetch":"Récupérer","addTitle":"Ajouter une base de code","addDescription":"Parcourez un agent, inspectez un dépôt Git et confirmez son origine avant l’enregistrement.","agent":"Agent","selectAgent":"Sélectionnez un agent en ligne","browseHome":"Parcourir le dossier personnel","home":"Accueil","showHidden":"Afficher les dossiers cachés","truncated":"Seuls les 1 000 premiers dossiers sont affichés.","addFolder":"Ajouter ce dossier","detached":"HEAD détachée","existingOrigin":"Cette origine utilise déjà le nom partagé « {name} ».","name":"Nom du dépôt","repositoryDescription":"Description du dépôt","cancel":"Annuler","confirm":"Confirmer la base de code","editTitle":"Modifier les détails du dépôt","loadingRepository":"Chargement du dépôt…","repositoryNotFound":"Dépôt introuvable","repositoryNotFoundDescription":"Ce dépôt logique n’a peut-être plus de copie de travail enregistrée.","backToCodebases":"Retour aux bases de code","repositorySharedDescription":"Ces détails, configurations de build et scripts autorisés appartiennent au dépôt logique et s’appliquent à toutes les copies d’agent et tous les worktrees.","repositoryDetails":"Détails du dépôt","repositoryDetailsDescription":"Gérez les réglages partagés par toutes les copies enregistrées de ce dépôt.","repositorySaved":"Détails du dépôt enregistrés.","autoRetry":"Relance automatique","autoRetryDescription":"Configurez des règles de relance durables pour les workflows GitHub Actions de ce dépôt.","autoRetryGitHubOnly":"La relance automatique est disponible uniquement pour les dépôts hébergés sur GitHub.","skillGroups":"Groupes de compétences","skillGroupsHelp":"Choisissez les groupes synchronisés dans tous les checkouts et worktrees de ce dépôt.","noSkillGroups":"Aucun groupe disponible.","quickActions":"Actions rapides","repositoryQuickActionsDescription":"Workflows hérités par ce dépôt. Ouvrez un workflow pour modifier son type ou sa portée.","quickActionKinds":{"STANDARD":"Standard","MERGE_CONFLICT":"Conflit de fusion","GITHUB_ACTIONS":"Actions GitHub"},"allRepositories":"Tous les dépôts","limitedRepositories":"{count, plural, one {Limité à # dépôt} other {Limité à # dépôts}}","workflowPaused":"En pause","noWorkflows":"Aucun workflow disponible.","quickActionEligibility":"Les workflows configurés restent affichés lorsqu’ils sont en pause ; les actions n’apparaissent que s’ils sont publiés, activés et associés à la ressource actuelle.","saveQuickActions":"Enregistrer les actions rapides","keepBaseBranchUpToDate":"Maintenir la branche de base à jour","keepBaseBranchUpToDateHelp":"Après une récupération réussie, la branche de base est avancée en mode fast-forward lorsqu’aucune modification n’est indexée. Ce réglage du dépôt s’applique à tous les agents.","save":"Enregistrer","remove":"Supprimer","confirmRemoveTitle":"Supprimer l’enregistrement de la base de code ?","confirmRemoveDescription":"L’enregistrement de {folder} sera supprimé. Le dossier et tous ses fichiers resteront intacts sur l’agent.","removed":"L’enregistrement de la base de code a été supprimé.","settings":"Paramètres","settingsTitle":"Paramètres d’état des bases de code","settingsDescription":"Définissez la fréquence à laquelle les agents à jour inspectent les dossiers enregistrés et signalent l’état Git.","refreshInterval":"Intervalle d’actualisation de l’agent (secondes)","refreshIntervalHelp":"Choisissez un entier compris entre {min} et {max}. Chaque agent attend cette durée après la fin d’une analyse. Aucun serveur Git distant n’est contacté.","fetchInterval":"Intervalle de récupération automatique (secondes)","fetchIntervalHelp":"Choisissez un entier de {min} à {max}. L’agent récupère origin lorsque cet intervalle est écoulé.","defaultJiraBranchRegex":"Expression Jira par défaut pour les branches","jiraBranchRegex":"Expression Jira propre à cette origine","jiraBranchRegexHelp":"Le premier groupe capturé est utilisé, sinon la correspondance complète du nom de branche.","inheritDefaultRegex":"Hériter de l’expression par défaut","settingsSaved":"Réglages des bases de code enregistrés."},"codebaseDetail":{"iosApp":"App iOS","loading":"Chargement de la base de code…","notFound":"Base de code introuvable","notFoundDescription":"Cet enregistrement de base de code a peut-être été supprimé.","back":"Retour aux bases de code","operationQueued":"Opération Git mise en attente.","operationSucceeded":"Opération Git terminée.","operationFailed":"L’opération Git a échoué.","offlineReadOnly":"Cet agent est hors ligne. Les informations de branches enregistrées restent disponibles en lecture seule jusqu’à sa reconnexion.","unsupportedReadOnly":"Mettez cet agent à jour pour inspecter et gérer les branches et les stashes. Les informations enregistrées sont affichées en lecture seule.","dirty":"Modifications non validées","refresh":"Actualiser","fetch":"Récupérer origin","repositorySettings":"Réglages du dépôt","origin":"Origine","currentBranch":"Branche actuelle","upstream":"Branche suivie","lastFetched":"Dernière récupération","activeOperation":"{kind} est en cours…","branches":"Branches ({count})","stashes":"Réserves Git ({count})","branchesTruncated":"Seules les 1 000 premières branches sont affichées.","localBranches":"Branches locales","remoteBranches":"Branches distantes d’origin","noLocalBranches":"Aucune branche locale trouvée.","noRemoteBranches":"Aucune branche d’origin trouvée. Récupérez origin puis réessayez.","branchName":"Branche","branchStatus":"État","actions":"Actions","current":"Actuelle","default":"Par défaut","protected":"Protégée","otherWorktree":"Autre worktree","localAvailable":"Branche locale existante","switch":"Changer","stashAndSwitch":"Mettre de côté et changer","confirmDirtySwitchTitle":"Mettre les modifications de côté et changer de branche ?","confirmDirtySwitchDescription":"Les modifications indexées, non indexées et non suivies seront enregistrées dans un nouveau stash avant le passage à {branch}. Le stash sera conservé.","checkout":"Extraire","stashAndCheckout":"Mettre de côté et extraire","confirmDirtyCheckoutTitle":"Mettre les modifications de côté et extraire cette branche ?","confirmDirtyCheckoutDescription":"Les modifications indexées, non indexées et non suivies seront enregistrées dans un nouveau stash avant l’extraction de {branch}. Le stash sera conservé.","pull":"Tirer","deleteRemote":"Supprimer la distante","confirmDeleteRemoteBranchTitle":"Supprimer la branche distante ?","confirmDeleteRemoteBranchDescription":"origin/{branch} sera définitivement supprimée. Les branches locales et worktrees du même nom resteront intacts.","delete":"Supprimer","cancel":"Annuler","confirmDeleteBranchTitle":"Supprimer la branche locale ?","confirmDeleteBranchDescription":"Git ne supprimera {branch} que si ses commits ont déjà été fusionnés. La branche actuelle, celle par défaut ou celle d’un autre worktree ne peut pas être supprimée.","noStashes":"Aucun stash","noStashesDescription":"Ce checkout ne contient actuellement aucun stash Git.","preview":"Aperçu","hidePreview":"Masquer l’aperçu","loadingPreview":"Chargement du patch du stash…","emptyPatch":"Ce stash ne contient aucun patch texte à afficher.","copyPatch":"Copier le patch","patchCopied":"Patch copié","copyPatchFailed":"Impossible de copier le patch.","patchTruncated":"Ce patch a été tronqué à 256 Kio.","stashesTruncated":"Seuls les 200 premiers stashes sont affichés.","apply":"Appliquer","confirmDeleteStashTitle":"Supprimer le stash ?","confirmDeleteStashDescription":"{stash} sera définitivement supprimé. Appliquez-le d’abord si vous devez conserver ses modifications.","stashesTitle":"Remises","stashMessage":"Remise","searchBranches":"Rechercher des branches","searchBranchesPlaceholder":"Filtrer par nom de branche","noMatchingBranches":"Aucune branche ne correspond à votre recherche.","sortBranches":"Trier les branches","sortByName":"Nom","sortByNewestCommit":"Commit le plus récent","searchStashes":"Rechercher des remises","searchStashesPlaceholder":"Filtrer par message ou sélecteur","noMatchingStashes":"Aucune remise ne correspond à votre recherche."},"worktrees":{"title":"Arbres de travail","description":"Gérez les worktrees Git principaux et liés sur tous les agents inscrits.","agentOffline":"L’agent est hors ligne.","worktreeUnavailable":"Ce worktree n’est pas disponible.","agentUnsupported":"Mettez à jour l’agent pour activer les builds iOS.","iosBuildNotConfigured":"Ajoutez d’abord un projet d’app iOS et une configuration de build dans les réglages du dépôt.","filters":"Filtres des worktrees","searchWorktrees":"Rechercher des worktrees","searchWorktreesPlaceholder":"Rechercher des branches, agents, dépôts, tickets ou bases de code…","filterByAgent":"Filtrer par agent","allAgents":"Tous les agents","filterByRepository":"Filtrer par dépôt","allRepositories":"Tous les dépôts","noMatchingWorktrees":"Aucun worktree correspondant","noMatchingWorktreesDescription":"Essayez une autre recherche ou un autre filtre.","refresh":"Actualiser","fetchNow":"Récupérer maintenant","fetchStarted":"Récupération lancée pour les bases de code disponibles.","createWorktree":"Créer un worktree","worktreeCreated":"Worktree créé.","repositoryCheckout":"Checkout du dépôt","selectCodebase":"Sélectionner un agent et un dépôt","selectCodebaseHelp":"Choisissez le checkout de l’agent qui possédera ce worktree.","searchCodebases":"Rechercher des dépôts et des agents","noEligibleCodebases":"Aucun checkout de dépôt compatible et en ligne n’est disponible.","newBranch":"Nouvelle branche","existingBranch":"Branche existante","fromTicket":"Depuis un ticket","branchName":"Nom de branche","ticketKey":"Clé du ticket","loadingTicketBranch":"Chargement du ticket et du nom de branche…","selectExistingBranch":"Sélectionner une branche existante","selectBaseBranch":"Sélectionner une branche de base","searchBranches":"Rechercher des branches","noMatchingBranches":"Aucune branche correspondante.","localBranch":"Locale","originBranch":"Branche distante","localAndOrigin":"Locale et origin","remoteDefault":"Branche distante par défaut","changeBranch":"Changer de branche","viewCodebase":"Voir la base de code","viewRepository":"Voir le dépôt","refreshPullRequest":"Actualiser la demande de tirage","moveToAgent":"Déplacer vers un agent","moveWorktree":"Déplacer l’arbre de travail","moveDescription":"Pousser {branch} et l’extraire sur un autre agent.","destinationAgent":"Agent et copie de destination","selectDestinationAgent":"Sélectionner un agent de destination","searchDestinationAgents":"Rechercher des agents et des copies","noMoveDestinations":"Aucune copie de destination compatible n’est disponible.","destinationWorktree":"Arbre de travail de destination","createDestinationWorktree":"Créer un nouvel arbre de travail","dirtyDestinationWarning":"Cette destination contient des modifications non validées. Git les conservera sur la branche entrante lorsque possible.","deleteOldWorktree":"Supprimer l’ancien arbre après le déplacement","deleteOldWorktreeDisabled":"Les arbres de travail principaux ne peuvent pas être supprimés.","moveFailed":"Le déplacement de l’arbre de travail a échoué.","moveCompleted":"Arbre de travail déplacé.","moveCompletedWithWarning":"La destination est prête, mais le nettoyage de la source nécessite une intervention.","moveCancelled":"Déplacement annulé. La branche source reste poussée et l’arbre source a été conservé.","moveNeedsStash":"Les modifications de destination empêchent le changement de branche.","moveStashHelp":"Mettre de côté les modifications suivies et non suivies, continuer et conserver le stash pour une restauration manuelle.","moveProgress":"Déplacement de {branch}","stashAndContinue":"Mettre de côté et continuer","cancelMove":"Annuler le déplacement","cancel":"Annuler","moveStatus":{"PUSHING":"Envoi de la branche source…","CHECKING_OUT":"Extraction de la destination…","AWAITING_STASH":"En attente d’une décision de stash…","CLEANING_UP":"Suppression de l’ancien arbre…","SUCCEEDED":"Déplacement terminé.","SUCCEEDED_WITH_WARNING":"Déplacement terminé avec un avertissement de nettoyage.","FAILED":"Échec du déplacement.","CANCELLED":"Déplacement annulé."},"moveBlocked":{"agent":"L’agent source est hors ligne ou doit être mis à jour.","busy":"Une autre opération est active pour ce dépôt.","detached":"Une branche source nommée est requise.","dirty":"Validez ou abandonnez les modifications source avant le déplacement.","behind":"Récupérez les modifications d’origin avant le déplacement.","diverged":"Résolvez la divergence avec origin avant le déplacement.","unknown":"La branche ne peut pas être confirmée comme pouvant être poussée en toute sécurité.","destination":"Aucun agent de destination compatible n’est disponible."},"deleteWorktree":"Supprimer l’arbre de travail","deleteWorktreeDescription":"Supprimer définitivement {path} et sa branche locale.","deleteWorktreeWarning":"Toutes les modifications indexées, non indexées et non suivies de cet arbre seront définitivement perdues.","deleteRemoteBranch":"Supprimer également origin/{branch}","defaultRemoteProtected":"La branche par défaut du dépôt ne peut pas être supprimée d’origin.","stashAndRetry":"Stasher et réessayer","stashRetryHelp":"Git n’a pas pu changer de branche avec les modifications actuelles. Stashez les fichiers suivis et non suivis, réessayez et conservez le stash pour une restauration manuelle.","hidden":"Masqués ({count})","cards":"Vue en cartes","table":"Vue en tableau","loading":"Chargement des worktrees…","emptyTitle":"Aucun worktree trouvé","emptyDescription":"Ajoutez une base de code et connectez son agent pour découvrir ses worktrees.","online":"En ligne","offline":"Hors ligne","lastFetched":"Dernière récupération : {value}","neverFetched":"jamais","secondsAgo":"il y a {count} s","branch":"Branche","path":"Chemin","baseBranch":"Branche de base","editBase":"Modifier la branche de base","saveBase":"Enregistrer la branche de base","inheritBase":"Hériter de la valeur distante","baseUnavailable":"Branche distante par défaut indisponible","upstreamStatus":"État amont","baseStatus":"Actualité de la base","baseCurrent":"À jour · {count} en avance","baseBehind":"{count} derrière la base","yes":"Oui","notUpToDate":"Non · {count} commits derrière la base","ahead":"{count} en avance","behind":"{count} en retard","diverged":"Divergée","upToDate":"À jour","origin":"Origine","inSync":"Synchronisée","dirty":"Modifié","branchCommits":"Commits : {count}","unpublished":"Non publiée","detached":"HEAD détachée","unknown":"Inconnu","primary":"Principal","tags":"Étiquettes","manageTags":"Gérer les étiquettes","manageTagsDescription":"Créez des étiquettes globales réutilisables et choisissez leurs couleurs.","highlight":"Surlignage","clearHighlight":"Effacer le surlignage","customize":"Personnaliser le worktree","edit":"Modifier","editTag":"Modifier l’étiquette","createTag":"Créer une étiquette","saveTag":"Enregistrer l’étiquette","openCode":"Ouvrir dans VS Code","openInsiders":"Ouvrir dans VS Code Insiders","forcePush":"Forcer le push","sync":"Synchroniser","rebase":"Rebaser","rebasePaused":"Rebase en pause","rebaseConflicts":"Résolvez les conflits avec un workflow ou annulez pour restaurer l’état antérieur au rebase.","rebaseIncomplete":"Un rebase est toujours en cours. Annulez-le pour restaurer l’état précédent de la branche.","cancelRebase":"Annuler le rebase","push":"Pousser","publish":"Publier","reset":"Réinitialiser","stashAll":"Remiser tout","stageAll":"Indexer tout","unstageAll":"Désindexer tout","autoSync":"Synchronisation auto","autoSyncing":"Auto Sync actif","autoSyncPaused":"Auto Sync en pause","autoSyncTitle":"Configurer Auto Sync","autoSyncDescription":"Rebase automatiquement cette branche quand la branche cible change et pousse avec force-with-lease.","useConflictWorkflow":"Exécuter un workflow d’action rapide pour résoudre automatiquement les conflits","selectConflictWorkflow":"Workflow de conflits de fusion","noWorkflow":"Aucun workflow","conflictWorkflowChoice":"Choix du déclencheur du workflow","defaultWorkflowTrigger":"Déclencheur par défaut","saveAutoSync":"Activer Auto Sync","resumeAutoSync":"Reprendre Auto Sync","cancelAutoSync":"Annuler Auto Sync","autoMerge":"Fusion automatique","autoMerging":"Auto Merge actif","autoMergePaused":"Auto Merge en pause","autoMergeComplete":"Auto Merge terminé","autoMergeTitle":"Configurer Auto Merge","autoMergeDescription":"GitHub fusionnera la pull request dès que les contrôles, revues et règles de branche requis seront satisfaits.","deleteAfterMerge":"Supprimer ce worktree après la fusion","moveTicketToDone":"Déplacer le ticket Jira lié vers le statut terminé configuré","saveAutoMerge":"Activer Auto Merge","resumeAutoMerge":"Reprendre Auto Merge","cancelAutoMerge":"Annuler Auto Merge","confirmAction":"Confirmer","operationRunning":"Opération en cours…","loadingDetails":"Chargement des commits et modifications…","commits":"Validations ({count})","changes":"Modifications ({count})","noCommits":"Aucun commit ne diffère de la branche de base.","noChanges":"Le worktree est propre.","conflicted":"En conflit","staged":"Indexé","unstaged":"Non indexé","untracked":"Non suivi","truncated":"Seuls les premiers résultats pris en charge sont affichés.","status":"État","pullRequest":"Pull request","latestBuild":"Dernier build","openInGitHub":"Ouvrir dans GitHub","openDetails":"Ouvrir les détails","openWorktreeDetails":"Ouvrir les détails de {branch}","hiddenTitle":"Worktrees masqués","hiddenDescription":"Les worktrees absents sont conservés sept jours. Une redécouverte restaure leurs métadonnées.","noHidden":"Aucun worktree masqué.","purge":"Purger","purgeAll":"Tout purger","review":{"APPROVED":"Approuvée","CHANGES_REQUESTED":"Modifications demandées","REVIEW_REQUIRED":"Révision requise","NONE":"Aucune décision"},"comments":"Commentaires : {count}"},"worktreeDetail":{"loading":"Chargement des détails du worktree…","notFound":"Worktree introuvable","notFoundDescription":"Ce worktree est absent, masqué ou n’est plus disponible.","back":"Retour aux worktrees","linked":"Lié","refresh":"Actualiser","inspectionOffline":"L’agent est hors ligne. Les métadonnées enregistrées restent disponibles, mais les commits et modifications ne peuvent pas être inspectés.","inspectionUnavailable":"Ce worktree n’est pas disponible pour une inspection en direct.","inspectionBusy":"Les commits et modifications seront actualisés à la fin de l’opération en cours.","inspectionUnsupported":"Mettez l’agent à jour pour inspecter les commits et modifications.","inspectionFailed":"Impossible de charger les commits et modifications.","actions":"Actions","workingTree":"Arbre de travail","overview":"Vue d’ensemble","repository":"Dépôt","origin":"Origine","agent":"Agent","folder":"Dossier","head":"Commit HEAD","upstream":"Branche amont","originStatus":"État de l’origine","baseStatus":"Actualité de la base","lastChecked":"Dernière vérification","lastFetched":"Dernière récupération","management":"Gestion","branchChanges":"Modifications de la branche","noBranchChanges":"Aucune modification validée dans la branche","diffTruncated":"Certains fichiers modifiés ne sont pas affichés car le résultat a été tronqué.","codeCoverage":"Couverture du code","noCoverageReports":"Aucun rapport de couverture n’a été généré pour cet arbre de travail.","coverageBuild":"Compilation","coverageStatus":"État du rapport","coverageStatuses":{"PENDING":"En attente","READY":"Prêt","FAILED":"Échoué"},"overallCoverage":"Couverture globale","changedCoverage":"Couverture des modifications","generated":"Généré","viewReport":"Voir le rapport","loadingDiff":"Chargement des modifications…","binaryFileChanged":"Fichier binaire modifié","noTextChanges":"Aucune modification textuelle","diffTooLarge":"Le diff dépasse la limite d’affichage de 2 Mio","diffLimit":"Diff tronqué à 2 Mio.","sideBySide":"Côte à côte","overlap":"Superposer","imageTransparency":"Transparence de l’image","before":"Avant","after":"Après","noImageSide":"Aucune image de ce côté"},"mcpPresets":{"title":"Préréglages d’outils MCP","description":"Créez des ensembles réutilisables à privilèges minimaux pour les Plans, les Sessions et les clients MCP directs.","create":"Créer un préréglage","createTitle":"Créer un préréglage d’outils MCP","editTitle":"Modifier le préréglage d’outils MCP","dialogDescription":"Choisissez des outils explicites. La sélection d’un groupe inclut ses descendants actuels sans accorder automatiquement les outils ajoutés plus tard.","name":"Nom","optionalDescription":"Description (facultative)","icon":"Icône","availableForPlans":"Afficher pour les Plans","availableForSessions":"Afficher pour les Sessions","plans":"Plans","sessions":"Sessions","directOnly":"URL directe uniquement","tools":"Outils intégrés","searchTools":"Rechercher des outils intégrés…","noMatchingTools":"Aucun outil intégré ne correspond à cette recherche.","selectedToolCount":"{count, plural, one {# outil sélectionné} other {# outils sélectionnés}}","toolCount":"{count, plural, one {# outil} other {# outils}}","save":"Enregistrer le préréglage","loading":"Chargement des préréglages MCP…","noneAvailable":"Aucun préréglage MCP n’est disponible pour ce type d’exécution.","empty":"Aucun préréglage d’outils MCP n’a été créé.","copyUrl":"Copier l’URL du préréglage","edit":"Modifier le préréglage","delete":"Supprimer le préréglage","deleteTitle":"Supprimer le préréglage d’outils MCP ?","deleteDescription":"Supprimer {name} ? Les références des brouillons et workflows seront ignorées lors des prochaines exécutions."},"tools":{"title":"Outils","description":"Parcourez, configurez et exécutez les outils MCP intégrés et externes.","toolsTab":"Outils","auditTab":"Audit","auditTitle":"Audit des appels d’outils","auditDescription":"Consultez les derniers enregistrements ToolCallAudit expurgés. Les arguments sont représentés uniquement par des empreintes SHA-256.","auditRefresh":"Actualiser l’audit","auditClear":"Effacer l’audit","auditClearTitle":"Effacer l’audit des outils ?","auditClearDescription":"Supprimer tous les enregistrements d’audit terminés ? Les appels en cours seront conservés.","auditClearAction":"Supprimer les enregistrements d’audit","auditSearch":"Rechercher dans l’audit des outils","auditSearchPlaceholder":"Rechercher outils, appelants, sources, ID ou empreintes…","auditLoading":"Chargement de l’audit des outils…","auditEmpty":"Aucun appel d’outil n’a été audité.","auditNoMatches":"Aucun enregistrement d’audit ne correspond à la recherche.","auditStarted":"Début","auditFinished":"Fin","auditTool":"Outil","auditStatus":"État","auditSource":"Source","auditCaller":"Appelant","auditGroup":"Groupe","auditDuration":"Durée","auditCorrelationId":"ID de corrélation","auditArgumentsHash":"SHA-256 des arguments","auditId":"ID d’audit","auditSucceeded":"Réussi","auditFailed":"Échoué","auditRunning":"En cours","auditToolsPage":"Page des outils","auditWorkflow":"Workflow","connectTitle":"Connecter des clients externes","connectDescription":"D’autres clients MCP peuvent appeler tous les outils intégrés de ce serveur via Streamable HTTP.","toolApiToken":"Jeton de l’API des outils (facultatif)","toolApiTokenPlaceholder":"Saisissez TOOLS_API_TOKEN","toolApiTokenHelp":"Requis uniquement lorsque TOOLS_API_TOKEN est configuré sur le serveur. Il est conservé seulement dans la mémoire de cette page.","serverUrl":"URL du serveur","copyUrl":"Copier l’URL du serveur","clientConfig":"Configuration du client","clientConfigHelp":"À ajouter à la configuration MCP de Claude Code, Cursor ou de tout autre client Streamable HTTP.","copyConfig":"Copier la configuration","connectCopied":"Copié","connectCopyFailed":"Impossible de copier dans le presse-papiers.","connectWarning":"L’authentification est désactivée lorsque TOOLS_API_TOKEN n’est pas configuré. Si elle est activée, ne placez pas le jeton dans le contrôle de version ni dans les captures d’écran.","serverHost":"Hôte du serveur","customServerHost":"Hôte personnalisé","addServer":"Ajouter un serveur MCP","search":"Rechercher des outils","searchPlaceholder":"Rechercher des noms, descriptions ou serveurs…","serversTitle":"Serveurs MCP externes","serversDescription":"Gérez les fournisseurs HTTP en flux et SSE historiques.","loadingServers":"Chargement des serveurs MCP…","noServers":"Aucun serveur MCP externe n’est configuré.","name":"Nom","url":"Adresse URL","transport":"Mode de transport","prefix":"Préfixe du nom d’outil","actions":"Commandes","http":"HTTP (flux)","sse":"SSE (historique)","editServer":"Modifier {name}","delete":"Supprimer","deleteServer":"Supprimer {name}","confirmDelete":"Supprimer le serveur MCP ?","confirmDeleteDescription":"Supprimer {name} et ses en-têtes personnalisés enregistrés ?","catalogTitle":"Catalogue d’outils","catalogDescription":"Dépliez un outil, saisissez ses paramètres et examinez la réponse complète.","refresh":"Actualiser les outils","loadingTools":"Chargement des outils…","noMatchingTools":"Aucun outil ne correspond à cette recherche.","addServerTitle":"Ajouter un serveur MCP externe","editServerTitle":"Modifier le serveur MCP externe","serverDialogDescription":"Les données de connexion sont utilisées uniquement par le client MCP côté serveur.","prefixHelp":"Le préfixe est appliqué tel quel à l’affichage et à l’appel des outils.","headers":"En-têtes personnalisés","headersHelp":"Les valeurs sont stockées localement et ne sont jamais renvoyées au navigateur.","addHeader":"Ajouter un en-tête","noHeaders":"Aucun en-tête personnalisé.","headerName":"Nom de l’en-tête","headerValue":"Valeur de l’en-tête","keepHeaderValue":"Laisser vide pour conserver la valeur enregistrée","removeHeader":"Retirer l’en-tête","saveServer":"Enregistrer le serveur","toolCount":"{count} outils","tool":"Outil","toolDescription":"Présentation","expandTool":"Déplier {name}","collapseTool":"Replier {name}","noDescription":"Aucune description n’a été fournie.","readOnlyBadge":"Lecture seule","writeBadge":"Écriture","destructiveBadge":"Destructif","externalEffectBadge":"Effet externe","confirmWriteTitle":"Exécuter un outil d’écriture ?","confirmWriteDescription":"{name} peut modifier l’état de l’application ou d’un service externe. Vérifiez les arguments avant de continuer.","confirmDestructiveTitle":"Exécuter un outil destructif ?","confirmDestructiveDescription":"{name} peut supprimer ou écraser définitivement des données. Cette action peut être irrécupérable.","confirmRun":"Exécuter l’outil","confirmDestructiveAction":"Exécuter l’outil destructif","cancelRun":"Annuler","parameters":"Paramètres","noParameters":"Cet outil n’a aucun paramètre.","run":"Exécuter l’outil","running":"Exécution…","response":"Résultat","copyResponse":"Copier la réponse","copied":"Réponse copiée","copyFailed":"Impossible de copier la réponse.","noResponse":"Exécutez l’outil pour afficher sa réponse.","selectValue":"Choisir une valeur","unset":"Non défini","true":"Vrai","false":"Faux","jsonArguments":"Arguments (objet JSON)","invalidJson":"Saisissez un JSON valide.","invalidJsonObject":"Saisissez un objet JSON.","jsonObjectPlaceholder":"Saisissez des paires clé-valeur dans un objet JSON","jsonPlaceholder":"Saisissez du JSON, par exemple []"},"skills":{"title":"Compétences","description":"Gérez des paquets de compétences IA réutilisables dans la base, les clients, les agents et les dépôts.","manageGroups":"Gérer les groupes","settings":"Paramètres","addSkill":"Ajouter une compétence","syncAll":"Tout synchroniser","search":"Rechercher des compétences","searchPlaceholder":"Rechercher noms, descriptions, groupes, dépôts, agents ou chemins…","database":"Base de données","skillSource":"Source des compétences","databaseSkills":"Compétences de la base de données","databaseSkillsDescription":"Paquets de compétences canoniques stockés dans le plan de contrôle.","clientSkills":"Compétences du client","clientSkillsDescription":"Paquets de compétences détectés dans le client d’IA sélectionné.","loading":"Chargement des compétences…","name":"Nom","skillDescription":"Description","scope":"Portée","groups":"Groupes","files":"Fichiers","updated":"Mis à jour","global":"Global","project":"Projet","groupOnly":"Groupe uniquement","noSkills":"Aucune compétence ne correspond à la recherche.","agent":"Agent","location":"Emplacement","status":"État","tracked":"Suivi","inSync":"Synchronisé","toDatabase":"Vers la base","conflict":"Conflit","noClientSkills":"Aucune compétence trouvée pour ce client.","settingsTitle":"Paramètres des compétences","settingsDescription":"Choisissez les clients participants et la synchronisation automatique des groupes.","autoSync":"Synchroniser automatiquement les groupes projet","autoSyncHelp":"Maintient les groupes attribués dans tous les checkouts et worktrees.","enabledTools":"Clients IA activés","configured":"Configuré","configuredAgents":"{count} agents configurés","notDetected":"Non détecté","saveSettings":"Enregistrer les paramètres","skillNotFound":"Compétence introuvable.","loadingSkill":"Chargement de la compétence…","newSkill":"Nouvelle compétence","editorDescription":"Modifiez les métadonnées et tous les fichiers du paquet.","delete":"Supprimer","cancel":"Annuler","deleteSkillDescription":"Supprimer {name} de la base et ses copies gérées lors de la synchronisation ?","deleteSkill":"Supprimer la compétence ?","saveSkill":"Enregistrer la compétence","syncGlobally":"Synchroniser globalement","syncGloballyHelp":"Inclure cette compétence dans la synchronisation personnelle/globale.","noGroups":"Aucun groupe de compétences.","packageFiles":"Fichiers du paquet","addFiles":"Ajouter ou remplacer des fichiers","download":"Télécharger","removeFile":"Supprimer","rename":"Renommer","executable":"Exécutable","binaryFile":"Fichier binaire. Téléchargez-le ou remplacez-le pour le modifier.","selectFile":"Sélectionnez un fichier","duplicateFile":"Un fichier avec ce chemin existe déjà.","skillGroups":"Groupes de compétences","groupsDescription":"Regroupez les compétences projet et attribuez-les aux dépôts.","groupsTableDescription":"Groupes de compétences du projet, avec leurs compétences et dépôts associés.","addGroup":"Ajouter un groupe","loadingGroups":"Chargement des groupes…","skillsCount":"Compétences","repositoriesCount":"Dépôts","newGroup":"Nouveau groupe","newGroupDescription":"Créez le groupe, puis choisissez ses compétences et dépôts.","createGroup":"Créer le groupe","groupNotFound":"Groupe introuvable.","loadingGroup":"Chargement du groupe…","groupSettingsDescription":"Gérez les membres, les dépôts et le déploiement.","deleteGroupDescription":"Supprimer {name} et les copies inutiles aux autres groupes ?","deleteGroup":"Supprimer le groupe ?","syncGroup":"Synchroniser le groupe","saveGroup":"Enregistrer le groupe","groupSkills":"Compétences du groupe","searchSkills":"Rechercher des compétences…","groupRepositories":"Dépôts utilisant ce groupe","searchRepositories":"Rechercher des dépôts…","syncRunNotFound":"Synchronisation introuvable.","loadingSync":"Chargement de la synchronisation…","syncTitle":"Synchronisation des compétences","syncGroupName":"Synchronisation du groupe {name} dans ses dépôts.","syncAllDescription":"Rapprochement des compétences de base, personnelles et projet.","applySync":"Appliquer la synchronisation","skipPendingClients":"Ignorer les clients en attente","unknownAgent":"Agent inconnu","syncAgents":"État de synchronisation des agents","syncAgentsDescription":"État de connexion et de synchronisation de chaque agent participant.","connection":"Connexion","operation":"Opération","syncStatus":"État de synchronisation","syncChanges":"Modifications proposées","syncChangesDescription":"Vérifiez les modifications et résolvez les conflits avant d’appliquer cette synchronisation.","change":"Modification","resolution":"Résolution","newSharedLocation":"Nouvel emplacement partagé","chooseGroup":"Choisir un groupe","useDatabase":"Utiliser la base","useTarget":"Utiliser la copie client","deleteClientCopy":"Supprimer la copie client","editManually":"Modifier manuellement","compareAndResolve":"Comparer et résoudre","skip":"Ignorer","scanningAgents":"Analyse des clients activés…","noSyncChanges":"Aucune modification requise.","manualResolution":"Résolution manuelle","manualResolutionDescription":"Comparez les paquets complets et modifiez le résultat canonique, y compris les fichiers texte, binaires et exécutables.","startFromDatabase":"Partir de la base de données","startFromTarget":"Partir de la copie du client","databaseVersion":"Version de la base de données","targetVersion":"Version du client","resultVersion":"Résultat canonique","binaryPreview":"Fichier binaire ; comparez la taille et les métadonnées d’exécution.","missingFile":"Cette version ne contient pas le fichier sélectionné.","filePath":"Chemin du fichier","missingResultFile":"Ajoutez ce fichier au résultat ou sélectionnez un autre fichier du paquet.","useManualVersion":"Utiliser la version modifiée"},"builds":{"title":"Builds","description":"Configurez, lancez, inspectez, déployez et exportez les builds iOS des bases de code et worktrees.","build":"Builder","history":"Historique","buildScripts":"Scripts de build","status":"État","destination":"Destination","duration":"Durée","durationValue":"Durée {duration}","actionsLabel":"Actions","selectBuilds":"Sélectionner les builds","selectBuild":"Sélectionner le build {id}","selectDate":"Sélectionner tous les builds du {date}","deleteSelected":"Supprimer la sélection ({count})","deleteBuilds":"Supprimer les builds","deleteBuildsTitle":"Supprimer {count, plural, one {le build} other {les # builds}} ?","deleteBuildsDescription":"Les enregistrements et dossiers de build sélectionnés seront définitivement supprimés.","filterStatus":"Filtrer les builds par état","allStatuses":"Tous les états","loading":"Chargement des builds…","emptyTitle":"Aucun build","emptyDescription":"Lancez un build depuis un worktree pour créer le premier enregistrement immuable.","durationSeconds":"{count} secondes","artifactCount":"{count, plural, one {# artefact} other {# artefacts}}","viewBuild":"Afficher le build","loadMore":"Charger plus","newScript":"Nouveau script de build","noScripts":"Aucun script de build","noScriptsDescription":"Créez des hooks JavaScript réutilisables, puis autorisez-les pour certains dépôts.","defaultEnabled":"Activé par défaut","preBuild":"Avant le build","postBuild":"Après le build","timeoutSeconds":"Délai de {count} secondes","edit":"Modifier","deleteScript":"Supprimer le script de build","editScript":"Modifier le script de build","scriptDescription":"Les hooks ESM Node.js approuvés s’exécutent à la racine du worktree sélectionné avec un environnement minimal.","name":"Nom","preBuildScript":"JavaScript avant le build","postBuildScript":"JavaScript après le build","preBuildScriptHelp":"Exportez par défaut une fonction qui reçoit buildId, branch, destination, action et l’instantané des URL de télémétrie.","postBuildScriptHelp":"Exportez par défaut une fonction qui reçoit aussi buildFolder, failed, cancelled, errorCode, error et le même instantané des URL de télémétrie.","timeout":"Délai en secondes","failureBehavior":"Comportement en cas d’échec","enabledByDefault":"Présélectionner ce script pour les builds","save":"Enregistrer","cancel":"Annuler","startBuild":"Lancer le build","startBuildDescription":"Choisissez une configuration enregistrée et une destination. La commande s’exécute à la racine de ce worktree.","configuration":"Configuration","configurationInvalid":"La source, le schéma ou la configuration enregistrés ne sont pas disponibles dans ce worktree.","noConfigurations":"Créez une configuration de build iOS valide dans les réglages du dépôt avant de lancer un build.","reparse":"Analyser à nouveau","action":"Action","destinationType":"Type de destination","simulator":"Simulateur","physicalDevice":"Appareil physique","device":"Appareil","selectDevice":"Sélectionner un appareil","anySimulator":"N’importe quel simulateur iOS","anyPhysicalDevice":"N’importe quel appareil iOS physique","scripts":"Scripts de build","advancedSettings":"Réglages avancés","priorBuildForTesting":"Build précédent pour les tests","selectPriorBuildForTesting":"Sélectionner un build pour les tests compatible","noPriorBuildForTesting":"Exécutez d’abord un build pour les tests réussi avec cette configuration.","priorBuildSummary":"utilise le build pour les tests {id}","developmentTeam":"Équipe de développement","testPlan":"Plan de test","schemeDefaultTestPlan":"Valeur par défaut du schéma","packageResolution":"Résolution des paquets","disablePackageRepositoryCache":"Désactiver le cache du dépôt de paquets","signingStyle":"Style de signature","codeSignIdentity":"Identité de signature du code","provisioningProfileSpecifier":"Profil de provisionnement","productBundleIdentifier":"Identifiant du paquet produit","codeCoverage":"Activer la couverture du code","parseTestResults":"Analyser les résultats des tests après la compilation","allowProvisioningDeviceRegistration":"Autoriser l’enregistrement des appareils de provisionnement","parallelTesting":"Tests en parallèle","parallelTestingWorkers":"Workers de tests en parallèle","onlyTesting":"Tester uniquement","skipTesting":"Ignorer les tests","priorTestProductsPath":"Chemin des produits de test précédents","priorXctestrunPath":"Chemin xctestrun précédent","settingsEnabled":"Activé","settingsDisabled":"Désactivé","advancedSettingsNotCaptured":"Les réglages avancés n’ont pas été enregistrés pour ce build.","generateWorktreeCoverage":"Générer la couverture du code","startWorktreeCoverage":"Exécuter la couverture de l’arbre de travail","startWorktreeCoverageDescription":"Exécute les tests avec couverture et mesure les lignes exécutables modifiées dans la branche et l’arbre de travail.","startBuildFailed":"La compilation n’a pas pu être lancée.","parseTestResultsAction":"Analyser les résultats des tests","retryParseTestResults":"Réessayer l’analyse des tests","generateCoverageReport":"Générer le rapport de couverture","retryCoverageReport":"Réessayer le rapport de couverture","viewCoverageReport":"Voir le rapport de couverture","testResults":"Résultats des tests","testResultsFailed":"Les résultats des tests n’ont pas pu être analysés.","testTotal":"{count} tests","testPassed":"{count} réussis","testFailed":"{count} échoués","testSkipped":"{count} ignorés","testResultFilters":"Filtres de résultats des tests","testFilterAll":"Tous ({count})","testFilterPassed":"Réussis ({count})","testFilterFailed":"Échoués ({count})","testFilterSkipped":"Ignorés ({count})","testsWithoutSuite":"Tests sans suite","testsWithoutFile":"Tests sans fichier","expandTestSuite":"Développer la suite de tests {suite}","collapseTestSuite":"Réduire la suite de tests {suite}","expandTestFile":"Développer le fichier de tests {file}","collapseTestFile":"Réduire le fichier de tests {file}","testSuitePassed":"{passed} sur {total} réussis ({percent})","testStatus":"Résultat","testName":"Test","testSuite":"Suite de tests","testBundle":"Paquet","testDuration":"Durée","coverageReport":"Rapport de couverture du code","viewChangesWithCoverage":"Voir les modifications avec la couverture","loadingCoverageReport":"Chargement du rapport de couverture…","coverageReportNotFound":"Rapport de couverture introuvable","coverageReportNotFoundDescription":"Générez d’abord un rapport de couverture depuis la page de détails de la compilation.","backToBuild":"Retour à la compilation","overallCoverage":"Couverture globale","changedCoverage":"Couverture des modifications","coveredLines":"Lignes couvertes","executableLines":"Lignes exécutables","uncoveredLines":"Lignes non couvertes","changedFilesCoverage":"Couverture des fichiers modifiés","allCoverageFiles":"Tous les fichiers de couverture","expandCoverageFiles":"Développer tous les fichiers de couverture","collapseCoverageFiles":"Réduire tous les fichiers de couverture","searchCoverageFiles":"Rechercher des cibles, fichiers ou chemins","searchChangedCoverageFiles":"Rechercher des fichiers modifiés ou des chemins","sortCoverageFiles":"Trier les fichiers de couverture par {column}","coverageTarget":"Cible","coverageFile":"Fichier","coverage":"Couverture","changeType":"Modification","allowProvisioningUpdates":"Autoriser les mises à jour du provisionnement","buildSettingOverrides":"Remplacements de réglages de build autorisés (JSON)","commandPreview":"Aperçu de la commande","overridesInvalid":"Les remplacements de réglages de build doivent former un objet JSON.","advancedJsonInvalid":"Les réglages avancés doivent être au format JSON valide.","buildNotFound":"Build introuvable","buildNotFoundDescription":"Cet enregistrement de build n’existe pas ou n’est plus disponible.","backToBuilds":"Retour aux builds","buildId":"ID du build","deleteBuild":"Supprimer le build","deleteBuildTitle":"Supprimer ce build ?","deleteBuildDescription":"L’enregistrement et son dossier de build seront définitivement supprimés.","downloadArtifact":"Télécharger","downloadIpa":"Télécharger l’IPA","installOnDevice":"Installer sur l’appareil","installPreparing":"Préparation du téléchargement…","installRequiresHttps":"L’installation sans fil nécessite une adresse HTTPS publique. Ouvrez cette page en HTTPS ou définissez PUBLIC_BASE_URL.","installNotSupportedForAppStore":"Les builds App Store Connect ne peuvent pas être installés sans fil. Exportez plutôt avec Debugging, Release Testing ou Enterprise.","installMissingBundleIdentifier":"L’identifiant du bundle n’est pas disponible. Exportez à nouveau l’archive pour activer l’installation.","installOpenOnDevice":"Ouvrez cette page sur un iPhone ou un iPad pour installer.","installFailed":"Impossible de démarrer l’installation.","copyInstallLink":"Copier le lien d’installation","installLinkCopied":"Lien d’installation copié","ipaBundleIdentifier":"Identifiant du bundle","ipaBundleVersion":"Version","cancelBuild":"Annuler le build","rebuild":"Reconstruire","outOfDate":"Obsolète","configureBuilds":"Accédez aux réglages du dépôt pour configurer les builds","selectedDevices":"{count} appareils","selectRunDevices":"Appareils d’exécution","noCompatibleDevices":"Aucune destination connectée compatible n’est disponible.","run":"Exécuter","exportArchive":"Exporter l’archive","logs":"Journaux","expandLogs":"Développer les journaux","collapseLogs":"Réduire les journaux","noLogs":"Aucun événement de journal n’a été signalé.","followOutput":"Suivre la sortie","fitTerminal":"Ajuster le terminal","viewRawOutput":"Afficher la sortie brute","searchTerminal":"Rechercher dans le terminal","previousTerminalMatch":"Résultat précédent","nextTerminalMatch":"Résultat suivant","scrollLogsToTop":"Aller au début des journaux","scrollLogsToBottom":"Aller à la fin des journaux","commandSummary":"Résumé de la commande","copyCommand":"Copier le résumé de la commande","commandCopied":"Résumé de la commande copié","copyFailed":"Impossible de copier dans le presse-papiers.","noScriptExecutions":"Aucun script de build n’a été sélectionné.","overview":"Vue d’ensemble","scheme":"Schéma","head":"Révision","startedAt":"Début","finishedAt":"Fin","artifactDirectory":"Dossier du build","artifacts":"Artefacts","noArtifacts":"Aucun artefact n’a été capturé.","runsAndExports":"Exécutions et exports","archiveExport":"Export de l’archive","noRunsOrExports":"Ce build n’a pas encore été exécuté ni exporté.","exportArchiveDescription":"Exportez localement le fichier .xcarchive capturé sans le téléverser.","distributionMethod":"Méthode de distribution","exportMethod":{"DEBUGGING":"Débogage","RELEASE_TESTING":"Test de version","ENTERPRISE":"Entreprise","APP_STORE_CONNECT":"App Store Connect"},"selectTeam":"Sélectionnez une équipe","noTeams":"Aucune équipe de développement trouvée sur l’agent de compilation.","signingCertificate":"Certificat de signature","certificateAutomatic":"Choisi automatiquement","certificateMayNotMatch":"Peut ne pas correspondre aux profils sélectionnés","provisioningProfiles":"Profils de provisionnement","parseProvisioningProfiles":"Analyser le projet","reparseProvisioningProfiles":"Analyser à nouveau","parseProvisioningProfilesHelp":"Lisez les cibles signables du schéma sélectionné et associez les profils installés.","parseProvisioningProfilesEmpty":"Analysez le projet pour remplacer le JSON par un sélecteur de profil pour chaque app et extension.","noSigningRequirements":"Aucune cible d’app ou d’extension à signer n’a été trouvée.","selectSigningSourceFirst":"Sélectionnez d’abord une source Xcode, un schéma et une configuration.","selectProfile":"Sélectionnez un profil","profileMayNotMatch":"Peut ne pas correspondre à cet identifiant","manualBundleIdentifier":"Identifiant de bundle à ajouter","manualBundleIdentifierPlaceholder":"com.exemple.app.extension","manualBundleIdentifierHelp":"Ajoutez tout identifiant non détecté, puis choisissez parmi tous les profils disponibles.","addBundleIdentifier":"Ajouter l’identifiant","removeBundleIdentifier":"Supprimer {bundleId}","showAllProfiles":"Tout afficher","showMatching":"Afficher les correspondances","noMatchingProfiles":"Aucun profil installé ne correspond à ce bundle pour la méthode sélectionnée.","noArchiveBundles":"Aucun bundle signable trouvé dans l’archive.","profileExpired":"expiré","signingOptionsFailed":"Impossible de lire les options de signature depuis l’agent.","automatic":"Automatique","manual":"Manuel","autoExport":"Exporter automatiquement les archives réussies","exportWhenComplete":"Exporter à la fin","uploadSymbols":"Téléverser les symboles","manageBuildNumber":"Gérer la version et le numéro de build","internalTestFlightOnly":"TestFlight interne uniquement","stripSwiftSymbols":"Retirer les symboles Swift","thinning":"Allègement de l’app","iCloudEnvironment":"Environnement du conteneur iCloud","distributionBundleIdentifier":"Identifiant de bundle de distribution","localExportOnly":"Les exports sont enregistrés localement en IPA et ne sont jamais envoyés à App Store Connect.","signingAssetCoverageWarning":"Cette identité est installée sur {installed} des {total} agents compatibles. Les builds affectés ailleurs peuvent échouer à l’export.","iosApp":"App iOS","parseCheckout":"Copie utilisée pour l’analyse","parseCheckoutDescription":"Les configurations enregistrées sont partagées dans tout le dépôt. La découverte, la validation et l’état d’analyse utilisent la copie d’agent sélectionnée.","checkoutUnavailable":"indisponible","addIosProject":"Ajouter un projet d’app iOS","addIosProjectDescription":"Activez des configurations de build Xcode réutilisables pour chaque checkout et worktree de ce dépôt.","sharedProjectDescription":"Les définitions de projet et les scripts autorisés sont partagés par le dépôt. L’état d’analyse ci-dessous provient de ce checkout d’agent.","buildConfigurations":"Configurations de build","newConfiguration":"Nouvelle configuration","lastParsed":"Analysé : {value}","neverParsed":"Jamais analysé","stale":"métadonnées obsolètes","savedValueUnavailable":"valeur enregistrée indisponible","deleteConfiguration":"Supprimer la configuration de build","allowedScripts":"Scripts de build autorisés","createScriptsOnBuildsPage":"Créez des scripts réutilisables sur la page Builds, puis revenez ici pour les autoriser.","editConfiguration":"Modifier la configuration de build","configurationDescription":"Sélectionnez une source Xcode relative au dépôt et enregistrez son schéma, sa configuration, son action et ses réglages avancés facultatifs.","icon":"Icône","configurationIcons":{"none":"Aucune icône","apple":"Plateforme Apple","app-window":"Fenêtre d’app","archive":"Archive","beaker":"Expérience","box":"Boîte","bug":"Bogue","code":"Code","gauge":"Performances","hammer":"Compilation","layers":"Calques","package":"Paquet","play":"Exécution","rocket":"Publication","shield":"Sécurité","smartphone":"App mobile","sparkles":"Fonctionnalité","terminal":"Ligne de commande","test-tube":"Tests","wrench":"Outils"},"source":"Source Xcode","selectSource":"Sélectionner un projet, workspace ou Package.swift à la racine","loadingSources":"Recherche des sources…","defaultAction":"Action par défaut","advancedJson":"Réglages avancés normalisés (JSON)","statuses":{"QUEUED":"En attente","PREPARING":"Préparation","RUNNING":"En cours","SUCCEEDED":"Réussi","FAILED":"Échoué","CANCELLED":"Annulé"},"parseStatuses":{"UNPARSED":"Non analysé","PARSING":"Analyse en cours","VALID":"Valide","INVALID":"Non valide","ERROR":"Erreur"},"actions":{"BUILD":"Builder","TEST":"Tester","ANALYZE":"Analyser","ARCHIVE":"Archiver","BUILD_FOR_TESTING":"Builder pour les tests","TEST_WITHOUT_BUILDING":"Tester sans builder"},"failureBehaviors":{"FAIL_BUILD":"Faire échouer le build","CONTINUE":"Continuer avec un avertissement"}},"devices":{"title":"Appareils","description":"Enrôlez des iPhone et iPad, consultez leur historique de connexion et enregistrez les appareils approuvés auprès d’Apple.","export":"Exporter le TSV Apple","addDevice":"Ajouter un appareil","filterStatus":"Filtrer les appareils par état","allStatuses":"Tous les états","sort":"Trier les appareils","sortOption":{"NEWEST":"Enrôlement le plus récent","NAME":"Nom de l’appareil","LAST_SEEN":"Dernière activité"},"loading":"Chargement des appareils…","emptyTitle":"Aucun appareil enrôlé","emptyDescription":"Créez un profil d’enrôlement sur un iPhone ou un iPad pour recueillir son identifiant.","device":"Appareil","statusLabel":"État","hardware":"Produit","lastIp":"Dernière IP","enrolled":"Enrôlé","registered":"Enregistrement Apple","lastSeen":"Dernière activité","viewDevice":"Voir {name}","unavailable":"Indisponible","status":{"PENDING":"En attente","REGISTERING":"Enregistrement en cours","REGISTERED":"Enregistré","REGISTRATION_FAILED":"Échec de l’enregistrement","REJECTED":"Refusé"},"back":"Retour aux appareils","enrollTitle":"Enrôler un appareil iOS","enrollDescription":"Installez un profil signé temporaire pour transmettre en toute sécurité l’identifiant de développement de cet appareil.","httpsRequired":"L’enrôlement est désactivé car cette adresse n’utilise pas un HTTPS public. Utilisez un proxy inverse HTTPS publiquement approuvé ou configurez PUBLIC_BASE_URL.","collectedTitle":"Informations recueillies","collectUdid":"L’UDID de l’appareil utilisé pour l’enregistrement de développement Apple.","collectProduct":"Le modèle de produit Apple communiqué par iOS.","collectVersion":"La version d’iOS ou d’iPadOS installée.","collectIp":"L’adresse IP observée lors du téléchargement et de la réponse du profil, avec l’en-tête proxy qui l’a fournie.","deviceLabel":"Libellé de l’appareil","deviceLabelPlaceholder":"Par exemple, iPhone","deviceLabelHelp":"Choisissez un libellé reconnaissable. Le service de profils Apple ne peut pas lire le nom attribué dans Réglages.","consent":"J’accepte la collecte et la conservation de l’identifiant, du produit, de la version logicielle et des adresses IP observées à des fins de gestion de l’appareil.","downloadProfile":"Télécharger le profil d’enrôlement","notFound":"Cet appareil est introuvable.","rebuildWarning":"Cet appareil est enregistré auprès d’Apple. Les IPA existants ne l’autorisent pas automatiquement ; créez un nouveau profil d’approvisionnement et exportez un nouvel IPA.","openBuilds":"Ouvrir les Builds","configureAppleFirst":"Configurez et vérifiez les identifiants App Store Connect avant d’enregistrer cet appareil.","openSettings":"Ouvrir les réglages","generalInformation":"Informations générales","deviceModel":"Modèle de l’appareil","saveName":"Enregistrer le libellé","udid":"UDID de l’appareil","hideUdid":"Masquer l’UDID de l’appareil","revealUdid":"Afficher l’UDID de l’appareil","copyUdid":"Copier l’UDID de l’appareil","osVersion":"Version logicielle","appleDeviceId":"ID de ressource Apple","retryRegistration":"Réessayer l’enregistrement","registerWithApple":"Enregistrer auprès d’Apple","reject":"Refuser","delete":"Supprimer","ipHistory":"Historique IP","ipAddress":"Adresse IP","source":"Étape d’enrôlement","forwardedBy":"En-tête d’adresse","observed":"Observée","noIpHistory":"Aucune observation IP n’est conservée pour cet appareil.","ipSource":{"PROFILE_DOWNLOAD":"Téléchargement du profil","PROFILE_RESPONSE":"Réponse du profil"},"ipHeaderSource":{"CLOUDFLARE":"Cloudflare (en-tête CF-Connecting-IP)","FORWARDED":"Proxy (en-tête X-Forwarded-For)","REAL_IP":"Proxy d’origine (en-tête X-Real-IP)"},"enrollmentHistory":"Historique des enrôlements","noEnrollmentHistory":"Aucune tentative d’enrôlement n’est conservée pour cet appareil.","firmwareTitle":"Firmware iOS","firmwareDescription":"Versions du firmware et état actuel de signature fournis par IPSW.me.","firmwareLoading":"Chargement des informations du firmware…","firmwareLoadFailed":"Impossible de charger les informations du firmware : {error}","signingStatus":"État de signature","firmwareVersion":"Version","releaseDate":"Date de sortie","fileSize":"Taille","firmwareDownload":"Téléchargement","signed":"Signé","unsigned":"Non signé","downloadFirmware":"Télécharger","copyFirmwareUrl":"Copier l’URL de téléchargement pour iOS {version}","noFirmware":"Aucune information de firmware n’est disponible pour cet appareil.","created":"Créé","completed":"Terminé","failure":"Échec","enrollmentStatus":{"ISSUED":"Émis","DOWNLOADED":"Téléchargé","COMPLETED":"Terminé","EXPIRED":"Expiré","FAILED":"Échoué"},"registerTitle":"Enregistrer cet appareil auprès d’Apple ?","registerDescription":"L’appareil sera rapproché par UDID puis ajouté à votre compte Apple Developer si nécessaire. Cette action ne reconstruit pas d’IPA.","confirmRegister":"Enregistrer l’appareil","rejectTitle":"Refuser cet appareil ?","rejectDescription":"L’appareil reste dans l’historique local et ne peut pas être enregistré. Supprimez-le localement puis enrôlez-le à nouveau pour le reconsidérer.","confirmReject":"Refuser l’appareil","deleteTitle":"Supprimer cet appareil ?","deleteDescription":"Cette action supprime l’appareil local, les tentatives d’enrôlement et l’historique IP. L’enregistrement annuel d’Apple n’est pas supprimé.","confirmDelete":"Supprimer l’appareil"},"iosDeviceSettings":{"title":"Enrôlement des appareils iOS","description":"Configurez des profils d’enrôlement signés et l’enregistrement facultatif des appareils auprès d’Apple.","loading":"Chargement des réglages des appareils iOS…","unavailable":"Indisponible","profileTitle":"Profil d’enrôlement","profileDescription":"Ces valeurs identifient le profil temporaire affiché dans les Réglages iOS.","signerReady":"Signataire prêt","signerNotGenerated":"Signataire non généré","organizationName":"Nom de l’organisation","profileOrganizationHelp":"Utilisez un nom reconnaissable ; iOS affiche cette organisation pendant l’installation du profil d’enrôlement.","profileIdentifier":"Identifiant du profil","profileIdentifierHelp":"Utilisez un identifiant DNS inversé stable, par exemple com.example.ai-development-environment.enrollment.","signerCreated":"Créé le {date}","signerExpires":"Expire le {date}","unverifiedWarning":"Le certificat généré est autosigné ; iOS affiche donc le profil comme Non vérifié. Contrôlez l’organisation affichée avant de l’installer.","regenerateSigner":"Régénérer le signataire","regenerateTitle":"Régénérer le signataire du profil ?","regenerateDescription":"Les nouveaux profils utiliseront une autre clé privée et un autre certificat. Les profils déjà téléchargés pourront encore répondre jusqu’à l’expiration de leur jeton.","saveProfile":"Enregistrer le profil","profileSaved":"Les réglages du profil d’enrôlement ont été enregistrés.","signerRegenerated":"Un nouveau signataire de profil a été généré.","appleTitle":"API Appareils d’App Store Connect","appleDescription":"Utilisez une clé API ayant accès aux certificats, identifiants et profils. La clé privée reste sur le serveur et n’est jamais renvoyée au navigateur.","appleSetupHelp":"Dans Utilisateurs et accès → Intégrations, créez une clé API d’équipe ayant accès aux certificats, identifiants et profils. Copiez l’identifiant d’émetteur et l’identifiant de clé, puis téléchargez et conservez le fichier .p8 ; Apple ne le propose qu’une fois.","openApiKeys":"Ouvrir les clés API App Store Connect","verified":"Vérifié","notVerified":"Non vérifié","issuerId":"Identifiant d’émetteur","keyId":"Identifiant de clé","privateKey":"Clé privée .p8 App Store Connect","p8DropZone":"Zone de dépôt de la clé privée App Store Connect","p8DropHint":"Collez la clé ci-dessous, déposez un fichier .p8 ici ou choisissez un fichier.","chooseP8":"Choisir un fichier .p8 App Store Connect","privateKeyPlaceholder":"Collez ici la clé privée PKCS#8","privateKeyConfiguredPlaceholder":"Une clé privée est conservée. Laissez vide pour la garder.","privateKeyHelp":"Seules les clés ES256 PKCS#8 téléchargées depuis App Store Connect sont acceptées.","privateKeyKeepHelp":"Laissez ce champ vide pour garder la clé existante, ou fournissez une nouvelle clé .p8 pour la remplacer.","lastVerified":"Identifiants vérifiés le {date}","lastTestFailed":"Échec du test des identifiants le {date}","clear":"Effacer les identifiants","clearTitle":"Effacer les identifiants App Store Connect ?","clearDescription":"L’enregistrement des appareils sera désactivé jusqu’à l’enregistrement et la vérification d’une autre clé API.","retest":"Tester à nouveau","saveAndVerify":"Enregistrer et vérifier","appleSaved":"Les identifiants App Store Connect ont été enregistrés et vérifiés.","appleTestSucceeded":"Les identifiants App Store Connect ont été vérifiés avec succès.","appleCleared":"Les identifiants App Store Connect ont été effacés.","p8Invalid":"Choisissez un fichier .p8 valide contenant une clé privée PKCS#8.","p8ReadError":"Impossible de lire le fichier .p8 sélectionné.","p8Loaded":"{filename} a été chargé. Enregistrez et vérifiez pour utiliser cette clé."},"telemetry":{"consoleTitle":"Journaux de console","consoleDescription":"Consultez les sorties de console recueillies auprès des builds et des appareils.","analyticsTitle":"Événements analytiques","analyticsDescription":"Consultez les événements analytiques du produit et leurs paramètres dès leur arrivée.","unifiedTitle":"Vue unifiée","unifiedDescription":"Consultez les journaux et événements analytiques dans une seule chronologie en direct.","separator":"Séparateur","deleteSeparator":"Supprimer le séparateur {name}","settings":"Réglages","refresh":"Actualiser","search":"Rechercher dans la télémétrie","searchPlaceholder":"Rechercher du texte, un motif glob ou une expression régulière","searchMode":"Mode de recherche","searchModes":{"text":"Texte","glob":"Motif glob","regex":"Expression régulière"},"caseSensitive":"Respecter la casse","filters":"Filtres","columnsAction":"Colonnes","removeColumn":"Retirer la colonne {column}","export":"Exporter","edit":"Modifier","done":"Terminé","on":"activé","off":"désactivé","allCollection":"Tout","consoleCollection":"Journaux","analyticsCollection":"Analytique","count":"{matching} sur {total}","allResultsSelected":"Toutes les lignes correspondantes sont sélectionnées","selectedCount":"{count} sélectionnées","clearSelected":"Effacer la sélection","clearAll":"Tout effacer","confirmClearRecords":"Effacer les enregistrements","confirmClearWithSeparators":"Effacer avec les séparateurs","clearBeforeSeparator":"Effacer avant le dernier séparateur","confirmClearBefore":"Confirmer l’effacement avant le séparateur","cancel":"Annuler","selectAll":"Sélectionner toutes les lignes correspondantes","expand":"Développer la ligne","collapse":"Réduire la ligne","selectRow":"Sélectionner la ligne","selectDay":"Sélectionner toutes les lignes du {day}","selectSeparator":"Sélectionner les lignes au-dessus de {name}","loading":"Chargement de la télémétrie…","empty":"Aucune télémétrie correspondante.","loadMore":"Charger davantage","highlight":"Surligner","clearHighlight":"Retirer le surlignage","advancedFilters":"Filtres avancés","advancedFiltersDescription":"Combinez des conditions réutilisables entre les champs standard et les chemins de paramètres.","match":"Correspondance","allConditions":"Toutes les conditions","anyCondition":"N’importe quelle condition","filterField":"Champ de filtre","operator":"Opérateur de comparaison","removeCondition":"Retirer la condition","filterValue":"Valeur","appliesTo":"S’applique à","console":"Journaux","analytics":"Analytique","addCondition":"Ajouter une condition","savedFilters":"Filtres enregistrés","noSavedFilters":"Aucun filtre enregistré.","load":"Charger","delete":"Supprimer","filterName":"Nom du filtre","saveFilter":"Enregistrer le filtre","updateFilter":"Mettre à jour le filtre","editSavedFilter":"Modifier {name}","applyFilters":"Appliquer les filtres","clearFilters":"Effacer les filtres","manageColumns":"Gérer les colonnes","manageColumnsDescription":"Choisissez, ordonnez, réinitialisez et enregistrez les colonnes utilisées par cette vue.","availableColumns":"Colonnes disponibles","resetColumns":"Réinitialiser les colonnes","columnPresets":"Préréglages de colonnes","noColumnPresets":"Aucun préréglage de colonnes.","default":"Par défaut","setDefault":"Définir par défaut","presetName":"Nom du préréglage","setAsDefault":"Définir par défaut","savePreset":"Enregistrer le préréglage","updatePreset":"Mettre à jour le préréglage","editPreset":"Modifier {name}","saveAs":"Enregistrer sous","applyColumns":"Appliquer les colonnes","telemetrySettings":"Réglages d’observabilité","apiHelp":"Aide sur l’API","consoleApiHelpTitle":"Envoyer des journaux de console","analyticsApiHelpTitle":"Envoyer des événements analytiques","apiHelpDescription":"Consultez le contrat d’ingestion REST et copiez une référence Markdown prête à l’emploi.","copyMarkdownDocs":"Copier la documentation Markdown","markdownDocsCopied":"Markdown copié","settingsDescription":"Configurez les origines d’ingestion détectées et remplacées, communes à toutes les vues.","localBaseUrl":"URL de base locale","remoteBaseUrl":"URL de base distante","override":"Remplacement","detected":"Détectée : {value}","effective":"Effective : {value}","localConsoleEndpoint":"Point d’entrée local des journaux","localAnalyticsEndpoint":"Point d’entrée local de l’analytique","remoteConsoleEndpoint":"Point d’entrée distant des journaux","remoteAnalyticsEndpoint":"Point d’entrée distant de l’analytique","copyEndpoint":"Copier {label}","clearValues":"Effacer les valeurs","noValues":"Aucune valeur","copyColumnValue":"Copier {label} : valeur","copyValue":"Copier la valeur","filterByValue":"Filtrer par valeur","copyJsonDictionary":"Copier le dictionnaire JSON","copyPathValues":"Copier les paires chemin-valeur","copyParameterValue":"Copier {key} : valeur","addColumn":"Ajouter la colonne {key}","filterParameter":"Filtrer par {key}","saveSettings":"Enregistrer les réglages","addSeparator":"Ajouter un séparateur","addSeparatorDescription":"Insérez une limite partagée dans la chronologie. Le nom est facultatif.","optionalName":"Nom facultatif","exportTitle":"Exporter la télémétrie","exportSelectedDescription":"Exportez les {count} lignes sélectionnées.","exportAllDescription":"Exportez toutes les lignes correspondant à la recherche et aux filtres actuels.","format":"Format du fichier","exportFields":"Champs","exportFailed":"L’exportation a échoué. Réessayez.","columns":{"time":"Heure","source":"Provenance","level":"Niveau","category":"Catégorie","message":"Contenu","buildId":"ID du build","sessionId":"ID de session","deviceIp":"IP de l’appareil","receivedAt":"Reçu","attributes":"Attributs","kind":"Type","levelKind":"Niveau / Type","name":"Nom de l’événement","screenName":"Nom de l’écran","parameters":"Paramètres","defaultParameters":"Paramètres par défaut","additionalParameters":"Paramètres supplémentaires","detail":"Détails","attribute":"Attribut","defaultParameter":"Valeur par défaut","additionalParameter":"Valeur supplémentaire"},"operators":{"CONTAINS":"contient","DOES_NOT_CONTAIN":"ne contient pas","IS":"est égal à","IS_NOT":"n’est pas égal à","MATCHES_GLOB":"correspond au motif glob","MATCHES_REGEX":"correspond à l’expression régulière","NO_REGEX_MATCH":"ne correspond pas à l’expression régulière","IS_EMPTY":"est vide","IS_NOT_EMPTY":"n’est pas vide"}},"provisioningProfiles":{"title":"Profils de provisionnement","description":"Inspectez, synchronisez, importez et supprimez les ressources de signature Apple sur les agents et le portail Apple Developer.","refresh":"Actualiser l’inventaire","refreshProgress":"Actualisation de l’inventaire : {complete} sur {total} agents terminés.","noRefreshAgents":"Aucun agent compatible avec la signature n’est disponible pour l’actualisation.","refreshStatus":{"QUEUED":"En attente","RUNNING":"Analyse","SUCCEEDED":"Terminé","FAILED":"Échec","CANCELLED":"Annulé","TIMED_OUT":"Délai dépassé"},"agents":"Agents cibles","agentsDescription":"Les anciens agents restent visibles, mais doivent être mis à jour pour recevoir des opérations de signature.","unsupported":"Non pris en charge","uploadProfile":"Installer un profil","uploadProfileDescription":"Installe un fichier .mobileprovision sur tous les agents sélectionnés.","chooseMobileprovision":"Choisir .mobileprovision","importIdentity":"Importer une identité de signature","importIdentityDescription":"Transmet un .p12 chiffré via des autorisations à usage unique et l’importe pour codesign.","passphrase":"Mot de passe du .p12","chooseP12":"Choisir le .p12 chiffré","localProfiles":"Profils locaux","localCertificates":"Identités locales","applePortal":"Portail Apple","profilesDescription":"Les profils sont regroupés entre agents par UUID et empreinte de contenu.","deleteExpired":"Supprimer les expirés","deleteExpiredDescription":"Supprimer tous les profils locaux expirés des agents sélectionnés ?","name":"Nom","bundleId":"ID du bundle","type":"Type","team":"Équipe","devices":"Appareils","expires":"Expiration","installedAgents":"Agents installés","expired":"Expiré","syncMissing":"Synchroniser les manquants","viewProfile":"Voir les détails de {name}","download":"Télécharger le profil","delete":"Supprimer","deleteProfile":"Supprimer le profil ?","deleteProfileDescription":"Supprime ce profil de tous les agents indiqués. Xcode peut retélécharger les profils gérés.","fingerprints":"Empreintes","privateKey":"Clé privée","available":"Disponible","missing":"Manquante","deleteIdentity":"Supprimer l’identité ?","deleteIdentityDescription":"Supprime cette identité et sa clé privée du trousseau de connexion de chaque agent.","portalProfiles":"Profils du portail","portalCertificates":"Certificats du portail","createPortalProfile":"Créer un profil du portail","createPortalProfileDescription":"Crée un profil avec un ID de bundle, un certificat et les appareils inscrits applicables. Aucune clé privée n’est générée.","profileName":"Nom du profil","selectBundleId":"Choisir l’ID du bundle","selectCertificate":"Choisir le certificat","create":"Créer","confirmPortalDelete":"Confirmer la modification Apple","portalDeleteDescription":"Cette action modifie immédiatement le compte Apple Developer et peut interrompre la signature sur d’autres machines.","none":"Aucun élément.","operations":"Opérations récentes","certificatesDescription":"Identités de signature regroupées par empreinte de certificat sur les agents.","noLocalProfiles":"Aucun profil de provisionnement local trouvé.","noLocalCertificates":"Aucune identité de signature locale trouvée.","loadingPortal":"Chargement des ressources Apple Developer…","loadingProfile":"Chargement du profil de provisionnement…","profileNotFound":"Ce profil de provisionnement n’est plus installé sur un agent.","profileDetails":"Détails du profil","platforms":"Plateformes","created":"Créé","acceptedCertificates":"Empreintes de certificats acceptées","provisionedDevices":"Appareils provisionnés","provisionedDevicesDescription":"Ce profil contient {count} identifiants d’appareil.","deviceListPendingRefresh":"Actualisez l’inventaire de signature pour charger les identifiants stockés dans ce profil.","noProvisionedDevices":"Ce profil de distribution n’est pas limité à des appareils individuels.","device":"Appareil","udid":"UDID de l’appareil","status":"État","unknownDevice":"Non inscrit dans cette application"},"apnsDevices":{"title":"Appareils APNs","description":"Inscriptions de jetons d’apps et MDM disponibles pour le ciblage.","loading":"Chargement des appareils APNs…","empty":"Aucune app n’a encore inscrit de jeton APNs.","device":"Appareil / app","topic":"Sujet","environment":"Environnement","pushTypes":"Types push","token":"Jeton masqué","status":"État","lastRegistration":"Dernière inscription","lastSend":"Dernier envoi","rename":"Renommer","renameDescription":"Choisissez un libellé facile à reconnaître.","displayName":"Nom affiché","save":"Enregistrer","activate":"Activer","deactivate":"Désactiver","delete":"Supprimer","deleteTitle":"Supprimer l’inscription APNs ?","deleteDescription":"Supprimer ce jeton et le détacher de l’historique conservé ?","apiHelp":"Aide API","apiHelpTitle":"Inscrire un appareil APNs","apiHelpDescription":"Envoyez du JSON strict au point public. Les jetons peuvent être HEX ou Base64 ; MDM exige aussi pushMagic."},"pushSettings":{"title":"Notifications push","tokenAuthentication":"Authentification par jeton (.p8)","tokenDescription":"Recommandée pour les apps, Live Activities, VoIP et les types hors MDM.","tokenSetupHelp":"Créez une clé avec le service Apple Push Notification (APNs) activé, copiez son ID de clé, puis téléchargez et conservez le fichier .p8 ; Apple ne le propose qu’une fois.","createTokenKey":"Créer une clé APNs","configured":"Configuré","notConfigured":"Non configuré","teamId":"ID d’équipe","keyId":"ID de clé","teamIdHelp":"Copiez l’ID d’équipe depuis les détails de votre adhésion Apple Developer.","openMembership":"Ouvrir les détails de l’adhésion","chooseP8":"Déposer ou choisir la clé APNs .p8","replaceP8":"Déposer un nouveau .p8 pour renouveler la clé","p8Ready":".p8 prêt à enregistrer","remove":"Supprimer","removeToken":"Supprimer la clé APNs ?","removeTokenDescription":"Les envois par jeton s’arrêteront jusqu’à la configuration d’un nouveau .p8.","save":"Enregistrer","certificateAuthentication":"Authentification par certificat (.p12)","certificateDescription":"Plusieurs certificats liés à un sujet sont acceptés et sont requis pour MDM.","certificateSetupHelp":"Créez le certificat push approprié, installez-le avec sa clé privée dans Trousseaux d’accès, puis exportez les deux dans un fichier .p12 protégé par mot de passe. Utilisez le sujet du certificat (l’identifiant de bundle de l’app ou le sujet MDM) et sélectionnez son environnement de test ou de production.","createCertificate":"Créer un certificat APNs","name":"Nom de l’accès","topic":"Sujet","environment":"Environnement","chooseP12":"Choisir le .p12 chiffré","p12Ready":".p12 prêt à enregistrer","passphrase":"Mot de passe du .p12","addCertificate":"Ajouter le certificat","expires":"Expire le {date}","lastTested":"Dernier test le {date}","retest":"Tester à nouveau","removeCertificate":"Supprimer le certificat APNs ?","removeCertificateDescription":"Les envois utilisant ce certificat échoueront après sa suppression."},"pushNotifications":{"title":"Notifications push","description":"Composez, validez, ciblez, mettez en file et inspectez les notifications Apple.","editor":"Éditeur de notification","editorDescription":"La forme du payload, les en-têtes, les limites et les appareils éligibles évoluent avec le type push.","presetName":"Nom du préréglage","savePreset":"Enregistrer l’actuel","presetSaved":"Préréglage enregistré.","content":"Contenu","headers":"En-têtes","advanced":"aps avancé","specialized":"Spécialisé","pushType":"Type push","titleField":"Titre","subtitle":"Sous-titre","body":"Corps","badge":"Badge","sound":"Son","category":"Catégorie","threadId":"ID du fil","contentAvailable":"Contenu disponible","mutableContent":"Contenu modifiable","criticalSound":"Son critique","soundVolume":"Volume","topic":"Sujet APNs","priority":"Priorité","apnsId":"ID APNs","expiration":"Expiration","collapseId":"ID de regroupement","certificateCredential":"Certificat","selectCredential":"Choisir un certificat","titleLocKey":"Clé locale du titre","titleLocArgs":"Arguments du titre","subtitleLocKey":"Clé locale du sous-titre","subtitleLocArgs":"Arguments du sous-titre","bodyLocKey":"Clé locale du corps","bodyLocArgs":"Arguments du corps","launchImage":"Image de lancement","summaryArg":"Argument de résumé","summaryArgCount":"Nombre d’arguments","targetContentId":"ID du contenu cible","interruptionLevel":"Niveau d’interruption","relevanceScore":"Score de pertinence","customJson":"JSON racine personnalisé","timestamp":"Horodatage","event":"Événement","attributesType":"Type d’attributs","contentState":"JSON de l’état","attributes":"JSON des attributs","staleDate":"Date d’obsolescence","dismissalDate":"Date de retrait","inputPushToken":"Demander un jeton push d’entrée","mdmHelp":"MDM utilise le certificat choisi et le PushMagic de chaque inscription. Son payload contient uniquement mdm, sans dictionnaire aps.","specializedHelp":"Utilisez le JSON racine personnalisé pour le payload {type} ; les en-têtes et limites APNs restent validés.","payloadPreview":"Aperçu JSON en direct","recipients":"Destinataires","directDevices":"Jetons directs","directToken":"Jeton Live Activity ponctuel","liveActivityToken":"Jeton push Live Activity","allEligibleDevices":"Tous les appareils éligibles ({count})","selectedDevices":"{count} appareils sélectionnés","searchDevices":"Rechercher des appareils…","noEligibleDevices":"Aucune inscription active compatible.","saveDraft":"Enregistrer le brouillon","draftSaved":"Brouillon enregistré dans l’historique.","send":"Envoyer","queued":"Lot push mis en file.","broadcastChannels":"Canaux de diffusion Live Activity","broadcastDescription":"La politique de stockage est immuable après création.","bundleId":"ID du bundle","noStorage":"Sans stockage","mostRecent":"Message le plus récent","createChannel":"Créer le canal","deleteChannel":"Supprimer le canal ?","deleteChannelDescription":"Supprime ce canal ; les préréglages et l’historique conservent seulement son identifiant.","delete":"Supprimer","history":"Historique","presets":"Préréglages","created":"Créé","deliveryMode":"Livraison","result":"Réussites / échecs","status":"État","payload":"Charge utile","attempts":"tentatives","load":"Charger dans l’éditeur","saveAsPreset":"Enregistrer comme préréglage","presetFromHistory":"Historique","resend":"Renvoyer","deleteHistory":"Supprimer l’élément ?","deleteHistoryDescription":"Supprime ce lot, son payload et les résultats.","clearHistory":"Effacer l’historique","clearHistoryDescription":"Supprimer tous les envois terminés et brouillons ? Les lots actifs sont conservés.","name":"Nom","updated":"Mis à jour","loadEdit":"Charger / modifier","deletePreset":"Supprimer le préréglage ?","deletePresetDescription":"Supprime ce payload réutilisable et ses en-têtes.","historyDescription":"Lots envoyés, brouillons et résultats APNs par destinataire.","presetsDescription":"Contenu et en-têtes réutilisables ; les destinataires sont choisis à l’envoi.","noHistory":"Aucun historique de notification push.","noPresets":"Aucun préréglage de notification push enregistré."},"status":{"online":"En ligne","offline":"Hors ligne","queued":"En file","running":"En cours","succeeded":"Réussie","failed":"Échouée","cancelled":"Annulée","timed_out":"Délai dépassé"},"commands":{"title":"Commands","description":"Create reusable shell commands and inspect their durable runs.","newCommand":"New command","runCustom":"Exécuter une commande personnalisée","customCommandDescription":"Exécutez une commande shell ponctuelle sans enregistrer de définition réutilisable.","customCommandPlaceholder":"Saisissez une commande ou un script shell","customCommandWarning":"La commande s’exécute avec toutes les autorisations du compte agent sélectionné et reste conservée dans l’historique immuable de cette exécution.","runIn":"Exécuter dans","running":"Exécution…","editCommand":"Edit command","editorDescription":"Saved commands run with the full permissions of the selected agent account.","runs":"Runs","definitions":"Definitions","search":"Search commands","active":"Active","archived":"Archived","all":"All","done":"Done","edit":"Edit","refresh":"Refresh","selected":"{count, plural, one {# run selected} other {# runs selected}}","archive":"Archive","restore":"Restore","delete":"Delete","cancel":"Cancel","selectAll":"Select all completed runs","selectDay":"Sélectionner les exécutions terminées du {day}","number":"Run","command":"Command","status":"Status","agent":"Agent","worktree":"Worktree","started":"Started","finished":"Finished","home":"Agent home","agentHome":"Agent home directory","terminate":"Terminate","rerun":"Rerun","run":"Run","noRuns":"No command runs match this view.","noDescription":"No description","quickAction":"Quick action","deleteRunsTitle":"Delete command runs?","deleteRunsDescription":"Completed runs and all retained terminal output will be permanently deleted.","name":"Name","commandDescription":"Description","script":"Shell script","scriptHelp":"The script runs through the agent user\'s non-interactive login shell. Interactive input and PTY applications are not supported.","target":"Target","scope":"Target scope","anyAgentHome":"Any agent home","specificAgentHome":"Specific agent home","anyWorktree":"Any worktree","repositoryWorktree":"Worktree in a repository","selectAgent":"Select an agent","selectRepository":"Select a repository","repository":"Repository","restart":"Restart","restartPolicy":"Restart policy","restartLimit":"Failed restart limit","restartHelp":"Attempts that run for at least one minute reset the burst counter before their next exit is evaluated.","never":"Never","onFailure":"On failure","always":"Always","unlimited":"Unlimited restarts","notifications":"Notifications","enableNotifications":"Notifier à la fin de cette commande","notificationsHelp":"Les canaux de diffusion se configurent sur la page Notifications. Désactivez cette option pour les commandes qui ne nécessitent pas d’alerte de fin.","enableQuickAction":"Show this command as a quick action","icon":"Icon","style":"Button style","defaultStyle":"Default","outlineStyle":"Outline","secondaryStyle":"Secondary","destructiveStyle":"Destructive","save":"Save","saving":"Saving…","runNotFound":"Command run not found.","runNumber":"Command run #{number}","runError":"Command failed","nextRestart":"Next restart","overview":"Vue d’ensemble","timing":"Timing","duration":"Durée","terminalOutput":"Terminal output","noOutput":"Aucune sortie n’a été signalée.","followOutput":"Follow output","fitTerminal":"Fit terminal","viewRawOutput":"Afficher la sortie brute","searchTerminal":"Rechercher dans le terminal","previousTerminalMatch":"Résultat précédent","nextTerminalMatch":"Résultat suivant","attempts":"Attempts","result":"Result","snapshot":"Immutable command snapshot","copyCommand":"Copier","commandCopied":"Copié","copyFailed":"Impossible de copier la commande. Sélectionnez-la et copiez-la manuellement.","runCommand":"Exécuter {name}","chooseAgentTarget":"Choisissez le dossier d’accueil précis de l’agent où cette commande sera exécutée.","chooseWorktreeTarget":"Choisissez l’arbre de travail précis où cette commande sera exécutée.","upgradeAgent":"Mettre à niveau l’agent","upgradeAgentTitle":"Mettez cet agent à niveau pour exécuter les commandes enregistrées","upgradeAgentDescription":"Mettez cet agent à niveau avant de lancer des commandes enregistrées.","noEligibleTargets":"Aucune cible admissible n’est disponible.","noEligibleCommands":"Aucune commande admissible.","view":"Afficher","manage":"Gérer","recentRuns":"Exécutions récentes","resourceDescriptionAgent":"Commandes enregistrées admissibles et exécutions récentes pour cet agent.","resourceDescriptionWorktree":"Commandes enregistrées admissibles et exécutions récentes pour cet arbre de travail.","commandQuickActions":"Actions rapides des commandes","agentQuickActionsDescription":"Commandes enregistrées du dossier d’accueil disponibles sur cet agent.","statusQueued":"En attente","statusRunning":"En cours","statusRestarting":"Redémarrage","statusCancelling":"Annulation","statusSucceeded":"Réussie","statusFailed":"Échouée","statusCancelled":"Annulée","statusTimedOut":"Délai dépassé","originManual":"Manuelle","originQuickAction":"Action rapide","originWorkflow":"Flux de travail","originRerun":"Réexécution","attemptDivider":"Tentative {number}","exitCode":"Sortie {code}","targetUnavailable":"Cible indisponible"},"costs":{"title":"Coûts","description":"Prix des modèles utilisés pour estimer le coût des plans et des sessions.","sourceTitle":"Catalogue de prix","sourceDescription":"D’où proviennent les prix des modèles. Laissez le champ vide pour utiliser le catalogue par défaut. Les prix sont actualisés automatiquement une fois par jour.","catalogUrl":"URL des coûts de modèles","save":"Enregistrer","useDefault":"Utiliser la valeur par défaut","fetchLatest":"Récupérer les dernières données","lastFetched":"Dernière récupération","never":"Jamais","modelCount":"{count, plural, =0 {Aucun modèle} one {# modèle} other {# modèles}}","customSource":"Source personnalisée","defaultSource":"Source par défaut","staleCatalog":"Actualisation à faire","lastFetchFailed":"La dernière récupération a échoué : {error}","modelsTitle":"Prix des modèles","modelsDescription":"Prix par million de tokens, tels que publiés par le catalogue.","searchModels":"Rechercher des modèles","model":"Modèle","provider":"Fournisseur","inputPrice":"Entrée / MTok","outputPrice":"Sortie / MTok","cacheReadPrice":"Lecture de cache / MTok","cacheWritePrice":"Écriture de cache / MTok","contextWindow":"Contexte","noModels":"Aucun modèle correspondant n’a été trouvé.","showingCount":"{shown} sur {total} affichés","sortBy":"Trier par {column}","loadingMore":"Chargement…"},"diffView":{"truncated":"Différence tronquée à 2 Mio.","binary":"Fichier binaire modifié","empty":"Aucune modification de texte","largeDiff":"Cette différence compte {count} lignes et n\'a pas été affichée.","renderAnyway":"L\'afficher quand même","addComment":"Commenter cette ligne","noNewline":"Pas de saut de ligne en fin de fichier","sideBySide":"Côte à côte","overlap":"Superposition","transparency":"Transparence de l\'image","difference":"Différence","sensitivity":"Sensibilité de la différence","differenceColor":"Couleur de la différence","differenceColorRed":"Rouge","differenceColorGreen":"Vert","differenceColorWhite":"Rouge sur blanc atténué","differenceSummary":"{percent} % des pixels diffèrent","comparingPixels":"Comparaison des pixels…","differenceNeedsBothSides":"Les deux révisions sont nécessaires pour comparer les pixels","differenceFailed":"Ces images n’ont pas pu être comparées","imagesIdentical":"Aucun pixel ne diffère","before":"Avant","after":"Après","missingImage":"Aucune image de ce côté"},"diffs":{"title":"Modifications","description":"Passez en revue chaque modification d\'un arbre de travail, couverture affichée sur le code.","loading":"Chargement des modifications…","loadingDiff":"Chargement de la différence…","loadingCoverage":"Chargement de la couverture…","refresh":"Actualiser","files":"Fichiers","selectWorktree":"Choisissez un arbre de travail","searchWorktrees":"Rechercher des arbres de travail…","noWorktrees":"Aucun arbre de travail trouvé","selectAWorktree":"Choisissez un arbre de travail pour examiner ses modifications.","selectAFile":"Choisissez un fichier pour voir sa différence.","searchFiles":"Rechercher des fichiers","searchFilesPlaceholder":"Filtrer par chemin ou module…","sortFiles":"Trier les fichiers par","sortAscending":"Tri croissant","sortDescending":"Tri décroissant","fileCount":"{count, plural, one {# fichier} other {# fichiers}}","fileListTruncated":"liste tronquée","noFiles":"Rien n\'a changé dans cette portée.","noMatchingFiles":"Aucun fichier ne correspond à ce filtre.","noTextChanges":"Aucune modification de texte","binaryFile":"Fichier binaire modifié","diffTooLarge":"Cette différence dépasse la limite d\'affichage.","commits":"Validations","noCommits":"Cette branche n\'a aucune validation au-delà de sa base.","unifiedView":"Vue unifiée","splitView":"Vue côte à côte","toggleWrap":"Basculer le retour à la ligne","linkedPullRequest":"Demande de tirage n° {number} : {title}","selectCoverageReport":"Rapport de couverture","noCoverageOverlay":"Aucune superposition de couverture","coverageStale":"Mesuré sur une autre révision.","coverageOverall":"{percent} global","coverageChanged":"{percent} modifié","scope":{"STAGED":"Indexés","UNSTAGED":"Non indexés","UNTRACKED":"Non suivis","BRANCH":"Branche","COMMIT":"Validations"},"fileSort":{"name":"Nom","module":"Module","coverage":"Couverture","additions":"Ajouts","deletions":"Suppressions","changeType":"Type de modification"}}}')}];
|
|
1
|
+
module.exports=[800675,(a,b,c)=>{b.exports=JSON.parse('{"metadata":{"title":"AI Development Environment","description":"Un environnement de développement axé sur l’intelligence artificielle."},"common":{"cancel":"Annuler","continue":"Continuer","cannotBeUndone":"Cette action est irréversible."},"shell":{"productName":"AI Development Environment","dashboard":"Tableau de bord","ai":"IA","navigation":"Navigation","breadcrumbLabel":"Fil d’Ariane","navigationDescription":"Navigation principale d’AI Development Environment.","actionCenter":"Centre d’actions","notifications":"Notifications","notificationsDescription":"Mises à jour et alertes de notification.","showNavigation":"Afficher la navigation","hideNavigation":"Masquer la navigation","closeNavigation":"Fermer la navigation","showNotifications":"Afficher les notifications","hideNotifications":"Masquer les notifications","closeNotifications":"Fermer les notifications","codebases":"Bases de code","worktrees":"Arbres de travail","buildData":"Données de build","builds":"Builds","workflows":"Workflows","commands":"Commandes","provisioningProfiles":"Profils de provisionnement","devices":"Appareils","pushNotifications":"Notifications push","agents":"Agents","usage":"Utilisation","github":"GitHub","pullRequests":"Demandes de tirage","actions":"Actions","webhooks":"Webhooks","comments":"Commentaires","actionsCache":"Cache des Actions","jira":"Jira","tickets":"Tickets","cache":"Cache","system":"Système","polling":"Interrogation","skills":"Compétences","tools":"Outils","debugging":"Débogage","consoleLogs":"Journaux de console","analyticsEvents":"Événements analytiques","unifiedEvents":"Vue unifiée","plans":"Plans","sessions":"Sessions","drafts":"Brouillons","credentials":"Identifiants","settings":"Paramètres","costs":"Coûts","newWorkflow":"Nouveau workflow","newCommand":"Nouvelle commande","newRun":"Nouvelle exécution","enrollDevice":"Inscrire un appareil","skillGroups":"Groupes de compétences","coverage":"Couverture","edit":"Modifier","enroll":"Inscrire","entries":"Entrées","groups":"Groupes","new":"Nouveau","repositories":"Dépôts","runs":"Exécutions","sync":"Synchronisation","changes":"Modifications"},"globalSearch":{"title":"Rechercher dans l’application","description":"Recherchez des pages, des ressources de développement et l’activité récente.","open":"Ouvrir la recherche globale","button":"Rechercher","placeholder":"Rechercher pages, tickets, branches, builds…","loading":"Recherche…","error":"Impossible de rechercher les ressources enregistrées. Les raccourcis de page restent disponibles.","empty":"Aucun résultat trouvé.","noRecents":"Les destinations sélectionnées apparaîtront ici pour un accès rapide.","recentBuilds":"Builds récents","recentWorkflowRuns":"Exécutions récentes de workflows","groups":{"recent":"Récents","PAGES":"Pages","WORKTREES":"Worktrees","TICKETS":"Tickets","PULL_REQUESTS":"Pull requests","REPOSITORIES":"Dépôts","CODEBASES":"Bases de code","WORKFLOWS":"Workflows","GITHUB_ACTIONS":"Actions GitHub","BUILDS":"Builds","AGENTS_JOBS":"Agents et tâches","PLANS_SESSIONS":"Plans et sessions","COMMANDS_RUNS":"Commandes et exécutions","SKILLS":"Compétences","DEVICES_PROFILES":"Appareils et profils"}},"actionCenter":{"title":"Centre d’actions","description":"Travail en cours, décisions, échecs et builds prêts à être exécutés.","refresh":"Actualiser le centre d’actions","totalCount":"{count, plural, one {# élément} other {# éléments}}","attentionCount":"{count, plural, one {# nécessite une attention} other {# nécessitent une attention}}","activeCount":"{count, plural, one {# actif} other {# actifs}}","emptyTitle":"Aucune action requise","emptyDescription":"Le travail actif et les nouvelles décisions apparaîtront ici automatiquement.","needsAttention":"Nécessite une attention","active":"Actif","noAttention":"Aucun élément ne nécessite d’attention actuellement.","noActive":"Aucun travail n’est actif actuellement.","loadMore":"Charger plus","miniLabel":"Centre d’actions compact","miniEmpty":"Aucune action requise.","kinds":{"PLAN":"Plan","SESSION":"Session","BUILD":"Build","WORKFLOW":"Workflow"},"reasons":{"QUESTION":"Réponse requise","BLOCKED":"Bloqué","FAILED":"Échec","UNRUN_BUILD":"Prêt à exécuter","ACTIVE":"Actif"},"acknowledge":"Acquitter","acknowledgeNamed":"Acquitter {name}","questionFrom":"Question de {source}","customAnswerFor":"Réponse personnalisée pour {question}","customAnswer":"Réponse personnalisée","submitAnswer":"Envoyer la réponse"},"workflows":{"title":"Workflows","descriptionLong":"Concevez, publiez et surveillez des automatisations de développement durables.","workflowsTab":"Workflows","allRuns":"Toutes les exécutions","newWorkflow":"Nouveau workflow","search":"Rechercher des workflows et exécutions","refresh":"Actualiser","import":"Importer","export":"Exporter","duplicate":"Dupliquer","actions":"Actions","edit":"Modifier","archive":"Archiver","enable":"Activer","enabled":"Activé","disabled":"Désactivé","pauseDefinition":"Suspendre le workflow","run":"Exécuter","workflow":"Workflow","status":"État","trigger":"Déclencheur","generation":"Génération","started":"Démarré","queued":"En attente","worktreeQueue":"File de l’arbre de travail","workflowQueue":"File d’attente","worktreeQueueDescription":"Ordre d’admission combiné des workflows, plans et sessions pour cet arbre. Les files de plans et de sessions peuvent avancer séparément jusqu’à ce qu’un workflow exclusif arrive en tête.","workflowQueueDescription":"Exécutions de workflow en attente et exécutions d’IA lancées par ce workflow. Les positions sont relatives à tous les travaux en attente de chaque arbre.","runQueueDescription":"Ordre d’admission actuel pour l’arbre de cette exécution. Cette exécution de workflow est mise en évidence dans la liste.","queueEmpty":"La file est vide","queueEmptyDescription":"Un nouveau travail peut démarrer sans attendre derrière une autre exécution en file.","queuePosition":"Position","queueItem":"Exécution","queueState":"État","queueWorktree":"Arbre de travail","queuedAt":"Mis en file","exclusive":"Exclusif","currentRun":"Exécution actuelle","empty":"Aucun workflow ne correspond à cette vue.","noRuns":"Aucune exécution de workflow.","noDescription":"Aucune description","versionCount":"{count, plural, one {# version} other {# versions}}","runCount":"{count, plural, one {# exécution} other {# exécutions}}","editor":"Éditeur de workflow","editorDescription":"Faites glisser les étapes, reliez les poignées typées, puis validez et publiez.","saveDraft":"Enregistrer le brouillon","saved":"Brouillon enregistré.","publish":"Publier","published":"Version immuable du workflow publiée.","saveBeforePublish":"Enregistrez le workflow avant de le publier.","validationPassed":"Validation réussie.","validationFailed":"La validation a détecté des problèmes à corriger.","invalidImport":"Le fichier importé n’est pas une définition de workflow.","importLoaded":"Définition importée chargée comme brouillon.","workflowSettings":"Paramètres du workflow","settings":"Paramètres","lockToFit":"Verrouiller sur la vue","unlockView":"Déverrouiller la vue","showSessionData":"Afficher les données de session","hideSessionData":"Masquer les données de session","lockSteps":"Figer les étapes","unlockSteps":"Déverrouiller les étapes","name":"Nom","description":"Description","overlapPolicy":"Politique de chevauchement","maxConcurrentRuns":"Exécutions simultanées maximales","exclusiveWorktree":"Réserver l’arbre de travail à ce workflow","exclusiveWorktreeHelp":"L’exécution attend la fin des travaux antérieurs, puis met en file les autres workflows, plans et sessions de cet arbre jusqu’à sa fin. Ses propres étapes continuent normalement.","completionNotifications":"Notifier lorsque ce workflow se termine avec succès","completionNotificationsHelp":"Désactivez cette option pour supprimer les notifications de réussite. Les notifications d’échec et d’attention restent activées.","connectorLayout":"Connecteurs d\'étape","connectorLayouts":{"SIDES":"Sur les côtés","TOP_BOTTOM":"En haut et en bas"},"displayLayout":"Disposition de l’affichage","displayLayouts":{"REGULAR":"Normale","BASIC":"Simple"},"displayLayoutHelp":{"REGULAR":"Les vues en lecture seule utilisent les positions définies sur le canevas.","BASIC":"Les vues en lecture seule alignent automatiquement les étapes selon la largeur disponible. Les positions définies restent inchangées."},"previewBasicLayout":"Aperçu de la disposition simple","exitBasicPreview":"Quitter l’aperçu","validate":"Valider","steps":"Étapes","outline":"Plan","viewOutline":"Afficher le plan","viewPalette":"Afficher la palette","searchSteps":"Rechercher des étapes","triggers":"Déclencheurs","mutates":"Modifie","diagnostics":"Diagnostics de validation","configurationJson":"Configuration (JSON)","applyConfiguration":"Appliquer la configuration","requiredPaths":"Chemins requis supplémentaires","providedPaths":"Chemins fournis supplémentaires","addsToSession":"Ajoute aux données de session","seedsSession":"Initialise les données de session","addsToSessionEmpty":"Cette étape n\'ajoute aucune donnée de session.","maxAttempts":"Tentatives maximales","failurePolicy":"Politique d’échec","idempotencyWarning":"Cette étape modifie un état externe. Configurez l’idempotence et ne relancez jamais aveuglément un résultat incertain.","duplicateNode":"Dupliquer l’étape","deleteNode":"Supprimer le nœud","deleteConnection":"Supprimer la connexion","configuration":"Configuration","notSet":"Non défini","noConfiguration":"Aucune configuration","noRequiredPaths":"Cette étape ne nécessite aucun chemin de session.","retryStrategy":"Stratégie de nouvelle tentative","retryStrategies":{"FIXED":"Délai fixe","EXPONENTIAL":"Délai exponentiel"},"retryDelay":"Délai avant nouvelle tentative","seconds":"{count, plural, one {# seconde} other {# secondes}}","advancedJson":"Avancé (JSON brut)","advancedJsonHelp":"Modifiez en JSON brut les champs sans contrôle de formulaire.","extraKeys":"{count, plural, one {# clé supplémentaire} other {# clés supplémentaires}}","configMustBeObject":"La configuration doit être un objet JSON.","selectPlaceholder":"Sélectionnez une option","searchPlaceholder":"Rechercher","noOptions":"Aucun résultat","addRow":"Ajouter","removeRow":"Supprimer","recordKeyPlaceholder":"Clé","recordValuePlaceholder":"Valeur","conditionMatchMode":"Correspondance","conditionMatchAll":"Toutes sont vraies","conditionMatchAny":"Au moins une est vraie","conditionField":"Valeur de session","conditionOperator":"Comparaison","conditionValue":"Valeur comparée","conditionValuePlaceholder":"Valeur","addCondition":"Ajouter une comparaison","conditionEmpty":"Aucune comparaison. Ajoutez-en une pour choisir la branche exécutée.","conditionHelp":"La sortie « true » s’exécute en cas de correspondance, sinon c’est la sortie « false ». Les nombres et true/false sont comparés selon leur type ; mettez une valeur entre guillemets pour la comparer comme du texte.","conditionAdvanced":"Cette condition imbrique des groupes que l’éditeur ne peut pas afficher. Modifiez-la en JSON.","conditionOperators":{"EQ":"est égal à","NE":"est différent de","CONTAINS":"contient","NOT_CONTAINS":"ne contient pas","MATCHES":"correspond à la regex","NOT_MATCHES":"ne correspond pas à la regex","GT":"est supérieur à","GTE":"est au moins","LT":"est inférieur à","LTE":"est au plus","EXISTS":"est défini","NOT_EXISTS":"n’est pas défini"},"choiceOptionLabel":"Libellé du bouton","choiceOptionDescription":"Description (facultatif)","addChoiceOption":"Ajouter un bouton","choiceOptionsEmpty":"Aucun bouton. Ajoutez les options proposées par cette étape.","choiceOptionsHelp":"Ces options deviennent les boutons affichés pendant que l’exécution attend une réponse.","choiceOptionsAdvanced":"Ces options ne sont pas de simples entrées libellé/description. Modifiez-les en JSON.","valueModeToggle":"Changer la source de la valeur","valueModeLiteral":"Utiliser une valeur fixe","valueModeSession":"Lier aux données de session","sessionBindingLabel":"Chemin de session","sessionPathPlaceholder":"p. ex. ticket.key","sessionBindingHelp":"Lit cette valeur dans les données de session à l’exécution.","interpolationHelp":"Utilisez {token} pour insérer des données de session à l’exécution, par exemple {example}.","modelProvider":"Fournisseur","modelModel":"Modèle","modelEffort":"Effort","overlap":{"QUEUE":"Mettre chaque événement en file","CONCURRENT":"Exécuter simultanément","COALESCE_LATEST":"Conserver le dernier événement en attente"},"overlapPolicies":{"QUEUE":"File d\'attente","CONCURRENT":"Simultané","COALESCE_LATEST":"Dernier uniquement"},"failure":{"FAIL":"Faire échouer le workflow","CONTINUE":"Continuer"},"statuses":{"QUEUED":"En file d\'attente","PENDING":"En attente","READY":"Prêt","RUNNING":"En cours","WAITING":"En attente d\'un signal","BLOCKED":"Bloqué","PAUSING":"Mise en pause","PAUSED":"En pause","SUCCEEDED":"Réussi","FAILED":"Échec","CANCELLED":"Annulé","SKIPPED":"Ignoré","SUPERSEDED":"Remplacé","TIMED_OUT":"Délai dépassé"},"eventTypes":{"RUN_STARTED":"Exécution démarrée","RUN_PAUSING":"Mise en pause de l\'exécution","RUN_PAUSED":"Exécution en pause","RUN_RESUMED":"Exécution reprise","RUN_CANCELLED":"Exécution annulée","RUN_SUCCEEDED":"Exécution réussie","RUN_FAILED":"Échec de l\'exécution","RUN_DATA_REPAIRED":"Données réparées","RUN_REPLAYED":"Exécution rejouée","STEP_SUCCEEDED":"Étape réussie","STEP_FAILED":"Échec de l\'étape","STEP_BLOCKED":"Étape bloquée","STEP_WAITING":"Étape en attente","STEP_RETRY_SCHEDULED":"Nouvelle tentative planifiée","STEP_RECOVERY_BLOCKED":"Récupération bloquée","STEP_WAITING_FOR_RESOURCE":"En attente du dépôt"},"diagnosticCodes":{"SCHEMA_INVALID":"Schéma invalide","DUPLICATE_NODE_ID":"Identifiant d\'étape en double","DUPLICATE_EDGE_ID":"Identifiant de connexion en double","EDGE_ENDPOINT_MISSING":"Extrémité de connexion manquante","TRIGGER_HAS_INPUT":"Le déclencheur a une entrée","TRIGGER_REQUIRED":"Déclencheur requis","STEP_REQUIRED":"Étape requise","EXPLICIT_JOIN_REQUIRED":"Étape de jonction requise","DAG_CYCLE":"Cycle dans le graphe","UNREACHABLE_STEP":"Étape inaccessible","SECRET_LITERAL":"Secret en clair","UNRESOLVED_REFERENCE":"Référence non résolue","SESSION_BINDING_INVALID":"Liaison de session invalide","SUBWORKFLOW_VERSION_REQUIRED":"Version du sous-workflow requise","TRIGGER_DISCONNECTED":"Déclencheur non connecté","RESOURCE_KIND_REQUIRED":"Type de ressource requis","ISSUE_COMMAND_ALLOWLIST_REQUIRED":"Liste de commandes autorisées requise","ISSUE_COMMAND_PATTERN_ANCHORED":"Le motif de commande doit être ancré","REQUIREMENT_UNSATISFIED":"Exigence non satisfaite","PARALLEL_WRITE_CONFLICT":"Conflit d\'écriture parallèle","TRIGGER_CHOICES_REQUIRED":"Choix du déclencheur requis","TRIGGER_CHOICE_HANDLE_UNKNOWN":"Choix de déclencheur inconnu"},"notFound":"Workflow introuvable.","publishedVersion":"Version publiée","runs":"Exécutions","graph":"Graphe du workflow","recentRuns":"Exécutions récentes","versionHistory":"Historique des versions","version":"Version","hash":"Empreinte du contenu","publishedAt":"Publié","exportVersion":"Exporter la version {version}","unpublished":"Ce workflow n’a pas encore été publié.","runNotFound":"Exécution de workflow introuvable.","generationValue":"Génération {generation}","pause":"Suspendre","resume":"Reprendre","cancelRun":"Annuler l’exécution","runGraph":"Graphe d’exécution en direct","repairData":"Réparer les données de session bloquées","repairDataDescription":"Appliquez un patch de fusion JSON atomique puis reprenez depuis l’étape bloquée.","applyRepair":"Appliquer la réparation","questionFrom":"Question de {step}","answer":"Répondre","customAnswer":"Réponse personnalisée","answerOnRunPage":"Répondre sur la page d’exécution","replay":"Rejouer et rembobiner","replayDescription":"Prévisualisez les descendants touchés avant de créer une nouvelle génération immuable.","selectReplayStep":"Sélectionner une étape","prepareReplay":"Préparer la relecture","replayAffected":"{count, plural, one {# étape sera rejouée} other {# étapes seront rejouées}}","externalEffectsWarning":"Les effets externes sont conservés et ne seront pas annulés :","replayWithoutRestore":"Rejouer sans restaurer Git","restoreAndReplay":"Restaurer Git et rejouer","stashRestoreReplay":"Remiser, restaurer et rejouer","timeline":"Chronologie","stepAttempts":"Tentatives d’étape","sessionData":"Données de session","resources":"Ressources","noEvents":"Aucun événement enregistré.","noResources":"Aucune ressource liée.","open":"Ouvrir","step":"Étape","iteration":"Itération","attempt":"Tentative","duration":"Durée","error":"Erreur","resourceWorkflows":"Workflows liés","resourceWorkflowsDescription":"Lancez un workflow compatible ou suivez cette ressource dans une exécution active.","manageWorkflows":"Gérer les workflows","quickActions":"Actions rapides","quickActionsDescription":"Choisir où ce workflow apparaît comme action rapide.","quickActionIcon":"Icône du bouton","quickActionStyle":"Style du bouton","quickActionStyles":{"default":"Par défaut","outline":"Contour","secondary":"Secondaire","destructive":"Destructif"},"quickActionKind":"Type d’action","quickActionKinds":{"STANDARD":"Standard","MERGE_CONFLICT":"Conflit de fusion","GITHUB_ACTIONS":"Actions GitHub","NONE":"Aucune"},"quickActionKindHelp":{"STANDARD":"Afficher avec les actions standard du worktree.","MERGE_CONFLICT":"Afficher lorsqu’un rebase est interrompu par des conflits.","GITHUB_ACTIONS":"Afficher dans les menus de pipelines et de tâches GitHub.","NONE":"Ne pas afficher comme action rapide."},"repositoryQuickActions":"Disponibilité par dépôt","repositoryQuickActionsHelp":"Aucune sélection autorise tous les dépôts ; une sélection crée une liste d’autorisation.","noQuickActionRepositories":"Ajoutez une base de code avant d’attribuer des actions rapides par dépôt.","quickActionEligibility":"L’action apparaît lorsque le workflow est publié, activé et possède un déclencheur de ressource correspondant au type d’action choisi.","saveQuickActions":"Enregistrer les actions rapides","quickActionStarted":"{name} a démarré.","quickActionView":"Voir","runNamed":"Exécuter {name}","fullRun":"Exécution complète","openLinkedResource":"Ouvrir les détails associés","addTriggerChoice":"Ajouter un choix","triggerChoiceLabel":"Libellé du choix","triggerChoiceKey":"Clé de sortie","triggerChoiceKeyDuplicate":"Un autre choix utilise déjà cette clé.","triggerChoiceDescription":"Description (facultatif)","triggerChoicesHelp":"Chaque choix devient une entrée de menu sous le bouton d\'exécution et une sortie propre sur le déclencheur.","triggerChoicesEmpty":"Aucun choix pour l\'instant. Ajoutez les options proposées au démarrage de ce workflow.","triggerChoicesAdvanced":"Ces choix ne sont pas de simples entrées clé, libellé et description. Modifiez-les en JSON.","active":"Actives","all":"Toutes","archived":"Archivées","archiveFilter":"Filtre d’archive","cancel":"Annuler","delete":"Supprimer","deleteRunDescription":"L’exécution et tout son historique d’étapes seront supprimés. Cette action est irréversible.","deleteRunTitle":"Supprimer l’exécution du workflow","done":"Terminé","editRuns":"Modifier","restore":"Restaurer","selectAll":"Tout sélectionner","selectDay":"Sélectionner tout du {day}","selectRun":"Sélectionner l’exécution nº {id}","selectedRuns":"{count, plural, one {# exécution sélectionnée} other {# exécutions sélectionnées}}"},"runs":{"actions":"Opérations","active":"Actifs","activeUsage":"Tentatives actives","activity":"Activité","activityDescription":"Activité en direct du fournisseur et des outils, avec recherche.","age":"Ancienneté","all":"Tous","allOrigins":"Toutes les origines","allProviders":"Tous les outils","answerNeeded":"Réponse requise","answer":"Réponse","answeredQuestions":"Questions répondues","archive":"Archiver","archiveFilter":"Filtre d’archive","archived":"Archivés","attachFiles":"Joindre des fichiers","attachmentLimits":"Jusqu’à 25 Mo par fichier et 100 Mo au total.","attachments":"Pièces jointes","attachmentsTooLarge":"Les pièces jointes dépassent la limite de 100 Mo.","auto":"Automatique","cacheReadTokens":"Cache en lecture","cacheTokens":"Jetons de cache","cacheWriteTokens":"Cache en écriture","cancel":"Annuler","cancelAndTransfer":"Annuler le parent et transférer l’arborescence","changesSnapshots":"Modifications","changesSnapshotsDescription":"Points de contrôle Git capturés pendant cette exécution.","checkpointKinds":{"ANSWER_ROLLBACK":"Restauration de la réponse","CONTINUE":"Reprise","FINAL":"Final","PRE_ANSWER_REVISION":"Avant la révision","QUESTION":"Question","START":"Démarrage"},"chooseModel":"Choisir un modèle","continue":"Continuer","copied":"Copié","copy":"Copier","cost":"Coût","crossProviderWarning":"L’état masqué du fournisseur ne peut pas être transféré entre outils. Choisissez la transcription visible ou le résumé final.","customAnswer":"Réponse personnalisée","delete":"Supprimer","deleted":"Supprimé","deleteDescription":"L’historique natif du fournisseur sera supprimé avant cet enregistrement local. Cette action est irréversible.","deleteDraftDescription":"Supprimer définitivement le brouillon sélectionné ? Cette action est irréversible.","deleteDraftTitle":"Supprimer le brouillon","deleteTitle":"Supprimer l’exécution","detached":"HEAD détachée","done":"Terminé","drafts":"Brouillons","draftsDescription":"Prompts enregistrés que vous pouvez lancer plus tard comme plan ou session.","edit":"Modifier","editAnswer":"Modifier la réponse","editDraft":"Modifier le brouillon","effort":"Niveau d’effort","empty":"Aucun élément de type {kind}","emptyDescription":"Aucune exécution correspondante.","estimatedCost":"Coût estimé","eventTypes":{"ASSISTANT":"Assistant","ERROR":"Erreur","QUESTION":"Question","RESULT":"Résultat","SYSTEM":"Système","TOOL":"Outil","USER":"Utilisateur"},"export":"Exporter","exportJson":"Exporter en JSON","exportMarkdown":"Exporter en Markdown","exportSession":"Exporter la session {tool} (JSONL)","exportSessionFile":"Télécharger le fichier {tool} d\'origine","fileTooLarge":"{name} dépasse la limite de 25 Mo.","followUp":"Suivi","followUpDescription":"Créer une exécution liée avec un contexte repris, nouveau ou renvoyé.","followUpModes":{"ANSWER_REVISION":"Révision de la réponse","FRESH":"Nouveau","PLAN_PLAY":"Exécution du Plan","RESEND":"Renvoyer","RESUME":"Reprendre"},"followUpPrompt":"Consigne de suivi","fresh":"Nouveau","id":"Identifiant","imported":"Importé","importedCollisionWarning":"Cette Session gérée à l’extérieur est active dans une arborescence déjà verrouillée par une autre Session gérée. L’application ne peut pas contrôler cette concurrence.","inputTokens":"Jetons d’entrée","jiraTicket":"Ticket Jira","linkedItems":"Éléments liés","linkedItemsDescription":"Plan source, parent et exécutions enfants associés à cette exécution.","loading":"Chargement…","loadMore":"Charger plus","loadingMore":"Chargement…","managed":"Géré","mode":"Type","model":"Modèle","modelEffort":"Modèle / effort","newDraft":"Nouveau brouillon","newRun":"Nouvel élément de type {kind}","noActivity":"Aucune activité ne correspond à cette recherche.","noChanges":"Aucun point de contrôle Git disponible.","noDetail":"Aucun détail supplémentaire","noDrafts":"Aucun brouillon correspondant.","noRollbackChanges":"Aucune modification du contenu de l’arborescence ne sera annulée.","normalizedContext":"Transcription visible","origin":"Origine","outputTokens":"Jetons de sortie","parentRun":"Exécution parente","pause":"Mettre en pause","pausedFollowUpDescription":"Démarrer un enfant repris annule cette Session en pause et transfère atomiquement son verrou d’arborescence.","pausedFollowUpTitle":"Transférer la Session en pause","phases":{"ANSWER_FAILED":"Échec de la réponse","ANSWER_REVISION_PREPARING":"Préparation de la révision","ANSWER_REVISION_QUEUED":"Révision en file d’attente","ANSWER_REVISION_READY":"Révision prête","CANCELLED":"Annulé","CANCEL_FAILED":"Échec de l’annulation","CANCEL_REQUESTED":"Annulation demandée","COMPLETED":"Terminé","CONTINUE_FAILED":"Échec de la reprise","DELETE_NATIVE_FAILED":"Échec de la suppression côté outil","DELETE_REQUESTED":"Suppression demandée","FAILED":"Échec","IMPORTED_ACTIVE_COLLISION":"Importé : conflit d’arborescence","IMPORTED_SYNCED":"Importé et synchronisé","IN_PROGRESS":"En cours","PAUSED":"En pause","PAUSE_FAILED":"Échec de la mise en pause","PAUSE_REQUESTED":"Pause demandée","PLAY_PLAN_FAILED":"Échec de l’exécution du Plan","PREPARE_ANSWER_REVISION_FAILED":"Échec de la préparation","QUEUED":"En file d’attente","RECOVERY_PAUSED":"En pause après récupération","REVISE_ANSWER_FAILED":"Échec de la révision","RUNNING":"En cours d’exécution","START_FAILED":"Échec du démarrage","STEER_FAILED":"Échec du pilotage","SUPERSEDED_BY_ANSWER_REVISION":"Remplacé par la révision de la réponse","SUPERSEDED_BY_FOLLOW_UP":"Remplacé par un suivi","WAITING_FOR_ANSWER":"En attente de réponse","WAITING_FOR_WORKTREE":"En attente de l’arborescence"},"pinPreset":"Épingler comme préréglage","plan":"Plan de travail","planMutationWarning":"Ce Plan en lecture seule a modifié l’arborescence sélectionnée de façon inattendue.","plans":"Plans de travail","plansDescription":"Plans en lecture seule qui analysent une base de code et proposent du travail sans la modifier.","play":"Exécuter le Plan","presets":"Préréglages","recentModels":"Récents","prompt":"Consigne","promptPlaceholder":"Décrivez ce que l’agent doit faire…","prepareRevision":"Préparation du retour arrière…","provider":"Outil","raw":"Brut","reasoningTokens":"Jetons de raisonnement","revisionDescription":"L’arborescence sélectionnée sera restaurée au point de contrôle précédant immédiatement cette question, puis une nouvelle session liée continuera avec la réponse révisée. La session précédente restera disponible dans l’historique d’audit.","revisionDescriptionNoRollback":"L’arborescence conservera ses modifications actuelles et une nouvelle session liée continuera avec la réponse révisée. La session précédente restera disponible dans l’historique d’audit.","rollbackChanges":"Annuler les modifications de l’arborescence effectuées après cette question","rollbackChangesHint":"Désactivez cette option pour conserver les modifications actuelles de l’arborescence au lieu de restaurer le point de contrôle précédant cette question.","rollbackDiff":"Modifications qui seront annulées","removeAttachment":"Retirer {name}","rendered":"Rendu","repoBranch":"Dépôt / branche","resend":"Renvoyer","resendPrompt":"Modifiez la consigne initiale avant de la renvoyer sans ancien contexte.","restore":"Restaurer","resume":"Reprendre","run":"Exécuté","runNotFound":"Exécution introuvable.","saveDraft":"Enregistrer le brouillon","confirmRevision":"Démarrer la session révisée","search":"Rechercher : {kind}","searchActivity":"Rechercher dans l’activité","searchDrafts":"Rechercher les brouillons","searchWorktrees":"Rechercher les arborescences","selectDraft":"Sélectionner le brouillon","selected":"{count, plural, one {# sélectionné} other {# sélectionnés}}","selectRun":"Sélectionner l’exécution nº {id}","selectWorktree":"Sélectionner une arborescence","send":"Envoyer","session":"Session d’agent","showingCount":"{count} éléments affichés sur {total}","sessions":"Sessions d’agent","sessionsDescription":"Sessions de fournisseur gérées qui s’exécutent sur un worktree.","start":"Démarrer","startDescription":"Démarrer un Plan ou une Session gérée dans l’arborescence sélectionnée.","mcpPresets":"Préréglages d’outils MCP","mcpPresetsDescription":"Accorder à cette exécution uniquement les outils intégrés des préréglages sélectionnés. Rien n’est sélectionné par défaut.","playPlan":"Exécuter le plan","playPlanDescription":"Choisissez les préréglages MCP activés pour les Sessions pour la nouvelle exécution d’implémentation.","startFollowUp":"Démarrer le suivi","startTitle":"Démarrer une consigne","status":"État","statuses":{"CANCELLED":"Annulé","COMPLETED":"Terminé","FAILED":"Échec","IN_PROGRESS":"En cours","PAUSED":"En pause","QUEUED":"En file d’attente"},"stashBeforeRollback":"Mettre de côté les modifications suivies et non suivies avant la restauration","stashCreated":"Mise de côté créée","steer":"Guider","steerDescription":"Envoyer des indications au tour actif du fournisseur. Elles attendront derrière les questions en attente.","steerPlaceholder":"Ajoutez des indications pour l’agent en cours…","submitAnswers":"Envoyer les réponses","summary":"Résumé","summaryOnly":"Résumé final uniquement","superseded":"Remplacé","ticket":"Demande","tool":"Outil","toolCallStatuses":{"COMPLETED":"Terminé","FAILED":"Échec","OBSERVED":"Observé"},"toolCalls":"Appels d’outil","unpinPreset":"Détacher le préréglage","unrestrictedWarning":"Les Sessions s’exécutent sans demande d’autorisation, avec un accès illimité et un verrou exclusif sur l’arborescence.","uploadFailed":"Échec du téléversement de la pièce jointe.","usageCost":"Utilisation et coût estimé","usageState":"Utilisation par tentative","webSearch":"Recherche web","webSearchDescription":"Activer l’outil de recherche web natif du fournisseur lorsqu’il est pris en charge.","worktree":"Arborescence","reportedCost":"Communiqué par le fournisseur","catalogCost":"Catalogue des coûts de modèles","selectAll":"Tout sélectionner","selectDay":"Sélectionner tout du {day}"},"notifications":{"title":"Notifications","description":"Consultez l’historique et choisissez comment recevoir chaque événement.","deliverySetup":"Diffusion dans le navigateur","deliverySetupDescription":"L’autorisation du navigateur et l’abonnement Web Push sont configurés séparément pour ce navigateur.","browserAlerts":"Alertes du navigateur","browserUnsupported":"Les alertes du navigateur ne sont pas prises en charge ici.","enabled":"Activé","enable":"Activer","webPush":"Push web","pushUnsupported":"Web Push nécessite un navigateur compatible et un contexte HTTPS sécurisé.","pushSubscribed":"Ce navigateur est abonné.","pushNotSubscribed":"Ce navigateur n’est pas abonné.","subscriptionCount":"{count, plural, one {# navigateur abonné} other {# navigateurs abonnés}}","subscribedBrowsers":"Navigateurs abonnés","subscribedBrowsersDescription":"Envoyez une notification de test ou retirez les navigateurs qui ne doivent plus recevoir de Push web.","browser":"Navigateur","pushService":"Service push","locale":"Paramètres régionaux","lastSeen":"Dernière activité","actions":"Actions","noSubscribedBrowsers":"Aucun navigateur n’est abonné au Push web.","current":"Actuel","test":"Tester","testSent":"Envoyée","remove":"Retirer","removeBrowser":"Retirer {browser}","removeBrowserTitle":"Retirer ce navigateur abonné ?","removeBrowserDescription":"Ce navigateur ne recevra plus de notifications Push web. Il pourra s’abonner à nouveau plus tard.","unknownBrowser":"Navigateur inconnu","subscribe":"S’abonner","unsubscribe":"Se désabonner","permissionRequired":"L’autorisation des notifications est requise pour Web Push.","pushKeyUnavailable":"La clé publique Web Push n’est pas disponible.","pushSubscriptionInvalid":"Le navigateur a renvoyé un abonnement push non valide.","iosInstallHelp":"Sur iPhone ou iPad, installez cette app via Partager → Sur l’écran d’accueil avant de vous abonner à Web Push.","preferences":"Types de notification","preferencesDescription":"Les canaux sont indépendants. Navigateur et Web Push peuvent produire les deux alertes.","notificationType":"Type","sidebarChannel":"Barre latérale","browserChannel":"Navigateur","pushChannel":"Push web","toggleChannel":"Basculer {channel} pour {type}","history":"Historique","settingsTab":"Paramètres","refresh":"Actualiser","historyCount":"{count, plural, one {# notification} other {# notifications}}","historyEmpty":"Aucune notification pour le moment.","notification":"Notification","channels":"Canaux","received":"Reçue","edit":"Modifier","done":"Terminé","deleteSelected":"Supprimer la sélection","deleteAll":"Tout supprimer","deleteAllTitle":"Supprimer tout l’historique des notifications ?","deleteAllDescription":"Cette action supprime définitivement toutes les notifications de la base de données.","selectedCount":"{count} sélectionnées","allSelected":"Toutes les notifications sont sélectionnées","selectAll":"Sélectionner toutes les notifications","selectDay":"Sélectionner les notifications du {day}","selectNotification":"Sélectionner {title}","dismiss":"Masquer","dismissOne":"Masquer {title} de la barre latérale","openBuild":"Ouvrir le build","openWorktree":"Ouvrir le worktree","delete":"Supprimer","confirmDelete":"Confirmer la suppression","mute":"Couper les sons de notification","unmute":"Activer les sons de notification","clearAll":"Tout effacer","clearSidebar":"Effacer la barre latérale","clearSidebarTitle":"Effacer la barre de notifications ?","clearSidebarDescription":"Les notifications seront retirées de la barre latérale mais resteront dans l’historique.","sidebarEmpty":"Aucune nouvelle notification.","cancel":"Annuler","permissions":{"default":"L’autorisation n’a pas encore été demandée.","granted":"Autorisation accordée pour ce navigateur.","denied":"L’autorisation est bloquée dans les paramètres du navigateur."},"types":{"IOS_BUILD_SUCCEEDED":{"title":"Build iOS réussi","description":"Un build iOS se termine avec succès."},"IOS_BUILD_FAILED":{"title":"Échec du build iOS","description":"Un build iOS se termine avec une erreur."},"COMMAND_RUN_SUCCEEDED":{"title":"Commande exécutée avec succès","description":"Une commande enregistrée se termine avec succès."},"COMMAND_RUN_FAILED":{"title":"Échec de l’exécution de la commande","description":"Une commande enregistrée se termine par un échec."},"GITHUB_ACTIONS_SUCCEEDED":{"title":"GitHub Actions réussi","description":"Un workflow GitHub Actions se termine avec succès."},"GITHUB_ACTIONS_FAILED":{"title":"Échec de GitHub Actions","description":"Un workflow GitHub Actions se termine avec une erreur."},"RUN_NEEDS_ANSWER":{"title":"Le plan ou la session attend une réponse","description":"Un plan ou une session gérée demande une saisie de l’utilisateur."},"RUN_COMPLETED":{"title":"Plan ou session terminée","description":"Un plan ou une session gérée se termine avec succès."},"RUN_FAILED":{"title":"Plan ou session en échec","description":"Un plan ou une session gérée échoue."},"RUN_CANCELLED":{"title":"Plan ou session annulée","description":"Un plan ou une session gérée est annulée."},"RUN_RECOVERY_PAUSED":{"title":"Plan ou session en pause après récupération","description":"Un plan ou une session gérée est mise en pause après le redémarrage de son agent."},"WORKFLOW_MESSAGE":{"title":"Message de workflow","description":"Un workflow envoie une notification générique."},"WORKFLOW_NEEDS_ATTENTION":{"title":"Le workflow requiert une intervention","description":"Un workflow attend des données ou une décision."},"WORKFLOW_COMPLETED":{"title":"Workflow terminé","description":"Une exécution de workflow se termine avec succès."},"WORKFLOW_FAILED":{"title":"Workflow en échec","description":"Une exécution de workflow échoue."},"WORKFLOW_RECOVERY_PAUSED":{"title":"Workflow en pause après récupération","description":"Un workflow se met en pause pendant la récupération de son travail durable."}},"categories":{"BUILDS":"Builds","COMMANDS":"Commandes","GITHUB":"GitHub","RUNS":"Plans et sessions","WORKFLOWS":"Workflows"}},"credentialEncryption":{"title":"Les identifiants de la base de données ne sont pas chiffrés","description":"Les secrets stockés dans la base de données de l’application sont actuellement en clair. Générez une clé de 32 octets avec cette commande :","instructionsPrefix":"Définissez la valeur générée comme","instructionsSuffix":"dans l’environnement du serveur, puis redémarrez-le. Les identifiants existants en clair seront chiffrés ensemble après le redémarrage.","backup":"Sauvegardez cette clé de manière sécurisée et conservez-la pendant toute la durée de vie des lignes chiffrées. Sa perte ou sa modification rend ces identifiants illisibles."},"credentials":{"title":"Identifiants","description":"Consultez le backend actif, l’état de protection et un inventaire limité aux métadonnées. Les valeurs secrètes ne sont jamais affichées ici.","refresh":"Actualiser","loading":"Chargement de l’inventaire des identifiants…","loadFailed":"Impossible de charger l’inventaire des identifiants","storageTitle":"Stockage des identifiants","storageDescription":"Configuration d’exécution et détails d’emplacement sûrs pour le backend sélectionné.","backend":"Système de stockage","protection":"Protection","itemCount":"Éléments stockés","mismatchCount":"Incompatibilités de backend","inventoryTitle":"Identifiants stockés","inventoryDescription":"Ce tableau contient uniquement des identifiants et des métadonnées de protection. Gérez chaque valeur dans ses paramètres propriétaires.","feature":"Fonction propriétaire","kind":"Type d’identifiant","updated":"Mis à jour","emptyTitle":"Aucun identifiant stocké","emptyDescription":"Les identifiants apparaissent ici après leur enregistrement depuis le formulaire de paramètres associé.","emptyDescriptionVault":"Aucun identifiant n\'a été trouvé sous le point de montage et le préfixe de chemin Vault configurés. Enregistrez-en un depuis son formulaire de configuration ou vérifiez que le montage et le préfixe correspondent au Vault qui les contient.","states":{"READY":"Prêt","WARNING":"Avertissement","ERROR":"Erreur"},"backends":{"DATABASE":"Base de données","VAULT":"Coffre HashiCorp Vault","KEYCHAIN":"Trousseau macOS","UNKNOWN":"Inconnu"},"encryptionStates":{"ENCRYPTED":"Chiffré","PLAINTEXT":"En clair","EXTERNAL":"Backend externe","ERROR":"Indisponible"},"protections":{"ENCRYPTED":"Chiffrement AES-256-GCM","PLAINTEXT":"En clair","VAULT":"Stockage Vault KV v2","KEYCHAIN":"Trousseau"},"features":{"jira":"Intégration Jira","github":"Intégration GitHub","cache":"Cache Actions","mcp":"Serveur MCP externe","ios":"Appareils iOS","push":"Notifications push","notifications":"Notifications"},"kinds":{"jira-api-token":"Jeton d’API","github-personal-access-token":"Jeton d’accès personnel","github-app-private-key":"Clé privée GitHub App","github-app-webhook-secret":"Secret du webhook GitHub App","cache-server-api-key":"Clé d’API","cache-server-headers":"Ensemble d’en-têtes personnalisés","external-mcp-server-headers":"Ensemble d’en-têtes","ios-profile-signer-private-key":"Clé privée de signature de profil","app-store-connect-private-key":"Clé privée App Store Connect","apns-token-private-key":"Clé privée du jeton APNs","apns-certificate-bundle":"Ensemble de certificat APNs","web-push-vapid-private-key":"Clé privée VAPID de push web"},"details":{"configuredValue":"Valeur configurée","location":"Emplacement","encryptionKey":"Clé de chiffrement","service":"Service","hostPlatform":"Plateforme hôte","address":"Adresse","mount":"Montage KV v2","pathPrefix":"Préfixe de chemin","namespace":"Espace de noms","authenticationToken":"Jeton d’authentification","additionalHeaders":"Noms d’en-têtes supplémentaires","customCa":"AC personnalisée","tlsServerName":"Nom du serveur TLS","vaultAccess":"Accès à Vault"},"detailValues":{"configured":"Configuré","notConfigured":"Non configuré","none":"Aucun","invalid":"Invalide","applicationDatabase":"Base de données de l’application","readOnly":"Lecture seule","readWrite":"Lecture et écriture"},"warningTitles":{"DATABASE_UNENCRYPTED":"Le chiffrement de la base de données est désactivé","CREDENTIAL_ENCRYPTION_KEY_INVALID":"La clé de chiffrement est invalide","CREDENTIAL_ENCRYPTION_KEY_MISSING":"La clé de chiffrement est absente","CREDENTIAL_ENCRYPTION_KEY_MISMATCH":"La clé de chiffrement ne correspond pas","CREDENTIAL_DATA_INVALID":"Les données d’identification sont invalides","CREDENTIAL_STORAGE_TYPE_INVALID":"Le type de stockage est invalide","CREDENTIAL_STORE_UNAVAILABLE":"Le stockage des identifiants est indisponible","CREDENTIAL_STORE_READ_ONLY":"Le stockage des identifiants est en lecture seule","VAULT_CONFIGURATION_INVALID":"La configuration de Vault est invalide","VAULT_INSECURE_HTTP":"Vault utilise HTTP en clair","VAULT_TLS_VERIFICATION_DISABLED":"La vérification du certificat Vault est désactivée","VAULT_READ_ONLY_IGNORED":"Le paramètre de lecture seule ne s\'applique pas","VAULT_ADOPTION_FAILED":"Les identifiants existants n\'ont pas pu être adoptés","KEYCHAIN_UNSUPPORTED_PLATFORM":"Le trousseau n’est pas pris en charge sur cet hôte","BACKEND_MISMATCH":"Des identifiants utilisent un autre backend"},"warnings":{"DATABASE_UNENCRYPTED":"Les identifiants de la base de données sont stockés en clair jusqu’à la configuration d’une clé de chiffrement.","CREDENTIAL_ENCRYPTION_KEY_INVALID":"CREDENTIAL_ENCRYPTION_KEY doit être un encodage Base64 strict de 32 octets exactement. Corrigez-la et redémarrez le serveur ; aucune solution de repli en clair n’est utilisée avec une clé invalide.","CREDENTIAL_ENCRYPTION_KEY_MISSING":"Des identifiants chiffrés existent, mais la clé est absente. Restaurez la clé d’origine et redémarrez le serveur.","CREDENTIAL_ENCRYPTION_KEY_MISMATCH":"La clé configurée ne correspond pas aux identifiants existants. Restaurez la clé d’origine et redémarrez le serveur.","CREDENTIAL_DATA_INVALID":"Un ou plusieurs enregistrements d’identifiants contiennent des métadonnées invalides et ne peuvent pas être utilisés.","CREDENTIAL_STORAGE_TYPE_INVALID":"CREDENTIAL_STORAGE_TYPE doit être database, vault ou keychain.","CREDENTIAL_STORE_UNAVAILABLE":"Le stockage des identifiants n’a pas pu être initialisé. Vérifiez la configuration et les journaux du serveur.","CREDENTIAL_STORE_READ_ONLY":"Cette installation peut lire les identifiants Vault mais pas les modifier. Gérez les secrets depuis une installation en écriture, ou supprimez CREDENTIAL_VAULT_READ_ONLY et accordez au jeton des capacités d\'écriture.","VAULT_CONFIGURATION_INVALID":"Vault ne peut pas être initialisé avec les variables d’environnement actuelles. Vérifiez l’adresse, les en-têtes, le chemin et les réglages TLS.","VAULT_INSECURE_HTTP":"Le trafic Vault, les secrets et les en-têtes d’authentification ne sont pas protégés en transit sur HTTP.","VAULT_TLS_VERIFICATION_DISABLED":"VAULT_SKIP_VERIFY autorise les certificats non approuvés et expose le trafic Vault à l’interception.","VAULT_READ_ONLY_IGNORED":"CREDENTIAL_VAULT_READ_ONLY ne s\'applique qu\'au stockage Vault et est ignoré par le backend actuel. Les identifiants de cette installation restent modifiables.","VAULT_ADOPTION_FAILED":"Les identifiants déjà détenus par le backend externe n\'ont pas pu être lus au démarrage : ils manquent donc dans cet inventaire. Vérifiez la connexion au backend et les capacités du jeton, puis redémarrez le serveur.","KEYCHAIN_UNSUPPORTED_PLATFORM":"Le trousseau macOS n’est disponible que si l’hôte Next.js s’exécute sur macOS. Le serveur reste disponible, mais les opérations sur les identifiants échoueront.","BACKEND_MISMATCH":"{count} élément(s) d’identification ont été enregistrés avec un autre backend. Saisissez-les à nouveau dans leurs paramètres propriétaires ; les valeurs ne sont ni déplacées ni supprimées automatiquement."},"readOnlyBadge":"Lecture seule","readOnlyNotice":"Cette installation dispose d\'un accès en lecture seule à Vault ; ce secret ne peut donc pas être modifié ici. Mettez-le à jour depuis une installation disposant d\'un accès en écriture.","adopted":"{count} identifiant(s) ont été adoptés depuis le backend externe au démarrage du serveur."},"agents":{"title":"Agents","description":"Gérez les Macs inscrits et les tâches durables depuis un plan de contrôle unique.","refresh":"Actualiser","enroll":"Inscrire un agent","enrollmentTitle":"Commande d’inscription à usage unique","enrollmentDescription":"Exécutez cette commande sur le Mac après avoir installé control-agent. Le Mac établit une connexion sortante ; il n’ouvre aucun port d’écoute.","serverAddress":"Adresse du serveur","customServerAddress":"Adresse de serveur personnalisée","headers":"En-têtes Cloudflare Access","headersDescription":"Ces valeurs sont ajoutées uniquement à la commande et enregistrées dans la configuration locale de l’agent.","addHeader":"Ajouter un en-tête","header":"en-tête","headerName":"Clé de l’en-tête","headerValue":"Valeur de l’en-tête","removeHeader":"Supprimer {name}","copy":"Copier la commande","copyFailed":"Impossible de copier la commande. Sélectionnez-la et copiez-la manuellement.","expires":"Le jeton expire le {date}","loading":"Chargement des agents…","emptyTitle":"Aucun agent inscrit","emptyDescription":"Créez une commande d’inscription pour associer votre premier Mac.","version":"Version","platform":"Plateforme","lastSeen":"Dernière activité","never":"Jamais"},"usage":{"title":"Utilisation","description":"Consultez l’utilisation des jetons et les coûts de tous les Macs inscrits.","refresh":"Actualiser l’utilisation","agentFilterLabel":"Filtrer l’utilisation par agent","allAgents":"Tous les agents","searchAgents":"Rechercher des agents…","noAgentsFound":"Aucun agent trouvé.","rangeLabel":"Période d’utilisation","allData":"Toutes les données","last7Days":"7 jours","last30Days":"30 jours","loading":"Chargement des agents…","noAgents":"Aucun agent inscrit","noAgentsDescription":"Inscrivez un Mac avant de collecter l’utilisation.","noCompatible":"Aucun agent compatible en ligne","noCompatibleDescription":"Mettez à jour control-agent sur un Mac en ligne pour ajouter la capacité ccusage.","noOnline":"Aucun agent en ligne","noOnlineDescription":"Connectez un Mac inscrit avant de collecter l’utilisation.","collectionFailed":"Échec de la collecte d’utilisation","collectionFailedDescription":"Aucun agent n’a renvoyé de rapport ccusage valide. Consultez les erreurs ci-dessus et réessayez.","zeroUsage":"Aucune utilisation trouvée","zeroUsageDescription":"Les agents ont répondu correctement, mais ccusage n’a trouvé aucune utilisation quotidienne.","noUsageInRange":"Aucune utilisation sur cette période","noUsageInRangeDescription":"Choisissez une période plus longue pour afficher l’utilisation antérieure.","progress":"{complete} agents compatibles sur {total} ont répondu","offlineAgents":"Hors ligne : {agents}","unsupportedAgents":"Mise à jour requise : {agents}","failedAgents":"Échec : {agents}","costChartTitle":"Coût quotidien par modèle","costChartDescription":"Utilisation quotidienne cumulée en USD sur la période sélectionnée.","costChartLegendHint":"Sélectionnez un modèle dans la légende pour l’afficher seul.","costChartShowingOnly":"Seul {model} est affiché. Sélectionnez-le à nouveau pour afficher tous les modèles.","costChartShowOnlyModel":"Afficher uniquement {model}","costChartShowAllModels":"Afficher tous les modèles","summaryFilteredByModel":"Les totaux ci-dessous ne concernent que {model}.","totalCost":"Coût total","totalTokens":"Total des jetons","inputTokens":"Jetons d’entrée","outputTokens":"Jetons de sortie","cacheCreationTokens":"Jetons de création du cache","cacheReadTokens":"Jetons de lecture du cache","usage":"Utilisation","input":"Entrée","output":"Sortie","cacheCreation":"Création du cache","cacheRead":"Lecture du cache","total":"Total","cost":"Coût","grandTotal":"Total général","unattributedTokens":"Jetons non attribués","modelCount":"{count} modèles","agentCount":"{count} agents","showModels":"Afficher les modèles du {date}","hideModels":"Masquer les modèles du {date}","showAgents":"Afficher les agents utilisant {model}","hideAgents":"Masquer les agents utilisant {model}"},"agentDetail":{"loading":"Chargement de l’agent…","notFound":"Agent introuvable.","version":"Version","lastSeen":"Dernière activité","never":"Jamais","generalInformation":"Informations générales","generalInformationDescription":"Le matériel et l’utilisation des ressources sont actualisés à chaque signal de l’agent.","cpuModel":"Modèle du processeur","operatingSystem":"Système d’exploitation","architecture":"Architecture","ipAddress":"Adresse IP","memory":"Mémoire","disk":"Espace disque","used":"Utilisé","free":"Libre","unavailable":"Indisponible","capabilities":"Fonctionnalités","capabilitiesDescription":"Recherchez les capacités annoncées par cet agent, exécutez-en une et inspectez sa réponse en direct.","searchCapabilities":"Rechercher des capacités","searchCapabilitiesPlaceholder":"Rechercher des noms de capacités…","noMatchingCapabilities":"Aucune capacité ne correspond à cette recherche.","capability":"Capacité","kind":"Type","event":"Événement","job":"Tâche","expandCapability":"Développer {capability}","collapseCapability":"Réduire {capability}","eventCapabilityDescription":"Cet événement demande une réconciliation immédiate des bases de code et n’accepte aucune donnée.","payload":"Données (objet JSON)","invoke":"Exécuter la capacité","invokeOffline":"Connectez cet agent avant d’exécuter une capacité.","noCapabilityResponse":"Exécutez la capacité pour voir sa réponse.","codebases":"Bases de code","codebasesDescription":"Bases de code enregistrées sur cet agent.","noCodebases":"Aucune base de code n’est enregistrée sur cet agent.","repository":"Dépôt","status":"État","created":"Créée","finished":"Terminée","selectJob":"Sélectionner {kind}","queuing":"Mise en file…","run":"Exécuter","history":"Historique des tâches","noJobs":"Aucune tâche n’a été exécutée sur cet agent.","cadenceSettings":"Fréquence de l’agent","cadenceSettingsDescription":"Réglez la fréquence des tâches récurrentes du plan de contrôle et des dépôts. L’analyse et la récupération Git utilisent d’abord les valeurs globales ; l’enregistrement définit celles de cet agent. Toutes les valeurs sont en secondes.","codebaseScanCadence":"Analyse des bases de code (secondes)","codebaseScanCadenceHelp":"Inspecte les dépôts enregistrés et transmet l’état des branches, de la synchronisation, de la disponibilité et des worktrees. Choisissez un entier de {min} à {max}.","jobReconciliationCadence":"Rapprochement durable des tâches (secondes)","jobReconciliationCadenceHelp":"Interroge le plan de contrôle sur les tâches en attente, en cours ou annulées afin de reprendre le travail après un événement manqué ou un redémarrage de l’agent. Choisissez un entier de {min} à {max}.","gitFetchCadence":"Git fetch (secondes)","gitFetchCadenceHelp":"Exécute git fetch origin lorsqu’une base de code enregistrée n’a pas été récupérée pendant cet intervalle. Choisissez un entier de {min} à {max}.","heartbeatCadence":"Pulsation de l’agent (secondes)","heartbeatCadenceHelp":"Transmet au plan de contrôle l’état de la connexion, l’inventaire de l’agent et l’utilisation actuelle des ressources. Choisissez un entier de {min} à {max}.","saveCadenceSettings":"Enregistrer la fréquence","cadenceSettingsSaved":"Fréquence de l’agent enregistrée.","baseRepoDirectory":"Répertoire de base des dépôts","baseRepoDirectoryDescription":"Choisissez le dossier de cet agent qui contient ses dépôts. Les chemins des worktrees qui s’y trouvent seront affichés relativement à ce dossier.","currentDirectory":"Répertoire actuel","notConfigured":"Non configuré","useDirectory":"Utiliser ce répertoire","clearDirectory":"Effacer le répertoire","directoryBrowsingUnavailable":"Connectez cet agent et mettez-le à jour si nécessaire pour parcourir les répertoires.","derivedDataLocation":"Derived Data Xcode","derivedDataLocationDescription":"Choisissez où cet agent stocke le DerivedData Xcode.","derivedDataMode":"Mode d’emplacement","derivedDataDefault":"Emplacement Xcode par défaut","derivedDataAbsolute":"Répertoire absolu personnalisé","derivedDataRelative":"Relatif à chaque arbre de travail","derivedDataAbsolutePath":"Répertoire absolu","derivedDataRelativePath":"Chemin de dossier relatif","derivedDataAbsoluteHelp":"Saisissez un chemin absolu sur cet agent ou choisissez un répertoire existant.","derivedDataRelativeHelp":"Ce dossier est recherché sous chaque arbre de travail actif suivi.","saveDerivedDataSettings":"Enregistrer les paramètres Derived Data","buildsDirectory":"Répertoire des builds","buildsDirectoryDescription":"Les journaux, produits copiés, archives et exports sont stockés dans un dossier par build. Par défaut, /Builds est ajouté au répertoire de base des dépôts, sauf remplacement ici.","browseBuildsDirectory":"Parcourir le répertoire des builds","effectiveDirectory":"Répertoire effectif","agentDefault":"Valeur par défaut du dépôt de base","customBuildsDirectory":"Répertoire absolu personnalisé","saveBuildsDirectory":"Enregistrer le répertoire des builds","useAgentDefault":"Utiliser la valeur par défaut du dépôt de base","deleteAgent":"Supprimer l’agent","deleteAgentTitle":"Supprimer cet agent ?","deleteAgentDescription":"Supprimer définitivement {name} ainsi que tous ses jobs et enregistrements de bases de code. Cette action est irréversible."},"diskSpace":{"title":"Surveillance de l’espace disque","description":"Surveille chaque volume d’agent et récupère automatiquement les Derived Data sûres les plus anciennes quand l’espace manque.","loading":"Chargement des rapports de disque…","settings":"Paramètres","normalThreshold":"Seuil de nettoyage (Gio)","pressureThreshold":"Seuil de pression (Gio)","saveThresholds":"Enregistrer les seuils","monitorAgent":"Surveiller l’agent","pressureModeControl":"Mode pression","noReport":"Aucun rapport de disque n’est encore disponible.","notMonitored":"Non surveillé","observedAt":"Observé {value}","volume":"Volume","freeOf":"libres sur","free":"libres","freeDiskSpace":"Espace disque libre","noEnabledAgents":"Aucun agent surveillé","usageToday":"Utilisation aujourd’hui","thresholdSummary":"Nettoyage sous {normal} Gio · critique à {pressure} Gio","recentDeletions":"Suppressions récentes","noRecentDeletions":"Aucune suppression automatique ou manuelle récente.","mainDisk":"Disque principal","baseRepoDisk":"Disque du dépôt de base","baseRepoDiskDescription":"Affiché séparément car le dépôt de base se trouve sur un autre système de fichiers.","disabled":"La surveillance du disque est désactivée pour cet agent.","usageLabel":"{percent}% de l’espace disque utilisé","role":{"MAIN":"Disque principal","BASE_REPO":"Dépôt de base","DERIVED_DATA":"Données dérivées"},"status":{"DISABLED":"Désactivé","STALE":"Périmé","IDLE":"Inactif","CLEANUP_REQUIRED":"Nettoyage requis","DELETING":"Suppression","PRESSURE":"Pression","CRITICAL":"Critique","ERROR":"Erreur"},"pressureMode":{"NORMAL":"Normal","MANUAL":"Pression manuelle","AUTOMATIC":"Pression automatique"}},"buildData":{"title":"Données de build","description":"Inspectez et nettoyez le DerivedData Xcode sur les agents inscrits.","derivedDataTitle":"Données dérivées","derivedDataDescription":"Produits de build, index, journaux et caches Xcode par projet.","deviceSupportTitle":"Prise en charge des appareils iOS","deviceSupportDescription":"Symboles et fichiers conservés pour les versions iOS connectées à chaque agent.","deviceSupportVersion":"Version iOS","selectAllDeviceSupport":"Sélectionner toute la prise en charge iOS","noDeviceSupport":"Aucun dossier de prise en charge iOS trouvé.","deleteDeviceSupportTitle":"Supprimer la prise en charge iOS ?","deleteDeviceSupportDescription":"Supprimer définitivement {count} dossiers ? Xcode peut les recréer à la connexion d’un appareil compatible.","refresh":"Actualiser","calculateSizes":"Calculer les tailles","loading":"Analyse de Derived Data…","emptyTitle":"Aucune Derived Data trouvée","emptyDescription":"Les répertoires DerivedData configurés ne contiennent aucune entrée.","progress":"{complete} agents analysés sur {total} éligibles","selected":"{count} sélectionnés","deleteSelected":"Supprimer la sélection","selectAll":"Sélectionner toutes les entrées Derived Data","selectEntry":"Sélectionner {name}","folder":"Dossier","worktree":"Chemin de l’arbre de travail","size":"Espace disque","agent":"Agent","modified":"Modifié","locked":"Verrouillé","lock":"Protéger du nettoyage automatique","unlock":"Autoriser le nettoyage automatique","protectedDeleteWarning":"Suppression à haut risque : les dossiers suivants sont verrouillés ou utilisés par une tâche en cours. Leur suppression peut perturber des ressources actives.\\n\\n{details}\\n\\nSupprimer quand même ?","actions":"Actions","entryActions":"Actions pour {name}","deleteEntry":"Supprimer {name}","confirmDeleteEntry":"Confirmer la suppression de {name}","confirmDelete":"Confirmer","delete":"Supprimer","deleteTitle":"Supprimer Derived Data ?","deleteDescription":"Supprimer définitivement {count} entrées sélectionnées ? Cette action est irréversible.","history":"Historique des suppressions","historyDescription":"Derived Data supprimées des agents inscrits au cours des 90 derniers jours.","clearHistory":"Effacer l’historique","clearHistoryTitle":"Effacer l’historique ?","clearHistoryDescription":"Supprimer tous les enregistrements conservés ? Cela n’affecte pas les fichiers des agents.","loadingHistory":"Chargement de l’historique…","noHistory":"Aucune Derived Data n’a encore été supprimée.","deleted":"Supprimé","sourceLabel":"Source","loadMore":"Charger plus","status":{"UNLINKED":"Non lié","PENDING":"Build en démarrage","SHARED_CACHE":"Cache partagé"},"source":{"USER":"Utilisateur","AUTOMATIC":"Automatique"},"agentStatus":{"QUEUING":"mise en file","QUEUED":"en attente","RUNNING":"analyse","SUCCEEDED":"terminé","FAILED":"échec","CANCELLED":"annulé","TIMED_OUT":"délai dépassé","OFFLINE":"hors ligne","UNSUPPORTED":"mise à jour de l’agent requise","INVALID":"réponse invalide"}},"cacheServerSettings":{"title":"Serveur de cache Actions","description":"Connectez-vous à un serveur de cache GitHub Actions pour gérer ses entrées de cache.","configured":"Configuré","notConfigured":"Non configuré","loading":"Chargement des paramètres…","saved":"Paramètres du serveur de cache enregistrés.","connectionSucceeded":"Connexion au serveur de cache réussie.","removed":"Paramètres du serveur de cache supprimés.","baseUrl":"URL de base","baseUrlHelp":"L\'URL de base de l\'API de gestion, y compris tout préfixe de chemin.","setupHelp":"Obtenez l’URL de base de l’API de gestion et la clé d’API dans la configuration du déploiement ou auprès de l’administrateur du serveur de cache. La clé configurée est envoyée comme en-tête x-api-key.","apiKey":"Clé d\'API","apiKeyPlaceholder":"Saisissez la clé d\'API du serveur de cache","apiKeyPlaceholderConfigured":"Laissez vide pour conserver la clé actuelle","apiKeyHelp":"Envoyée comme en-tête x-api-key à chaque requête.","apiKeyKeepHelp":"Une clé est enregistrée. Saisissez une nouvelle valeur pour la remplacer.","headers":"En-têtes personnalisés","addHeader":"Ajouter un en-tête","headersHelp":"Les valeurs des en-têtes sont enregistrées localement, envoyées à chaque requête au serveur de cache et ne sont jamais renvoyées au navigateur.","headersSetupHelp":"Ajoutez des en-têtes personnalisés uniquement si un proxy d’authentification les exige ; demandez leurs noms et leurs valeurs à l’administrateur du proxy.","noHeaders":"Aucun en-tête personnalisé configuré.","headerName":"Nom","headerValue":"Valeur","headerValuePlaceholderConfigured":"Laissez vide pour conserver la valeur actuelle","removeHeader":"Supprimer l\'en-tête","remove":"Supprimer","confirmRemove":"Supprimer les paramètres du serveur de cache ?","confirmRemoveDescription":"Les informations de connexion et la clé d\'API seront supprimées. La page Cache des Actions sera masquée jusqu\'à sa reconfiguration.","test":"Tester","save":"Enregistrer"},"cacheServer":{"title":"Cache des Actions","description":"Parcourez et gérez les entrées du serveur de cache GitHub Actions.","matchLookup":"Recherche de correspondance","refresh":"Actualiser","close":"Fermer","filtersTitle":"Filtres","filtersDescription":"Filtrez les entrées de cache par clé, version, portée ou dépôt.","key":"Clé","keyPlaceholder":"Clé de cache","version":"Version","versionPlaceholder":"Version du cache","scope":"Portée","scopePlaceholder":"Référence ou portée","repoId":"ID de dépôt","repoIdPlaceholder":"ID du dépôt","itemsPerPage":"Par page","deleteMatching":"Supprimer les correspondances","confirmDeleteMatching":"Supprimer toutes les entrées correspondantes ?","confirmDeleteMatchingDescription":"Toutes les entrées de cache correspondant aux filtres appliqués seront supprimées. Cette action est irréversible.","reset":"Réinitialiser","applyFilters":"Appliquer","entriesTitle":"Entrées de cache","entriesDescription":"Entrées de cache stockées sur le serveur.","loading":"Chargement des entrées de cache…","noEntries":"Aucune entrée de cache ne correspond aux filtres actuels.","updatedAt":"Mis à jour","actions":"Actions","viewDetails":"Voir les détails","delete":"Supprimer","confirmDeleteEntry":"Supprimer cette entrée de cache ?","edit":"Modifier","doneEditing":"Terminé","selected":"{count} sélectionnés","selectAll":"Sélectionner toutes les entrées de cache","selectEntry":"Sélectionner {name}","deleteSelected":"Supprimer la sélection","confirmDeleteSelected":"Supprimer {count} entrées de cache ?","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant","notConfiguredTitle":"Serveur de cache non configuré","notConfiguredDescription":"Configurez le serveur de cache GitHub Actions sur la page Paramètres pour gérer ses entrées.","goToSettings":"Aller aux paramètres","detailTitle":"Entrée de cache","detailDescription":"L\'entrée de cache complète et l\'emplacement de stockage qui la sous-tend.","entryNotFound":"Cette entrée de cache n\'existe plus.","entrySection":"Entrée","id":"Identifiant","locationId":"ID d\'emplacement","locationSection":"Emplacement de stockage","deleteLocation":"Supprimer l\'emplacement","confirmDeleteLocation":"Supprimer cet emplacement de stockage ?","confirmDeleteLocationDescription":"Le dossier de stockage et ses données seront supprimés. Cette action est irréversible.","folderName":"Nom du dossier","partCount":"Nombre de parties","sizeBytes":"Taille","mergeStartedAt":"Fusion démarrée","mergedAt":"Fusionné","partsDeletedAt":"Parties supprimées","lastDownloadedAt":"Dernier téléchargement","noLocation":"Aucun emplacement de stockage n\'est lié à cette entrée.","matchTitle":"Faire correspondre l\'entrée de cache","matchDescription":"Trouvez l\'entrée que le serveur de cache restaurerait pour un ensemble de clés.","primaryKey":"Clé principale","restoreKeys":"Clés de restauration","commaSeparated":"Séparé par des virgules","scopes":"Portées","matchFound":"Correspondance trouvée","matchTypes":{"EXACT_PRIMARY":"Principale exacte","PREFIXED_PRIMARY":"Principale préfixée","EXACT_RESTORE":"Restauration exacte","PREFIXED_RESTORE":"Restauration préfixée"},"noMatch":"Aucune entrée de cache ne correspond aux clés fournies.","runMatch":"Lancer la correspondance"},"jobs":{"open":"Ouvrir la tâche","cancel":"Annuler","loading":"Chargement de la tâche…","notFound":"Tâche introuvable.","waiting":"En attente de sortie…"},"jiraTickets":{"title":"Tickets Jira","description":"Parcourez par statut les projets, tableaux et requêtes JQL enregistrés.","refresh":"Actualiser","manage":"Gérer","showBoardLayout":"Vue tableau Kanban","showTableLayout":"Vue tabulaire","collapseStatus":"Réduire {status}","expandStatus":"Développer {status}","issueType":"Type de ticket","priority":"Priorité","loading":"Chargement des projets Jira…","loadingTickets":"Chargement des tickets…","loadingTicket":"Chargement des détails du ticket…","emptyProjects":"Aucun projet Jira pour le moment","emptyProjectsDescription":"Configurez Jira, puis ajoutez un projet et sa première source.","emptySources":"Ce projet n’a aucune source","emptySourcesDescription":"Ajoutez une requête JQL nommée ou l’URL d’un tableau Jira.","emptyTickets":"Aucun ticket ne correspond à cette source.","addProject":"Ajouter un projet","addSource":"Ajouter une source","projectTabs":"Projets Jira","sourceTabs":"Sources des tickets","staleWarning":"Jira est inaccessible ; des données expirées du cache sont affichées.","truncatedWarning":"Cette source dépasse 1 000 tickets. Affinez-la pour voir les autres résultats.","issue":"Demande","unassigned":"Non attribué","manageTitle":"Gérer les projets et sources Jira","manageDescription":"Les projets viennent de Jira et chaque source est validée avant l’enregistrement.","projects":"Projets","availableProjects":"Projets Jira disponibles","selectProject":"Sélectionner un projet","sourceCount":"{count} sources","removeProject":"Retirer le projet","confirmRemoveProject":"Retirer ce projet et toutes ses sources enregistrées ?","sourcesFor":"Sources de {project}","displaySettings":"Paramètres d’affichage","displaySettingsDescription":"Ces paramètres s’appliquent uniquement à ce projet.","ticketsToShow":"Tickets à afficher","allTickets":"Tous les tickets","unassignedOrSelfAssigned":"Non assignés ou assignés à moi","selfAssignedInProgress":"Mes tickets en cours","hideCompletedTickets":"Masquer les tickets terminés","hideCompletedTicketsDescription":"Choisissez les statuts du projet considérés comme terminés.","completedStatuses":"Statuts terminés","doneStatus":"Statut terminé d’Auto Merge","noDoneStatus":"Non configuré","doneStatusDescription":"Auto Merge déplace les tickets liés vers ce statut après la fusion GitHub.","loadingStatuses":"Chargement des statuts…","selectCompletedStatuses":"Sélectionner les statuts terminés","saveDisplaySettings":"Enregistrer les paramètres d’affichage","branchNaming":"Nommage des branches","branchNamingDescription":"Cette fonction est utilisée lors de la création d’une branche de worktree depuis un ticket de ce projet.","branchNamingFunction":"Fonction JavaScript de nommage des branches","branchNamingFunctionHelp":"Reçoit ticketKey, type, title et alreadyTaken. Retournez un nom de branche Git valide ; alreadyTaken est omis au premier appel.","saveBranchNaming":"Enregistrer le nommage des branches","sourceName":"Nom de la source","sourceType":"Type de source","boardUrl":"URL du tableau","editSource":"Modifier la source","deleteSource":"Supprimer la source","confirmDeleteSource":"Supprimer cette source et les entrées de cache associées ?","saveSource":"Enregistrer la source","cancel":"Annuler","done":"Terminé","ticket":"Ticket","staleTicket":"Certaines données sont expirées car Jira n’a pas répondu.","openInJira":"Ouvrir dans Jira","worktreeAction":"Créer un worktree","ticketWorktreeTitle":"Créer depuis {issueKey}","ticketWorktreeDescription":"Créez un nouveau worktree sur un agent, ou créez la branche du ticket et basculez-y un worktree existant.","newWorktree":"Nouveau worktree","existingWorktree":"Worktree existant","agentAndCodebase":"Agent et base de code","selectWorktreeDestination":"Sélectionner une destination","searchWorktreeDestinations":"Rechercher des worktrees, agents et bases de code","noWorktreeDestinations":"Aucune destination compatible et en ligne n’est disponible.","chooseWorktreeDestination":"Choisissez où créer la branche du ticket.","loadingWorktreeDestinations":"Chargement des destinations de worktree…","ticketWorktreeCreated":"Le worktree du ticket a été créé.","ticketBranchChanged":"La branche du ticket a été créée et le worktree y a été basculé.","createTicketWorktree":"Créer le worktree du ticket","createAndSwitchBranch":"Créer et changer de branche","ticketStashRetryHelp":"Git n’a pas pu changer de branche avec les modifications actuelles. Stashez les modifications suivies et non suivies, puis réessayez.","stashAndRetry":"Stasher et réessayer","detachedBranch":"HEAD détaché","descriptionTitle":"Description","classification":"Classement","labels":"Étiquettes","components":"Composants","fixVersions":"Versions correctives","sprints":"Itérations","relatedIssues":"Tickets associés","attachments":"Pièces jointes","comments":"Commentaires ({count})","noComments":"Ce ticket ne contient aucun commentaire.","unknownUser":"Utilisateur inconnu","assignee":"Responsable","reporter":"Rapporteur","created":"Créé","updated":"Mis à jour","due":"Échéance","resolved":"Résolu","affectedVersions":"Versions affectées","openFullDetails":"Ouvrir tous les détails","renderFormat":"Format d’affichage","markdown":"Format Markdown","jiraWiki":"Wiki Jira","viewRendered":"Voir le rendu","viewRaw":"Voir la source","rendered":"Rendu","raw":"Source","copied":"Copié","copy":"Copier","commentActions":"Actions du commentaire","copyRaw":"Copier le contenu source","copyFailed":"Impossible de copier le contenu.","authoringFormat":"Format de rédaction","preview":"Aperçu","hidePreview":"Masquer l’aperçu","commentBody":"Commentaire","commentPlaceholder":"Écrivez un commentaire…","saving":"Enregistrement…","addComment":"Ajouter un commentaire","changeAssignee":"Changer le responsable","searchAssignees":"Rechercher des utilisateurs assignables","loadingAssignees":"Chargement des utilisateurs…","noAssignees":"Aucun utilisateur assignable trouvé.","status":"Statut","changeStatus":"Changer le statut","requiresJira":"Nécessite Jira"},"jiraTicketDetail":{"loading":"Chargement du ticket Jira…","notFound":"Ticket introuvable","notFoundDescription":"Le ticket Jira n’a pas pu être chargé.","back":"Retour aux tickets Jira","summary":"Résumé","save":"Enregistrer","editSummary":"Modifier le résumé","refresh":"Actualiser","edit":"Modifier","saveDescription":"Enregistrer la description","descriptionHistory":"Historique de la description","descriptionHistoryDescription":"Sélectionnez deux versions de l’activité Jira pour comparer leur texte.","currentVersion":"Version actuelle","beforeChange":"Avant le {date}","afterChange":"Après le {date}","loadingHistory":"Chargement de l’historique…","noDescriptionHistory":"Aucune version antérieure de la description n’est disponible.","compareFrom":"Comparer depuis","compareTo":"Comparer vers","compareVersions":"Comparer les versions","descriptionComparison":"Comparaison de la description","selectVersions":"Sélectionnez deux versions différentes à comparer.","activity":"Activité","comments":"Commentaires","history":"Historique","worklogs":"Journaux de travail","unknownUser":"Utilisateur inconnu","noHistory":"Aucun historique disponible.","loadMore":"Charger plus","started":"Commencé {date}","noWorklogs":"Aucun journal de travail disponible.","allFields":"Tous les champs Jira","expandFields":"Afficher les champs","collapseFields":"Masquer les champs","searchFields":"Rechercher des champs","field":"Champ","value":"Valeur","custom":"Personnalisé","details":"Détails","editDetails":"Modifier les détails du ticket","editDetailsDescription":"Seuls les champs modifiables dans Jira sont affichés.","none":"Aucun","commaSeparated":"Valeurs séparées par des virgules","pickDate":"Choisir une date","clearDate":"Effacer la date","saving":"Enregistrement…"},"githubCache":{"title":"Cache GitHub","description":"Inspectez les lectures GraphQL en cache, les coûts exacts, l’utilisation de l’API, la latence et les limites.","ttl":"TTL du cache en minutes","saveTtl":"Enregistrer le TTL","overridesTitle":"TTL GraphQL personnalisées","overridesDescription":"Remplace la TTL globale du cache pour des noms exacts d’opérations GraphQL.","overrideOperation":"Opération GraphQL","overrideTtl":"TTL en secondes","overrideType":"Type","noOperationMatches":"Aucune opération en cache ne correspond. Saisissez un nom exact pour l’ajouter.","selectOperation":"Sélectionner ou saisir une opération","searchOperations":"Rechercher ou saisir une opération","addOverride":"Ajouter une exception","overridesHelp":"Les exceptions s’appliquent à tous les modes d’authentification, sources de requête et variables. La TTL contrôle la fraîcheur du cache, pas la fréquence d’interrogation d’une page.","builtInOverride":"Intégrée","customOverride":"Personnalisée","overrideTtlFor":"TTL en secondes pour {operation}","saveOverride":"Enregistrer la TTL pour {operation}","deleteOverride":"Supprimer l’exception","confirmDeleteOverride":"Supprimer l’exception de TTL pour {operation} ? L’opération utilisera la TTL globale.","deleteOverrideFor":"Supprimer l’exception de TTL pour {operation}","clearCache":"Vider le cache","confirmClear":"Vider toutes les réponses GraphQL GitHub en cache ? L’historique et les limites seront conservés.","loading":"Chargement de l’activité de l’API GitHub…","average":"Moyenne {ms} ms","live":"Direct","cache":"Cache","errors":"Erreurs","points":"{used} points utilisés · {avoided} évités","graphqlRateTitle":"Limites GraphQL","graphqlRateDescription":"Derniers en-têtes de limite principale par mode d’authentification.","restRateTitle":"Limites REST","restRateDescription":"Derniers compartiments REST ; les réponses REST ne sont pas mises en cache.","noRateData":"Aucun en-tête de limite n’a encore été observé.","limit":"Limite","remaining":"Restant","used":"Utilisé","estimated":"Estimé","reset":"Réinitialisation","resource":"Ressource","observed":"Observé","operationsTitle":"Opérations de l’API GitHub","operationsDescription":"Appels GraphQL et REST, avec l’utilisation des points, pour chaque fenêtre glissante.","sourcesTitle":"Appels par source","sourcesDescription":"Appels à l’API GitHub et utilisation des points par fonctionnalité source pour chaque fenêtre glissante.","noMetrics":"Aucune activité de l’API GitHub durant les dernières 24 heures.","operation":"Opération","recentTitle":"Appels récents de l’API GitHub","recentDescription":"Tous les appels GraphQL et REST via PAT ou GitHub App, y compris les requêtes en cache, directes et échouées.","clearCalls":"Effacer les appels récents","confirmClearCalls":"Effacer tous les appels récents de l’API GitHub ? Les réponses en cache et les instantanés des limites seront conservés.","noCalls":"Aucun appel à l’API GitHub n’a été enregistré.","filterApiType":"Filtrer les appels par type d’API","allApiTypes":"GraphQL et REST","filterRequestSource":"Filtrer les appels par source","allRequestSources":"Toutes les sources","filterCallSource":"Filtrer les appels directs ou en cache","liveAndCache":"Direct et cache","time":"Heure","source":"Source","callInfo":"Informations sur l’appel","status":"État","statuses":{"LIVE":"Direct","CACHE":"Cache","ERROR":"Erreur"},"requestSources":{"GITHUB_API":"Historique / inconnu","GITHUB_SETTINGS":"Paramètres GitHub","COMMENTS_PAGE":"Page des commentaires","CODEBASE_REPOSITORY":"Dépôt de base de code","PULL_REQUESTS_PAGE":"Page des pull requests","PULL_REQUEST_DETAILS":"Détails de la pull request","ACTIONS_PAGE":"Page Actions","WORKTREES":"Arbres de travail","WORKTREE_PIPELINES":"Pipelines des arbres de travail","WORKTREE_AUTOMATION":"Automatisation des arbres de travail","AUTO_RETRY":"Nouvelle tentative automatique Actions","WORKFLOW_AUTOMATION":"Automatisation des workflows","ACTIONS_NOTIFICATIONS":"Notifications Actions","CACHE_MANAGEMENT":"Page du cache GitHub"},"authentication":"Authentification","cost":"Coût en points","pointRate":"Points et limite","avoided":"{count} évités","rate":"Compartiment de limite","duration":"Durée","error":"Erreur","entriesTitle":"Entrées GraphQL en cache","entriesDescription":"Réponses persistantes séparées par authentification et variables.","noEntries":"Aucune réponse GraphQL GitHub n’est en cache.","freshness":"Fraîcheur","fresh":"Récent","stale":"Obsolète","lastFetched":"Dernière récupération","lastCost":"Dernier coût","actions":"Actions","open":"Ouvrir","refresh":"Forcer l’actualisation","delete":"Supprimer","confirmDeleteEntry":"Supprimer la réponse en cache de {operation} ?","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant"},"githubCacheDetail":{"title":"Entrée GraphQL en cache","description":"Réponse GraphQL GitHub en cache","refresh":"Forcer l’actualisation","delete":"Supprimer du cache","confirmDelete":"Supprimer cette réponse GraphQL en cache ?","loading":"Chargement de la réponse en cache…","notFound":"Cette réponse n’est pas dans le cache GitHub.","authentication":"Authentification","freshness":"Fraîcheur","fresh":"Récent","stale":"Obsolète","lastCost":"Dernier coût exact en points","fetchedAt":"Récupéré le","query":"Requête GraphQL","variables":"Variables","response":"Données de réponse"},"jiraCache":{"title":"Cache Jira","description":"Inspectez les données en cache, l’usage de l’API, la latence et les erreurs.","ttl":"Durée du cache en minutes","saveTtl":"Enregistrer la durée","clearCache":"Vider le cache","confirmClear":"Vider les réponses et tickets Jira ? L’historique des appels sera conservé.","loading":"Chargement de l’activité du cache…","average":"Moyenne de {ms} ms","live":"Direct","cache":"Cache","errors":"Erreurs","operationsTitle":"Opérations API","operationsDescription":"Comptages par opération et origine pour chaque fenêtre glissante.","noMetrics":"Aucune activité de l’API Jira au cours des dernières 24 heures.","operation":"Opération","recentTitle":"Appels API récents","recentDescription":"Chaque opération Jira mise en cache, de la plus récente à la plus ancienne.","clearCalls":"Effacer les appels récents","confirmClearCalls":"Effacer tous les appels récents de l’API Jira ? Les réponses et les tickets en cache seront conservés.","noCalls":"Aucun appel à l’API Jira n’a été enregistré.","time":"Heure","fetched":"Éléments récupérés","source":"Origine","sources":{"LIVE":"Direct","CACHE":"Cache","ERROR":"Erreur"},"duration":"Durée","error":"Erreur","stale":"Expiré","ticketsTitle":"Tickets en cache","ticketsDescription":"Couverture des résumés, détails et commentaires des tickets Jira.","noTickets":"Aucun ticket Jira n’est en cache.","ticket":"Ticket","status":"Statut","coverage":"Couverture","freshness":"Fraîcheur","fresh":"À jour","lastFetched":"Dernière récupération","actions":"Actions","open":"Ouvrir","refresh":"Actualiser","delete":"Supprimer","confirmDeleteTicket":"Supprimer {issueKey} et toutes les entrées qui le référencent ?","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant"},"jiraCacheDetail":{"description":"Données Jira du ticket en cache","refresh":"Actualiser le ticket","delete":"Supprimer du cache","confirmDelete":"Supprimer {issueKey} et ses entrées de cache associées ?","loading":"Chargement du ticket en cache…","notFound":"Ce ticket ne figure pas dans le cache Jira.","coverage":"Couverture","freshness":"Fraîcheur","fresh":"À jour","stale":"Expiré","detailFetched":"Détail récupéré","commentsFetched":"Commentaires récupérés","summaryData":"Réponse de résumé","detailData":"Réponse détaillée complète","commentsData":"Réponse complète des commentaires","notFetched":"Ce niveau de données n’a pas encore été récupéré.","relatedEntries":"Entrées de cache associées","noEntries":"Aucune entrée de cache ne référence ce ticket.","operation":"Opération","fetchedAt":"Récupéré le","entryId":"Identifiant de cache"},"jiraSettings":{"title":"Paramètres","description":"Configurez le compte Jira Cloud utilisé par cette application.","loading":"Chargement des paramètres Jira…","credentials":"Identifiants Jira","configured":"Jeton configuré","notConfigured":"Jeton non configuré","siteUrl":"URL du site Jira Cloud","siteUrlHelp":"Utilisez l’URL racine *.atlassian.net de votre site Jira.","email":"Adresse du compte Jira","accountHelp":"Ouvrez Jira dans votre navigateur et copiez uniquement l’origine https://*.atlassian.net. Utilisez l’adresse du même compte Atlassian.","apiToken":"Jeton d’API Jira","tokenPlaceholder":"Collez un jeton d’API Atlassian","tokenPlaceholderConfigured":"Laissez vide pour conserver le jeton","tokenHelp":"Le jeton est stocké dans SQLite local et n’est jamais renvoyé au navigateur.","tokenKeepHelp":"Laissez ce champ vide sauf pour remplacer le jeton enregistré.","tokenAcquireHelp":"Créez un jeton d’API Atlassian standard capable de s’authentifier directement auprès de ce site Jira.","createToken":"Créer un jeton d’API Jira","save":"Enregistrer les paramètres","test":"Tester la connexion","remove":"Retirer les identifiants","saved":"Paramètres Jira enregistrés.","connectionSucceeded":"Connexion à Jira réussie.","removed":"Identifiants retirés et données Jira en cache supprimées.","confirmSiteChange":"Changer de site supprime projets, sources et cache Jira. Continuer ?","confirmRemove":"Retirer l’adresse et le jeton enregistrés puis vider le cache Jira ?","webhookTitle":"Webhook Jira","webhookDescription":"Facultatif. Pousse les changements Jira vers les déclencheurs de workflows et les mises à jour de tickets en direct, sans attendre qu’un ticket soit consulté.","webhookConfigured":"Webhook configuré","webhookNotConfigured":"Webhook non configuré","webhookRegistered":"Enregistré dans Jira","webhookRegisteredAs":"Enregistré dans Jira sous le webhook {id}. Modifiez l\'URL ou le JQL ci-dessus puis réenregistrez pour le mettre à jour.","webhookUrl":"URL du webhook","webhookUrlHelp":"Jira doit pouvoir atteindre cette URL en HTTPS public. Modifiez-la si ce serveur est public à une autre adresse. Les livraisons non signées avec le secret ci-dessous sont rejetées.","webhookJql":"Filtre JQL","webhookJqlHelp":"Facultatif. Limitez les livraisons aux projets que vous automatisez. Chaque événement de ticket coûte un appel à l\'API Jira : gardez le filtre serré.","webhookSecret":"Secret de signature","webhookSecretHelp":"Copiez-le dans le champ Secret du webhook dans Jira. Il n’est affiché qu’une fois et n’est jamais renvoyé — régénérez-le si vous le perdez.","webhookSecretPending":"Générez un secret pour terminer la configuration du webhook dans Jira.","webhookSecretRegistered":"Stocké ici et dans Jira. Rien à copier : la rotation le remplace des deux côtés.","copy":"Copier","copied":"Copié","enableWebhook":"Générer un secret","registerWebhook":"Enregistrer dans Jira","updateRegistration":"Mettre à jour l\'enregistrement","rotateWebhook":"Renouveler le secret","disableWebhook":"Désactiver le webhook","webhookEnabled":"Secret du webhook Jira généré.","webhookRotated":"Secret du webhook Jira renouvelé. Mettez-le à jour dans Jira avant la prochaine livraison.","webhookDisabled":"Webhook Jira désactivé.","webhookRegisteredNotice":"Webhook Jira enregistré. Les livraisons commencent immédiatement.","webhookReregistered":"Enregistrement du webhook Jira mis à jour.","webhookRotatedInJira":"Secret du webhook Jira renouvelé ici et dans Jira.","confirmRotateRegisteredDescription":"Générer un nouveau secret de signature et le mettre à jour dans Jira ? Les livraisons signées avec l\'ancien secret sont rejetées.","confirmRotate":"Renouveler le secret de signature du webhook Jira ?","confirmRotateDescription":"Les livraisons signées avec l’ancien secret sont rejetées tant que le nouveau n’est pas collé dans Jira.","confirmDisable":"Désactiver le webhook Jira ?","confirmDisableDescription":"Le secret de signature est supprimé et les livraisons entrantes ne sont plus acceptées. Supprimez aussi le webhook dans Jira.","lastWebhook":"Dernière livraison : {date} ({outcome})","viewDeliveries":"Voir les livraisons","setupTitle":"Terminer la configuration dans Jira","manualIntro":"Pas administrateur Jira ? Générez plutôt un secret et créez le webhook à la main :","setupStep1":"Dans Jira, ouvrez Paramètres → Système → WebHooks puis choisissez Create a WebHook.","setupStep2":"Collez l’URL ci-dessus dans URL et le secret dans Secret.","setupStep3":"Sélectionnez ces événements : {events}","setupStep4":"Définissez un filtre JQL tel que {jql} pour que seuls les projets automatisés envoient des livraisons.","webhookDocs":"Documentation des webhooks Jira"},"settings":{"title":"Paramètres","description":"Configurez les outils de développement, les services Apple et les intégrations externes.","developmentGroup":"Développement","developmentGroupDescription":"Choisissez les outils utilisés avec les extractions locales et les worktrees.","appleGroup":"Services Apple","appleGroupDescription":"Gérez l’inscription iOS et les identifiants App Store Connect et APNs.","integrationsGroup":"Intégrations","integrationsGroupDescription":"Connectez les comptes Jira et GitHub utilisés dans toute l’application."},"editorSettings":{"title":"Éditeur des worktrees","description":"Choisissez l’édition de VS Code qui ouvre les worktrees ou masquez ces actions.","loading":"Chargement des réglages de l’éditeur…","label":"Éditeur","code":"Visual Studio Code (version stable)","insiders":"Visual Studio Code (canal Insiders)","none":"Aucun (masquer les boutons)","setupHelp":"Installez l’édition sélectionnée sur le Mac qui héberge le worktree :","downloadCode":"Télécharger Visual Studio Code","downloadInsiders":"Télécharger VS Code Insiders","save":"Enregistrer l’éditeur","saved":"Réglage de l’éditeur enregistré."},"githubSettings":{"title":"Identifiants GitHub","description":"Connectez le compte utilisé pour charger les demandes de tirage et GitHub Actions.","loading":"Chargement des paramètres GitHub…","configured":"Jeton configuré","notConfigured":"Jeton non configuré","apiToken":"Jeton d’accès personnel GitHub","tokenPlaceholder":"Collez un jeton d’accès personnel GitHub","tokenPlaceholderConfigured":"Laissez vide pour conserver le jeton enregistré","tokenHelp":"Accordez un accès en lecture et écriture aux demandes de tirage ainsi qu’un accès en lecture à Actions dans les dépôts utilisés. Le jeton sert aux vues, aux fils de révision et aux détails des exécutions.","tokenKeepHelp":"Laissez ce champ vide sauf si vous souhaitez remplacer le jeton enregistré.","tokenAcquireHelp":"Créez un jeton à granularité fine limité aux dépôts utilisés ici. Accordez Actions : lecture, Checks : lecture, Pull requests : lecture et écriture, et Contents : lecture et écriture pour les fusions. La lecture des adresses e-mail est facultative pour le choix de l’adresse des commits.","createToken":"Créer un jeton à granularité fine","pollInterval":"Intervalle des notifications Actions et des relances automatiques (secondes)","pollIntervalHelp":"Contrôle l’interrogation des relances automatiques et, lorsqu’aucun webhook GitHub App signé n’est disponible, celle des notifications. Choisissez un entier de 30 à 3600.","save":"Enregistrer les paramètres","test":"Tester la connexion","remove":"Supprimer les identifiants","saved":"Paramètres GitHub enregistrés.","connectionSucceeded":"Connexion à GitHub réussie.","removed":"Identifiants GitHub supprimés. Les dépôts gérés ont été conservés.","confirmRemove":"Supprimer les identifiants GitHub ?","confirmRemoveDescription":"Le jeton enregistré sera supprimé. Les dépôts gérés et leurs expressions Jira seront conservés."},"githubAppSettings":{"title":"Relance des pipelines par GitHub App","description":"Utilisez votre propre GitHub App pour relancer les workflows GitHub Actions.","loading":"Chargement des paramètres de la GitHub App…","verified":"Vérifiée","notConfigured":"Non configurée","setupTitle":"Configurer votre propre GitHub App","stepRegister":"Enregistrez une GitHub App au nom unique, par exemple « Relance IA Environnement », depuis","registerLink":"Créer une GitHub App","stepHomepage":"Utilisez","stepHomepageSuffix":" comme URL de page d’accueil. Laissez l’URL de rappel vide.","stepPermissions":"Réglez Repository permissions → Actions sur Read and write. Pour les mises à jour en direct avancées, accordez aussi l’accès en lecture à Checks et Commit statuses.","stepWebhook":"Activez les webhooks, sélectionnez Workflow run et utilisez","stepWebhookSuffix":" comme URL du webhook. L’enregistrement configure le secret et l’URL via GitHub.","stepInstall":"Créez l’app, générez une clé privée, puis installez-la uniquement sur les dépôts que ce déploiement doit contrôler.","stepInstallationId":"Après l’installation, ouvrez la page Configure de l’app. L’identifiant d’installation est le dernier nombre de l’URL, par exemple","stepInstallationIdSuffix":". Remplacez Organization-name par votre organisation et copiez la valeur finale de l’ID.","stepCredentials":"Copiez l’identifiant de l’app et celui de l’installation, puis collez-les avec le fichier PEM téléchargé.","appId":"Identifiant de la GitHub App","appIdPlaceholder":"Saisissez l’identifiant numérique de l’app","installationId":"Identifiant d’installation","installationIdPlaceholder":"Saisissez l’identifiant numérique d’installation","webhookUrl":"URL du webhook","webhookUrlHelp":"Remplacez le point de terminaison HTTPS public lorsque ce déploiement se trouve derrière un proxy ou un tunnel.","enhancedWebhooks":"Webhooks de pipeline avancés","enhancedWebhooksHelp":"Recevez les mises à jour des vérifications, tâches et statuts de commit dès leur envoi par GitHub. Activez les autorisations et événements indiqués, approuvez les changements d’installation, puis enregistrez pour vérifier.","openAppSettings":"Ouvrir les paramètres de la GitHub App","privateKey":"Clé privée au format PEM","privateKeyDropZone":"Zone de dépôt de la clé privée PEM","pemDropHint":"Déposez un fichier .pem ici ou collez la clé ci-dessous.","pemFileLoaded":"{filename} a été chargé. Enregistrez et vérifiez pour utiliser cette clé.","pemFileInvalid":"Déposez un fichier .pem valide contenant une clé privée RSA.","pemFileReadError":"Le fichier PEM déposé n’a pas pu être lu.","privateKeyPlaceholder":"Collez le PEM téléchargé de la GitHub App","privateKeyPlaceholderConfigured":"Laissez vide pour conserver la clé configurée","privateKeyHelp":"La clé est envoyée uniquement au serveur Next.js et n’est jamais renvoyée au navigateur.","privateKeyKeepHelp":"Une clé privée est configurée. Collez un nouveau PEM uniquement pour la renouveler.","connectedAs":"Connexion à {app} sur {account}","connectionDetails":"Actions : {permission} ; dépôts : {selection}","pipelinePermissions":"Checks : {checks} ; statuts de commit : {statuses}","lastVerified":"Dernière vérification : {date}","webhookConfigured":"Webhook configuré sur {url}","webhookNeedsSetup":"Les identifiants de la GitHub App sont vérifiés, mais GitHub indique que les webhooks ne sont pas activés. Activez les webhooks, sélectionnez l’événement Workflow run, puis enregistrez à nouveau.","webhookUnavailable":"Le webhook nécessite une origine HTTPS publique ; l’interrogation par jeton personnel reste disponible.","lastWebhook":"Dernier webhook : {date} ({outcome})","viewDeliveries":"Voir les livraisons","save":"Enregistrer et vérifier","rotate":"Renouveler la clé et vérifier","test":"Tester la connexion","remove":"Supprimer la GitHub App","saved":"La GitHub App a été enregistrée et vérifiée.","rotated":"La clé privée de la GitHub App a été renouvelée et vérifiée.","connectionSucceeded":"La connexion à la GitHub App a été vérifiée.","removed":"Les identifiants de la GitHub App ont été supprimés. Le jeton personnel et les dépôts gérés sont conservés.","confirmRemove":"Supprimer les identifiants de la GitHub App ?","confirmRemoveDescription":"L’identifiant de l’app, celui de l’installation et la clé privée seront supprimés. Les identifiants des demandes et les dépôts gérés seront conservés."},"polling":{"title":"Interrogation","description":"Consultez les opérations en arrière-plan du serveur et des agents, leur fréquence, fraîcheur et erreurs.","refresh":"Actualiser","loading":"Chargement des opérations…","serverTitle":"Opérations du serveur","agentTitle":"Opérations des agents","empty":"Aucune opération enregistrée.","operation":"Opération","agent":"Agent","status":"État","cadence":"Fréquence","lastStarted":"Dernier démarrage","lastCompleted":"Dernière fin","nextPoll":"Prochaine interrogation","details":"Détails","serverRuntime":"Serveur","agentRuntime":"Agent","everySeconds":"Toutes les {seconds}s","duration":"{milliseconds} ms","kinds":{"GITHUB_ACTIONS_NOTIFICATIONS":"Notifications GitHub actions","GITHUB_AUTO_RETRY":"Nouvelle tentative GitHub","APNS_RECOVERY":"Récupération des lots APNs","AGENT_HEARTBEAT":"Pulsation de l’agent","AGENT_JOB_RECONCILIATION":"Rapprochement durable des tâches","AGENT_DISK_SPACE":"Espace disque de l’agent","SIDEBAR_USAGE":"Utilisation de la barre latérale","CODEBASE_SCAN":"Analyse du code","GIT_FETCH":"Git fetch","WORKTREE_AUTOMATION":"Automatisation des worktrees"},"statuses":{"DISABLED":"Désactivé","HEALTHY":"Sain","RUNNING":"En cours","STALE":"Périmé","ERROR":"Erreur"}},"githubWebhooks":{"title":"Webhooks GitHub","description":"Consultez les livraisons de webhooks reçues de GitHub et leur traitement.","deliveryCount":"{count, plural, one {# livraison} other {# livraisons}}","refresh":"Actualiser","clearHistory":"Effacer l’historique","confirmClearHistory":"Effacer tout l’historique des livraisons de webhooks ? Les nouvelles livraisons continueront d’apparaître ici.","received":"Reçu","event":"Événement","repository":"Dépôt","outcome":"Résultat","details":"Détails","workflowRun":"Exécution du workflow {id}","processed":"Traité","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant","empty":"Aucune livraison de webhook pour le moment.","emptyDescription":"Les événements apparaîtront ici lorsque GitHub les enverra au webhook configuré.","outcomes":{"received":"Reçu","processed":"Traité","ignored":"Ignoré","error":"Erreur"}},"jiraWebhooks":{"title":"Webhooks Jira","description":"Consultez les livraisons de webhooks reçues de Jira et leur traitement.","deliveryCount":"{count, plural, one {# livraison} other {# livraisons}}","refresh":"Actualiser","clearHistory":"Effacer l’historique","confirmClearHistory":"Effacer tout l’historique des livraisons de webhooks ? Les nouvelles livraisons continueront d’apparaître ici.","received":"Reçu","event":"Événement","issue":"Ticket","outcome":"Résultat","details":"Détails","change":"modification","changes":"modifications","retry":"Tentative {count}","processed":"Traité","showing":"Affichage de {start} à {end} sur {total}","previous":"Précédent","next":"Suivant","empty":"Aucune livraison de webhook pour le moment.","emptyDescription":"Les événements apparaîtront ici lorsque Jira les enverra au webhook configuré.","outcomes":{"received":"Reçu","processed":"Traité","ignored":"Ignoré","error":"Erreur"}},"pullRequests":{"title":"Demandes de tirage","description":"Consultez vos demandes GitHub et les dépôts surveillés au même endroit.","refresh":"Actualiser","manage":"Gérer","loading":"Chargement de la configuration GitHub…","credentialsRequired":"Connectez GitHub pour afficher les demandes","credentialsRequiredDescription":"Ajoutez un jeton d’accès personnel dans les Paramètres avant de charger les données GitHub.","openSettings":"Ouvrir les Paramètres","tabsLabel":"Vues des demandes de tirage","mine":"Les miennes","reviewRequests":"Demandes de révision","repositories":"Dépôts","stateFilter":"État de la demande de tirage","repositoryFilter":"Dépôt","selectRepository":"Sélectionner un dépôt","searchRepositories":"Rechercher des dépôts","searchAvailableRepositories":"Rechercher les dépôts disponibles","noRepositoryMatches":"Aucun dépôt ne correspond à la recherche.","truncated":"La recherche GitHub renvoie au maximum 1 000 résultats. Affinez votre charge de travail sur GitHub pour voir les éléments au-delà de cette limite.","loadingPullRequests":"Chargement des demandes de tirage…","loadingMore":"Chargement…","retryLoad":"Réessayer","empty":"Aucune demande de tirage","emptyDescription":"Aucune demande de tirage ne correspond actuellement à cette vue.","repository":"Dépôt","number":"Numéro","pullRequest":"Demande de tirage","pullRequestAndRepository":"Demande de tirage / Dépôt","labels":"Étiquettes","ticket":"Ticket","pipeline":"Pipeline","approval":"Approbation","openComments":"Commentaires ouverts","viewOpenComments":"Voir {count} commentaires ouverts","age":"Ancienneté","actions":"Actions","details":"Détails","openInGitHub":"Ouvrir dans GitHub","merge":"Fusionner","mergePullRequest":"Fusionner la pull request","mergePullRequestDescription":"Fusionnez {repository} #{number} après avoir vérifié les détails du commit.","loadingMergeOptions":"Vérification des conditions de fusion…","mergeType":"Type de fusion","selectMergeType":"Sélectionner un type de fusion","mergeTypes":{"SQUASH":"Squash et fusion","MERGE":"Créer un commit de fusion","REBASE":"Rebase et fusion"},"commitMessage":"Message du commit","commitDescription":"Description du commit","commitEmail":"E-mail du commit","githubDefaultEmail":"Utiliser la valeur par défaut du compte GitHub","cancelMerge":"Annuler","merging":"Fusion en cours…","pipelineStates":{"ACTION_REQUIRED":"Action requise","CANCELLED":"Annulé","ERROR":"Erreur","EXPECTED":"Attendu","FAILURE":"Échec","IN_PROGRESS":"En cours","NEUTRAL":"Neutre","PENDING":"En attente","QUEUED":"En file","SKIPPED":"Ignoré","STALE":"Obsolète","STARTUP_FAILURE":"Échec au démarrage","SUCCESS":"Réussi","TIMED_OUT":"Délai dépassé","NONE":"Aucune vérification"},"pipelineMenuTitle":"État des pipelines","noPipelines":"Aucune vérification de pipeline n’a été signalée.","retry":"Relancer","retrying":"Relance…","retryUnavailable":{"GITHUB_APP_NOT_CONFIGURED":"Configurez et vérifiez une GitHub App dans les Paramètres pour relancer ce workflow.","NOT_COMPLETED":"Seuls les workflows terminés peuvent être relancés.","NOT_GITHUB_ACTIONS":"Seules les exécutions GitHub Actions peuvent être relancées.","WORKFLOW_RUN_UNAVAILABLE":"GitHub n’a fourni aucune exécution de workflow pour cette suite de vérifications.","HISTORICAL_ATTEMPT":"Les anciennes tentatives sont en lecture seule."},"reviewStates":{"APPROVED":"Approuvée","CHANGES_REQUESTED":"Modifications demandées","REVIEW_REQUIRED":"Révision requise","NONE":"Aucune décision"},"pullRequestStates":{"ALL":"Toutes","OPEN":"Ouverte","CLOSED":"Fermée","MERGED":"Fusionnée"},"mergeableStates":{"CONFLICTING":"Conflits","MERGEABLE":"Fusionnable","UNKNOWN":"Calcul en cours"},"manageTitle":"Gérer les dépôts GitHub","manageDescription":"Choisissez les onglets de dépôt et configurez l’extraction des clés Jira depuis les titres.","manageCredentialsRequired":"Configurez les identifiants GitHub avant d’ajouter des dépôts.","managedRepositories":"Dépôts gérés","noManagedRepositories":"Aucun dépôt n’est encore géré.","addRepository":"Ajouter un dépôt","browse":"Parcourir","enterManually":"Saisir manuellement","privateRepository":"Dépôt privé","managed":"Géré","add":"Ajouter","loadingRepositories":"Chargement des dépôts…","loadMore":"Charger plus","repositoryName":"Propriétaire/nom du dépôt","jiraKeyRegex":"Expression régulière de clé Jira","jiraKeyRegexHelp":"Le premier groupe capturé est utilisé s’il existe, sinon la correspondance complète. Effacez le champ pour désactiver l’analyse.","defaultJiraKeyRegex":"Expression par défaut de clé de ticket","defaultJiraKeyRegexHelp":"Utilisée pour chaque dépôt géré sans remplacement propre. Le premier groupe capturé est utilisé s’il existe.","jiraKeyRegexOverrideHelp":"Laissez vide pour hériter de l’expression par défaut.","saveDefaultRegex":"Enregistrer l’expression par défaut","invalidRegex":"Saisissez une expression régulière de clé Jira valide.","done":"Terminé","removeRepository":"Supprimer le dépôt","confirmRemoveRepository":"Supprimer ce dépôt géré ?","confirmRemoveRepositoryDescription":"Son onglet de demandes et sa configuration d’expression Jira seront supprimés.","saveRegex":"Enregistrer l’expression Jira"},"githubComments":{"title":"Commentaires","description":"Consultez et répondez aux fils de révision GitHub de vos demandes ouvertes.","refresh":"Actualiser","layout":"Disposition des commentaires","cards":"Disposition en cartes","table":"Disposition en tableau","loadingConfiguration":"Chargement de la configuration GitHub…","credentialsRequired":"Connectez GitHub pour voir les commentaires","credentialsDescription":"Ajoutez dans Paramètres un jeton personnel autorisé à lire et modifier les demandes.","openSettings":"Ouvrir les paramètres","allPullRequests":"Toutes les demandes ouvertes","searchPullRequests":"Rechercher des demandes ouvertes","noPullRequestMatches":"Aucune demande ouverte ne correspond à la recherche.","currentUser":"Utilisateur actuel","otherUsers":"Autres utilisateurs","unresolved":"Non résolus","truncated":"La recherche GitHub renvoie au maximum 1 000 demandes. Certains fils peuvent manquer.","loading":"Chargement des commentaires de révision…","empty":"Aucun commentaire de révision","emptyDescription":"Aucun fil ne correspond à la demande et aux filtres sélectionnés.","reviewThreads":"Commentaires de révision","reviewThreadsDescription":"{count, plural, =0 {Aucun fil de révision ne correspond aux filtres actuels.} one {# fil de révision correspond aux filtres actuels.} other {# fils de révision correspondent aux filtres actuels.}}","author":"Auteur","pullRequest":"Demande de tirage","comment":"Commentaire","date":"Date du commentaire","replies":"Réponses","github":"Plateforme GitHub","rendered":"Aperçu rendu","markdown":"Source Markdown","viewRaw":"Source","viewRendered":"Rendu","copy":"Copier","copied":"Copié","copyFailed":"Impossible de copier le Markdown.","unknownAuthor":"Auteur inconnu","fileComment":"Commentaire de fichier","outdated":"Obsolète","resolved":"Résolu","openInGitHub":"Ouvrir dans GitHub","openReplyInGitHub":"Ouvrir la réponse dans GitHub","reply":"Répondre","replyPlaceholder":"Répondre en Markdown…","replyUnavailable":"GitHub n’autorise pas ce compte à répondre à ce fil.","reopen":"Rouvrir le fil","resolve":"Résoudre le fil","replying":"Envoi en cours…","sendReply":"Envoyer la réponse"},"pullRequestDetail":{"back":"Demandes de tirage","loading":"Chargement des détails de la demande…","notFound":"Demande de tirage introuvable","notFoundDescription":"Cette demande est indisponible ou le jeton GitHub configuré ne permet pas d’y accéder.","refresh":"Actualiser","openInGitHub":"Ouvrir dans GitHub","viewWorktree":"Voir le worktree","draft":"Brouillon","description":"Description","noDescription":"Aucune description n’a été fournie.","comments":"Commentaires","noComments":"Aucun commentaire de révision","noCommentsDescription":"Cette demande de tirage ne contient aucun fil de révision.","pipelines":"Chaînes d’intégration","pipelineCount":"{count} pipelines et contextes d’état","viewAll":"Tout afficher","pipelineName":"Pipeline","pipelineStatus":"État","pipelineDetails":"Détails","viewPipeline":"Voir","jobCount":"{count} tâches","noJobs":"Aucune tâche n’a été signalée pour cette exécution.","viewJob":"Voir {job} sur GitHub","jobActions":"Actions pour {job}","retryJob":"Relancer {job}","showJobSteps":"Afficher les étapes de {job}","hideJobSteps":"Masquer les étapes de {job}","steps":"Étapes","noSteps":"Aucune étape n’a encore été signalée pour cette tâche.","details":"Détails de la demande","branches":"Branches","changes":"Modifications","files":"Fichiers modifiés","commits":"Commits","mergeable":"Possibilité de fusion","openComments":"Commentaires ouverts","created":"Créée","updated":"Mise à jour","merged":"Fusionnée","people":"Personnes","author":"Auteur","assignees":"Assignés","unassigned":"Non assignée","unknown":"Inconnu"},"actionsPage":{"title":"Actions GitHub","description":"Surveillez les exécutions de workflows dans les bases de code GitHub enregistrées.","refresh":"Actualiser","loadingConfiguration":"Chargement de la configuration GitHub…","credentialsRequired":"Connectez GitHub pour afficher Actions","credentialsRequiredDescription":"Ajoutez dans les Paramètres un jeton d’accès personnel autorisé à lire Actions.","openSettings":"Ouvrir les Paramètres","repositoryFilter":"Dépôt","allRepositories":"Tous les dépôts","searchRepositories":"Rechercher des dépôts","noRepositoryMatches":"Aucun dépôt ne correspond à la recherche.","branchFilter":"Branche","branchFilterPlaceholder":"Saisir le nom exact de la branche","applyBranchFilter":"Appliquer","clearBranchFilter":"Effacer le filtre de branche","pipelineFilter":"Flux de travail","allPipelines":"Tous les pipelines","searchPipelines":"Rechercher des pipelines","noPipelineMatches":"Aucun pipeline ne correspond à la recherche.","loadingRuns":"Chargement des exécutions…","noCodebases":"Aucune base de code GitHub","noCodebasesDescription":"Enregistrez une base de code dont l’origine est github.com pour afficher ses exécutions.","empty":"Aucune exécution","emptyDescription":"GitHub n’a renvoyé aucune exécution pour cette sélection de dépôts.","expand":"Développer","repository":"Dépôt","workflowRun":"Exécution du workflow","trigger":"Déclencheur","status":"État","pullRequest":"Demande de tirage","ticket":"Ticket","worktree":"Arbre de travail","started":"Démarrée","duration":"Durée : {duration}","actions":"Actions","runNumber":"Exécution n° {number}","autoRetry":"Relance automatique","attempt":"Tentative {attempt}","view":"Voir","viewWorktree":"Voir","cancel":"Annuler","cancelling":"Annulation…","forceCancel":"Forcer l’annulation","forceCancelling":"Annulation forcée…","forceCancelTitle":"Forcer l’annulation de cette exécution ?","forceCancelDescription":"L’annulation forcée contourne les conditions qui empêchent normalement GitHub d’arrêter cette exécution. Utilisez-la uniquement si l’annulation normale est bloquée.","keepRunning":"Laisser s’exécuter","showJobs":"Afficher les tâches de {run}","hideJobs":"Masquer les tâches de {run}","jobs":"Tâches","jobCount":"{count} tâches","loadingJobs":"Chargement des tâches…","retryLoad":"Réessayer","noJobs":"Aucune tâche n’a été signalée pour cette exécution.","showJobSteps":"Afficher les étapes de {job}","hideJobSteps":"Masquer les étapes de {job}","retryJob":"Relancer {job}","steps":"Étapes","noSteps":"Aucune étape n’a encore été signalée pour cette tâche.","loadMore":"Charger plus","loadingMore":"Chargement…"},"githubAutomation":{"autoRetry":"Relance automatique","title":"Configurer la relance automatique","description":"Relance automatiquement les workflows ou tâches GitHub Actions sélectionnés.","loading":"Chargement des workflows et règles enregistrées…","credentialsRequired":"Configurez un jeton d’accès personnel et vérifiez une GitHub App avec un accès en écriture à Actions avant de créer des règles.","scope":"S’applique à","currentRuns":"Exécutions actuelles","futureRuns":"Exécutions futures","targets":"Pipelines et tâches","allWorkflows":"Tous les workflows, y compris ceux ajoutés ultérieurement","noWorkflows":"Aucun workflow GitHub Actions trouvé.","mode":"Mode de relance","failureMode":"Relancer les échecs","countMode":"Relancer les réussites par nombre","retryLimit":"Limite de relances","unlimited":"Illimité","failureStrategy":"Lors d’un échec","failedJobs":"Relancer uniquement les tâches échouées","allJobs":"Relancer toutes les tâches","savedRules":"Règles enregistrées","edit":"Modifier la règle","ruleProgress":"{retries} relances automatiques sur {executions} exécutions","pause":"Suspendre la règle","resume":"Reprendre la règle","delete":"Supprimer la règle","close":"Fermer","save":"Enregistrer la règle","limitError":"Saisissez une limite comprise entre 1 et 100.","targetRequired":"Sélectionnez au moins un workflow ou une tâche.","attemptSelector":"Tentative du workflow","latestAttempt":"Dernière — Tentative {attempt}","attempt":"Tentative {attempt}","attemptStartedBy":"Lancée par @{actor}","pipelines":"Pipelines","pipelineCount":"{count} pipelines GitHub Actions","pipeline":"Chaîne","status":"État","actions":"Actions","view":"Voir","noJobs":"Aucune tâche signalée pour cette tentative.","statuses":{"ACTIVE":"Active","PAUSED":"Suspendue","COMPLETED":"Terminée","EXHAUSTED":"Épuisée","ERROR":"Erreur"},"scopes":{"WORKFLOW_RUN":"Exécution actuelle","WORKTREE_BRANCH":"Branche du worktree","PULL_REQUEST":"Pull request","REPOSITORY":"Dépôt"}},"codebases":{"title":"Bases de code","description":"Suivez les dépôts Git et leurs copies de travail sur tous les agents inscrits.","refreshAll":"Tout actualiser","fetchAll":"Tout récupérer","add":"Ajouter une base de code","groupBy":"Regrouper les bases de code par","agents":"Agents","repositories":"Dépôts","loading":"Chargement des bases de code…","emptyTitle":"Aucune base de code","emptyDescription":"Ajoutez un dépôt Git existant depuis un agent en ligne.","skipped":"{count} bases de code hors ligne, incompatibles ou indisponibles ont été ignorées.","fetchQueued":"La récupération a démarré pour les bases de code admissibles.","refreshQueued":"L’actualisation a démarré pour les bases de code admissibles.","online":"En ligne","offline":"Hors ligne","edit":"Modifier","view":"Afficher","folder":"Dossier","origin":"Origine","branch":"Branche","upstream":"Branche suivie","lastChecked":"Dernière vérification","lastFetched":"Dernière récupération","never":"Jamais","unknown":"Inconnu","none":"Aucune","ahead":"En avance de {count}","behind":"En retard de {count}","sync":{"IN_SYNC":"Synchronisée","AHEAD":"En avance","BEHIND":"En retard","DIVERGED":"Divergente","NO_UPSTREAM":"Sans branche suivie","DETACHED":"Détachée","UNKNOWN":"Inconnu"},"availability":{"AVAILABLE":"Disponible","MISSING":"Dossier introuvable","NOT_REPOSITORY":"Ce n’est pas un dépôt Git","ORIGIN_MISMATCH":"L’origine a changé","ERROR":"Indisponible"},"operationRunning":"Opération Git en cours…","fetch":"Récupérer","addTitle":"Ajouter une base de code","addDescription":"Parcourez un agent, inspectez un dépôt Git et confirmez son origine avant l’enregistrement.","agent":"Agent","selectAgent":"Sélectionnez un agent en ligne","browseHome":"Parcourir le dossier personnel","home":"Accueil","showHidden":"Afficher les dossiers cachés","truncated":"Seuls les 1 000 premiers dossiers sont affichés.","addFolder":"Ajouter ce dossier","detached":"HEAD détachée","existingOrigin":"Cette origine utilise déjà le nom partagé « {name} ».","name":"Nom du dépôt","repositoryDescription":"Description du dépôt","cancel":"Annuler","confirm":"Confirmer la base de code","editTitle":"Modifier les détails du dépôt","loadingRepository":"Chargement du dépôt…","repositoryNotFound":"Dépôt introuvable","repositoryNotFoundDescription":"Ce dépôt logique n’a peut-être plus de copie de travail enregistrée.","backToCodebases":"Retour aux bases de code","repositorySharedDescription":"Ces détails, configurations de build et scripts autorisés appartiennent au dépôt logique et s’appliquent à toutes les copies d’agent et tous les worktrees.","repositoryDetails":"Détails du dépôt","repositoryDetailsDescription":"Gérez les réglages partagés par toutes les copies enregistrées de ce dépôt.","repositorySaved":"Détails du dépôt enregistrés.","autoRetry":"Relance automatique","autoRetryDescription":"Configurez des règles de relance durables pour les workflows GitHub Actions de ce dépôt.","autoRetryGitHubOnly":"La relance automatique est disponible uniquement pour les dépôts hébergés sur GitHub.","skillGroups":"Groupes de compétences","skillGroupsHelp":"Choisissez les groupes synchronisés dans tous les checkouts et worktrees de ce dépôt.","noSkillGroups":"Aucun groupe disponible.","quickActions":"Actions rapides","repositoryQuickActionsDescription":"Workflows hérités par ce dépôt. Ouvrez un workflow pour modifier son type ou sa portée.","quickActionKinds":{"STANDARD":"Standard","MERGE_CONFLICT":"Conflit de fusion","GITHUB_ACTIONS":"Actions GitHub"},"allRepositories":"Tous les dépôts","limitedRepositories":"{count, plural, one {Limité à # dépôt} other {Limité à # dépôts}}","workflowPaused":"En pause","noWorkflows":"Aucun workflow disponible.","quickActionEligibility":"Les workflows configurés restent affichés lorsqu’ils sont en pause ; les actions n’apparaissent que s’ils sont publiés, activés et associés à la ressource actuelle.","saveQuickActions":"Enregistrer les actions rapides","keepBaseBranchUpToDate":"Maintenir la branche de base à jour","keepBaseBranchUpToDateHelp":"Après une récupération réussie, la branche de base est avancée en mode fast-forward lorsqu’aucune modification n’est indexée. Ce réglage du dépôt s’applique à tous les agents.","save":"Enregistrer","remove":"Supprimer","confirmRemoveTitle":"Supprimer l’enregistrement de la base de code ?","confirmRemoveDescription":"L’enregistrement de {folder} sera supprimé. Le dossier et tous ses fichiers resteront intacts sur l’agent.","removed":"L’enregistrement de la base de code a été supprimé.","settings":"Paramètres","settingsTitle":"Paramètres d’état des bases de code","settingsDescription":"Définissez la fréquence à laquelle les agents à jour inspectent les dossiers enregistrés et signalent l’état Git.","refreshInterval":"Intervalle d’actualisation de l’agent (secondes)","refreshIntervalHelp":"Choisissez un entier compris entre {min} et {max}. Chaque agent attend cette durée après la fin d’une analyse. Aucun serveur Git distant n’est contacté.","fetchInterval":"Intervalle de récupération automatique (secondes)","fetchIntervalHelp":"Choisissez un entier de {min} à {max}. L’agent récupère origin lorsque cet intervalle est écoulé.","defaultJiraBranchRegex":"Expression Jira par défaut pour les branches","jiraBranchRegex":"Expression Jira propre à cette origine","jiraBranchRegexHelp":"Le premier groupe capturé est utilisé, sinon la correspondance complète du nom de branche.","inheritDefaultRegex":"Hériter de l’expression par défaut","settingsSaved":"Réglages des bases de code enregistrés."},"codebaseDetail":{"iosApp":"App iOS","loading":"Chargement de la base de code…","notFound":"Base de code introuvable","notFoundDescription":"Cet enregistrement de base de code a peut-être été supprimé.","back":"Retour aux bases de code","operationQueued":"Opération Git mise en attente.","operationSucceeded":"Opération Git terminée.","operationFailed":"L’opération Git a échoué.","offlineReadOnly":"Cet agent est hors ligne. Les informations de branches enregistrées restent disponibles en lecture seule jusqu’à sa reconnexion.","unsupportedReadOnly":"Mettez cet agent à jour pour inspecter et gérer les branches et les stashes. Les informations enregistrées sont affichées en lecture seule.","dirty":"Modifications non validées","refresh":"Actualiser","fetch":"Récupérer origin","repositorySettings":"Réglages du dépôt","origin":"Origine","currentBranch":"Branche actuelle","upstream":"Branche suivie","lastFetched":"Dernière récupération","activeOperation":"{kind} est en cours…","branches":"Branches ({count})","stashes":"Réserves Git ({count})","branchesTruncated":"Seules les 1 000 premières branches sont affichées.","localBranches":"Branches locales","remoteBranches":"Branches distantes d’origin","noLocalBranches":"Aucune branche locale trouvée.","noRemoteBranches":"Aucune branche d’origin trouvée. Récupérez origin puis réessayez.","branchName":"Branche","branchStatus":"État","actions":"Actions","current":"Actuelle","default":"Par défaut","protected":"Protégée","otherWorktree":"Autre worktree","localAvailable":"Branche locale existante","switch":"Changer","stashAndSwitch":"Mettre de côté et changer","confirmDirtySwitchTitle":"Mettre les modifications de côté et changer de branche ?","confirmDirtySwitchDescription":"Les modifications indexées, non indexées et non suivies seront enregistrées dans un nouveau stash avant le passage à {branch}. Le stash sera conservé.","checkout":"Extraire","stashAndCheckout":"Mettre de côté et extraire","confirmDirtyCheckoutTitle":"Mettre les modifications de côté et extraire cette branche ?","confirmDirtyCheckoutDescription":"Les modifications indexées, non indexées et non suivies seront enregistrées dans un nouveau stash avant l’extraction de {branch}. Le stash sera conservé.","pull":"Tirer","deleteRemote":"Supprimer la distante","confirmDeleteRemoteBranchTitle":"Supprimer la branche distante ?","confirmDeleteRemoteBranchDescription":"origin/{branch} sera définitivement supprimée. Les branches locales et worktrees du même nom resteront intacts.","delete":"Supprimer","cancel":"Annuler","confirmDeleteBranchTitle":"Supprimer la branche locale ?","confirmDeleteBranchDescription":"Git ne supprimera {branch} que si ses commits ont déjà été fusionnés. La branche actuelle, celle par défaut ou celle d’un autre worktree ne peut pas être supprimée.","noStashes":"Aucun stash","noStashesDescription":"Ce checkout ne contient actuellement aucun stash Git.","preview":"Aperçu","hidePreview":"Masquer l’aperçu","loadingPreview":"Chargement du patch du stash…","emptyPatch":"Ce stash ne contient aucun patch texte à afficher.","copyPatch":"Copier le patch","patchCopied":"Patch copié","copyPatchFailed":"Impossible de copier le patch.","patchTruncated":"Ce patch a été tronqué à 256 Kio.","stashesTruncated":"Seuls les 200 premiers stashes sont affichés.","apply":"Appliquer","confirmDeleteStashTitle":"Supprimer le stash ?","confirmDeleteStashDescription":"{stash} sera définitivement supprimé. Appliquez-le d’abord si vous devez conserver ses modifications.","stashesTitle":"Remises","stashMessage":"Remise","searchBranches":"Rechercher des branches","searchBranchesPlaceholder":"Filtrer par nom de branche","noMatchingBranches":"Aucune branche ne correspond à votre recherche.","sortBranches":"Trier les branches","sortByName":"Nom","sortByNewestCommit":"Commit le plus récent","searchStashes":"Rechercher des remises","searchStashesPlaceholder":"Filtrer par message ou sélecteur","noMatchingStashes":"Aucune remise ne correspond à votre recherche."},"worktrees":{"title":"Arbres de travail","description":"Gérez les worktrees Git principaux et liés sur tous les agents inscrits.","agentOffline":"L’agent est hors ligne.","worktreeUnavailable":"Ce worktree n’est pas disponible.","agentUnsupported":"Mettez à jour l’agent pour activer les builds iOS.","iosBuildNotConfigured":"Ajoutez d’abord un projet d’app iOS et une configuration de build dans les réglages du dépôt.","filters":"Filtres des worktrees","searchWorktrees":"Rechercher des worktrees","searchWorktreesPlaceholder":"Rechercher des branches, agents, dépôts, tickets ou bases de code…","filterByAgent":"Filtrer par agent","allAgents":"Tous les agents","filterByRepository":"Filtrer par dépôt","allRepositories":"Tous les dépôts","noMatchingWorktrees":"Aucun worktree correspondant","noMatchingWorktreesDescription":"Essayez une autre recherche ou un autre filtre.","refresh":"Actualiser","fetchNow":"Récupérer maintenant","fetchStarted":"Récupération lancée pour les bases de code disponibles.","createWorktree":"Créer un worktree","worktreeCreated":"Worktree créé.","repositoryCheckout":"Checkout du dépôt","selectCodebase":"Sélectionner un agent et un dépôt","selectCodebaseHelp":"Choisissez le checkout de l’agent qui possédera ce worktree.","searchCodebases":"Rechercher des dépôts et des agents","noEligibleCodebases":"Aucun checkout de dépôt compatible et en ligne n’est disponible.","newBranch":"Nouvelle branche","existingBranch":"Branche existante","fromTicket":"Depuis un ticket","branchName":"Nom de branche","ticketKey":"Clé du ticket","loadingTicketBranch":"Chargement du ticket et du nom de branche…","selectExistingBranch":"Sélectionner une branche existante","selectBaseBranch":"Sélectionner une branche de base","searchBranches":"Rechercher des branches","noMatchingBranches":"Aucune branche correspondante.","localBranch":"Locale","originBranch":"Branche distante","localAndOrigin":"Locale et origin","remoteDefault":"Branche distante par défaut","changeBranch":"Changer de branche","viewCodebase":"Voir la base de code","viewRepository":"Voir le dépôt","refreshPullRequest":"Actualiser la demande de tirage","moveToAgent":"Déplacer vers un agent","moveWorktree":"Déplacer l’arbre de travail","moveDescription":"Pousser {branch} et l’extraire sur un autre agent.","destinationAgent":"Agent et copie de destination","selectDestinationAgent":"Sélectionner un agent de destination","searchDestinationAgents":"Rechercher des agents et des copies","noMoveDestinations":"Aucune copie de destination compatible n’est disponible.","destinationWorktree":"Arbre de travail de destination","createDestinationWorktree":"Créer un nouvel arbre de travail","dirtyDestinationWarning":"Cette destination contient des modifications non validées. Git les conservera sur la branche entrante lorsque possible.","deleteOldWorktree":"Supprimer l’ancien arbre après le déplacement","deleteOldWorktreeDisabled":"Les arbres de travail principaux ne peuvent pas être supprimés.","moveFailed":"Le déplacement de l’arbre de travail a échoué.","moveCompleted":"Arbre de travail déplacé.","moveCompletedWithWarning":"La destination est prête, mais le nettoyage de la source nécessite une intervention.","moveCancelled":"Déplacement annulé. La branche source reste poussée et l’arbre source a été conservé.","moveNeedsStash":"Les modifications de destination empêchent le changement de branche.","moveStashHelp":"Mettre de côté les modifications suivies et non suivies, continuer et conserver le stash pour une restauration manuelle.","moveProgress":"Déplacement de {branch}","stashAndContinue":"Mettre de côté et continuer","cancelMove":"Annuler le déplacement","cancel":"Annuler","moveStatus":{"PUSHING":"Envoi de la branche source…","CHECKING_OUT":"Extraction de la destination…","AWAITING_STASH":"En attente d’une décision de stash…","CLEANING_UP":"Suppression de l’ancien arbre…","SUCCEEDED":"Déplacement terminé.","SUCCEEDED_WITH_WARNING":"Déplacement terminé avec un avertissement de nettoyage.","FAILED":"Échec du déplacement.","CANCELLED":"Déplacement annulé."},"moveBlocked":{"agent":"L’agent source est hors ligne ou doit être mis à jour.","busy":"Une autre opération est active pour ce dépôt.","detached":"Une branche source nommée est requise.","dirty":"Validez ou abandonnez les modifications source avant le déplacement.","behind":"Récupérez les modifications d’origin avant le déplacement.","diverged":"Résolvez la divergence avec origin avant le déplacement.","unknown":"La branche ne peut pas être confirmée comme pouvant être poussée en toute sécurité.","destination":"Aucun agent de destination compatible n’est disponible."},"deleteWorktree":"Supprimer l’arbre de travail","deleteWorktreeDescription":"Supprimer définitivement {path} et sa branche locale.","deleteWorktreeWarning":"Toutes les modifications indexées, non indexées et non suivies de cet arbre seront définitivement perdues.","deleteRemoteBranch":"Supprimer également origin/{branch}","defaultRemoteProtected":"La branche par défaut du dépôt ne peut pas être supprimée d’origin.","stashAndRetry":"Stasher et réessayer","stashRetryHelp":"Git n’a pas pu changer de branche avec les modifications actuelles. Stashez les fichiers suivis et non suivis, réessayez et conservez le stash pour une restauration manuelle.","hidden":"Masqués ({count})","cards":"Vue en cartes","table":"Vue en tableau","loading":"Chargement des worktrees…","emptyTitle":"Aucun worktree trouvé","emptyDescription":"Ajoutez une base de code et connectez son agent pour découvrir ses worktrees.","online":"En ligne","offline":"Hors ligne","lastFetched":"Dernière récupération : {value}","neverFetched":"jamais","secondsAgo":"il y a {count} s","branch":"Branche","path":"Chemin","baseBranch":"Branche de base","editBase":"Modifier la branche de base","saveBase":"Enregistrer la branche de base","inheritBase":"Hériter de la valeur distante","baseUnavailable":"Branche distante par défaut indisponible","upstreamStatus":"État amont","baseStatus":"Actualité de la base","baseCurrent":"À jour · {count} en avance","baseBehind":"{count} derrière la base","yes":"Oui","notUpToDate":"Non · {count} commits derrière la base","ahead":"{count} en avance","behind":"{count} en retard","diverged":"Divergée","upToDate":"À jour","origin":"Origine","inSync":"Synchronisée","dirty":"Modifié","branchCommits":"Commits : {count}","unpublished":"Non publiée","detached":"HEAD détachée","unknown":"Inconnu","primary":"Principal","tags":"Étiquettes","manageTags":"Gérer les étiquettes","manageTagsDescription":"Créez des étiquettes globales réutilisables et choisissez leurs couleurs.","highlight":"Surlignage","clearHighlight":"Effacer le surlignage","customize":"Personnaliser le worktree","edit":"Modifier","editTag":"Modifier l’étiquette","createTag":"Créer une étiquette","saveTag":"Enregistrer l’étiquette","openCode":"Ouvrir dans VS Code","openInsiders":"Ouvrir dans VS Code Insiders","forcePush":"Forcer le push","sync":"Synchroniser","rebase":"Rebaser","rebasePaused":"Rebase en pause","rebaseConflicts":"Résolvez les conflits avec un workflow ou annulez pour restaurer l’état antérieur au rebase.","rebaseIncomplete":"Un rebase est toujours en cours. Annulez-le pour restaurer l’état précédent de la branche.","cancelRebase":"Annuler le rebase","push":"Pousser","publish":"Publier","reset":"Réinitialiser","stashAll":"Remiser tout","stageAll":"Indexer tout","unstageAll":"Désindexer tout","autoSync":"Synchronisation auto","autoSyncing":"Auto Sync actif","autoSyncPaused":"Auto Sync en pause","autoSyncTitle":"Configurer Auto Sync","autoSyncDescription":"Rebase automatiquement cette branche quand la branche cible change et pousse avec force-with-lease.","useConflictWorkflow":"Exécuter un workflow d’action rapide pour résoudre automatiquement les conflits","selectConflictWorkflow":"Workflow de conflits de fusion","noWorkflow":"Aucun workflow","conflictWorkflowChoice":"Choix du déclencheur du workflow","defaultWorkflowTrigger":"Déclencheur par défaut","saveAutoSync":"Activer Auto Sync","resumeAutoSync":"Reprendre Auto Sync","cancelAutoSync":"Annuler Auto Sync","autoMerge":"Fusion automatique","autoMerging":"Auto Merge actif","autoMergePaused":"Auto Merge en pause","autoMergeComplete":"Auto Merge terminé","autoMergeTitle":"Configurer Auto Merge","autoMergeDescription":"GitHub fusionnera la pull request dès que les contrôles, revues et règles de branche requis seront satisfaits.","deleteAfterMerge":"Supprimer ce worktree après la fusion","moveTicketToDone":"Déplacer le ticket Jira lié vers le statut terminé configuré","saveAutoMerge":"Activer Auto Merge","resumeAutoMerge":"Reprendre Auto Merge","cancelAutoMerge":"Annuler Auto Merge","confirmAction":"Confirmer","operationRunning":"Opération en cours…","loadingDetails":"Chargement des commits et modifications…","commits":"Validations ({count})","changes":"Modifications ({count})","noCommits":"Aucun commit ne diffère de la branche de base.","noChanges":"Le worktree est propre.","conflicted":"En conflit","staged":"Indexé","unstaged":"Non indexé","untracked":"Non suivi","truncated":"Seuls les premiers résultats pris en charge sont affichés.","status":"État","pullRequest":"Pull request","latestBuild":"Dernier build","openInGitHub":"Ouvrir dans GitHub","openDetails":"Ouvrir les détails","openWorktreeDetails":"Ouvrir les détails de {branch}","hiddenTitle":"Worktrees masqués","hiddenDescription":"Les worktrees absents sont conservés sept jours. Une redécouverte restaure leurs métadonnées.","noHidden":"Aucun worktree masqué.","purge":"Purger","purgeAll":"Tout purger","review":{"APPROVED":"Approuvée","CHANGES_REQUESTED":"Modifications demandées","REVIEW_REQUIRED":"Révision requise","NONE":"Aucune décision"},"comments":"Commentaires : {count}"},"worktreeDetail":{"loading":"Chargement des détails du worktree…","notFound":"Worktree introuvable","notFoundDescription":"Ce worktree est absent, masqué ou n’est plus disponible.","back":"Retour aux worktrees","linked":"Lié","refresh":"Actualiser","inspectionOffline":"L’agent est hors ligne. Les métadonnées enregistrées restent disponibles, mais les commits et modifications ne peuvent pas être inspectés.","inspectionUnavailable":"Ce worktree n’est pas disponible pour une inspection en direct.","inspectionBusy":"Les commits et modifications seront actualisés à la fin de l’opération en cours.","inspectionUnsupported":"Mettez l’agent à jour pour inspecter les commits et modifications.","inspectionFailed":"Impossible de charger les commits et modifications.","actions":"Actions","workingTree":"Arbre de travail","overview":"Vue d’ensemble","repository":"Dépôt","origin":"Origine","agent":"Agent","folder":"Dossier","head":"Commit HEAD","upstream":"Branche amont","originStatus":"État de l’origine","baseStatus":"Actualité de la base","lastChecked":"Dernière vérification","lastFetched":"Dernière récupération","management":"Gestion","branchChanges":"Modifications de la branche","noBranchChanges":"Aucune modification validée dans la branche","diffTruncated":"Certains fichiers modifiés ne sont pas affichés car le résultat a été tronqué.","codeCoverage":"Couverture du code","noCoverageReports":"Aucun rapport de couverture n’a été généré pour cet arbre de travail.","coverageBuild":"Compilation","coverageStatus":"État du rapport","coverageStatuses":{"PENDING":"En attente","READY":"Prêt","FAILED":"Échoué"},"overallCoverage":"Couverture globale","changedCoverage":"Couverture des modifications","generated":"Généré","viewReport":"Voir le rapport","loadingDiff":"Chargement des modifications…","binaryFileChanged":"Fichier binaire modifié","noTextChanges":"Aucune modification textuelle","diffTooLarge":"Le diff dépasse la limite d’affichage de 2 Mio","diffLimit":"Diff tronqué à 2 Mio.","sideBySide":"Côte à côte","overlap":"Superposer","imageTransparency":"Transparence de l’image","before":"Avant","after":"Après","noImageSide":"Aucune image de ce côté"},"mcpPresets":{"title":"Préréglages d’outils MCP","description":"Créez des ensembles réutilisables à privilèges minimaux pour les Plans, les Sessions et les clients MCP directs.","create":"Créer un préréglage","createTitle":"Créer un préréglage d’outils MCP","editTitle":"Modifier le préréglage d’outils MCP","dialogDescription":"Choisissez des outils explicites. La sélection d’un groupe inclut ses descendants actuels sans accorder automatiquement les outils ajoutés plus tard.","name":"Nom","optionalDescription":"Description (facultative)","icon":"Icône","availableForPlans":"Afficher pour les Plans","availableForSessions":"Afficher pour les Sessions","plans":"Plans","sessions":"Sessions","directOnly":"URL directe uniquement","tools":"Outils intégrés","searchTools":"Rechercher des outils intégrés…","noMatchingTools":"Aucun outil intégré ne correspond à cette recherche.","selectedToolCount":"{count, plural, one {# outil sélectionné} other {# outils sélectionnés}}","toolCount":"{count, plural, one {# outil} other {# outils}}","save":"Enregistrer le préréglage","loading":"Chargement des préréglages MCP…","noneAvailable":"Aucun préréglage MCP n’est disponible pour ce type d’exécution.","empty":"Aucun préréglage d’outils MCP n’a été créé.","copyUrl":"Copier l’URL du préréglage","edit":"Modifier le préréglage","delete":"Supprimer le préréglage","deleteTitle":"Supprimer le préréglage d’outils MCP ?","deleteDescription":"Supprimer {name} ? Les références des brouillons et workflows seront ignorées lors des prochaines exécutions."},"tools":{"title":"Outils","description":"Parcourez, configurez et exécutez les outils MCP intégrés et externes.","toolsTab":"Outils","auditTab":"Audit","auditTitle":"Audit des appels d’outils","auditDescription":"Consultez les derniers enregistrements ToolCallAudit expurgés. Les arguments sont représentés uniquement par des empreintes SHA-256.","auditRefresh":"Actualiser l’audit","auditClear":"Effacer l’audit","auditClearTitle":"Effacer l’audit des outils ?","auditClearDescription":"Supprimer tous les enregistrements d’audit terminés ? Les appels en cours seront conservés.","auditClearAction":"Supprimer les enregistrements d’audit","auditSearch":"Rechercher dans l’audit des outils","auditSearchPlaceholder":"Rechercher outils, appelants, sources, ID ou empreintes…","auditLoading":"Chargement de l’audit des outils…","auditEmpty":"Aucun appel d’outil n’a été audité.","auditNoMatches":"Aucun enregistrement d’audit ne correspond à la recherche.","auditStarted":"Début","auditFinished":"Fin","auditTool":"Outil","auditStatus":"État","auditSource":"Source","auditCaller":"Appelant","auditGroup":"Groupe","auditDuration":"Durée","auditCorrelationId":"ID de corrélation","auditArgumentsHash":"SHA-256 des arguments","auditId":"ID d’audit","auditSucceeded":"Réussi","auditFailed":"Échoué","auditRunning":"En cours","auditToolsPage":"Page des outils","auditWorkflow":"Workflow","connectTitle":"Connecter des clients externes","connectDescription":"D’autres clients MCP peuvent appeler tous les outils intégrés de ce serveur via Streamable HTTP.","toolApiToken":"Jeton de l’API des outils (facultatif)","toolApiTokenPlaceholder":"Saisissez TOOLS_API_TOKEN","toolApiTokenHelp":"Requis uniquement lorsque TOOLS_API_TOKEN est configuré sur le serveur. Il est conservé seulement dans la mémoire de cette page.","serverUrl":"URL du serveur","copyUrl":"Copier l’URL du serveur","clientConfig":"Configuration du client","clientConfigHelp":"À ajouter à la configuration MCP de Claude Code, Cursor ou de tout autre client Streamable HTTP.","copyConfig":"Copier la configuration","connectCopied":"Copié","connectCopyFailed":"Impossible de copier dans le presse-papiers.","connectWarning":"L’authentification est désactivée lorsque TOOLS_API_TOKEN n’est pas configuré. Si elle est activée, ne placez pas le jeton dans le contrôle de version ni dans les captures d’écran.","serverHost":"Hôte du serveur","customServerHost":"Hôte personnalisé","addServer":"Ajouter un serveur MCP","search":"Rechercher des outils","searchPlaceholder":"Rechercher des noms, descriptions ou serveurs…","serversTitle":"Serveurs MCP externes","serversDescription":"Gérez les fournisseurs HTTP en flux et SSE historiques.","loadingServers":"Chargement des serveurs MCP…","noServers":"Aucun serveur MCP externe n’est configuré.","name":"Nom","url":"Adresse URL","transport":"Mode de transport","prefix":"Préfixe du nom d’outil","actions":"Commandes","http":"HTTP (flux)","sse":"SSE (historique)","editServer":"Modifier {name}","delete":"Supprimer","deleteServer":"Supprimer {name}","confirmDelete":"Supprimer le serveur MCP ?","confirmDeleteDescription":"Supprimer {name} et ses en-têtes personnalisés enregistrés ?","catalogTitle":"Catalogue d’outils","catalogDescription":"Dépliez un outil, saisissez ses paramètres et examinez la réponse complète.","refresh":"Actualiser les outils","loadingTools":"Chargement des outils…","noMatchingTools":"Aucun outil ne correspond à cette recherche.","addServerTitle":"Ajouter un serveur MCP externe","editServerTitle":"Modifier le serveur MCP externe","serverDialogDescription":"Les données de connexion sont utilisées uniquement par le client MCP côté serveur.","prefixHelp":"Le préfixe est appliqué tel quel à l’affichage et à l’appel des outils.","headers":"En-têtes personnalisés","headersHelp":"Les valeurs sont stockées localement et ne sont jamais renvoyées au navigateur.","addHeader":"Ajouter un en-tête","noHeaders":"Aucun en-tête personnalisé.","headerName":"Nom de l’en-tête","headerValue":"Valeur de l’en-tête","keepHeaderValue":"Laisser vide pour conserver la valeur enregistrée","removeHeader":"Retirer l’en-tête","saveServer":"Enregistrer le serveur","toolCount":"{count} outils","tool":"Outil","toolDescription":"Présentation","expandTool":"Déplier {name}","collapseTool":"Replier {name}","noDescription":"Aucune description n’a été fournie.","readOnlyBadge":"Lecture seule","writeBadge":"Écriture","destructiveBadge":"Destructif","externalEffectBadge":"Effet externe","confirmWriteTitle":"Exécuter un outil d’écriture ?","confirmWriteDescription":"{name} peut modifier l’état de l’application ou d’un service externe. Vérifiez les arguments avant de continuer.","confirmDestructiveTitle":"Exécuter un outil destructif ?","confirmDestructiveDescription":"{name} peut supprimer ou écraser définitivement des données. Cette action peut être irrécupérable.","confirmRun":"Exécuter l’outil","confirmDestructiveAction":"Exécuter l’outil destructif","cancelRun":"Annuler","parameters":"Paramètres","noParameters":"Cet outil n’a aucun paramètre.","run":"Exécuter l’outil","running":"Exécution…","response":"Résultat","copyResponse":"Copier la réponse","copied":"Réponse copiée","copyFailed":"Impossible de copier la réponse.","noResponse":"Exécutez l’outil pour afficher sa réponse.","selectValue":"Choisir une valeur","unset":"Non défini","true":"Vrai","false":"Faux","jsonArguments":"Arguments (objet JSON)","invalidJson":"Saisissez un JSON valide.","invalidJsonObject":"Saisissez un objet JSON.","jsonObjectPlaceholder":"Saisissez des paires clé-valeur dans un objet JSON","jsonPlaceholder":"Saisissez du JSON, par exemple []"},"skills":{"title":"Compétences","description":"Gérez des paquets de compétences IA réutilisables dans la base, les clients, les agents et les dépôts.","manageGroups":"Gérer les groupes","settings":"Paramètres","addSkill":"Ajouter une compétence","syncAll":"Tout synchroniser","search":"Rechercher des compétences","searchPlaceholder":"Rechercher noms, descriptions, groupes, dépôts, agents ou chemins…","database":"Base de données","skillSource":"Source des compétences","databaseSkills":"Compétences de la base de données","databaseSkillsDescription":"Paquets de compétences canoniques stockés dans le plan de contrôle.","clientSkills":"Compétences du client","clientSkillsDescription":"Paquets de compétences détectés dans le client d’IA sélectionné.","loading":"Chargement des compétences…","name":"Nom","skillDescription":"Description","scope":"Portée","groups":"Groupes","files":"Fichiers","updated":"Mis à jour","global":"Global","project":"Projet","groupOnly":"Groupe uniquement","noSkills":"Aucune compétence ne correspond à la recherche.","agent":"Agent","location":"Emplacement","status":"État","tracked":"Suivi","inSync":"Synchronisé","toDatabase":"Vers la base","conflict":"Conflit","noClientSkills":"Aucune compétence trouvée pour ce client.","settingsTitle":"Paramètres des compétences","settingsDescription":"Choisissez les clients participants et la synchronisation automatique des groupes.","autoSync":"Synchroniser automatiquement les groupes projet","autoSyncHelp":"Maintient les groupes attribués dans tous les checkouts et worktrees.","enabledTools":"Clients IA activés","configured":"Configuré","configuredAgents":"{count} agents configurés","notDetected":"Non détecté","saveSettings":"Enregistrer les paramètres","skillNotFound":"Compétence introuvable.","loadingSkill":"Chargement de la compétence…","newSkill":"Nouvelle compétence","editorDescription":"Modifiez les métadonnées et tous les fichiers du paquet.","delete":"Supprimer","cancel":"Annuler","deleteSkillDescription":"Supprimer {name} de la base et ses copies gérées lors de la synchronisation ?","deleteSkill":"Supprimer la compétence ?","saveSkill":"Enregistrer la compétence","syncGlobally":"Synchroniser globalement","syncGloballyHelp":"Inclure cette compétence dans la synchronisation personnelle/globale.","noGroups":"Aucun groupe de compétences.","packageFiles":"Fichiers du paquet","addFiles":"Ajouter ou remplacer des fichiers","download":"Télécharger","removeFile":"Supprimer","rename":"Renommer","executable":"Exécutable","binaryFile":"Fichier binaire. Téléchargez-le ou remplacez-le pour le modifier.","selectFile":"Sélectionnez un fichier","duplicateFile":"Un fichier avec ce chemin existe déjà.","skillGroups":"Groupes de compétences","groupsDescription":"Regroupez les compétences projet et attribuez-les aux dépôts.","groupsTableDescription":"Groupes de compétences du projet, avec leurs compétences et dépôts associés.","addGroup":"Ajouter un groupe","loadingGroups":"Chargement des groupes…","skillsCount":"Compétences","repositoriesCount":"Dépôts","newGroup":"Nouveau groupe","newGroupDescription":"Créez le groupe, puis choisissez ses compétences et dépôts.","createGroup":"Créer le groupe","groupNotFound":"Groupe introuvable.","loadingGroup":"Chargement du groupe…","groupSettingsDescription":"Gérez les membres, les dépôts et le déploiement.","deleteGroupDescription":"Supprimer {name} et les copies inutiles aux autres groupes ?","deleteGroup":"Supprimer le groupe ?","syncGroup":"Synchroniser le groupe","saveGroup":"Enregistrer le groupe","groupSkills":"Compétences du groupe","searchSkills":"Rechercher des compétences…","groupRepositories":"Dépôts utilisant ce groupe","searchRepositories":"Rechercher des dépôts…","syncRunNotFound":"Synchronisation introuvable.","loadingSync":"Chargement de la synchronisation…","syncTitle":"Synchronisation des compétences","syncGroupName":"Synchronisation du groupe {name} dans ses dépôts.","syncAllDescription":"Rapprochement des compétences de base, personnelles et projet.","applySync":"Appliquer la synchronisation","skipPendingClients":"Ignorer les clients en attente","unknownAgent":"Agent inconnu","syncAgents":"État de synchronisation des agents","syncAgentsDescription":"État de connexion et de synchronisation de chaque agent participant.","connection":"Connexion","operation":"Opération","syncStatus":"État de synchronisation","syncChanges":"Modifications proposées","syncChangesDescription":"Vérifiez les modifications et résolvez les conflits avant d’appliquer cette synchronisation.","change":"Modification","resolution":"Résolution","newSharedLocation":"Nouvel emplacement partagé","chooseGroup":"Choisir un groupe","useDatabase":"Utiliser la base","useTarget":"Utiliser la copie client","deleteClientCopy":"Supprimer la copie client","editManually":"Modifier manuellement","compareAndResolve":"Comparer et résoudre","skip":"Ignorer","scanningAgents":"Analyse des clients activés…","noSyncChanges":"Aucune modification requise.","manualResolution":"Résolution manuelle","manualResolutionDescription":"Comparez les paquets complets et modifiez le résultat canonique, y compris les fichiers texte, binaires et exécutables.","startFromDatabase":"Partir de la base de données","startFromTarget":"Partir de la copie du client","databaseVersion":"Version de la base de données","targetVersion":"Version du client","resultVersion":"Résultat canonique","binaryPreview":"Fichier binaire ; comparez la taille et les métadonnées d’exécution.","missingFile":"Cette version ne contient pas le fichier sélectionné.","filePath":"Chemin du fichier","missingResultFile":"Ajoutez ce fichier au résultat ou sélectionnez un autre fichier du paquet.","useManualVersion":"Utiliser la version modifiée"},"builds":{"title":"Builds","description":"Configurez, lancez, inspectez, déployez et exportez les builds iOS des bases de code et worktrees.","build":"Builder","history":"Historique","buildScripts":"Scripts de build","status":"État","destination":"Destination","duration":"Durée","durationValue":"Durée {duration}","actionsLabel":"Actions","selectBuilds":"Sélectionner les builds","selectBuild":"Sélectionner le build {id}","selectDate":"Sélectionner tous les builds du {date}","deleteSelected":"Supprimer la sélection ({count})","deleteBuilds":"Supprimer les builds","deleteBuildsTitle":"Supprimer {count, plural, one {le build} other {les # builds}} ?","deleteBuildsDescription":"Les enregistrements et dossiers de build sélectionnés seront définitivement supprimés.","filterStatus":"Filtrer les builds par état","allStatuses":"Tous les états","loading":"Chargement des builds…","emptyTitle":"Aucun build","emptyDescription":"Lancez un build depuis un worktree pour créer le premier enregistrement immuable.","durationSeconds":"{count} secondes","artifactCount":"{count, plural, one {# artefact} other {# artefacts}}","viewBuild":"Afficher le build","loadMore":"Charger plus","newScript":"Nouveau script de build","noScripts":"Aucun script de build","noScriptsDescription":"Créez des hooks JavaScript réutilisables, puis autorisez-les pour certains dépôts.","defaultEnabled":"Activé par défaut","preBuild":"Avant le build","postBuild":"Après le build","timeoutSeconds":"Délai de {count} secondes","edit":"Modifier","deleteScript":"Supprimer le script de build","editScript":"Modifier le script de build","scriptDescription":"Les hooks ESM Node.js approuvés s’exécutent à la racine du worktree sélectionné avec un environnement minimal.","name":"Nom","preBuildScript":"JavaScript avant le build","postBuildScript":"JavaScript après le build","preBuildScriptHelp":"Exportez par défaut une fonction qui reçoit buildId, branch, destination, action et l’instantané des URL de télémétrie.","postBuildScriptHelp":"Exportez par défaut une fonction qui reçoit aussi buildFolder, failed, cancelled, errorCode, error et le même instantané des URL de télémétrie.","timeout":"Délai en secondes","failureBehavior":"Comportement en cas d’échec","enabledByDefault":"Présélectionner ce script pour les builds","save":"Enregistrer","cancel":"Annuler","startBuild":"Lancer le build","startBuildDescription":"Choisissez une configuration enregistrée et une destination. La commande s’exécute à la racine de ce worktree.","configuration":"Configuration","configurationInvalid":"La source, le schéma ou la configuration enregistrés ne sont pas disponibles dans ce worktree.","noConfigurations":"Créez une configuration de build iOS valide dans les réglages du dépôt avant de lancer un build.","reparse":"Analyser à nouveau","action":"Action","destinationType":"Type de destination","simulator":"Simulateur","physicalDevice":"Appareil physique","device":"Appareil","selectDevice":"Sélectionner un appareil","anySimulator":"N’importe quel simulateur iOS","anyPhysicalDevice":"N’importe quel appareil iOS physique","scripts":"Scripts de build","advancedSettings":"Réglages avancés","priorBuildForTesting":"Build précédent pour les tests","selectPriorBuildForTesting":"Sélectionner un build pour les tests compatible","noPriorBuildForTesting":"Exécutez d’abord un build pour les tests réussi avec cette configuration.","priorBuildSummary":"utilise le build pour les tests {id}","developmentTeam":"Équipe de développement","testPlan":"Plan de test","schemeDefaultTestPlan":"Valeur par défaut du schéma","packageResolution":"Résolution des paquets","disablePackageRepositoryCache":"Désactiver le cache du dépôt de paquets","signingStyle":"Style de signature","codeSignIdentity":"Identité de signature du code","provisioningProfileSpecifier":"Profil de provisionnement","productBundleIdentifier":"Identifiant du paquet produit","codeCoverage":"Activer la couverture du code","parseTestResults":"Analyser les résultats des tests après la compilation","allowProvisioningDeviceRegistration":"Autoriser l’enregistrement des appareils de provisionnement","parallelTesting":"Tests en parallèle","parallelTestingWorkers":"Workers de tests en parallèle","onlyTesting":"Tester uniquement","skipTesting":"Ignorer les tests","priorTestProductsPath":"Chemin des produits de test précédents","priorXctestrunPath":"Chemin xctestrun précédent","settingsEnabled":"Activé","settingsDisabled":"Désactivé","advancedSettingsNotCaptured":"Les réglages avancés n’ont pas été enregistrés pour ce build.","generateWorktreeCoverage":"Générer la couverture du code","startWorktreeCoverage":"Exécuter la couverture de l’arbre de travail","startWorktreeCoverageDescription":"Exécute les tests avec couverture et mesure les lignes exécutables modifiées dans la branche et l’arbre de travail.","startBuildFailed":"La compilation n’a pas pu être lancée.","parseTestResultsAction":"Analyser les résultats des tests","retryParseTestResults":"Réessayer l’analyse des tests","generateCoverageReport":"Générer le rapport de couverture","retryCoverageReport":"Réessayer le rapport de couverture","viewCoverageReport":"Voir le rapport de couverture","testResults":"Résultats des tests","testResultsFailed":"Les résultats des tests n’ont pas pu être analysés.","testTotal":"{count} tests","testPassed":"{count} réussis","testFailed":"{count} échoués","testSkipped":"{count} ignorés","testResultFilters":"Filtres de résultats des tests","testFilterAll":"Tous ({count})","testFilterPassed":"Réussis ({count})","testFilterFailed":"Échoués ({count})","testFilterSkipped":"Ignorés ({count})","testsWithoutSuite":"Tests sans suite","testsWithoutFile":"Tests sans fichier","expandTestSuite":"Développer la suite de tests {suite}","collapseTestSuite":"Réduire la suite de tests {suite}","expandTestFile":"Développer le fichier de tests {file}","collapseTestFile":"Réduire le fichier de tests {file}","testSuitePassed":"{passed} sur {total} réussis ({percent})","testStatus":"Résultat","testName":"Test","testSuite":"Suite de tests","testBundle":"Paquet","testDuration":"Durée","coverageReport":"Rapport de couverture du code","viewChangesWithCoverage":"Voir les modifications avec la couverture","loadingCoverageReport":"Chargement du rapport de couverture…","coverageReportNotFound":"Rapport de couverture introuvable","coverageReportNotFoundDescription":"Générez d’abord un rapport de couverture depuis la page de détails de la compilation.","backToBuild":"Retour à la compilation","overallCoverage":"Couverture globale","changedCoverage":"Couverture des modifications","coveredLines":"Lignes couvertes","executableLines":"Lignes exécutables","uncoveredLines":"Lignes non couvertes","changedFilesCoverage":"Couverture des fichiers modifiés","allCoverageFiles":"Tous les fichiers de couverture","expandCoverageFiles":"Développer tous les fichiers de couverture","collapseCoverageFiles":"Réduire tous les fichiers de couverture","searchCoverageFiles":"Rechercher des cibles, fichiers ou chemins","searchChangedCoverageFiles":"Rechercher des fichiers modifiés ou des chemins","sortCoverageFiles":"Trier les fichiers de couverture par {column}","coverageTarget":"Cible","coverageFile":"Fichier","coverage":"Couverture","changeType":"Modification","allowProvisioningUpdates":"Autoriser les mises à jour du provisionnement","buildSettingOverrides":"Remplacements de réglages de build autorisés (JSON)","commandPreview":"Aperçu de la commande","overridesInvalid":"Les remplacements de réglages de build doivent former un objet JSON.","advancedJsonInvalid":"Les réglages avancés doivent être au format JSON valide.","buildNotFound":"Build introuvable","buildNotFoundDescription":"Cet enregistrement de build n’existe pas ou n’est plus disponible.","backToBuilds":"Retour aux builds","buildId":"ID du build","deleteBuild":"Supprimer le build","deleteBuildTitle":"Supprimer ce build ?","deleteBuildDescription":"L’enregistrement et son dossier de build seront définitivement supprimés.","downloadArtifact":"Télécharger","downloadIpa":"Télécharger l’IPA","installOnDevice":"Installer sur l’appareil","installPreparing":"Préparation du téléchargement…","installRequiresHttps":"L’installation sans fil nécessite une adresse HTTPS publique. Ouvrez cette page en HTTPS ou définissez PUBLIC_BASE_URL.","installNotSupportedForAppStore":"Les builds App Store Connect ne peuvent pas être installés sans fil. Exportez plutôt avec Debugging, Release Testing ou Enterprise.","installMissingBundleIdentifier":"L’identifiant du bundle n’est pas disponible. Exportez à nouveau l’archive pour activer l’installation.","installOpenOnDevice":"Ouvrez cette page sur un iPhone ou un iPad pour installer.","installFailed":"Impossible de démarrer l’installation.","copyInstallLink":"Copier le lien d’installation","installLinkCopied":"Lien d’installation copié","ipaBundleIdentifier":"Identifiant du bundle","ipaBundleVersion":"Version","cancelBuild":"Annuler le build","rebuild":"Reconstruire","outOfDate":"Obsolète","configureBuilds":"Accédez aux réglages du dépôt pour configurer les builds","selectedDevices":"{count} appareils","selectRunDevices":"Appareils d’exécution","noCompatibleDevices":"Aucune destination connectée compatible n’est disponible.","run":"Exécuter","exportArchive":"Exporter l’archive","logs":"Journaux","expandLogs":"Développer les journaux","collapseLogs":"Réduire les journaux","noLogs":"Aucun événement de journal n’a été signalé.","followOutput":"Suivre la sortie","fitTerminal":"Ajuster le terminal","viewRawOutput":"Afficher la sortie brute","searchTerminal":"Rechercher dans le terminal","previousTerminalMatch":"Résultat précédent","nextTerminalMatch":"Résultat suivant","scrollLogsToTop":"Aller au début des journaux","scrollLogsToBottom":"Aller à la fin des journaux","commandSummary":"Résumé de la commande","copyCommand":"Copier le résumé de la commande","commandCopied":"Résumé de la commande copié","copyFailed":"Impossible de copier dans le presse-papiers.","noScriptExecutions":"Aucun script de build n’a été sélectionné.","overview":"Vue d’ensemble","scheme":"Schéma","head":"Révision","startedAt":"Début","finishedAt":"Fin","artifactDirectory":"Dossier du build","artifacts":"Artefacts","noArtifacts":"Aucun artefact n’a été capturé.","runsAndExports":"Exécutions et exports","archiveExport":"Export de l’archive","noRunsOrExports":"Ce build n’a pas encore été exécuté ni exporté.","exportArchiveDescription":"Exportez localement le fichier .xcarchive capturé sans le téléverser.","distributionMethod":"Méthode de distribution","exportMethod":{"DEBUGGING":"Débogage","RELEASE_TESTING":"Test de version","ENTERPRISE":"Entreprise","APP_STORE_CONNECT":"App Store Connect"},"selectTeam":"Sélectionnez une équipe","noTeams":"Aucune équipe de développement trouvée sur l’agent de compilation.","signingCertificate":"Certificat de signature","certificateAutomatic":"Choisi automatiquement","certificateMayNotMatch":"Peut ne pas correspondre aux profils sélectionnés","provisioningProfiles":"Profils de provisionnement","parseProvisioningProfiles":"Analyser le projet","reparseProvisioningProfiles":"Analyser à nouveau","parseProvisioningProfilesHelp":"Lisez les cibles signables du schéma sélectionné et associez les profils installés.","parseProvisioningProfilesEmpty":"Analysez le projet pour remplacer le JSON par un sélecteur de profil pour chaque app et extension.","noSigningRequirements":"Aucune cible d’app ou d’extension à signer n’a été trouvée.","selectSigningSourceFirst":"Sélectionnez d’abord une source Xcode, un schéma et une configuration.","selectProfile":"Sélectionnez un profil","profileMayNotMatch":"Peut ne pas correspondre à cet identifiant","manualBundleIdentifier":"Identifiant de bundle à ajouter","manualBundleIdentifierPlaceholder":"com.exemple.app.extension","manualBundleIdentifierHelp":"Ajoutez tout identifiant non détecté, puis choisissez parmi tous les profils disponibles.","addBundleIdentifier":"Ajouter l’identifiant","removeBundleIdentifier":"Supprimer {bundleId}","showAllProfiles":"Tout afficher","showMatching":"Afficher les correspondances","noMatchingProfiles":"Aucun profil installé ne correspond à ce bundle pour la méthode sélectionnée.","noArchiveBundles":"Aucun bundle signable trouvé dans l’archive.","profileExpired":"expiré","signingOptionsFailed":"Impossible de lire les options de signature depuis l’agent.","automatic":"Automatique","manual":"Manuel","autoExport":"Exporter automatiquement les archives réussies","exportWhenComplete":"Exporter à la fin","uploadSymbols":"Téléverser les symboles","manageBuildNumber":"Gérer la version et le numéro de build","internalTestFlightOnly":"TestFlight interne uniquement","stripSwiftSymbols":"Retirer les symboles Swift","thinning":"Allègement de l’app","iCloudEnvironment":"Environnement du conteneur iCloud","distributionBundleIdentifier":"Identifiant de bundle de distribution","localExportOnly":"Les exports sont enregistrés localement en IPA et ne sont jamais envoyés à App Store Connect.","signingAssetCoverageWarning":"Cette identité est installée sur {installed} des {total} agents compatibles. Les builds affectés ailleurs peuvent échouer à l’export.","iosApp":"App iOS","parseCheckout":"Copie utilisée pour l’analyse","parseCheckoutDescription":"Les configurations enregistrées sont partagées dans tout le dépôt. La découverte, la validation et l’état d’analyse utilisent la copie d’agent sélectionnée.","checkoutUnavailable":"indisponible","addIosProject":"Ajouter un projet d’app iOS","addIosProjectDescription":"Activez des configurations de build Xcode réutilisables pour chaque checkout et worktree de ce dépôt.","sharedProjectDescription":"Les définitions de projet et les scripts autorisés sont partagés par le dépôt. L’état d’analyse ci-dessous provient de ce checkout d’agent.","buildConfigurations":"Configurations de build","newConfiguration":"Nouvelle configuration","lastParsed":"Analysé : {value}","neverParsed":"Jamais analysé","stale":"métadonnées obsolètes","savedValueUnavailable":"valeur enregistrée indisponible","deleteConfiguration":"Supprimer la configuration de build","allowedScripts":"Scripts de build autorisés","createScriptsOnBuildsPage":"Créez des scripts réutilisables sur la page Builds, puis revenez ici pour les autoriser.","editConfiguration":"Modifier la configuration de build","configurationDescription":"Sélectionnez une source Xcode relative au dépôt et enregistrez son schéma, sa configuration, son action et ses réglages avancés facultatifs.","icon":"Icône","configurationIcons":{"none":"Aucune icône","apple":"Plateforme Apple","app-window":"Fenêtre d’app","archive":"Archive","beaker":"Expérience","box":"Boîte","bug":"Bogue","code":"Code","gauge":"Performances","hammer":"Compilation","layers":"Calques","package":"Paquet","play":"Exécution","rocket":"Publication","shield":"Sécurité","smartphone":"App mobile","sparkles":"Fonctionnalité","terminal":"Ligne de commande","test-tube":"Tests","wrench":"Outils"},"source":"Source Xcode","selectSource":"Sélectionner un projet, workspace ou Package.swift à la racine","loadingSources":"Recherche des sources…","defaultAction":"Action par défaut","advancedJson":"Réglages avancés normalisés (JSON)","statuses":{"QUEUED":"En attente","PREPARING":"Préparation","RUNNING":"En cours","SUCCEEDED":"Réussi","FAILED":"Échoué","CANCELLED":"Annulé"},"parseStatuses":{"UNPARSED":"Non analysé","PARSING":"Analyse en cours","VALID":"Valide","INVALID":"Non valide","ERROR":"Erreur"},"actions":{"BUILD":"Builder","TEST":"Tester","ANALYZE":"Analyser","ARCHIVE":"Archiver","BUILD_FOR_TESTING":"Builder pour les tests","TEST_WITHOUT_BUILDING":"Tester sans builder"},"failureBehaviors":{"FAIL_BUILD":"Faire échouer le build","CONTINUE":"Continuer avec un avertissement"}},"devices":{"title":"Appareils","description":"Enrôlez des iPhone et iPad, consultez leur historique de connexion et enregistrez les appareils approuvés auprès d’Apple.","export":"Exporter le TSV Apple","addDevice":"Ajouter un appareil","filterStatus":"Filtrer les appareils par état","allStatuses":"Tous les états","sort":"Trier les appareils","sortOption":{"NEWEST":"Enrôlement le plus récent","NAME":"Nom de l’appareil","LAST_SEEN":"Dernière activité"},"loading":"Chargement des appareils…","emptyTitle":"Aucun appareil enrôlé","emptyDescription":"Créez un profil d’enrôlement sur un iPhone ou un iPad pour recueillir son identifiant.","device":"Appareil","statusLabel":"État","hardware":"Produit","lastIp":"Dernière IP","enrolled":"Enrôlé","registered":"Enregistrement Apple","lastSeen":"Dernière activité","viewDevice":"Voir {name}","unavailable":"Indisponible","status":{"PENDING":"En attente","REGISTERING":"Enregistrement en cours","REGISTERED":"Enregistré","REGISTRATION_FAILED":"Échec de l’enregistrement","REJECTED":"Refusé"},"back":"Retour aux appareils","enrollTitle":"Enrôler un appareil iOS","enrollDescription":"Installez un profil signé temporaire pour transmettre en toute sécurité l’identifiant de développement de cet appareil.","httpsRequired":"L’enrôlement est désactivé car cette adresse n’utilise pas un HTTPS public. Utilisez un proxy inverse HTTPS publiquement approuvé ou configurez PUBLIC_BASE_URL.","collectedTitle":"Informations recueillies","collectUdid":"L’UDID de l’appareil utilisé pour l’enregistrement de développement Apple.","collectProduct":"Le modèle de produit Apple communiqué par iOS.","collectVersion":"La version d’iOS ou d’iPadOS installée.","collectIp":"L’adresse IP observée lors du téléchargement et de la réponse du profil, avec l’en-tête proxy qui l’a fournie.","deviceLabel":"Libellé de l’appareil","deviceLabelPlaceholder":"Par exemple, iPhone","deviceLabelHelp":"Choisissez un libellé reconnaissable. Le service de profils Apple ne peut pas lire le nom attribué dans Réglages.","consent":"J’accepte la collecte et la conservation de l’identifiant, du produit, de la version logicielle et des adresses IP observées à des fins de gestion de l’appareil.","downloadProfile":"Télécharger le profil d’enrôlement","notFound":"Cet appareil est introuvable.","rebuildWarning":"Cet appareil est enregistré auprès d’Apple. Les IPA existants ne l’autorisent pas automatiquement ; créez un nouveau profil d’approvisionnement et exportez un nouvel IPA.","openBuilds":"Ouvrir les Builds","configureAppleFirst":"Configurez et vérifiez les identifiants App Store Connect avant d’enregistrer cet appareil.","openSettings":"Ouvrir les réglages","generalInformation":"Informations générales","deviceModel":"Modèle de l’appareil","saveName":"Enregistrer le libellé","udid":"UDID de l’appareil","hideUdid":"Masquer l’UDID de l’appareil","revealUdid":"Afficher l’UDID de l’appareil","copyUdid":"Copier l’UDID de l’appareil","osVersion":"Version logicielle","appleDeviceId":"ID de ressource Apple","retryRegistration":"Réessayer l’enregistrement","registerWithApple":"Enregistrer auprès d’Apple","reject":"Refuser","delete":"Supprimer","ipHistory":"Historique IP","ipAddress":"Adresse IP","source":"Étape d’enrôlement","forwardedBy":"En-tête d’adresse","observed":"Observée","noIpHistory":"Aucune observation IP n’est conservée pour cet appareil.","ipSource":{"PROFILE_DOWNLOAD":"Téléchargement du profil","PROFILE_RESPONSE":"Réponse du profil"},"ipHeaderSource":{"CLOUDFLARE":"Cloudflare (en-tête CF-Connecting-IP)","FORWARDED":"Proxy (en-tête X-Forwarded-For)","REAL_IP":"Proxy d’origine (en-tête X-Real-IP)"},"enrollmentHistory":"Historique des enrôlements","noEnrollmentHistory":"Aucune tentative d’enrôlement n’est conservée pour cet appareil.","firmwareTitle":"Firmware iOS","firmwareDescription":"Versions du firmware et état actuel de signature fournis par IPSW.me.","firmwareLoading":"Chargement des informations du firmware…","firmwareLoadFailed":"Impossible de charger les informations du firmware : {error}","signingStatus":"État de signature","firmwareVersion":"Version","releaseDate":"Date de sortie","fileSize":"Taille","firmwareDownload":"Téléchargement","signed":"Signé","unsigned":"Non signé","downloadFirmware":"Télécharger","copyFirmwareUrl":"Copier l’URL de téléchargement pour iOS {version}","noFirmware":"Aucune information de firmware n’est disponible pour cet appareil.","created":"Créé","completed":"Terminé","failure":"Échec","enrollmentStatus":{"ISSUED":"Émis","DOWNLOADED":"Téléchargé","COMPLETED":"Terminé","EXPIRED":"Expiré","FAILED":"Échoué"},"registerTitle":"Enregistrer cet appareil auprès d’Apple ?","registerDescription":"L’appareil sera rapproché par UDID puis ajouté à votre compte Apple Developer si nécessaire. Cette action ne reconstruit pas d’IPA.","confirmRegister":"Enregistrer l’appareil","rejectTitle":"Refuser cet appareil ?","rejectDescription":"L’appareil reste dans l’historique local et ne peut pas être enregistré. Supprimez-le localement puis enrôlez-le à nouveau pour le reconsidérer.","confirmReject":"Refuser l’appareil","deleteTitle":"Supprimer cet appareil ?","deleteDescription":"Cette action supprime l’appareil local, les tentatives d’enrôlement et l’historique IP. L’enregistrement annuel d’Apple n’est pas supprimé.","confirmDelete":"Supprimer l’appareil"},"iosDeviceSettings":{"title":"Enrôlement des appareils iOS","description":"Configurez des profils d’enrôlement signés et l’enregistrement facultatif des appareils auprès d’Apple.","loading":"Chargement des réglages des appareils iOS…","unavailable":"Indisponible","profileTitle":"Profil d’enrôlement","profileDescription":"Ces valeurs identifient le profil temporaire affiché dans les Réglages iOS.","signerReady":"Signataire prêt","signerNotGenerated":"Signataire non généré","organizationName":"Nom de l’organisation","profileOrganizationHelp":"Utilisez un nom reconnaissable ; iOS affiche cette organisation pendant l’installation du profil d’enrôlement.","profileIdentifier":"Identifiant du profil","profileIdentifierHelp":"Utilisez un identifiant DNS inversé stable, par exemple com.example.ai-development-environment.enrollment.","signerCreated":"Créé le {date}","signerExpires":"Expire le {date}","unverifiedWarning":"Le certificat généré est autosigné ; iOS affiche donc le profil comme Non vérifié. Contrôlez l’organisation affichée avant de l’installer.","regenerateSigner":"Régénérer le signataire","regenerateTitle":"Régénérer le signataire du profil ?","regenerateDescription":"Les nouveaux profils utiliseront une autre clé privée et un autre certificat. Les profils déjà téléchargés pourront encore répondre jusqu’à l’expiration de leur jeton.","saveProfile":"Enregistrer le profil","profileSaved":"Les réglages du profil d’enrôlement ont été enregistrés.","signerRegenerated":"Un nouveau signataire de profil a été généré.","appleTitle":"API Appareils d’App Store Connect","appleDescription":"Utilisez une clé API ayant accès aux certificats, identifiants et profils. La clé privée reste sur le serveur et n’est jamais renvoyée au navigateur.","appleSetupHelp":"Dans Utilisateurs et accès → Intégrations, créez une clé API d’équipe ayant accès aux certificats, identifiants et profils. Copiez l’identifiant d’émetteur et l’identifiant de clé, puis téléchargez et conservez le fichier .p8 ; Apple ne le propose qu’une fois.","openApiKeys":"Ouvrir les clés API App Store Connect","verified":"Vérifié","notVerified":"Non vérifié","issuerId":"Identifiant d’émetteur","keyId":"Identifiant de clé","privateKey":"Clé privée .p8 App Store Connect","p8DropZone":"Zone de dépôt de la clé privée App Store Connect","p8DropHint":"Collez la clé ci-dessous, déposez un fichier .p8 ici ou choisissez un fichier.","chooseP8":"Choisir un fichier .p8 App Store Connect","privateKeyPlaceholder":"Collez ici la clé privée PKCS#8","privateKeyConfiguredPlaceholder":"Une clé privée est conservée. Laissez vide pour la garder.","privateKeyHelp":"Seules les clés ES256 PKCS#8 téléchargées depuis App Store Connect sont acceptées.","privateKeyKeepHelp":"Laissez ce champ vide pour garder la clé existante, ou fournissez une nouvelle clé .p8 pour la remplacer.","lastVerified":"Identifiants vérifiés le {date}","lastTestFailed":"Échec du test des identifiants le {date}","clear":"Effacer les identifiants","clearTitle":"Effacer les identifiants App Store Connect ?","clearDescription":"L’enregistrement des appareils sera désactivé jusqu’à l’enregistrement et la vérification d’une autre clé API.","retest":"Tester à nouveau","saveAndVerify":"Enregistrer et vérifier","appleSaved":"Les identifiants App Store Connect ont été enregistrés et vérifiés.","appleTestSucceeded":"Les identifiants App Store Connect ont été vérifiés avec succès.","appleCleared":"Les identifiants App Store Connect ont été effacés.","p8Invalid":"Choisissez un fichier .p8 valide contenant une clé privée PKCS#8.","p8ReadError":"Impossible de lire le fichier .p8 sélectionné.","p8Loaded":"{filename} a été chargé. Enregistrez et vérifiez pour utiliser cette clé."},"telemetry":{"consoleTitle":"Journaux de console","consoleDescription":"Consultez les sorties de console recueillies auprès des builds et des appareils.","analyticsTitle":"Événements analytiques","analyticsDescription":"Consultez les événements analytiques du produit et leurs paramètres dès leur arrivée.","unifiedTitle":"Vue unifiée","unifiedDescription":"Consultez les journaux et événements analytiques dans une seule chronologie en direct.","separator":"Séparateur","deleteSeparator":"Supprimer le séparateur {name}","settings":"Réglages","refresh":"Actualiser","search":"Rechercher dans la télémétrie","searchPlaceholder":"Rechercher du texte, un motif glob ou une expression régulière","searchMode":"Mode de recherche","searchModes":{"text":"Texte","glob":"Motif glob","regex":"Expression régulière"},"caseSensitive":"Respecter la casse","filters":"Filtres","columnsAction":"Colonnes","removeColumn":"Retirer la colonne {column}","export":"Exporter","edit":"Modifier","done":"Terminé","on":"activé","off":"désactivé","allCollection":"Tout","consoleCollection":"Journaux","analyticsCollection":"Analytique","count":"{matching} sur {total}","allResultsSelected":"Toutes les lignes correspondantes sont sélectionnées","selectedCount":"{count} sélectionnées","clearSelected":"Effacer la sélection","clearAll":"Tout effacer","confirmClearRecords":"Effacer les enregistrements","confirmClearWithSeparators":"Effacer avec les séparateurs","clearBeforeSeparator":"Effacer avant le dernier séparateur","confirmClearBefore":"Confirmer l’effacement avant le séparateur","cancel":"Annuler","selectAll":"Sélectionner toutes les lignes correspondantes","expand":"Développer la ligne","collapse":"Réduire la ligne","selectRow":"Sélectionner la ligne","selectDay":"Sélectionner toutes les lignes du {day}","selectSeparator":"Sélectionner les lignes au-dessus de {name}","loading":"Chargement de la télémétrie…","empty":"Aucune télémétrie correspondante.","loadMore":"Charger davantage","highlight":"Surligner","clearHighlight":"Retirer le surlignage","advancedFilters":"Filtres avancés","advancedFiltersDescription":"Combinez des conditions réutilisables entre les champs standard et les chemins de paramètres.","match":"Correspondance","allConditions":"Toutes les conditions","anyCondition":"N’importe quelle condition","filterField":"Champ de filtre","operator":"Opérateur de comparaison","removeCondition":"Retirer la condition","filterValue":"Valeur","appliesTo":"S’applique à","console":"Journaux","analytics":"Analytique","addCondition":"Ajouter une condition","savedFilters":"Filtres enregistrés","noSavedFilters":"Aucun filtre enregistré.","load":"Charger","delete":"Supprimer","filterName":"Nom du filtre","saveFilter":"Enregistrer le filtre","updateFilter":"Mettre à jour le filtre","editSavedFilter":"Modifier {name}","applyFilters":"Appliquer les filtres","clearFilters":"Effacer les filtres","manageColumns":"Gérer les colonnes","manageColumnsDescription":"Choisissez, ordonnez, réinitialisez et enregistrez les colonnes utilisées par cette vue.","availableColumns":"Colonnes disponibles","resetColumns":"Réinitialiser les colonnes","columnPresets":"Préréglages de colonnes","noColumnPresets":"Aucun préréglage de colonnes.","default":"Par défaut","setDefault":"Définir par défaut","presetName":"Nom du préréglage","setAsDefault":"Définir par défaut","savePreset":"Enregistrer le préréglage","updatePreset":"Mettre à jour le préréglage","editPreset":"Modifier {name}","saveAs":"Enregistrer sous","applyColumns":"Appliquer les colonnes","telemetrySettings":"Réglages d’observabilité","apiHelp":"Aide sur l’API","consoleApiHelpTitle":"Envoyer des journaux de console","analyticsApiHelpTitle":"Envoyer des événements analytiques","apiHelpDescription":"Consultez le contrat d’ingestion REST et copiez une référence Markdown prête à l’emploi.","copyMarkdownDocs":"Copier la documentation Markdown","markdownDocsCopied":"Markdown copié","settingsDescription":"Configurez les origines d’ingestion détectées et remplacées, communes à toutes les vues.","localBaseUrl":"URL de base locale","remoteBaseUrl":"URL de base distante","override":"Remplacement","detected":"Détectée : {value}","effective":"Effective : {value}","localConsoleEndpoint":"Point d’entrée local des journaux","localAnalyticsEndpoint":"Point d’entrée local de l’analytique","remoteConsoleEndpoint":"Point d’entrée distant des journaux","remoteAnalyticsEndpoint":"Point d’entrée distant de l’analytique","copyEndpoint":"Copier {label}","clearValues":"Effacer les valeurs","noValues":"Aucune valeur","copyColumnValue":"Copier {label} : valeur","copyValue":"Copier la valeur","filterByValue":"Filtrer par valeur","copyJsonDictionary":"Copier le dictionnaire JSON","copyPathValues":"Copier les paires chemin-valeur","copyParameterValue":"Copier {key} : valeur","addColumn":"Ajouter la colonne {key}","filterParameter":"Filtrer par {key}","saveSettings":"Enregistrer les réglages","addSeparator":"Ajouter un séparateur","addSeparatorDescription":"Insérez une limite partagée dans la chronologie. Le nom est facultatif.","optionalName":"Nom facultatif","exportTitle":"Exporter la télémétrie","exportSelectedDescription":"Exportez les {count} lignes sélectionnées.","exportAllDescription":"Exportez toutes les lignes correspondant à la recherche et aux filtres actuels.","format":"Format du fichier","exportFields":"Champs","exportFailed":"L’exportation a échoué. Réessayez.","columns":{"time":"Heure","source":"Provenance","level":"Niveau","category":"Catégorie","message":"Contenu","buildId":"ID du build","sessionId":"ID de session","deviceIp":"IP de l’appareil","receivedAt":"Reçu","attributes":"Attributs","kind":"Type","levelKind":"Niveau / Type","name":"Nom de l’événement","screenName":"Nom de l’écran","parameters":"Paramètres","defaultParameters":"Paramètres par défaut","additionalParameters":"Paramètres supplémentaires","detail":"Détails","attribute":"Attribut","defaultParameter":"Valeur par défaut","additionalParameter":"Valeur supplémentaire"},"operators":{"CONTAINS":"contient","DOES_NOT_CONTAIN":"ne contient pas","IS":"est égal à","IS_NOT":"n’est pas égal à","MATCHES_GLOB":"correspond au motif glob","MATCHES_REGEX":"correspond à l’expression régulière","NO_REGEX_MATCH":"ne correspond pas à l’expression régulière","IS_EMPTY":"est vide","IS_NOT_EMPTY":"n’est pas vide"}},"provisioningProfiles":{"title":"Profils de provisionnement","description":"Inspectez, synchronisez, importez et supprimez les ressources de signature Apple sur les agents et le portail Apple Developer.","refresh":"Actualiser l’inventaire","refreshProgress":"Actualisation de l’inventaire : {complete} sur {total} agents terminés.","noRefreshAgents":"Aucun agent compatible avec la signature n’est disponible pour l’actualisation.","refreshStatus":{"QUEUED":"En attente","RUNNING":"Analyse","SUCCEEDED":"Terminé","FAILED":"Échec","CANCELLED":"Annulé","TIMED_OUT":"Délai dépassé"},"agents":"Agents cibles","agentsDescription":"Les anciens agents restent visibles, mais doivent être mis à jour pour recevoir des opérations de signature.","unsupported":"Non pris en charge","uploadProfile":"Installer un profil","uploadProfileDescription":"Installe un fichier .mobileprovision sur tous les agents sélectionnés.","chooseMobileprovision":"Choisir .mobileprovision","importIdentity":"Importer une identité de signature","importIdentityDescription":"Transmet un .p12 chiffré via des autorisations à usage unique et l’importe pour codesign.","passphrase":"Mot de passe du .p12","chooseP12":"Choisir le .p12 chiffré","localProfiles":"Profils locaux","localCertificates":"Identités locales","applePortal":"Portail Apple","profilesDescription":"Les profils sont regroupés entre agents par UUID et empreinte de contenu.","deleteExpired":"Supprimer les expirés","deleteExpiredDescription":"Supprimer tous les profils locaux expirés des agents sélectionnés ?","name":"Nom","bundleId":"ID du bundle","type":"Type","team":"Équipe","devices":"Appareils","expires":"Expiration","installedAgents":"Agents installés","expired":"Expiré","syncMissing":"Synchroniser les manquants","viewProfile":"Voir les détails de {name}","download":"Télécharger le profil","delete":"Supprimer","deleteProfile":"Supprimer le profil ?","deleteProfileDescription":"Supprime ce profil de tous les agents indiqués. Xcode peut retélécharger les profils gérés.","fingerprints":"Empreintes","privateKey":"Clé privée","available":"Disponible","missing":"Manquante","deleteIdentity":"Supprimer l’identité ?","deleteIdentityDescription":"Supprime cette identité et sa clé privée du trousseau de connexion de chaque agent.","portalProfiles":"Profils du portail","portalCertificates":"Certificats du portail","createPortalProfile":"Créer un profil du portail","createPortalProfileDescription":"Crée un profil avec un ID de bundle, un certificat et les appareils inscrits applicables. Aucune clé privée n’est générée.","profileName":"Nom du profil","selectBundleId":"Choisir l’ID du bundle","selectCertificate":"Choisir le certificat","create":"Créer","confirmPortalDelete":"Confirmer la modification Apple","portalDeleteDescription":"Cette action modifie immédiatement le compte Apple Developer et peut interrompre la signature sur d’autres machines.","none":"Aucun élément.","operations":"Opérations récentes","certificatesDescription":"Identités de signature regroupées par empreinte de certificat sur les agents.","noLocalProfiles":"Aucun profil de provisionnement local trouvé.","noLocalCertificates":"Aucune identité de signature locale trouvée.","loadingPortal":"Chargement des ressources Apple Developer…","loadingProfile":"Chargement du profil de provisionnement…","profileNotFound":"Ce profil de provisionnement n’est plus installé sur un agent.","profileDetails":"Détails du profil","platforms":"Plateformes","created":"Créé","acceptedCertificates":"Empreintes de certificats acceptées","provisionedDevices":"Appareils provisionnés","provisionedDevicesDescription":"Ce profil contient {count} identifiants d’appareil.","deviceListPendingRefresh":"Actualisez l’inventaire de signature pour charger les identifiants stockés dans ce profil.","noProvisionedDevices":"Ce profil de distribution n’est pas limité à des appareils individuels.","device":"Appareil","udid":"UDID de l’appareil","status":"État","unknownDevice":"Non inscrit dans cette application"},"apnsDevices":{"title":"Appareils APNs","description":"Inscriptions de jetons d’apps et MDM disponibles pour le ciblage.","loading":"Chargement des appareils APNs…","empty":"Aucune app n’a encore inscrit de jeton APNs.","device":"Appareil / app","topic":"Sujet","environment":"Environnement","pushTypes":"Types push","token":"Jeton masqué","status":"État","lastRegistration":"Dernière inscription","lastSend":"Dernier envoi","rename":"Renommer","renameDescription":"Choisissez un libellé facile à reconnaître.","displayName":"Nom affiché","save":"Enregistrer","activate":"Activer","deactivate":"Désactiver","delete":"Supprimer","deleteTitle":"Supprimer l’inscription APNs ?","deleteDescription":"Supprimer ce jeton et le détacher de l’historique conservé ?","apiHelp":"Aide API","apiHelpTitle":"Inscrire un appareil APNs","apiHelpDescription":"Envoyez du JSON strict au point public. Les jetons peuvent être HEX ou Base64 ; MDM exige aussi pushMagic."},"pushSettings":{"title":"Notifications push","tokenAuthentication":"Authentification par jeton (.p8)","tokenDescription":"Recommandée pour les apps, Live Activities, VoIP et les types hors MDM.","tokenSetupHelp":"Créez une clé avec le service Apple Push Notification (APNs) activé, copiez son ID de clé, puis téléchargez et conservez le fichier .p8 ; Apple ne le propose qu’une fois.","createTokenKey":"Créer une clé APNs","configured":"Configuré","notConfigured":"Non configuré","teamId":"ID d’équipe","keyId":"ID de clé","teamIdHelp":"Copiez l’ID d’équipe depuis les détails de votre adhésion Apple Developer.","openMembership":"Ouvrir les détails de l’adhésion","privateKey":"Clé privée APNs .p8","p8DropZone":"Zone de dépôt de la clé privée APNs","p8DropHint":"Collez la clé ci-dessous, déposez-y un fichier .p8 ou choisissez un fichier.","chooseP8":"Choisir le fichier .p8 APNs","privateKeyPlaceholder":"Collez ici la clé privée PKCS#8","privateKeyConfiguredPlaceholder":"Une clé privée est enregistrée. Laissez vide pour la conserver.","privateKeyHelp":"Seules les clés ES256 PKCS#8 téléchargées depuis le portail Apple Developer sont acceptées.","privateKeyKeepHelp":"Laissez ce champ vide pour conserver la clé enregistrée, ou fournissez une nouvelle clé .p8 pour la remplacer.","p8Invalid":"Choisissez un fichier .p8 valide contenant une clé privée PKCS#8.","p8ReadError":"Le fichier .p8 sélectionné n’a pas pu être lu.","p8Loaded":"{filename} chargé. Enregistrez pour utiliser cette clé.","tokenConfiguredOn":"Clé configurée le {date}","tokenLastUsed":"Dernière utilisation le {date}","tokenSaved":"Clé APNs enregistrée.","remove":"Supprimer","removeToken":"Supprimer la clé APNs ?","removeTokenDescription":"Les envois par jeton s’arrêteront jusqu’à la configuration d’un nouveau .p8.","tokenRemoved":"Clé APNs supprimée.","save":"Enregistrer","certificateAuthentication":"Authentification par certificat (.p12)","certificateDescription":"Plusieurs certificats liés à un sujet sont acceptés et sont requis pour MDM.","certificateSetupHelp":"Créez le certificat push approprié, installez-le avec sa clé privée dans Trousseaux d’accès, puis exportez les deux dans un fichier .p12 protégé par mot de passe. Utilisez le sujet du certificat (l’identifiant de bundle de l’app ou le sujet MDM) et sélectionnez son environnement de test ou de production.","createCertificate":"Créer un certificat APNs","name":"Nom de l’accès","topic":"Sujet","environment":"Environnement","certificate":"Ensemble de certificat APNs .p12","p12DropZone":"Zone de dépôt du certificat APNs","p12DropHint":"Collez l’ensemble encodé ci-dessous, déposez-y un fichier .p12 ou choisissez un fichier.","p12Placeholder":"Ensemble .p12 encodé en base64","chooseP12":"Choisir le fichier .p12 APNs","certificateHelp":"Déposer ou choisir un fichier .p12 l’encode automatiquement ; ne collez du base64 que si l’ensemble est déjà encodé.","p12Selected":"{filename} prêt à enregistrer.","p12Invalid":"Choisissez un fichier .p12 ou .pfx valide.","p12ReadError":"Le fichier .p12 sélectionné n’a pas pu être lu.","p12Loaded":"{filename} chargé. Ajoutez le certificat pour l’enregistrer.","passphrase":"Mot de passe du .p12","addCertificate":"Ajouter le certificat","certificateAdded":"Certificat APNs ajouté.","expires":"Expire le {date}","lastTested":"Dernier test le {date}","retest":"Tester à nouveau","removeCertificate":"Supprimer le certificat APNs ?","removeCertificateDescription":"Les envois utilisant ce certificat échoueront après sa suppression."},"pushNotifications":{"title":"Notifications push","description":"Composez, validez, ciblez, mettez en file et inspectez les notifications Apple.","editor":"Éditeur de notification","editorDescription":"La forme du payload, les en-têtes, les limites et les appareils éligibles évoluent avec le type push.","presetName":"Nom du préréglage","savePreset":"Enregistrer l’actuel","presetSaved":"Préréglage enregistré.","content":"Contenu","headers":"En-têtes","advanced":"aps avancé","specialized":"Spécialisé","pushType":"Type push","titleField":"Titre","subtitle":"Sous-titre","body":"Corps","badge":"Badge","sound":"Son","category":"Catégorie","threadId":"ID du fil","contentAvailable":"Contenu disponible","mutableContent":"Contenu modifiable","criticalSound":"Son critique","soundVolume":"Volume","topic":"Sujet APNs","priority":"Priorité","apnsId":"ID APNs","expiration":"Expiration","collapseId":"ID de regroupement","certificateCredential":"Certificat","selectCredential":"Choisir un certificat","titleLocKey":"Clé locale du titre","titleLocArgs":"Arguments du titre","subtitleLocKey":"Clé locale du sous-titre","subtitleLocArgs":"Arguments du sous-titre","bodyLocKey":"Clé locale du corps","bodyLocArgs":"Arguments du corps","launchImage":"Image de lancement","summaryArg":"Argument de résumé","summaryArgCount":"Nombre d’arguments","targetContentId":"ID du contenu cible","interruptionLevel":"Niveau d’interruption","relevanceScore":"Score de pertinence","customJson":"JSON racine personnalisé","timestamp":"Horodatage","event":"Événement","attributesType":"Type d’attributs","contentState":"JSON de l’état","attributes":"JSON des attributs","staleDate":"Date d’obsolescence","dismissalDate":"Date de retrait","inputPushToken":"Demander un jeton push d’entrée","mdmHelp":"MDM utilise le certificat choisi et le PushMagic de chaque inscription. Son payload contient uniquement mdm, sans dictionnaire aps.","specializedHelp":"Utilisez le JSON racine personnalisé pour le payload {type} ; les en-têtes et limites APNs restent validés.","payloadPreview":"Aperçu JSON en direct","recipients":"Destinataires","directDevices":"Jetons directs","directToken":"Jeton Live Activity ponctuel","liveActivityToken":"Jeton push Live Activity","allEligibleDevices":"Tous les appareils éligibles ({count})","selectedDevices":"{count} appareils sélectionnés","searchDevices":"Rechercher des appareils…","noEligibleDevices":"Aucune inscription active compatible.","saveDraft":"Enregistrer le brouillon","draftSaved":"Brouillon enregistré dans l’historique.","send":"Envoyer","queued":"Lot push mis en file.","broadcastChannels":"Canaux de diffusion Live Activity","broadcastDescription":"La politique de stockage est immuable après création.","bundleId":"ID du bundle","noStorage":"Sans stockage","mostRecent":"Message le plus récent","createChannel":"Créer le canal","deleteChannel":"Supprimer le canal ?","deleteChannelDescription":"Supprime ce canal ; les préréglages et l’historique conservent seulement son identifiant.","delete":"Supprimer","history":"Historique","presets":"Préréglages","created":"Créé","deliveryMode":"Livraison","result":"Réussites / échecs","status":"État","payload":"Charge utile","attempts":"tentatives","load":"Charger dans l’éditeur","saveAsPreset":"Enregistrer comme préréglage","presetFromHistory":"Historique","resend":"Renvoyer","deleteHistory":"Supprimer l’élément ?","deleteHistoryDescription":"Supprime ce lot, son payload et les résultats.","clearHistory":"Effacer l’historique","clearHistoryDescription":"Supprimer tous les envois terminés et brouillons ? Les lots actifs sont conservés.","name":"Nom","updated":"Mis à jour","loadEdit":"Charger / modifier","deletePreset":"Supprimer le préréglage ?","deletePresetDescription":"Supprime ce payload réutilisable et ses en-têtes.","historyDescription":"Lots envoyés, brouillons et résultats APNs par destinataire.","presetsDescription":"Contenu et en-têtes réutilisables ; les destinataires sont choisis à l’envoi.","noHistory":"Aucun historique de notification push.","noPresets":"Aucun préréglage de notification push enregistré."},"status":{"online":"En ligne","offline":"Hors ligne","queued":"En file","running":"En cours","succeeded":"Réussie","failed":"Échouée","cancelled":"Annulée","timed_out":"Délai dépassé"},"commands":{"title":"Commands","description":"Create reusable shell commands and inspect their durable runs.","newCommand":"New command","runCustom":"Exécuter une commande personnalisée","customCommandDescription":"Exécutez une commande shell ponctuelle sans enregistrer de définition réutilisable.","customCommandPlaceholder":"Saisissez une commande ou un script shell","customCommandWarning":"La commande s’exécute avec toutes les autorisations du compte agent sélectionné et reste conservée dans l’historique immuable de cette exécution.","runIn":"Exécuter dans","running":"Exécution…","editCommand":"Edit command","editorDescription":"Saved commands run with the full permissions of the selected agent account.","runs":"Runs","definitions":"Definitions","search":"Search commands","active":"Active","archived":"Archived","all":"All","done":"Done","edit":"Edit","refresh":"Refresh","selected":"{count, plural, one {# run selected} other {# runs selected}}","archive":"Archive","restore":"Restore","delete":"Delete","cancel":"Cancel","selectAll":"Select all completed runs","selectDay":"Sélectionner les exécutions terminées du {day}","number":"Run","command":"Command","status":"Status","agent":"Agent","worktree":"Worktree","started":"Started","finished":"Finished","home":"Agent home","agentHome":"Agent home directory","terminate":"Terminate","rerun":"Rerun","run":"Run","noRuns":"No command runs match this view.","noDescription":"No description","quickAction":"Quick action","deleteRunsTitle":"Delete command runs?","deleteRunsDescription":"Completed runs and all retained terminal output will be permanently deleted.","name":"Name","commandDescription":"Description","script":"Shell script","scriptHelp":"The script runs through the agent user\'s non-interactive login shell. Interactive input and PTY applications are not supported.","target":"Target","scope":"Target scope","anyAgentHome":"Any agent home","specificAgentHome":"Specific agent home","anyWorktree":"Any worktree","repositoryWorktree":"Worktree in a repository","selectAgent":"Select an agent","selectRepository":"Select a repository","repository":"Repository","restart":"Restart","restartPolicy":"Restart policy","restartLimit":"Failed restart limit","restartHelp":"Attempts that run for at least one minute reset the burst counter before their next exit is evaluated.","never":"Never","onFailure":"On failure","always":"Always","unlimited":"Unlimited restarts","notifications":"Notifications","enableNotifications":"Notifier à la fin de cette commande","notificationsHelp":"Les canaux de diffusion se configurent sur la page Notifications. Désactivez cette option pour les commandes qui ne nécessitent pas d’alerte de fin.","enableQuickAction":"Show this command as a quick action","icon":"Icon","style":"Button style","defaultStyle":"Default","outlineStyle":"Outline","secondaryStyle":"Secondary","destructiveStyle":"Destructive","save":"Save","saving":"Saving…","runNotFound":"Command run not found.","runNumber":"Command run #{number}","runError":"Command failed","nextRestart":"Next restart","overview":"Vue d’ensemble","timing":"Timing","duration":"Durée","terminalOutput":"Terminal output","noOutput":"Aucune sortie n’a été signalée.","followOutput":"Follow output","fitTerminal":"Fit terminal","viewRawOutput":"Afficher la sortie brute","searchTerminal":"Rechercher dans le terminal","previousTerminalMatch":"Résultat précédent","nextTerminalMatch":"Résultat suivant","attempts":"Attempts","result":"Result","snapshot":"Immutable command snapshot","copyCommand":"Copier","commandCopied":"Copié","copyFailed":"Impossible de copier la commande. Sélectionnez-la et copiez-la manuellement.","runCommand":"Exécuter {name}","chooseAgentTarget":"Choisissez le dossier d’accueil précis de l’agent où cette commande sera exécutée.","chooseWorktreeTarget":"Choisissez l’arbre de travail précis où cette commande sera exécutée.","upgradeAgent":"Mettre à niveau l’agent","upgradeAgentTitle":"Mettez cet agent à niveau pour exécuter les commandes enregistrées","upgradeAgentDescription":"Mettez cet agent à niveau avant de lancer des commandes enregistrées.","noEligibleTargets":"Aucune cible admissible n’est disponible.","noEligibleCommands":"Aucune commande admissible.","view":"Afficher","manage":"Gérer","recentRuns":"Exécutions récentes","resourceDescriptionAgent":"Commandes enregistrées admissibles et exécutions récentes pour cet agent.","resourceDescriptionWorktree":"Commandes enregistrées admissibles et exécutions récentes pour cet arbre de travail.","commandQuickActions":"Actions rapides des commandes","agentQuickActionsDescription":"Commandes enregistrées du dossier d’accueil disponibles sur cet agent.","statusQueued":"En attente","statusRunning":"En cours","statusRestarting":"Redémarrage","statusCancelling":"Annulation","statusSucceeded":"Réussie","statusFailed":"Échouée","statusCancelled":"Annulée","statusTimedOut":"Délai dépassé","originManual":"Manuelle","originQuickAction":"Action rapide","originWorkflow":"Flux de travail","originRerun":"Réexécution","attemptDivider":"Tentative {number}","exitCode":"Sortie {code}","targetUnavailable":"Cible indisponible"},"costs":{"title":"Coûts","description":"Prix des modèles utilisés pour estimer le coût des plans et des sessions.","sourceTitle":"Catalogue de prix","sourceDescription":"D’où proviennent les prix des modèles. Laissez le champ vide pour utiliser le catalogue par défaut. Les prix sont actualisés automatiquement une fois par jour.","catalogUrl":"URL des coûts de modèles","save":"Enregistrer","useDefault":"Utiliser la valeur par défaut","fetchLatest":"Récupérer les dernières données","lastFetched":"Dernière récupération","never":"Jamais","modelCount":"{count, plural, =0 {Aucun modèle} one {# modèle} other {# modèles}}","customSource":"Source personnalisée","defaultSource":"Source par défaut","staleCatalog":"Actualisation à faire","lastFetchFailed":"La dernière récupération a échoué : {error}","modelsTitle":"Prix des modèles","modelsDescription":"Prix par million de tokens, tels que publiés par le catalogue.","searchModels":"Rechercher des modèles","model":"Modèle","provider":"Fournisseur","inputPrice":"Entrée / MTok","outputPrice":"Sortie / MTok","cacheReadPrice":"Lecture de cache / MTok","cacheWritePrice":"Écriture de cache / MTok","contextWindow":"Contexte","noModels":"Aucun modèle correspondant n’a été trouvé.","showingCount":"{shown} sur {total} affichés","sortBy":"Trier par {column}","loadingMore":"Chargement…"},"diffView":{"truncated":"Différence tronquée à 2 Mio.","binary":"Fichier binaire modifié","empty":"Aucune modification de texte","largeDiff":"Cette différence compte {count} lignes et n\'a pas été affichée.","renderAnyway":"L\'afficher quand même","addComment":"Commenter cette ligne","noNewline":"Pas de saut de ligne en fin de fichier","sideBySide":"Côte à côte","overlap":"Superposition","transparency":"Transparence de l\'image","difference":"Différence","sensitivity":"Sensibilité de la différence","differenceColor":"Couleur de la différence","differenceColorRed":"Rouge","differenceColorGreen":"Vert","differenceColorWhite":"Rouge sur blanc atténué","differenceSummary":"{percent} % des pixels diffèrent","comparingPixels":"Comparaison des pixels…","differenceNeedsBothSides":"Les deux révisions sont nécessaires pour comparer les pixels","differenceFailed":"Ces images n’ont pas pu être comparées","imagesIdentical":"Aucun pixel ne diffère","before":"Avant","after":"Après","missingImage":"Aucune image de ce côté"},"diffs":{"title":"Modifications","description":"Passez en revue chaque modification d\'un arbre de travail, couverture affichée sur le code.","loading":"Chargement des modifications…","loadingDiff":"Chargement de la différence…","loadingCoverage":"Chargement de la couverture…","refresh":"Actualiser","files":"Fichiers","selectWorktree":"Choisissez un arbre de travail","searchWorktrees":"Rechercher des arbres de travail…","noWorktrees":"Aucun arbre de travail trouvé","selectAWorktree":"Choisissez un arbre de travail pour examiner ses modifications.","selectAFile":"Choisissez un fichier pour voir sa différence.","searchFiles":"Rechercher des fichiers","searchFilesPlaceholder":"Filtrer par chemin ou module…","sortFiles":"Trier les fichiers par","sortAscending":"Tri croissant","sortDescending":"Tri décroissant","fileCount":"{count, plural, one {# fichier} other {# fichiers}}","fileListTruncated":"liste tronquée","noFiles":"Rien n\'a changé dans cette portée.","noMatchingFiles":"Aucun fichier ne correspond à ce filtre.","noTextChanges":"Aucune modification de texte","binaryFile":"Fichier binaire modifié","diffTooLarge":"Cette différence dépasse la limite d\'affichage.","commits":"Validations","noCommits":"Cette branche n\'a aucune validation au-delà de sa base.","unifiedView":"Vue unifiée","splitView":"Vue côte à côte","toggleWrap":"Basculer le retour à la ligne","linkedPullRequest":"Demande de tirage n° {number} : {title}","selectCoverageReport":"Rapport de couverture","noCoverageOverlay":"Aucune superposition de couverture","coverageStale":"Mesuré sur une autre révision.","coverageOverall":"{percent} global","coverageChanged":"{percent} modifié","scope":{"STAGED":"Indexés","UNSTAGED":"Non indexés","UNTRACKED":"Non suivis","BRANCH":"Branche","COMMIT":"Validations"},"fileSort":{"name":"Nom","module":"Module","coverage":"Couverture","additions":"Ajouts","deletions":"Suppressions","changeType":"Type de modification"}}}')}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=messages_fr_json_%5Bjson%5D_cjs_0j6-w0i._.js.map
|