import type { TranslationMap } from "../lib/types.ts";
// Generated by scripts/control-ui-i18n.ts.
export const fr: TranslationMap = {
common: {
health: "Santé",
ok: "OK",
yes: "Oui",
no: "Non",
active: "Actif",
loading: "Chargement…",
refreshing: "Actualisation…",
online: "En ligne",
offline: "Hors ligne",
connect: "Connecter",
connected: "Connecté",
refresh: "Actualiser",
reload: "Recharger",
probe: "Sonder",
call: "Appeler",
confirm: "Confirmer",
cancel: "Annuler",
unselect: "Désélectionner",
enabled: "Activé",
disabled: "Désactivé",
na: "n/d",
configured: "Configuré",
running: "En cours d’exécution",
linked: "Lié",
mode: "Mode",
baseUrl: "URL de base",
lastStart: "Dernier démarrage",
lastProbe: "Dernière sonde",
lastInbound: "Dernière entrée",
lastConnect: "Dernière connexion",
lastMessage: "Dernier message",
authAge: "Âge de l’authentification",
credential: "Identifiant",
audience: "Audience",
publicKey: "Clé publique",
probeOk: "Sonde réussie",
probeFailed: "Échec de la sonde",
reloadConfig: "Recharger la config",
loadConfig: "Charger la config",
loadApprovals: "Charger les approbations",
settingsSections: "Sections des paramètres",
version: "Version",
docs: "Documentation",
theme: "Thème",
resources: "Ressources",
search: "Rechercher",
save: "Enregistrer",
saving: "Enregistrement…",
saveAndPublish: "Enregistrer et publier",
importing: "Importation…",
importFromRelays: "Importer depuis les Relays",
showAdvanced: "Afficher les options avancées",
hideAdvanced: "Masquer les options avancées",
unsavedChanges: "Vous avez des modifications non enregistrées",
secondsAgo: "il y a {count}s",
working: "Traitement…",
showQr: "Afficher le QR",
relink: "Relier à nouveau",
waitForScan: "Attendre le scan",
logout: "Se déconnecter",
},
channels: {
health: {
title: "Santé du canal",
subtitle: "Instantanés de l’état du canal depuis le gateway.",
noSnapshotYet: "Aucun instantané pour le moment.",
},
generic: {
subtitle: "État et configuration du canal.",
},
gatewayUrlConfirmation: {
title: "Changer l’URL du Gateway",
subtitle: "Cela reconnectera à un autre serveur Gateway",
warning: "Confirmez uniquement si vous faites confiance à cette URL. Des URL malveillantes peuvent compromettre votre système.",
},
nostr: {
profile: "Profil",
editProfile: "Modifier le profil",
profilePicture: "Photo de profil",
noProfile: "Aucun profil défini.",
noProfileHint: 'Cliquez sur "Modifier le profil" pour ajouter votre nom, votre bio et votre avatar.',
name: "Nom",
displayName: "Nom d’affichage",
about: "À propos",
advanced: "Avancé",
profilePicturePreview: "Aperçu de la photo de profil",
account: "Compte",
username: "Nom d’utilisateur",
usernameHelp: "Nom d’utilisateur court (par ex., satoshi)",
bio: "Bio",
bioPlaceholder: "Parlez de vous aux autres...",
bioHelp: "Une brève bio ou description",
displayNameHelp: "Votre nom d’affichage complet",
avatarUrl: "URL de l’avatar",
avatarHelp: "URL HTTPS vers votre photo de profil",
bannerUrl: "URL de la bannière",
bannerHelp: "URL HTTPS vers une image de bannière",
website: "Site web",
websiteHelp: "Votre site web personnel",
nip05Identifier: "Identifiant NIP-05",
nip05Help: "Identifiant vérifiable (par ex., you@domain.com)",
lightningAddress: "Adresse Lightning",
lightningHelp: "Adresse Lightning pour les pourboires (LUD-16)",
},
},
nodes: {
binding: {
loadConfigHint: "Chargez la config pour modifier les bindings.",
formModeHint: "Passez l’onglet Config en mode Form pour modifier les bindings ici.",
execNodeBinding: "Binding du nœud d’exécution",
execNodeBindingSubtitle: "Épinglez les agents à un nœud spécifique lors de l’utilisation de exec host=node.",
defaultBinding: "Binding par défaut",
defaultBindingHint: "Utilisé lorsque les agents ne remplacent pas un binding de nœud.",
node: "Nœud",
},
},
instances: {
title: "Instances connectées",
subtitle: "Balises de présence du gateway et des clients.",
showHosts: "Afficher les hôtes et les IP",
hideHosts: "Masquer les hôtes et les IP",
toggleHostVisibility: "Basculer la visibilité des hôtes",
noInstances: "Aucune instance signalée pour le moment.",
lastInput: "Dernière entrée {time}",
reason: "Raison {reason}",
},
agentTools: {
connectedSource: "Connecté : {id}",
connected: "Connecté",
channelSource: "Canal : {id}",
channel: "Canal",
builtIn: "Intégré",
},
nav: {
chat: "Chat",
control: "Contrôle",
agent: "Agent",
settings: "Paramètres",
expand: "Développer la barre latérale",
collapse: "Réduire la barre latérale",
resize: "Redimensionner la barre latérale",
},
tabs: {
agents: "Agents",
overview: "Aperçu",
channels: "Canaux",
instances: "Instances",
sessions: "Sessions",
usage: "Utilisation",
cron: "Tâches cron",
skills: "Skills",
nodes: "Nœuds",
chat: "Chat",
config: "Configuration",
communications: "Communications",
appearance: "Apparence",
automation: "Automatisation",
infrastructure: "Infrastructure",
aiAgents: "IA et agents",
debug: "Débogage",
logs: "Journaux",
dreams: "Rêves",
},
subtitles: {
agents: "Espaces de travail, outils, identités.",
overview: "Statut, points d’entrée, santé.",
channels: "Canaux et paramètres.",
instances: "Clients et nœuds connectés.",
sessions: "Sessions actives et valeurs par défaut.",
usage: "Utilisation de l’API et coûts.",
cron: "Réveils et exécutions récurrentes.",
skills: "Skills et clés API.",
nodes: "Appareils appairés et commandes.",
chat: "Chat Gateway pour les interventions rapides.",
config: "Modifier openclaw.json.",
communications: "Canaux, messages et paramètres audio.",
appearance: "Thème, UI et paramètres de l’assistant de configuration.",
automation: "Commandes, hooks, cron et plugins.",
infrastructure: "Paramètres Gateway, web, navigateur et médias.",
aiAgents: "Agents, modèles, Skills, outils, mémoire, session.",
debug: "Captures, événements, RPC.",
logs: "Journaux Gateway en direct.",
dreams: "Consolidation de la mémoire pendant le sommeil.",
},
overview: {
access: {
title: "Accès Gateway",
subtitle: "Où le tableau de bord se connecte et comment il s’authentifie.",
wsUrl: "URL WebSocket",
token: "Jeton Gateway",
password: "Mot de passe (non enregistré)",
passwordPlaceholder: "mot de passe système ou partagé",
sessionKey: "Clé de session par défaut",
language: "Langue",
connectHint: "Cliquez sur Connect pour appliquer les modifications de connexion.",
trustedProxy: "Authentifié via un proxy de confiance.",
showToken: "Afficher le jeton",
hideToken: "Masquer le jeton",
toggleTokenVisibility: "Basculer la visibilité du jeton",
showPassword: "Afficher le mot de passe",
hidePassword: "Masquer le mot de passe",
togglePasswordVisibility: "Basculer la visibilité du mot de passe",
},
snapshot: {
title: "Capture",
subtitle: "Dernières informations de handshake du Gateway.",
status: "Statut",
uptime: "Temps de fonctionnement",
tickInterval: "Intervalle de tick",
lastChannelsRefresh: "Dernière actualisation des canaux",
channelsHint: "Utilisez Channels pour lier WhatsApp, Telegram, Discord, Signal ou iMessage.",
},
stats: {
instances: "Instances",
instancesHint: "Balises de présence au cours des 5 dernières minutes.",
sessions: "Sessions",
sessionsHint: "Clés de session récentes suivies par le Gateway.",
cron: "Cron",
cronNext: "Prochain réveil {time}",
},
notes: {
title: "Notes",
subtitle: "Rappels rapides pour les configurations de contrôle à distance.",
tailscaleTitle: "Tailscale serve",
tailscaleText: "Privilégiez le mode serve pour garder le Gateway sur loopback avec l’authentification tailnet.",
sessionTitle: "Hygiène des sessions",
sessionText: "Utilisez /new ou sessions.patch pour réinitialiser le contexte.",
cronTitle: "Rappels cron",
cronText: "Utilisez des sessions isolées pour les exécutions récurrentes.",
},
auth: {
required: "Ce Gateway nécessite une authentification. Ajoutez un jeton ou un mot de passe, puis cliquez sur Connect.",
failed: "Échec de l’authentification. Recopiez une URL avec jeton avec {command}, ou mettez à jour le jeton, puis cliquez sur Connect.",
},
pairing: {
hint: "Cet appareil nécessite une approbation d’appairage de l’hôte Gateway.",
scopeUpgradeTitle: "Mise à niveau de portée en attente d’approbation.",
scopeUpgradeSummary: "Cet appareil est déjà appairé, mais l’élargissement de portée demandé est en attente d’approbation.",
roleUpgradeTitle: "Mise à niveau du rôle en attente d’approbation.",
roleUpgradeSummary: "Cet appareil est déjà appairé, mais le changement de rôle demandé est en attente d’approbation.",
metadataUpgradeTitle: "Modification des métadonnées de l’appareil en attente d’approbation.",
metadataUpgradeSummary: "Cet appareil est déjà appairé, mais la modification des métadonnées est en attente d’approbation.",
mobileHint: "Sur mobile ? Copiez l’URL complète (y compris #token=...) depuis openclaw dashboard --no-open sur votre ordinateur.",
docsTitle: "Documentation sur l’appairage des appareils (s’ouvre dans un nouvel onglet)",
docsLink: "Documentation : Appairage des appareils",
},
insecure: {
hint: "Cette page utilise HTTP, le navigateur bloque donc l’identité de l’appareil. Utilisez HTTPS (Tailscale Serve) ou ouvrez {url} sur l’hôte Gateway.",
stayHttp: "Si vous devez rester en HTTP, définissez {config} (jeton uniquement).",
},
connection: {
title: "Comment se connecter",
step1: "Démarrez le Gateway sur votre machine hôte :",
step2: "Obtenez une URL du tableau de bord avec jeton :",
step3: "Collez l’URL WebSocket et le jeton ci-dessus, ou ouvrez directement l’URL avec jeton.",
step4: "Ou générez un jeton réutilisable :",
docsHint: "Pour l’accès à distance, Tailscale Serve est recommandé. ",
docsLink: "Lire la documentation →",
authDocsTitle: "Documentation sur l’authentification de la Control UI (s’ouvre dans un nouvel onglet)",
authDocsLink: "Documentation : Authentification de la Control UI",
tailscaleDocsTitle: "Documentation sur Tailscale Serve (s’ouvre dans un nouvel onglet)",
tailscaleDocsLink: "Documentation : Tailscale Serve",
insecureHttpDocsTitle: "Documentation sur HTTP non sécurisé (s’ouvre dans un nouvel onglet)",
insecureHttpDocsLink: "Documentation : HTTP non sécurisé",
},
cards: {
cost: "Coût",
skills: "Skills",
recentSessions: "Sessions récentes",
modelAuth: "Authentification des modèles",
modelAuthOk: "{count} ok",
modelAuthExpired: "{count} expirés",
modelAuthExpiring: "{count} expirent bientôt",
modelAuthProviders: "{count} fournisseurs",
modelAuthUsageLeft: "Il reste {pct} %",
modelAuthExpiresIn: "expire {when}",
modelAuthAttentionExpiredTitle: "Authentification des modèles expirée",
modelAuthAttentionExpiringTitle: "L'authentification des modèles expire bientôt",
modelAuthAttentionExpiredDesc: "{providers} — réauthentifiez-vous avec openclaw models auth",
modelAuthAttentionExpiringEntry: "{provider} ({when})",
},
attention: {
title: "Attention",
},
eventLog: {
title: "Journal des événements",
},
logTail: {
title: "Journaux Gateway",
},
quickActions: {
newSession: "Nouvelle session",
automation: "Automatisation",
refreshAll: "Tout actualiser",
terminal: "Terminal",
},
palette: {
placeholder: "Saisissez une commande…",
noResults: "Aucun résultat",
},
},
dreaming: {
tabs: {
scene: "Scène",
diary: "Journal",
advanced: "Avancé",
},
header: {
refresh: "Actualiser",
refreshing: "Actualisation…",
on: "Rêverie activée",
off: "Rêverie désactivée",
},
status: {
active: "Rêverie active",
idle: "Rêverie inactive",
promotedSuffix: "promu",
nextSweepPrefix: "prochaine passe",
},
scene: {
backfill: "Rattrapage",
dedupeDiary: "Journal de déduplication",
reset: "Réinitialiser",
clearGrounded: "Effacer les éléments ancrés",
repairCache: "Réparer le cache des rêves",
working: "En cours…",
},
phase: {
light: "Léger",
deep: "Profond",
rem: "REM",
off: "désactivé",
},
advanced: {
eyebrow: "Vérification",
title: "Vérification du journal quotidien",
description: "Vérifiez ce qui provient du journal quotidien, ce qui est en attente de promotion et ce qui a été promu récemment.",
summaryFromDailyLog: "du journal quotidien",
summaryWaiting: "en attente",
summaryPromotedToday: "promu aujourd’hui",
stagedTitle: "Du journal quotidien",
stagedDescription: "Rejouer les candidats extraits d’anciennes entrées du journal quotidien.",
shortTermTitle: "En attente de promotion",
shortTermDescription: "Candidats à court terme actuels en attente d’être promus en mémoire réelle.",
sortRecent: "Les plus récents",
sortSignals: "Support le plus fort",
originDailyLog: "rejoué",
originLive: "en direct",
originMixed: "mixte",
promotedTitle: "Promotions récentes",
promotedDescription: "Éléments qui ont déjà franchi l’étape de promotion.",
emptyGrounded: "Aucune entrée de relecture ancrée en attente pour le moment.",
emptyShortTerm: "Aucune entrée à court terme à examiner.",
emptyPromoted: "Aucune promotion récente à examiner.",
updatedPrefix: "mis à jour",
},
stats: {
shortTerm: "Court terme",
grounded: "Ancré",
signals: "Signaux",
promoted: "Promus",
phaseHits: "Occurrences de phase",
},
trace: {
shortTerm: "Court terme",
grounded: "Ancré",
signals: "Signaux",
promoted: "Promus",
groundedLed: "grounded-led",
emptyShortTerm: "Aucun élément à court terme actif.",
emptyGrounded: "Aucun élément ancré en attente.",
emptySignals: "Aucun signal actif.",
emptyPromoted: "Rien n’a encore été promu aujourd’hui.",
},
diary: {
title: "Journal des rêves",
noDreamsYet: "Aucun rêve pour le moment",
noDreamsHint: "Les rêves apparaîtront ici après le premier cycle de rêverie.",
waitingTitle: "Le journal attend",
waitingHint: "Les entrées narratives apparaîtront après le prochain cycle de rêverie.",
older: "Plus anciens",
newer: "Plus récents",
reload: "Recharger",
reloading: "Rechargement…",
},
phrases: {
consolidatingMemories: "consolidation des souvenirs…",
tidyingKnowledgeGraph: "rangement du graphe de connaissances…",
replayingConversations: "relecture des conversations d’aujourd’hui…",
weavingShortTerm: "tissage du court terme dans le long terme…",
defragmentingMindPalace: "défragmentation du palais mental…",
filingLooseThoughts: "classement des pensées éparses…",
connectingDots: "connexion de points éloignés…",
compostingContext: "compostage des anciennes fenêtres de contexte…",
alphabetizingSubconscious: "alphabétisation du subconscient…",
promotingHunches: "promotion des intuitions prometteuses…",
forgettingNoise: "oubli de ce qui n’a pas d’importance…",
dreamingEmbeddings: "rêverie en embeddings…",
reorganizingAttic: "réorganisation du grenier de la mémoire…",
indexingDay: "indexation en douceur de la journée…",
nurturingInsights: "maturation des intuitions naissantes…",
simmeringIdeas: "mijotage d’idées à moitié formées…",
whisperingVectorStore: "chuchotement au vector store…",
},
},
usage: {
page: {
subtitle: "Voyez où vont les jetons, quand les sessions augmentent et ce qui génère les coûts.",
},
common: {
emptyValue: "—",
unknown: "inconnu",
},
loading: {
title: "Aperçu de l’utilisation",
badge: "Chargement",
},
metrics: {
tokens: "Jetons",
cost: "Coût",
session: "session",
sessions: "sessions",
},
presets: {
today: "Aujourd’hui",
last7d: "7 j",
last30d: "30 j",
},
filters: {
title: "Filtres",
to: "à",
startDate: "Date de début",
endDate: "Date de fin",
timeZone: "Fuseau horaire",
timeZoneLocal: "Local",
timeZoneUtc: "UTC",
pin: "Épingler",
pinned: "Épinglé",
unpin: "Désépingler les filtres",
selectAll: "Tout sélectionner",
clear: "Effacer",
clearAll: "Tout effacer",
remove: "Supprimer le filtre",
all: "Tous",
days: "Jours",
hours: "Heures",
session: "Session",
agent: "Agent",
channel: "Canal",
provider: "Fournisseur",
model: "Modèle",
tool: "Outil",
daysCount: "{count} jours",
hoursCount: "{count} heures",
sessionsCount: "{count} sessions",
},
query: {
placeholder: "Filtrer les sessions (ex. key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
apply: "Filtrer (côté client)",
matching: "{shown} sessions sur {total} correspondent",
inRange: "{total} sessions dans l’intervalle",
tip: "Astuce : utilisez les filtres ou cliquez sur les barres pour affiner les jours.",
},
export: {
label: "Exporter",
sessionsCsv: "CSV des sessions",
dailyCsv: "CSV quotidien",
json: "JSON",
},
empty: {
title: "Commencez par une plage de dates",
subtitle: "Chargez les données d’utilisation pour comparer les coûts, examiner les sessions et explorer les chronologies sans quitter le tableau de bord.",
hint: "Sélectionnez une plage de dates et cliquez sur Actualiser pour charger l’utilisation.",
noData: "Aucune donnée",
featureOverview: "Cartes d’aperçu",
featureSessions: "Classement des sessions",
featureTimeline: "Exploration de la chronologie",
},
daily: {
title: "Utilisation quotidienne",
total: "Total",
byType: "Par type",
tokensTitle: "Utilisation quotidienne des jetons",
costTitle: "Coût quotidien",
},
breakdown: {
output: "Sortie",
input: "Entrée",
cacheWrite: "Écriture du cache",
cacheRead: "Lecture du cache",
total: "Total",
tokensByType: "Jetons par type",
costByType: "Coût par type",
},
overview: {
title: "Aperçu de l’utilisation",
messages: "Messages",
messagesHint: "Nombre total de messages utilisateur et assistant dans l’intervalle.",
messagesAbbrev: "msgs",
user: "utilisateur",
assistant: "assistant",
toolCalls: "Appels d’outil",
toolCallsHint: "Nombre total d’appels d’outil sur l’ensemble des sessions.",
toolsUsed: "outils utilisés",
errors: "Erreurs",
errorsHint: "Nombre total d’erreurs de message et d’outil dans l’intervalle.",
toolResults: "résultats d’outil",
avgTokens: "Moy. jetons / msg",
avgTokensHint: "Nombre moyen de jetons par message dans cet intervalle.",
avgCost: "Coût moy. / msg",
avgCostHint: "Coût moyen par message lorsque les providers signalent les coûts.",
avgCostHintMissing: "Coût moyen par message lorsque les providers signalent les coûts. Les données de coût sont manquantes pour certaines ou toutes les sessions de cet intervalle.",
acrossMessages: "Sur {count} messages",
sessions: "Sessions",
sessionsHint: "Sessions distinctes dans l’intervalle.",
sessionsInRange: "sur {count} dans l’intervalle",
throughput: "Débit",
throughputHint: "Le débit indique les jetons par minute pendant le temps d’activité. Plus il est élevé, mieux c’est.",
tokensPerMinute: "jet/min",
perMinute: "/ min",
errorRate: "Taux d’erreur",
errorHint: "Taux d’erreur = erreurs / total des messages. Plus il est faible, mieux c’est.",
avgSession: "session moy.",
cacheHitRate: "Taux de réussite du cache",
cacheHint: "Taux de réussite du cache = lecture du cache / (entrée + lecture du cache). Plus il est élevé, mieux c’est.",
cached: "en cache",
prompt: "prompt",
calls: "appels",
topModels: "Principaux modèles",
topProviders: "Principaux providers",
topTools: "Principaux outils",
topAgents: "Principaux agents",
topChannels: "Principaux canaux",
peakErrorDays: "Jours avec le plus d’erreurs",
peakErrorHours: "Heures avec le plus d’erreurs",
noModelData: "Aucune donnée de modèle",
noProviderData: "Aucune donnée de provider",
noToolCalls: "Aucun appel d’outil",
noAgentData: "Aucune donnée d’agent",
noChannelData: "Aucune donnée de canal",
noErrorData: "Aucune donnée d’erreur",
},
sessions: {
title: "Sessions",
shown: "{count} affichées",
total: "{count} au total",
avg: "moy.",
all: "Toutes",
recent: "Consultées récemment",
recentShort: "Récentes",
sort: "Trier",
ascending: "Croissant",
descending: "Décroissant",
clearSelection: "Effacer la sélection",
noRecent: "Aucune session récente",
noneInRange: "Aucune session dans l’intervalle",
more: "+{count} de plus",
selected: "Sélectionnées ({count})",
copy: "Copier",
copyName: "Copier le nom de la session",
limitReached: "Affichage des 1 000 premières sessions. Réduisez la plage de dates pour obtenir des résultats complets.",
},
details: {
noUsageData: "Aucune donnée d’utilisation pour cette session.",
duration: "Durée",
modelMix: "Répartition des modèles",
filtered: "(filtré)",
close: "Fermer les détails de la session",
noTimeline: "Aucune donnée de chronologie",
noDataInRange: "Aucune donnée dans l’intervalle",
usageOverTime: "Utilisation au fil du temps",
reset: "Réinitialiser",
perTurn: "Par tour",
cumulative: "Cumulé",
turnRange: "Tours {start}–{end} sur {total}",
assistantOutputTokens: "Jetons de sortie de l’assistant",
userToolInputTokens: "Jetons d’entrée utilisateur + outil",
tokensWrittenToCache: "Jetons écrits dans le cache",
tokensReadFromCache: "Jetons lus depuis le cache",
noContextData: "Aucune donnée de contexte",
systemPromptBreakdown: "Répartition du prompt système",
collapse: "Réduire",
collapseAll: "Tout réduire",
expandAll: "Tout développer",
baseContextPerMessage: "Contexte de base par message",
system: "Système",
systemShort: "Sys",
skills: "Skills",
tools: "Outils",
files: "Fichiers",
ofInput: "de l’entrée",
of: "de",
timelineFiltered: "chronologie filtrée",
conversation: "Conversation",
noMessages: "Aucun message",
tool: "Outil",
toolResult: "Résultat d’outil",
hasTools: "Contient des outils",
searchConversation: "Rechercher dans la conversation",
you: "Vous",
noMessagesMatch: "Aucun message ne correspond aux filtres.",
},
mosaic: {
title: "Activité par heure",
subtitleEmpty: "Les estimations nécessitent des horodatages de session.",
subtitle: "Estimé à partir des plages de session (première/dernière activité). Fuseau horaire : {zone}.",
noTimelineData: "Aucune donnée de chronologie pour le moment.",
dayOfWeek: "Jour de la semaine",
midnight: "Minuit",
fourAm: "4 h",
eightAm: "8 h",
noon: "Midi",
fourPm: "16 h",
eightPm: "20 h",
legend: "Faible → Forte densité de jetons",
sun: "Dim",
mon: "Lun",
tue: "Mar",
wed: "Mer",
thu: "Jeu",
fri: "Ven",
sat: "Sam",
},
},
login: {
subtitle: "Tableau de bord Gateway",
passwordPlaceholder: "facultatif",
showToken: "Afficher le jeton",
hideToken: "Masquer le jeton",
toggleTokenVisibility: "Afficher/masquer la visibilité du jeton",
showPassword: "Afficher le mot de passe",
hidePassword: "Masquer le mot de passe",
togglePasswordVisibility: "Afficher/masquer la visibilité du mot de passe",
},
chat: {
disconnected: "Déconnecté du Gateway.",
refreshTitle: "Actualiser les données du chat",
thinkingToggle: "Afficher/masquer la sortie de réflexion/travail de l’assistant",
toolCallsToggle: "Afficher/masquer les appels d’outil et les résultats d’outil",
focusToggle: "Activer/désactiver le mode focus (masquer la barre latérale + l’en-tête de page)",
hideCronSessions: "Masquer les sessions cron",
showCronSessions: "Afficher les sessions cron",
showCronSessionsHidden: "Afficher les sessions cron ({count} masquées)",
onboardingDisabled: "Désactivé pendant la configuration",
},
languages: {
en: "Anglais",
zhCN: "简体中文 (chinois simplifié)",
zhTW: "繁體中文 (chinois traditionnel)",
ptBR: "Português (portugais brésilien)",
de: "Deutsch (allemand)",
es: "Español (espagnol)",
jaJP: "日本語 (japonais)",
ko: "한국어 (coréen)",
fr: "Français (français)",
tr: "Türkçe (turc)",
uk: "Українська (ukrainien)",
id: "Bahasa Indonesia (indonésien)",
pl: "Polski (polonais)",
th: "ไทย (thaï)",
},
cron: {
summary: {
enabled: "Activé",
yes: "Oui",
no: "Non",
jobs: "Tâches",
nextWake: "Prochain réveil",
refreshing: "Actualisation...",
refresh: "Actualiser",
},
jobs: {
title: "Tâches",
subtitle: "Toutes les tâches planifiées stockées dans le Gateway.",
shownOf: "{shown} affichées sur {total}",
searchJobs: "Rechercher des tâches",
searchPlaceholder: "Nom, description ou agent",
enabled: "Activé",
schedule: "Planification",
lastRun: "Dernière exécution",
all: "Toutes",
sort: "Trier",
nextRun: "Prochaine exécution",
recentlyUpdated: "Récemment mises à jour",
name: "Nom",
direction: "Direction",
ascending: "Croissant",
descending: "Décroissant",
reset: "Réinitialiser",
noMatching: "Aucune tâche correspondante.",
loading: "Chargement...",
loadMore: "Charger plus de tâches",
},
runs: {
title: "Historique d’exécution",
subtitleAll: "Dernières exécutions pour toutes les tâches.",
subtitleJob: "Dernières exécutions pour {title}.",
scope: "Portée",
allJobs: "Toutes les tâches",
selectedJob: "Tâche sélectionnée",
searchRuns: "Rechercher des exécutions",
searchPlaceholder: "Résumé, erreur ou tâche",
newestFirst: "Plus récentes d’abord",
oldestFirst: "Plus anciennes d’abord",
status: "Statut",
delivery: "Distribution",
clear: "Effacer",
allStatuses: "Tous les statuts",
allDelivery: "Toute la distribution",
selectJobHint: "Sélectionnez une tâche pour examiner l’historique d’exécution.",
noMatching: "Aucune exécution correspondante.",
loadMore: "Charger plus d’exécutions",
runStatusOk: "OK",
runStatusError: "Erreur",
runStatusSkipped: "Ignoré",
runStatusUnknown: "Inconnu",
deliveryDelivered: "Distribué",
deliveryNotDelivered: "Non distribué",
deliveryUnknown: "Inconnu",
deliveryNotRequested: "Non demandé",
},
form: {
editJob: "Modifier la tâche",
newJob: "Nouvelle tâche",
updateSubtitle: "Mettez à jour la tâche planifiée sélectionnée.",
createSubtitle: "Créez un réveil planifié ou une exécution d’agent.",
required: "Obligatoire",
requiredSr: "obligatoire",
basics: "Notions de base",
basicsSub: "Donnez-lui un nom, choisissez l’assistant et définissez l’état activé.",
fieldName: "Nom",
description: "Description",
agentId: "ID de l’agent",
namePlaceholder: "Brief du matin",
descriptionPlaceholder: "Contexte facultatif pour cette tâche",
agentPlaceholder: "main ou ops",
agentHelp: "Commencez à taper pour choisir un agent connu, ou saisissez-en un personnalisé.",
schedule: "Planification",
scheduleSub: "Contrôlez quand cette tâche s’exécute.",
every: "Toutes les",
at: "À",
cronOption: "Cron",
runAt: "Exécuter à",
unit: "Unité",
minutes: "Minutes",
hours: "Heures",
days: "Jours",
expression: "Expression",
expressionPlaceholder: "0 7 * * *",
everyAmountPlaceholder: "30",
timezoneOptional: "Fuseau horaire (facultatif)",
timezonePlaceholder: "America/Los_Angeles",
timezoneHelp: "Choisissez un fuseau horaire courant ou saisissez n’importe quel fuseau horaire IANA valide.",
jitterHelp: "Besoin de jitter ? Utilisez Avancé → Fenêtre de décalage / Unité de décalage.",
execution: "Exécution",
executionSub: "Choisissez quand réveiller et ce que cette tâche doit faire.",
session: "Session",
main: "Principale",
isolated: "Isolée",
sessionHelp: "Principale publie un événement système. Isolée exécute un tour d’agent dédié.",
wakeMode: "Mode de réveil",
now: "Maintenant",
nextHeartbeat: "Prochain heartbeat",
wakeModeHelp: "Maintenant déclenche immédiatement. Prochain heartbeat attend le cycle suivant.",
payloadKind: "Que faut-il exécuter ?",
systemEvent: "Publier un message dans la chronologie principale",
agentTurn: "Exécuter une tâche d’assistant (isolée)",
systemEventHelp: "Envoie votre texte à la chronologie principale du Gateway (idéal pour les rappels/déclencheurs).",
agentTurnHelp: "Démarre une exécution de l’assistant dans sa propre session à partir de votre prompt.",
timeoutSeconds: "Délai d’expiration (secondes)",
timeoutPlaceholder: "Facultatif, ex. 90",
timeoutHelp: "Facultatif. Laissez vide pour utiliser le comportement de délai d’expiration par défaut du Gateway pour cette exécution.",
mainTimelineMessage: "Message de la chronologie principale",
assistantTaskPrompt: "Prompt de tâche de l’assistant",
deliverySection: "Distribution",
deliverySub: "Choisissez où les résumés d’exécution sont envoyés.",
resultDelivery: "Distribution du résultat",
announceDefault: "Annoncer le résumé (par défaut)",
webhookPost: "Webhook POST",
noneInternal: "Aucun (interne)",
deliveryHelp: "Annoncer publie un résumé dans le chat. Aucun conserve l’exécution en interne.",
webhookUrl: "URL du webhook",
channel: "Canal",
webhookPlaceholder: "https://example.com/cron",
channelHelp: "Choisissez quel canal connecté reçoit le résumé.",
webhookHelp: "Envoyez les résumés d’exécution vers un endpoint webhook.",
to: "À",
toPlaceholder: "+1555... ou ID de chat",
toHelp: "Remplacement facultatif du destinataire (ID de chat, téléphone ou ID utilisateur).",
advanced: "Avancé",
advancedHelp: "Remplacements facultatifs pour les garanties de distribution, le jitter de planification et les contrôles du modèle.",
deleteAfterRun: "Supprimer après exécution",
deleteAfterRunHelp: "Idéal pour les rappels ponctuels qui doivent se nettoyer automatiquement.",
clearAgentOverride: "Effacer le remplacement d’agent",
clearAgentHelp: "Force cette tâche à utiliser l’assistant par défaut du Gateway.",
exactTiming: "Timing exact (sans décalage)",
exactTimingHelp: "Exécuter exactement aux limites cron sans étalement.",
staggerWindow: "Fenêtre de décalage",
staggerUnit: "Unité de décalage",
staggerPlaceholder: "30",
seconds: "Secondes",
model: "Modèle",
modelPlaceholder: "openai/gpt-5.2",
modelHelp: "Commencez à taper pour choisir un modèle connu, ou saisissez-en un personnalisé.",
thinking: "Réflexion",
thinkingPlaceholder: "low",
thinkingHelp: "Utilisez un niveau suggéré ou saisissez une valeur spécifique au provider.",
bestEffortDelivery: "Distribution au mieux",
bestEffortHelp: "Ne faites pas échouer la tâche si la distribution elle-même échoue.",
cantAddYet: "Impossible d’ajouter la tâche pour le moment",
fillRequired: "Remplissez les champs obligatoires ci-dessous pour activer l’envoi.",
fixFields: "Corrigez {count} champ pour continuer.",
fixFieldsPlural: "Corrigez {count} champs pour continuer.",
saving: "Enregistrement...",
saveChanges: "Enregistrer les modifications",
addJob: "Ajouter une tâche",
cancel: "Annuler",
},
jobList: {
allJobs: "toutes les tâches",
selectJob: "(sélectionnez une tâche)",
enabled: "activée",
disabled: "désactivée",
edit: "Modifier",
clone: "Cloner",
disable: "Désactiver",
enable: "Activer",
run: "Exécuter",
history: "Historique",
remove: "Supprimer",
},
jobDetail: {
system: "Système",
prompt: "Prompt",
delivery: "Distribution",
agent: "Agent",
},
jobState: {
status: "Statut",
next: "Prochaine",
last: "Dernière",
},
runEntry: {
noSummary: "Aucun résumé.",
runAt: "Exécuter à",
openRunChat: "Ouvrir le chat d’exécution",
next: "Prochain {rel}",
due: "Prévu {rel}",
},
errors: {
nameRequired: "Le nom est obligatoire.",
scheduleAtInvalid: "Saisissez une date/heure valide.",
everyAmountInvalid: "L’intervalle doit être supérieur à 0.",
cronExprRequired: "L’expression cron est obligatoire.",
staggerAmountInvalid: "Le décalage doit être supérieur à 0.",
systemTextRequired: "Le texte système est obligatoire.",
agentMessageRequired: "Le message de l’agent est obligatoire.",
timeoutInvalid: "S’il est défini, le délai d’expiration doit être supérieur à 0 seconde.",
webhookUrlRequired: "L’URL du webhook est obligatoire.",
webhookUrlInvalid: "L’URL du webhook doit commencer par http:// ou https://.",
invalidRunTime: "Heure d’exécution invalide.",
invalidIntervalAmount: "Montant d’intervalle invalide.",
cronExprRequiredShort: "Expression cron obligatoire.",
invalidStaggerAmount: "Montant de décalage invalide.",
systemEventTextRequired: "Texte de l’événement système obligatoire.",
agentMessageRequiredShort: "Message de l’agent obligatoire.",
nameRequiredShort: "Nom obligatoire.",
},
},
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.