Files
paseo/packages/app/src/i18n/resources/fr.ts
T
Mohamed BoudraandGitHub ccb668b3b4 Improve sidebar workspace readability and host identity (#2790)
* fix(app): align turn footer actions

Keep running-turn actions in the same position as completed-turn actions and use the shared small icon size for both copy and fork controls.

* feat(app): improve sidebar workspace identity

Make dense sidebar workspace rows easier to scan and let each device control how connected hosts are identified.

* fix(app): keep host badges readable

Use a compact display menu and keep identity color on the host icon so translated controls fit and badge text retains standard contrast.

* fix(app): announce selected sidebar badge mode

* fix(app): retain icon-only host names for screen readers

* fix(app): name hoisted workspace rows

* fix(app): retain host identity in workspace labels

* fix(app): retain workspace status in row labels

* fix(app): defer host appearance until identity resolves

* fix(app): serialize host appearance writes

* fix(app): serialize host registry writes

* fix(app): bound sidebar host badge labels

* test(app): match workspace status labels

* fix(app): consolidate sidebar identity behavior

* test(app): assert status grouping behavior

* fix(app): keep sidebar row actions accessible

* fix(app): stabilize optimistic message layout
2026-08-02 16:58:20 +02:00

2325 lines
91 KiB
TypeScript
Raw Blame History

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